实验:从源码到仿真波形
本实验建立可重复的学习闭环:源码定位 → 构建 → 运行小程序 → 生成波形 → Verdi 观察。
第一步:记录基线
cd /home/eda/xs-env/XiangShan
git rev-parse HEAD
git status --short
把提交号、配置名、构建命令和 workload 记到实验笔记。没有这些信息,波形难以复现。
第二步:区分两种仿真目标
- 上游 Chisel 生成仿真:适合验证官方设计和参数配置;
- 重写 SystemVerilog 的 XSTop 仿真:适合观察最终可读 RTL 集成结果。
不要把 golden 文件表和重写 RTL 混在一起后仍称为“全重写仿真”。若采用混合模式,必须记录每个模块来自哪一侧。
第三步:选择最小 workload
第一次不要直接跑大型 benchmark。选一个包含循环、函数调用、Load/Store 的小程序,让关键事件容易在波形中定位。
第四步:控制波形规模
先只 dump 顶层、前端和一个专题模块。确认触发条件正确后再扩大层次;全核全时段 debug_access+all 很容易产生巨大 FSDB。
Verdi 阅读顺序
- 从顶层时钟、复位和 commit 信号确认仿真活着;
- 用 commit PC 定位目标指令;
- 逆向寻找它的 ROB/FTQ 身份;
- 再展开到预测器、调度器或 LSU 内部;
- 用源码中的更新条件解释每次状态变化。
实验产物
保留一张结构截图、一段关键波形、运行命令、源码提交和一页结论。学习网站后续每个专题实验都应复用这一模板。