XiangShan(香山)是一个开源的高性能 RISC-V 处理器项目。
**项目介绍**
XiangShan 项目的目标是提供一个灵活、高效的芯片开发平台,方便开发者学习和研究 RISC-V 架构和处理器设计。该项目包含了处理器设计文件、仿真工具、以及相关文档和教程。
**文档和演示文稿**
XiangShan-doc 是项目的官方文档库,包含设计规范、技术幻灯片、教程等内容。微架构文档已发布,可访问 [https://xiangshan-doc.readthedocs.io](https://xiangshan-doc.readthedocs.io) 查看。
**出版物**
XiangShan 项目的研究成果发表在 MICRO 2022 会议上,论文题目为“Towards Developing High Performance RISC-V Processors Using Agile Methodology”。论文介绍了 XiangShan 处理器以及敏捷开发方法在高性能 RISC-V 处理器开发中的应用,并涵盖了加速芯片开发过程的工具,包括设计、功能验证、调试、性能验证等。
**架构**
XiangShan 处理器有多个稳定版本,包括 Yanqihu(雁栖湖)、Nanhu(南湖)和 Kunminghu(昆明湖)。Kunminghu 是当前正在开发的版本,其微架构概述如下所示。
**子目录概述**
一些关键目录如下:
```
├── src
│ └── main/scala # 设计文件
│ ├── device # 仿真虚拟设备
│ ├── system # SoC 封装
│ ├── top # 顶层模块
│ ├── utils # 工具代码
│ └── xiangshan # 主要设计代码
│ └── transforms # 有用的 firrtl 变换
├── scripts # 敏捷开发脚本
├── fudian # XiangShan 的浮点单元子模块
├── huancun # XiangShan 的 L2/L3 缓存子模块
├── difftest # difftest 联合仿真框架
└── ready-to-run # 预构建的仿真镜像
```
**IDE 支持**
**bsp**
```
make bsp
```
**IDEA**
```
make idea
```
**生成 Verilog 代码**
运行 `make verilog` 生成 Verilog 代码。输出文件为 `build/XSTop.v`。更多信息请参考 Makefile。
**通过仿真运行程序**
**准备环境**
* 设置环境变量 NEMU_HOME 为 NEMU 项目的绝对路径。
* 设置环境变量 NOOP_HOME 为 XiangShan 项目的绝对路径。
* 设置环境变量 AM_HOME 为 AM 项目的绝对路径。
* 安装 mill,参考本指南的手册部分。
* 克隆此项目并运行 `make init` 初始化子模块。
**使用仿真器运行**
* 安装 Verilator,一个开源的 Verilog 仿真器。
* 运行 `make emu` 使用 Verilator 构建 C++ 仿真器 `./build/emu`。
* 参考 `./build/emu --help` 获取仿真器的运行时参数。
* 参考 Makefile 和 verilator.mk 获取更多信息。
**示例:**
```
make emu CONFIG=MinimalConfig EMU_THREADS=2 -j10
./build/emu -b 0 -e 0 -i ./ready-to-run/coremark-2-iteration.bin --diff ./ready-to-run/riscv64-nemu-interpreter-so
```
**故障排除指南**
请参考故障排除指南。
**致谢**
XiangShan 的实现受到多篇关键论文的启发。这些论文列在 XiangShan 文档中,请参阅:致谢。我们非常鼓励和期望未来能够基于 XiangShan 实现更多学术创新。