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

VERILATOR: 运行带C++封装的HelloWorld SystemVerilog后终端卡住

Verilator HelloWorld示例运行卡住故障排查

核心故障原因及解决方法

1. 仿真逻辑无终止条件(最高发原因)

  • sim_main.cpp主程序未设置退出触发条件,或our.v逻辑未调用$finish系统函数,导致仿真陷入无限循环:
    • 检查sim_main.cpp的主循环逻辑,默认示例的循环依赖Verilated::gotFinish()触发退出,若HDL代码未调用$finish,该循环会永远执行
    • 修复方案二选一:
      • 在our.v的打印逻辑后添加$finish;语句
      • 在C++主循环中添加仿真周期计数,达到预设阈值后主动break跳出循环并终止仿真

2. HDL逻辑存在死锁

  • 检查our.v是否存在组合逻辑环路、时钟无翻转等问题,导致仿真卡在eval()调用步骤无法推进
  • 可在编译时添加--trace参数生成VCD波形,终止卡住的进程后查看波形最后停留的时间节点,定位问题逻辑

3. 开发版Verilator缺陷

  • 你使用的是4.211开发快照版本,非官方稳定发布版,存在生成代码BUG的概率。可降级到Verilator 4.210稳定版本复现验证,若稳定版无问题则为开发快照的已知缺陷

4. 可执行文件调用错误

  • Verilator默认生成的仿真可执行文件名为obj_dir/V<顶层模块名>,如果你our.v的顶层模块名为our,正确的运行命令应为./obj_dir/Vour,错误调用其他文件会导致不可预期的异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:09:03