面試問答
blocking和non-blocking的賦值差異?在硬體上的表現為何?若需要實作DFF應該用哪一種賦值方式?
blocking的賦...
跟其他面試者一樣流程,先到櫃台領表單後到會議室填寫基本資料,填寫完後交給櫃檯,過不久面試官就進到會議室開始面試,一開始先
做自我介紹並簡單的對談,接著面試官拿出了兩頁共三大題的面試題,可以口頭回答或是手寫回答,也可以邊寫邊解說,在回答的期間若有不熟悉或是不了解的地方,還可以用手機做查詢,面試官想看的是表達能力,在回答完後面試官會做總結並解答或補充說明,接著就開放自由問答,整體面試大約1.5小時,過程輕鬆不嚴肅。
面試問答
blocking和non-blocking的賦值差異?在硬體上的表現為何?若需要實作DFF應該用哪一種賦值方式?
blocking的賦值方式是直接賦予當下的值,在硬體上相是接線的表現,non-blocking是有順序的賦予前一刻的值,硬體上是DFF的表現。
CDC當快時域進到慢時域,遇到亞穩態的情況該如何處理?慢時域進到快時域又該如何處理?
在1-bit的情況下:
慢到快,可以在慢時域的DFF後面再串一顆DFF做double flip-flop synchronizer
快到慢,Pulse synchronizer,可以把pulse訊號轉成level訊號,讓慢時域可以正確抓取到pulse,該注意的條件是快時域的pulse間隔需要多個clock去配合慢時域,否則慢時域也抓不到要用其他方式解決,另外還可以用SDC去控制。
多bit的情況要用FIFO。
setup time跟hold time的定義?若遇到setup time violation該如何解決?
setup time是在clock edge前data開始穩定的時間,hold time則是在clock edge後data保持穩定的時間,並列出關係式,可以用design compiler的timing report術語去解說會更專業一點。
setup time violation可以切pipeline去解決,把太大的組合邏輯切開分級。
面試建議
基本問題練熟,試著講解看看,講得越仔細面試官越容易了解你的程度到哪,也很考驗臨場反應,遇到不懂不會的不需要怯場,因為開放查詢,在短時間內看懂一個電路的能力也很重要,面試官注重的是表達能力。