Pae*_*els 6 simulation verilog vhdl questasim
这个问题和答案对的启发是一个问题:从SystemVerilog测试台调用questa sim命令
这些问题询问Verilog代码如何控制执行模拟器(QuestaSim).我也看到了类似的VHDL问题和方法.
所以我的问题是:
进一步阅读:
为什么?谁能回答“为什么”?好吧,也许推动此类行为创建的 Mentor 的产品工程师或开发人员可以回答这个问题。但缺乏这一点,我们只能猜测。这就是我在这里所做的。
我可以想到一些可能的用例,但它们并不是不能以其他方式完成的事情。例如,可以有一个通用的“测试台控制器”,它根据泛型/参数可以调用某些模拟器行为。(编辑:重新阅读您的链接之一后,我发现这就是确切的用例。)
例如,假设我有这个“通用”测试台代码:
module testbench;
parameter LOG_SIGNALS = 1'b0;
initial
begin
if LOG_SIGNALS
begin
// Log all signals in the design
mti_fli::mti_Cmd("add wave -r /*")
end
endmodule
Run Code Online (Sandbox Code Playgroud)
然后,人们可以将其调用为:
vsim -c -gLOG_SIGNALS=1 work.testbench
Run Code Online (Sandbox Code Playgroud)
最大的用例可能是vsim从某些环境调用。如果要处理一个do文件,我不确定是否可以将参数传递给脚本。假设有以下do文件:
if {$log_signals} {
add wave -r /*
}
Run Code Online (Sandbox Code Playgroud)
如何$log_signals从命令行进行设置?我想可以通过环境变量来做到这一点,例如:
if { [info exists ::env(LOG_SIGNALS)] } {
add wave -r /*
}
Run Code Online (Sandbox Code Playgroud)
其他用例可能是打开/关闭覆盖数据的捕获、列表文件,甚至可能是结束模拟的奇怪情况。
当然,所有这些都可以通过其他方式处理。我认为在方式上更加清晰并且更容易维护。
至于VerTCL,我觉得它很有趣。但不完整。或者至少是准系统。我发现脚本化测试非常有用(我们在工作的地方使用它们)。VerTCL 是一个很好的方法(如果您喜欢 TCL)。但它确实需要一些围绕它的框架来读取信号、驱动信号以及以其他方式管理模拟。