已解决:如何在顶级DUT内的模块上使用System-Verilog断言

时间:2019-06-04 19:21:27

标签: system-verilog test-bench system-verilog-assertions

语法是正确的,当我希望断言时,我混淆了两个循环,导致没有正确输出任何内容。

我试图编写一个内存调度测试台,并验证我是否在正确的时间访问了正确的地址并写入了正确的值,我想将信号内部我最重要的模块以及制定的时间表。

我尝试查找“点表示法”并使用模拟器(ModelSim)访问信号(可以在波形上很好地完成此操作),但是我希望能够使用SVA来检查我是否具有正确的值

module top(input d, output q)

    //wires
    wire sub1_output

    // Instantiate submodule
    sub_module1 sub1(.sub1_output(sub1_output));

    always begin
        // logic
    end
endmodule
module tb_top();

    reg d;
    wire q;

    DUT top(.*);

    initial begin
        // This is where I want to access something within my DUT
        assert(DUT.sub1_output == 1'b1)
    end
endmodule

尝试此方法时,我的代码可以编译并运行,但是如果编写断言以使其失败并停止我的代码,则不会发生任何事情。

1 个答案:

答案 0 :(得分:0)

DUT.sub1_output

是在顶级实例内对信号使用断言的正确格式。