【问题标题】:How to use generate inside testbench to instantiate different test modules?如何使用 generate inside testbench 来实例化不同的测试模块?
【发布时间】:2018-02-11 02:23:25
【问题描述】:

我正在尝试在我的测试台中运行不同的测试程序,并根据我设置的生成标志来运行它们。请注意,下面的代码是我将 ModelSim 定义为顶层的代码。这是我想要做的:

module testbench
#( parameter FLAG1 = 0, parameter FLAG2 = 1)();
    ... // code here
    generate
        if (FLAG1 == 1)
            Component1(signals);
        else if (FLAG2 == 1)
            Component2(signals);
        else
            // set everything to zero
    endgenerate
endmodule

有了这个,我只想能够在这个测试台中设置参数的默认值并运行不同的案例。这在 ModelSim PE Student Edition 10.4a 中编译得很好,但是当我从生成的实例名称中添加信号时,Modelsim 无法识别该实例存在?

** Error: (vish-4014) No objects found matching 'spi_tb/uut4/*'.

【问题讨论】:

    标签: verilog test-bench


    【解决方案1】:

    我想通了。它确实有效,modelsim 只是将实例命名为 genblk[i]/youInstanceNameHere。

    【讨论】:

    • 仅供参考,您可以通过应用标签来选择生成块的名称(例如:if (FLAG1 == 1) begin : genFlag1);否则你会得到默认的 genblk[i] 语法。
    • 太棒了,谢谢!你知道如何使用这种方法在 .do 文件中向 ModelSim 添加波形吗?当我尝试以下操作时,它无法识别它并抱怨括号内的数字,即使这是 GUI 显示实例名称的方式:#add wave -group dbnc $top_level/uut1/debouncegen[0]/debounce/*
    • 我不确定 ModelSim,但我已经看到其他模拟器接受带有引号的路径来绕过特殊条件,例如转义名称。所以试试#add wave -group dbnc "$top_level/uut1/debouncegen[0]/debounce/*"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多