【发布时间】:2016-11-29 14:46:44
【问题描述】:
请帮助解决我在规划结核病时遇到的一个问题。 假设我的 DUT 有一些作为参数的输入端口,例如:
module Multiplier #(parameter WIDTH = 8) (
input [WIDTH-1:0] addr,
现在我想让我的测试控制这个 WIDTH 参数。 我希望测试随机化 WIDTH 参数,然后将该参数应用于 DUT。并且基于该参数值,我的整个测试平台将更改事务信号、驱动程序、监视器等。 实施此参数测试的最佳方法是什么?
我想在测试类中有 WIDTH 参数,并在那里随机化它。然后在实例化期间将其分配给 DUT。对于 TB,将随机化值放入 config_db 并在 agent 中获取它并将其分配给 config 类适当的参数。
谢谢 哈克
【问题讨论】:
-
我怀疑这是可能的。您的
uvm_test仅在详细说明后开始,此时所有模块都已实例化。您需要在此之前设置参数。我建议在编译期间使用$urandom之类的东西 -
感谢您的回答。你的意思是在顶部模块调用中使用 $urandom?
-
我相信
$urandom只能在运行时调用。 -
我也同意这可能是不可能的。因为在运行时会有一个固定的值
WIDTH,根据这个值会创建所有的模块端口。 -
我猜如果我调用 urandom,generate 语句可能会有所帮助,而不是使用 generate 语句实例化 DUT
标签: uvm