跳到主要内容

实验:从源码到仿真波形

本实验建立可重复的学习闭环:源码定位 → 构建 → 运行小程序 → 生成波形 → 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 阅读顺序​

  1. 从顶层时钟、复位和 commit 信号确认仿真活着;
  2. 用 commit PC 定位目标指令;
  3. 逆向寻找它的 ROB/FTQ 身份;
  4. 再展开到预测器、调度器或 LSU 内部;
  5. 用源码中的更新条件解释每次状态变化。

实验产物​

保留一张结构截图、一段关键波形、运行命令、源码提交和一页结论。学习网站后续每个专题实验都应复用这一模板。