bb-invoke-verilator

SkillMonitoring & ops

Invokes Verilator 5.012 to compile RTL + TB and run coverage-driven simulation, producing sim log / coverage.dat / VCD. Trigger scenarios: (1) running regression after bba-guru-verification completes the TB; (2) regression verification after RTL fixes; (3) explicit /bb-invoke-verilator.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the bb-invoke-verilator skill

What this skill tells your AI

The instructions your AI receives, as published by amoslee2026/babel in .claude/skills/bb-invoke-verilator/SKILL.md and read by ahel’s review.

职责

把 RTL(file_list.f)+ testbench(tb/tb_top.sv)编译为 verilator 可执行二进制并运行,产出 sim log、coverage 数据库、VCD 波形。

  • 调用者:bba-guru-verification
  • 下游消费者:bb-collect-coverage(读 coverage.dat
  • 禁止使用:Task / Agent / Skill

Input Args

argtyperequired默认说明
file_listpathtruefile_list.f,每行一个 RTL 源
tb_toppathtruedesigns/<name>/tb/tb_top.sv
design_namestringtrue路径 designs/<name>/sim_results/
sim_timestringfalse--time-resolution-unit 1ns时间单位
seedintfalse1+rand_seed=<seed>
enable_vcdboolfalsetrue是否 --trace --trace-structs
stampstringfalse<auto YYYYMMDD-HHMMSS>后缀

Output Contract

写入 designs/<name>/sim_results/,返回:

field
artifact_pathdesigns/<name>/sim_results/<stamp>.log
coverage_datdesigns/<name>/sim_results/coverage.dat
vcd_pathdesigns/<name>/sim_results/<stamp>.vcd (与 .log 同级,fix H-09)
obj_dirdesigns/<name>/sim_results/obj_dir_<stamp>/
script_pathdesigns/<name>/sim_results/run_sim_<stamp>.sh
validbool(编译+运行成功)
assertions_passbool(无 %Error / Assertion failed
sim_time_nsint(log 末尾 $finish at
errorstring|null

4-Phase 执行

Phase 1 — render_sim_script

scripts/render_verilator_sh.py 渲染:

#!/bin/bash
set -euo pipefail
source ~/wrk/eda_opensources/eda_env.sh
verilator --version | grep -q "Verilator 5.012" \
  || { echo "VERSION_MISMATCH"; exit 1; }

verilator --binary --coverage <vcd_flag> \
  -f <file_list> <tb_top> \
  --top-module tb_top \
  -Mdir designs/<name>/sim_results/obj_dir_<stamp>/ \
  -o sim_<stamp> -CFLAGS "-O2" -j 4

./designs/<name>/sim_results/obj_dir_<stamp>/sim_<stamp> \
  +rand_seed=<seed> 2>&1 | tee designs/<name>/sim_results/<stamp>.log

verilator_coverage \
  designs/<name>/sim_results/obj_dir_<stamp>/coverage.dat \
  --write designs/<name>/sim_results/coverage.dat

<vcd_flag> = --trace --trace-structs 当 enable_vcd=true。

Phase 2 — run_sim

scripts/run_verilator.pytimeout 1800 bash <script_path>,追加 exit:<rc>

Phase 3 — parse_sim_log

scripts/parse_sim_log.py

  • $finish at <ns>sim_time_ns
  • %Error / Assertion failedassertions_pass=false
  • exit:<rc> ≠ 0 → valid=false

sim_summary_<stamp>.json

Phase 4 — return

返回 JSON。下游 bb-collect-coverage 立即解析 coverage.dat

收敛 / 失败

状态处理
valid && assertions_passbb-collect-coverage
断言失败rtl-needs-fix
Phase 2 timeout(1800s)error="SIM_TIMEOUT"
VERSION_MISMATCH修复 eda_env.sh
编译失败反馈 %Error: <file>:<line>

资源索引

  • scripts/render_verilator_sh.py — Phase 1
  • scripts/run_verilator.py — Phase 2
  • scripts/parse_sim_log.py — Phase 3
  • references/verilator_flags.md
  • Gotcha/verilator_pitfalls.md

Signals

GitHub stars
42
Forks
10
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
bb-invoke-verilator
Source
github.com/amoslee2026/babel