硬體描述語言與驗證
在組合電路的always區塊中,為了防止非預期的閂鎖器而常用的寫法為何?
- A盡量多寫條件分支,並省略else
- B在區塊開頭,先對輸出的所有訊號賦予預設值,再撰寫條件分支
- C將輸出的訊號全部設為wire,並在always中賦值
查看答案與解析
正確答案:B. 在區塊開頭,先對輸出的所有訊號賦予預設值,再撰寫條件分支
在區塊開頭像「y = 0; valid = 0;」一樣先為輸出賦予預設值,之後的條件分支無論走哪條路徑,至少都已賦予預設值,因此不需要保持值,也就不會產生閂鎖器。這在條件眾多的狀態機輸出描述等情況特別有用。若使用SystemVerilog的always_comb,產生閂鎖器時工具會發出警告。
- A. 省略else會成為閂鎖器的原因。
- B. 正確。無論走哪條路徑,值都一定會被決定。
- C. wire無法在always中賦值。