verilog之monitor
1、函數作用
monitor用於追蹤變量的變化情況,這在實際使用中還是非常實用的。電路中的某個信號的變化可以通過monitor檢測,不需要使用波形圖去仔細查找。也便於准確描述某個信號的變化。
2、基本用法
module monitor; reg a_monitor; reg b_monitor; initial begin a_monitor=1; b_monitor=0; $monitor($time,,"a= %b",a_monitor); $monitor($time,,"b= %b",b_monitor); //$monitor($realtime,,"a=%b,b=%b",a_monitor,b_monitor); #1 a_monitor=0; #1 b_monitor=1; #1 a_monitor=1; b_monitor=0; #10 $stop; end endmodule
monitor具有單一進程性,即monitor只會執行一次,由monitoroff結束。同時使用兩個monitor會自動關閉前面的一個。上面的結果如下:
run -all # 0 b= 0 # 2 b= 1 # 3 b= 0 # ** Note: $stop : D:/Library/verilog_soft/P1_function/H2_monitor/monitor.v(19) # Time: 13 ns Iteration: 0 Instance: /monitor
注意stop函數先於monitor,如果stop同時有變量變化,是不會出現在結果中的。
需要檢測多個變量時使用多參數形式。使用time和realtime(帶小數)可以將時間顯示出來,用於凸顯時序。
3、總結
monitor是一個自動檢測函數,可以彌補display必須在需要顯示的地方插入才能跟蹤的缺點。使用monitor可以對某些關鍵變量的變化起到准確描述作用。