2
我現在對一塊Verilog代碼感到困惑,它測試阻塞或非阻塞賦值功能與Delay模型的組合。帶延遲的阻塞/非阻塞
的代碼如下EDA Playground:
module cl_tb;
reg x,y,z;
initial begin
x = 2;
#4;
y <= #9 x;
x = 1;
#50 $stop;
end
initial begin
$monitor("%0t,%d,%d,%d",$time,x,y,z);
end
always @(x,y) begin
z = # 2 x+y;
end
endmodule
通過根據Verilog的分層事件的手工計算,我能得到的結果 時間:X值,Y值,Z值低於:
0: 2,x,x
2: 2,0,2
4: 1,0,2
6: 1,0,1
13: 1,2,1
15: 1,2,3
然而,模擬的結果是:
0,0,x,x
4,1,x,x
13,1,0,x
15,1,0,1
我想知道爲什麼始終@(x,y)在時隙2和4處沒有觸發。
你是正確的,寬度錯配和未初始化的X,Y,Z值導致了觀察問題。 \ n另外,只有修改該部分才能得到與手算相同的模擬結果。 $監視器足以在某個模擬步驟中捕獲「最終」結果,因爲它處於非活動區域。所以沒有永遠+ $顯示是不需要我想:)再次感謝您的時間 – DreamOn 2014-10-19 02:45:08