You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vivado TCL模式下仅重定向launch_simulation的仿真输出?

在Vivado TCL模式下单独捕获Verilog测试平台的$display/$monitor输出

有几种可行的方法可以实现只把测试平台的$display/$monitor输出写入文件,而分离Vivado本身的编译、细化流程日志:

方法1:通过launch_simulation传递XSim参数直接捕获仿真输出

Vivado的launch_simulation命令支持通过-runargs选项将参数传递给底层的XSim仿真器,XSim提供了专门参数来单独捕获仿真输出:

launch_simulation -runargs {-log testbench_output.log}

这里的-log参数会让XSim把测试平台中$display、$monitor以及其他仿真相关的标准输出写入指定的testbench_output.log文件,而Vivado自身的编译、细化等流程日志仍会输出到控制台或Vivado的主日志文件中,不会混入到仿真输出文件里。

如果需要同时保留控制台输出和文件记录,可以加上-stdout参数:

launch_simulation -runargs {-log testbench_output.log -stdout console}

方法2:修改Verilog测试平台直接定向输出

如果允许修改测试平台代码,可以在Verilog中直接将$display的输出定向到文件,完全绕过Vivado的日志干扰:

integer log_file;
initial begin
    log_file = $fopen("testbench_output.log", "w");
    // 用$fdisplay替代$display,输出到文件
    $fdisplay(log_file, "Simulation start at %0t", $time);
    // 若需要同时输出到控制台和文件,可同时调用$display和$fdisplay
    $display("Simulation start at %0t", $time);
end
// 仿真结束时关闭文件
final begin
    $fclose(log_file);
end

这种方法的优势是完全不受Vivado日志的影响,输出内容完全由测试平台控制。

方法3:利用Vivado TCL日志过滤(精准度稍低)

可以通过调整Vivado的日志级别,过滤掉大部分流程日志,只保留仿真相关输出:

# 设置日志级别为WARNING及以上,过滤掉INFO级别的流程日志
set_msg_config -severity INFO -suppress
# 运行仿真
launch_simulation
# 恢复默认日志级别(可选)
set_msg_config -severity INFO -unsuppress

不过这种方法可能会误过滤掉一些有用的仿真相关INFO日志,仅作为备选方案。

内容的提问来源于stack exchange,提问作者WARhead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:40:04