摘要: 做為一個數位設計的工程師,最常遇到的情形就是訊號需要跨clock domain的處理。能使用的解決方法有很多,每個需要處理的情況也不儘相同,所以我並不就實作方法著眼,只想談談處理它的概念。為什麼要處理跨clock domain的訊號?使用來自其它clock domain的訊號時,容易會遇到metastable的情形,而致使產生錯誤結果。為了避免錯誤的發生,此時就需要同步來自其他clock domain的訊號。但是要怎麼做,才能做好同步處理?如果可以謹記下面的觀念,相信您一定就可以做出自已的同步訊號處理。1. 遵守two-flip-flop的方法。處理metastable的最基本的步驟就是用本身 阅读全文
posted @ 2014-02-10 18:13 Orchid123 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 做為一個數位IC設計初學者,好的coding習慣是很重要的。它能讓你的程式被別人讀懂,而且程式的穩定度也比較高。那什麼是好的coding習慣。1. 只使用positive edge (negative edge) clock來做為取樣的時間點(sampling data time). 在coding時,堅持只使用clock的一邊(edge)來做為你取樣的時間點(sampling data time)。這樣子可以增加程式的易讀外,也能讓你的程式行為(behavior)單純,在synthesis時比較好處理。且在做ATPG時,也比較容易處理。只用單一邊做為你的時間點,它的穩定度比較高。這就像是你在 阅读全文
posted @ 2014-02-10 18:04 Orchid123 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 剛來乍到的工程師,常常會寫一些很炫的技巧,來實現他的硬體設計。我覺得很好,也可以讓我多學學不同的技巧,也是不錯。但是,常常在我問過一些問題後,我就不知道該怎麼說他了。在這兒想分享一些觀念,希望能有所幫助。1.技巧很重要,但是如果你不知道在synthesis階段時,應該要寫什麼樣子的constrain來synthesize你的程式時,建議不要使用,因為你會讓你的整合工程師頭很大。2. balance clock tree的觀念很重要,請不要告訴你的整合工程師說,你的clock tree就是要no balance,timing才會是對的。數位工程師所有的想法都是在balance tree底下設計。 阅读全文
posted @ 2014-02-10 18:03 Orchid123 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 在學校時,老師常說「在寫程式前,請先畫好你的流程圖、方塊圖、波形圖,然後才開始動手寫程式。」我不知道有多少人有這樣子做。不過這真的是好的習慣。我常常遇到剛來的工程師跑來找我說「學長,幫我看看我的程式怎麼了,為什麼出來的不是我想要的結果?」然後他點開他的程式讓我看,我心裏想,這誰會看得懂?在此建議,做為一個初學者,要習慣畫流程圖、方塊圖、波形圖。當你在畫這些圖時,你的腦袋裏面也同時在依循這些圖在思考、推論,幫助你去思考自己的邏輯的盲點。程式並不是人類的語言,是電腦的語言。人類最直觀的語言就是圖畫。如果你把流程圖、方塊圖、波形圖都畫好,當你想跟別人討論時,別人才能從圖畫中快速了解你的想法,這樣子才 阅读全文
posted @ 2014-02-10 17:58 Orchid123 阅读(125) 评论(0) 推荐(0) 编辑