跳到主要内容

环境、仓库与生成物

学习香山时最容易混淆三种东西:Chisel 源码、生成后的 SystemVerilog、仿真执行文件。三者是同一设计在不同阶段的表示,但用途不同。

应该在哪一层回答什么问题​

问题优先阅读
为什么采用这种微架构Chisel、论文、设计文档
某参数如何改变实例数量Chisel 参数与生成日志
某根最终信号叫什么生成后的 SystemVerilog
某一拍为什么停顿波形与 SystemVerilog
修改是否保持功能测试、差分仿真、形式验证

当前教程的源码基线​

本教程以本地仓库 /home/eda/xs-env/XiangShan 的提交 133d7dc4b 为内容锚点。学习时先确认:

cd /home/eda/xs-env/XiangShan
git rev-parse --short HEAD

若结果不同,不代表设计一定不同,但类名、参数和信号位置可能漂移。应把教程中的路径当作“导航入口”,而不是永远有效的固定行号。

源码树的第一层地图​

src/main/scala/xiangshan/
├── frontend/ 预测、FTQ、IFU、ICache
├── backend/ 译码、重命名、调度、执行、ROB
├── mem/ LSU、Load/Store Queue、预取、SBuffer
├── cache/dcache/ L1 数据 Cache
├── XSCore.scala 核心顶层连接
└── Parameters.scala 核心参数

练习​

找出 XSCore.scala 中前端、后端和 MemBlock 的实例化位置。暂时不要进入模块内部,只画出它们之间最粗粒度的连接图,并标记哪几条通路是从后向前返回的。