我对Verilog很新(当然还有SystemVerilog)。我有一个RTL模块来测试它的功能。我试图使用断言来做到这一点,而不是应用刺激然后观察它,以便我的模块可以重复使用..
所以无论如何,我的断言如下:
always @(posedge start_test)
if (read == 1'b1 && test_type == 3'b001 && read_enable_pulse == 1'b0)
assert property(read_test)
$display("@%0dn read fail injection passed",$time)
else ("@%0dn read fail injection passed",$time);
property read_test;
@(posedge tckg) start_test |-> ##8 ((test_done == 1'b1) && (test_pass == 1'b0));
endproperty
在这种情况下,我有一个模块内部的read_enable_pulse
信号和
我希望从测试平台上看到它没有绑定(我也不知道如何)它。
我尝试将testbenchmodule.mymodule.read_enable_pulse
放在read_enable_pulse
的位置以通过层次结构,但它似乎不起作用..
谁知道怎么做?
答案 0 :(得分:1)
由于您已经在testbenchmodule
(我假设这是您编写断言的地方),请尝试引用mymodule.read_enable_pulse
。这应该在Verilog中允许分层路径。
如果这不起作用(由于模拟器限制),那么几乎所有模拟器都提供可用于监视内部信号的系统功能。例如,Cadence有$nc_mirror
,Mentor有$init_signal_spy
。有关详细信息,请查看模拟器手册。