SystemVerilog:如何断言模块内部的信号?

时间:2014-07-25 16:16:29

标签: system-verilog assertion

我对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的位置以通过层次结构,但它似乎不起作用..

谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

由于您已经在testbenchmodule(我假设这是您编写断言的地方),请尝试引用mymodule.read_enable_pulse。这应该在Verilog中允许分层路径。

如果这不起作用(由于模拟器限制),那么几乎所有模拟器都提供可用于监视内部信号的系统功能。例如,Cadence有$nc_mirror,Mentor有$init_signal_spy。有关详细信息,请查看模拟器手册。