如何使用没有初始或总是块的$ display

时间:2011-03-10 20:21:59

标签: verilog

我正在尝试调试不使用initial或始终使用$ display语句的Verilog模块。但是,这些在初始或总是块之外似乎是非法的。这是为什么?我有什么选择?

1 个答案:

答案 0 :(得分:1)

为什么呢?因为这就是IEEE标准规定的方式。

另一种方法是从测试平台向下扩展到模块实例。您的测试平台将有initialalways块,将调用$display。另一个有用的系统任务是$monitor

module tb;

reg a = 0;

dut dut ( .a(a) );

initial begin
    $monitor("time=%0t, a=%b, b=%b", $time, a, dut.b);
    #5 a = 1;
    #5 a = 0;
    #5 $finish;
end

endmodule

module dut (input a);
    wire b = ~a;
endmodule

运行模拟时应该得到这种输出:

time=0, a=0, b=1
time=5, a=1, b=0
time=10, a=0, b=1

更新: dut.b信号是一个分层说明符,允许您从顶层模块(tb)向下查看另一个模块。 dut是实例名称,b是dut实例中的信号名称。句点将实例名称与信号名称分开。