1.$monitor 的作用
$monitor 是 Verilog 中的一个系统任务,用于在仿真过程中持续监控变量的变化,并将结果输出到控制台。
2.例程说明
$monitor("a=%b b=%b cin=%b | cout=%b sum=%b", a, b, cin, cout, sum);
每当列表中的变量(a, b, cin, cout, sum)发生变化时,$monitor 会自动执行并输出当前值。
其中
%b:以二进制形式打印变量值;
竖线 | 用于分隔输入和输出,提高可读性。
输出结果:
0: a=0 b=0 cin=0 | cout=0 sum=0
10: a=0 b=0 cin=1 | cout=0 sum=1
20: a=0 b=1 cin=0 | cout=0 sum=1
3.与 $display 的区别
$display:只在执行到该行代码时输出一次
$monitor:持续监控变量,只要变量变化就会输出
4.注意事项
性能影响:过多使用$monitor会降低仿真速度
变量范围:只能监控当前作用域内的变量
多驱动问题:如果变量由多个源驱动,可能导致输出异常
对于复杂设计,可以使用$dumpvars配合波形查看工具(如 GTKWave):
initial begin
$dumpfile("waveform.vcd"); // 指定波形文件
$dumpvars(0, tb_full_adder); // 转储所有信号
end
这种方式可以在仿真后交互式查看信号变化,适合调试大型设计。
3987

被折叠的 条评论
为什么被折叠?



