如果同學們在跑simulation後發現答案不符,
除了寫錯程式外,有可能也是gate verilog電路上的問題。
1. Combinational loop
如果當初rtl沒切好,便可能造成combinational loop
可以用程式是否每個gate的fanin id是小於自己的 (dff除外)
然後用cirg去看該gate是否真的造成loop,
最後再根據名稱回去檢查rtl。
2. Hazard
如果沒把combination跟sequential部份的電路切好,
很可能rtl simulation的正確答案是靠time delay跟hazard模擬出的
於是在只靠邏輯模擬時,便出現不可預期的錯誤,
這只能靠檢視rtl部份來觀察。
3. Reset
有可能電路自行預設的initial state不在000..00,
造成一開始結果不一樣。
助教上