2010-06-30 36 views
0

我在Verilog中寫了一個計數器,然後用測試臺測試它。我的測試平臺給出了正確的結果,所以我的代碼是確定的。但它是否會立即給出長時間的結果。Verilog測試平臺可以使用真實時鐘嗎?

是否可以實時獲取結果?我的意思是在每一秒我的測試平臺會產生一個新的結果行? (如果可能的話,怎麼做?)

+1

出於興趣,你爲什麼要這麼做?通常我們抱怨模擬速度太慢!!! – Marty 2010-06-30 14:14:18

回答

3

我不完全清楚你想完成什麼,但是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 
+1

'$ system()'也適用於Cadence的Incisive(NC-Verilog)... – Marty 2010-06-30 14:15:02

+0

@Marty:謝謝。我更新了我的答案。 – toolic 2010-06-30 16:06:14