eda-sim-wave-analyzer
New通用 EDA 仿真与波形解析流程。用于连接用户授权的远程/虚拟机工程,运行仿真生成 FSDB/VCD,打开 Verdi/nWave,加载 rc 关键信号,并用 fsdbreport 等工具解析波形后生成中文 Markdown 报告。用户提到“通过这个skill跑仿真”“用这个skill跑波形解析”“跑仿真并打开 verdi”“加载 rc 关键信号”“解析波形生成 md/报告”“仿真和解析波形的skill”等任务时使用。
Overview
EDA Sim Wave Analyzer
本 skill 是通用仿真/波形分析框架,目标是完成:
连接目标机器 -> 进入工程 -> 运行仿真 -> 打开 Verdi/nWave -> 加载 rc -> 解析波形 -> 生成中文 Markdown 报告不要在 skill 中保存真实用户名、密码、私钥、IP、机器名、公司名、个人路径或 license 信息。所有环境相关信息都从用户当前请求、工作区配置、授权连接 skill 或运行时发现。
依赖
连接 VMware/Windows host 上的 Linux guest 时,优先依赖这个公开 skill:
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。
输入约定
尽量从用户请求中提取这些参数;缺少时使用合理默认或先探测:
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 跑仿真”,先查看当前上下文是否已经有工程目录、仿真计划或上一轮命令;否则简短询问工程路径和仿真命令。
连接目标机器
- 如果用户指定 VMware guest,使用
huyf-web/windows-ssh-skill的连接流程获取 SSH。
示例,参数必须由用户提供或运行时发现,不能硬编码:
.\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"- 连接成功后验证:
ssh -T -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=no -i <ssh_key> <ssh_target> "echo CONNECTED_OK; hostname; whoami; pwd"- 若 SSH 不通,回到连接 skill 做网络/VMware Tools/guest IP 修复。不要在本 skill 中写入固定 IP 或固定账户。
运行仿真
进入远端仿真目录并执行用户指定或工程计划中的命令。
推荐用 base64 包装远端脚本,避免 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 : 0、UVM_FATAL : 0、TEST_PASS等。
打开 Verdi/nWave 并加载 rc
- 若已有 rc,优先复用。
- 若需要根据新波形名生成 rc,只替换路径和本次 run 标识,不破坏原 rc。
- 若没有 rc,基于用户指定信号或
references/key_signals.md的示例生成最小 rc。
启动示例:
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 &验证:
pgrep -af 'verdi|Novas|nWave'
sed -n '1,80p' "<verdi-log>"如果远端 GUI 不可用,只报告 Verdi 启动失败原因,并继续执行离线波形解析。
解析波形
FSDB 推荐使用 fsdbreport。这个工具版本常见限制是:一条命令里不要重复多个 -s,否则可能只保留最后一个信号。逐信号循环导出更稳。
远端脚本模板:
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"把结果拉回主机:
scp -o StrictHostKeyChecking=no -i <ssh_key> <ssh_target>:/tmp/codex_wave_dump/all.txt .\.codex_tmp\wave_dump_all.txt生成中文报告
报告写到主机工作区,默认:
reports/<project_or_case>_waveform_analysis.md报告结构:
- 波形总体描述:工程、仿真命令、wave 文件、rc 文件、仿真结果。
- 解析方法:说明使用的工具、时间单位、关键信号。
- 关键节点详细说明:按时间线解释复位、初始化、状态机、速率/配置、数据传输、结束条件。
- 结论:本次波形证明了什么,是否通过。
- 后续建议:断言、scoreboard、覆盖率、额外信号或下一轮 case。
要求:
- •中文描述要先总体后细节。
- •关键节点必须来自本次 log/波形导出,不要硬编码历史时间。
- •如果某些信号导不出,要在报告中说明缺失原因和下一步建议。
- •不写入私钥、密码、license、个人路径、真实 IP 等隐私信息。
可选 recipe:PCIe Gen5
当用户明确要求 PCIe Gen5,且工程存在对应 Makefile/vseq 时,可使用类似命令:
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
mkdir -p .claude/skillsmkdir -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/eda-sim-wave-analyzerSecurity Audits
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.