我在Verilog中寫了一個計數器,然後用測試臺測試它。我的測試平臺給出了正確的結果,所以我的代碼是確定的。但它是否會立即給出長時間的結果。Verilog測試平臺可以使用真實時鐘嗎?
是否可以實時獲取結果?我的意思是在每一秒我的測試平臺會產生一個新的結果行? (如果可能的話,怎麼做?)
我在Verilog中寫了一個計數器,然後用測試臺測試它。我的測試平臺給出了正確的結果,所以我的代碼是確定的。但它是否會立即給出長時間的結果。Verilog測試平臺可以使用真實時鐘嗎?
是否可以實時獲取結果?我的意思是在每一秒我的測試平臺會產生一個新的結果行? (如果可能的話,怎麼做?)
我不完全清楚你想完成什麼,但是Synopsys VCS模擬器有一個系統任務,名爲$system
,它可以用來在模擬過程中執行shell命令。如果按如下所示執行sleep 1
,則仿真將在每個時間步驟暫停1秒的掛鐘時間。這將導致您的模擬每秒顯示一條消息。當然,你的模擬會非常慢。請注意,$system
不是Verilog IEEE標準的一部分。
更新:我原來說$system
是特定於VCS。但是,馬蒂告訴我們,Cadence也支持它。
`timescale 1ns/1ns
module tb;
initial begin
$timeformat(-9, 1, "ns");
#5 $finish;
end
integer sec = 0;
always begin
#1;
$system("sleep 1");
sec = sec + 1;
$display("seconds = %0d, time = %0t", sec, $time);
end
endmodule
此打印如下:
seconds = 1, time = 1.0ns
seconds = 2, time = 2.0ns
seconds = 3, time = 3.0ns
seconds = 4, time = 4.0ns
$finish called from file "tb.v", line 8.
$finish at simulation time 5.0ns
出於興趣,你爲什麼要這麼做?通常我們抱怨模擬速度太慢!!! – Marty 2010-06-30 14:14:18