Axe*_*ega 3 verification modelsim system-verilog
我正在尝试使用时钟模块在SystemVerilog中构建测试平台cb_module.
我从命令行运行Modelsim:
vsim -c test_bench -do "run -all"
Run Code Online (Sandbox Code Playgroud)
一切正常但我无法弄清楚如果像这样的断言失败,如何让Modelsim退出并返回非零退出代码:
##1 assert(cb_module.dat_o == 4'h0) else $finish;
Run Code Online (Sandbox Code Playgroud)
您不想使用$finish退出模拟器 - 这被认为是正常退出.你应该使用$ error或$ fatal:
##1 assert(cb_module.dat_o == 4'h0) else $fatal("dat_o not 0");
Run Code Online (Sandbox Code Playgroud)
然后,您可以将其编入您的-do文件中.在后run命令返回,脚本应该调用runStatus或runStatus -full以确定是否运行终止正常或异常的原因.一旦脚本确定脚本因用户错误而终止,它就可以调用quit -code <n>并返回任何非零数字以指示失败情况.
许多测试不希望在断言失败时退出模拟器,因此它们使用$ error.然后,您可以使用该命令
coverage attribute -name TESTSTATUS
Run Code Online (Sandbox Code Playgroud)
它将返回测试运行期间生成的最严重消息的严重性代码.所以你最终可能想做
quit -code [coverage attribute -name TESTSTATUS -concise]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4992 次 |
| 最近记录: |