BeClaude

eda-sim-wave-analyzer

New
1GitHub TrendingDocumentationby huyf-web

通用 EDA 仿真与波形解析流程。用于连接用户授权的远程/虚拟机工程,运行仿真生成 FSDB/VCD,打开 Verdi/nWave,加载 rc 关键信号,并用 fsdbreport 等工具解析波形后生成中文 Markdown 报告。用户提到“通过这个skill跑仿真”“用这个skill跑波形解析”“跑仿真并打开 verdi”“加载 rc 关键信号”“解析波形生成 md/报告”“仿真和解析波形的skill”等任务时使用。

First seen 5/23/2026

Overview

EDA Sim Wave Analyzer

本 skill 是通用仿真/波形分析框架,目标是完成:

text
连接目标机器 -> 进入工程 -> 运行仿真 -> 打开 Verdi/nWave -> 加载 rc -> 解析波形 -> 生成中文 Markdown 报告

不要在 skill 中保存真实用户名、密码、私钥、IP、机器名、公司名、个人路径或 license 信息。所有环境相关信息都从用户当前请求、工作区配置、授权连接 skill 或运行时发现。

依赖

连接 VMware/Windows host 上的 Linux guest 时,优先依赖这个公开 skill:

text
https://github.com/huyf-web/windows-ssh-skill

该依赖通常提供 vmware-ssh-connect 工作流,用于:

  • 发现正在运行的 VMware VM。
  • 通过 VMware Tools 获取 guest IP。
  • 必要时连接虚拟网卡。
  • 在授权凭据下安装临时 SSH key。
  • 输出可复用 SSH 命令。

如果该依赖未安装,先按 skill-installer 从 GitHub 安装,或临时参考仓库中的 connect-vmware-ssh.ps1。不要把用户的真实凭据写入本 skill。

输入约定

尽量从用户请求中提取这些参数;缺少时使用合理默认或先探测:

text
target_name       目标机器或 VM 名称,可选
vmx_path          VMware .vmx 路径,可选
ssh_target        user@host,可由连接 skill 发现
ssh_key           SSH key 路径,可由连接 skill 生成
project_dir       远端工程目录
sim_dir           远端仿真目录
sim_cmd           仿真命令
wave_file         FSDB/VCD 路径
rc_file           Verdi/nWave rc 路径
report_path       主机侧 Markdown 报告路径
display           远端 GUI DISPLAY,默认尝试 :0

若用户只说“通过这个 skill 跑仿真”,先查看当前上下文是否已经有工程目录、仿真计划或上一轮命令;否则简短询问工程路径和仿真命令。

连接目标机器

  1. 如果用户指定 VMware guest,使用 huyf-web/windows-ssh-skill 的连接流程获取 SSH。

示例,参数必须由用户提供或运行时发现,不能硬编码:

powershell
.\scripts\connect-vmware-ssh.ps1 `
  -VmName "<vm-name>" `
  -VmxPath "<optional-vmx-path>" `
  -GuestUser "<guest-user>" `
  -GuestPassword "<provided-at-runtime>" `
  -Interface "<guest-interface>" `
  -KeyPath ".\.codex_tmp\vmware_ssh_key"
  1. 连接成功后验证:
powershell
ssh -T -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=no -i <ssh_key> <ssh_target> "echo CONNECTED_OK; hostname; whoami; pwd"
  1. 若 SSH 不通,回到连接 skill 做网络/VMware Tools/guest IP 修复。不要在本 skill 中写入固定 IP 或固定账户。

运行仿真

进入远端仿真目录并执行用户指定或工程计划中的命令。

推荐用 base64 包装远端脚本,避免 PowerShell 对 $()、管道、引号做本地解释:

powershell
$script = @'
set -e
cd "<remote-sim-dir>" || exit 2
echo SIM_START_$(date +%Y%m%d_%H%M%S)
<simulation-command> 2>&1 | tee /tmp/codex_sim_run.log
st=${PIPESTATUS[0]}
echo SIM_EXIT=$st
exit $st
'@
$b64=[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($script))
ssh -T -o BatchMode=yes -o ServerAliveInterval=30 -o ServerAliveCountMax=20 -o ConnectTimeout=10 -o StrictHostKeyChecking=no -i <ssh_key> <ssh_target> "printf '%s' '$b64' | base64 -d > /tmp/codex_run_sim.sh; bash /tmp/codex_run_sim.sh"

仿真后检查:

  • 仿真退出码。
  • log 中的 error/fatal 计数。
  • FSDB/VCD 是否生成且非空。
  • 工程特定通过标志,例如 UVM_ERROR : 0UVM_FATAL : 0TEST_PASS 等。

打开 Verdi/nWave 并加载 rc

  1. 若已有 rc,优先复用。
  2. 若需要根据新波形名生成 rc,只替换路径和本次 run 标识,不破坏原 rc。
  3. 若没有 rc,基于用户指定信号或 references/key_signals.md 的示例生成最小 rc。

