硬體描述語言與驗證
在測試平台中,若在與時脈上升相同的時刻以阻塞賦值改變對電路的輸入,有時會發生問題。主要原因與對策的組合,下列何者正確?
- A因為電路會取入改變前還是改變後的值,會隨執行順序而變(競爭)。將輸入從時脈邊緣稍微錯開,或以非阻塞賦值來改變
- B因為時脈的頻率會自動降低。將時脈加快
- C因為阻塞賦值在測試平台中無法使用。全部改為assign語句
查看答案與解析
正確答案:A. 因為電路會取入改變前還是改變後的值,會隨執行順序而變(競爭)。將輸入從時脈邊緣稍微錯開,或以非阻塞賦值來改變
若在同一時刻,發生測試平台改寫輸入的處理與電路的正反器取入輸入的處理,則依模擬器先執行哪一個,取入的值可能是舊值,也可能是新值。這是模擬的競爭(race),結果也可能因模擬器而異。可以透過在下降時改變輸入、稍微延遲、使用非阻塞賦值或SystemVerilog的clocking block等來防止。
- A. 正確。這是避免模擬競爭(race)的做法。
- B. 頻率並不會改變。
- C. 在測試平台中也可以使用阻塞賦值。