启动示例:

bash
cd "<remote-sim-dir>" || exit 2
export DISPLAY="${DISPLAY:-:0}"
nohup <verdi-bin> \
  -ssf "<wave-file.fsdb>" \
  -sswr "<restore-file.rc>" \
  > "<verdi-log>" 2>&1 &

验证:

bash
pgrep -af 'verdi|Novas|nWave'
sed -n '1,80p' "<verdi-log>"

如果远端 GUI 不可用,只报告 Verdi 启动失败原因,并继续执行离线波形解析。

解析波形

FSDB 推荐使用 fsdbreport。这个工具版本常见限制是:一条命令里不要重复多个 -s,否则可能只保留最后一个信号。逐信号循环导出更稳。

远端脚本模板:

bash
cd "<wave-dir>" || exit 2
wave="<wave-file.fsdb>"
dump_dir="/tmp/codex_wave_dump"
rm -rf "$dump_dir"
mkdir -p "$dump_dir"

while IFS= read -r spec; do
  [ -z "$spec" ] && continue
  case "$spec" in \#*) continue ;; esac
  name=${spec%%:*}
  sig=${spec#*:}
  out="$dump_dir/${name}.txt"
  log="$dump_dir/${name}.log"
  fsdbreport "$wave" -bt 0ns -et "<end-time-or-default>" -of h -cn 0 -s "$sig" -o "$out" >"$log" 2>&1 || true
  echo "### $name $sig"
  if [ -s "$out" ]; then sed -n '1,160p' "$out"; else sed -n '1,60p' "$log"; fi
done < /tmp/codex_key_signal_specs.txt > "$dump_dir/all.txt"

把结果拉回主机:

powershell
scp -o StrictHostKeyChecking=no -i <ssh_key> <ssh_target>:/tmp/codex_wave_dump/all.txt .\.codex_tmp\wave_dump_all.txt

生成中文报告

报告写到主机工作区,默认:

text
reports/<project_or_case>_waveform_analysis.md

报告结构:

  1. 波形总体描述:工程、仿真命令、wave 文件、rc 文件、仿真结果。
  2. 解析方法:说明使用的工具、时间单位、关键信号。
  3. 关键节点详细说明:按时间线解释复位、初始化、状态机、速率/配置、数据传输、结束条件。
  4. 结论:本次波形证明了什么,是否通过。
  5. 后续建议:断言、scoreboard、覆盖率、额外信号或下一轮 case。

要求:

  • 中文描述要先总体后细节。
  • 关键节点必须来自本次 log/波形导出,不要硬编码历史时间。
  • 如果某些信号导不出,要在报告中说明缺失原因和下一步建议。
  • 不写入私钥、密码、license、个人路径、真实 IP 等隐私信息。

可选 recipe:PCIe Gen5

当用户明确要求 PCIe Gen5,且工程存在对应 Makefile/vseq 时,可使用类似命令:

bash
make run tb_sel=base waves=1 max_gen=5 tc=pcie_test vseq=gen5_stable_data_vseq seed=<seed>

PCIe Gen5 常看信号和 LTSSM 编码参考见 references/key_signals.md。这些只是 recipe 示例;其他项目应替换为自己的关键信号列表。

Install & Usage

1
Create the skills directory
mkdir -p .claude/skills
2
Download the skill file
mkdir -p .claude/skills && curl -o .claude/skills/eda-sim-wave-analyzer.md https://raw.githubusercontent.com/huyf-web/eda-sim-wave-analyzer/main/SKILL.md
3
Invoke in Claude Code
/eda-sim-wave-analyzer
View source on GitHub

Security Audits

LicenseUnknownSourceWarnRepositoryPass

Frequently Asked Questions

What is eda-sim-wave-analyzer?

通用 EDA 仿真与波形解析流程。用于连接用户授权的远程/虚拟机工程,运行仿真生成 FSDB/VCD,打开 Verdi/nWave,加载 rc 关键信号,并用 fsdbreport 等工具解析波形后生成中文 Markdown 报告。用户提到“通过这个skill跑仿真”“用这个skill跑波形解析”“跑仿真并打开 verdi”“加载 rc 关键信号”“解析波形生成 md/报告”“仿真和解析波形的skill”等任务时使用。

How to install eda-sim-wave-analyzer?

To install eda-sim-wave-analyzer: create the skills directory (mkdir -p .claude/skills), then run: mkdir -p .claude/skills && curl -o .claude/skills/eda-sim-wave-analyzer.md https://raw.githubusercontent.com/huyf-web/eda-sim-wave-analyzer/main/SKILL.md. Finally, /eda-sim-wave-analyzer in Claude Code.

What is eda-sim-wave-analyzer best for?

eda-sim-wave-analyzer is a skill categorized under Documentation. Created by huyf-web.