xref: /XiangShan/README.md (revision 2a03c3bdc39c27c53d68f71caf088fe1fc0a4b6a)
105f23f57SWilliam Wang# XiangShan
264fc9c9dSZihao Yu
340adeb5aSwangkaifanXiangShan (香山) is an open-source high-performance RISC-V processor project.
464fc9c9dSZihao Yu
5f1d6f360SZibo Huang中文说明[在此](readme.zh-cn.md)。
664fc9c9dSZihao Yu
7e05e6e4fSXu, Zefan## Documentation
840adeb5aSwangkaifan
9e05e6e4fSXu, ZefanXiangShan's documentation is available at [docs.xiangshan.cc](https://docs.xiangshan.cc).
1057bb43b5Swakafa
11e05e6e4fSXu, ZefanThe microarchitecture documentation on [docs.xiangshan.cc](https://docs.xiangshan.cc) is currently outdated for the latest version (Kunminghu). An updated version is in progress.
12e05e6e4fSXu, Zefan
13e05e6e4fSXu, ZefanXiangShan User Guide has been published separately. You can find it at [XiangShan-User-Guide/releases](https://github.com/OpenXiangShan/XiangShan-User-Guide/releases).
1440adeb5aSwangkaifan
155986560eSYinan Xu## Publications
165986560eSYinan Xu
175986560eSYinan Xu### MICRO 2022: Towards Developing High Performance RISC-V Processors Using Agile Methodology
185986560eSYinan Xu
195986560eSYinan XuOur paper introduces XiangShan and the practice of agile development methodology on high performance RISC-V processors.
205986560eSYinan XuIt covers some representative tools we have developed and used to accelerate the chip development process, including design, functional verification, debugging, performance validation, etc.
215986560eSYinan XuThis paper is awarded all three available badges for artifact evaluation (Available, Functional, and Reproduced).
225986560eSYinan Xu
235986560eSYinan Xu![Artifacts Available](https://github.com/OpenXiangShan/XiangShan-doc/raw/main/publications/images/artifacts_available_dl.jpg)
245986560eSYinan Xu![Artifacts Evaluated — Functional](https://github.com/OpenXiangShan/XiangShan-doc/raw/main/publications/images/artifacts_evaluated_functional_dl.jpg)
255986560eSYinan Xu![Results Reproduced](https://github.com/OpenXiangShan/XiangShan-doc/raw/main/publications/images/results_reproduced_dl.jpg)
265986560eSYinan Xu
27e2aeeb1fSYinan Xu[Paper PDF](https://github.com/OpenXiangShan/XiangShan-doc/blob/main/publications/micro2022-xiangshan.pdf) | [IEEE Xplore](https://ieeexplore.ieee.org/abstract/document/9923860) | [BibTeX](https://github.com/OpenXiangShan/XiangShan-doc/blob/main/publications/micro2022-xiangshan.bib) | [Presentation Slides](https://github.com/OpenXiangShan/XiangShan-doc/blob/main/publications/micro2022-xiangshan-slides.pdf) | [Presentation Video](https://www.bilibili.com/video/BV1FB4y1j7Jy)
285986560eSYinan Xu
29708ceed4SYinan Xu## Follow us
30708ceed4SYinan Xu
31708ceed4SYinan XuWechat/微信:香山开源处理器
32708ceed4SYinan Xu
33708ceed4SYinan Xu<div align=left><img width="340" height="117" src="images/wechat.png"/></div>
34708ceed4SYinan Xu
35708ceed4SYinan XuZhihu/知乎:[香山开源处理器](https://www.zhihu.com/people/openxiangshan)
36708ceed4SYinan Xu
37708ceed4SYinan XuWeibo/微博:[香山开源处理器](https://weibo.com/u/7706264932)
38708ceed4SYinan Xu
39521bb218SRishikeshan Sulochana/Lavakumar (Work)You can contact us through [our mailing list](mailto:[email protected]). All mails from this list will be archived [here](https://www.mail-archive.com/[email protected]/).
40770ded88SLingrui98
4140adeb5aSwangkaifan## Architecture
4240adeb5aSwangkaifan
43521bb218SRishikeshan Sulochana/Lavakumar (Work)The first stable micro-architecture of XiangShan is called Yanqihu (雁栖湖) and is [on the yanqihu branch](https://github.com/OpenXiangShan/XiangShan/tree/yanqihu), which has been developed since June 2020.
448815ed52SYinan Xu
45521bb218SRishikeshan Sulochana/Lavakumar (Work)The second stable micro-architecture of XiangShan is called Nanhu (南湖) and is [on the nanhu branch](https://github.com/OpenXiangShan/XiangShan/tree/nanhu).
468815ed52SYinan Xu
478815ed52SYinan XuThe current version of XiangShan, also known as Kunminghu (昆明湖), is still under development on the master branch.
4840adeb5aSwangkaifan
496639e9a4STang HaojinThe micro-architecture overview of Kunminghu (昆明湖) is shown below.
5040adeb5aSwangkaifan
516639e9a4STang Haojin![xs-arch-kunminghu](images/xs-arch-kunminghu.svg)
5240adeb5aSwangkaifan
5340adeb5aSwangkaifan
5440adeb5aSwangkaifan
5540adeb5aSwangkaifan## Sub-directories Overview
5640adeb5aSwangkaifan
5740adeb5aSwangkaifanSome of the key directories are shown below.
5840adeb5aSwangkaifan
5940adeb5aSwangkaifan```
6040adeb5aSwangkaifan.
6157bb43b5Swakafa├── src
6257bb43b5Swakafa│   └── main/scala         # design files
6357bb43b5Swakafa│       ├── device         # virtual device for simulation
6457bb43b5Swakafa│       ├── system         # SoC wrapper
6557bb43b5Swakafa│       ├── top            # top module
6657bb43b5Swakafa│       ├── utils          # utilization code
675931ace3STang Haojin│       └── xiangshan      # main design code
685931ace3STang Haojin│           └── transforms # some useful firrtl transforms
6940adeb5aSwangkaifan├── scripts                # scripts for agile development
7057bb43b5Swakafa├── fudian                 # floating unit submodule of XiangShan
7157bb43b5Swakafa├── huancun                # L2/L3 cache submodule of XiangShan
7257bb43b5Swakafa├── difftest               # difftest co-simulation framework
7357bb43b5Swakafa└── ready-to-run           # pre-built simulation images
7440adeb5aSwangkaifan```
7540adeb5aSwangkaifan
760af3f746SJiawei Lin## IDE Support
770af3f746SJiawei Lin
780af3f746SJiawei Lin### bsp
790af3f746SJiawei Lin```
800af3f746SJiawei Linmake bsp
810af3f746SJiawei Lin```
820af3f746SJiawei Lin
830af3f746SJiawei Lin### IDEA
840af3f746SJiawei Lin```
850af3f746SJiawei Linmake idea
860af3f746SJiawei Lin```
8740adeb5aSwangkaifan
8840adeb5aSwangkaifan
8940adeb5aSwangkaifan## Generate Verilog
9040adeb5aSwangkaifan
9140adeb5aSwangkaifan* Run `make verilog` to generate verilog code. The output file is `build/XSTop.v`.
9240adeb5aSwangkaifan* Refer to `Makefile` for more information.
9340adeb5aSwangkaifan
9440adeb5aSwangkaifan
9540adeb5aSwangkaifan
9640adeb5aSwangkaifan## Run Programs by Simulation
9740adeb5aSwangkaifan
9840adeb5aSwangkaifan### Prepare environment
9964fc9c9dSZihao Yu
100a2ba9cdcSYinan Xu* Set environment variable `NEMU_HOME` to the **absolute path** of the [NEMU project](https://github.com/OpenXiangShan/NEMU).
101a2ba9cdcSYinan Xu* Set environment variable `NOOP_HOME` to the **absolute path** of the XiangShan project.
102a2ba9cdcSYinan Xu* Set environment variable `AM_HOME` to the **absolute path** of the [AM project](https://github.com/OpenXiangShan/nexus-am).
103ab012286SHao* Install `mill`. Refer to [the Manual section in this guide](https://mill-build.org/mill/0.11.11/Scala_Installation_IDE_Support.html#_bootstrap_scripts).
10440adeb5aSwangkaifan* Clone this project and run `make init` to initialize submodules.
10564fc9c9dSZihao Yu
10640adeb5aSwangkaifan### Run with simulator
10705f23f57SWilliam Wang
108a2ba9cdcSYinan Xu* Install [Verilator](https://verilator.org/guide/latest/), the open-source Verilog simulator.
109a2ba9cdcSYinan Xu* Run `make emu` to build the C++ simulator `./build/emu` with Verilator.
110a2ba9cdcSYinan Xu* Refer to `./build/emu --help` for run-time arguments of the simulator.
111a2ba9cdcSYinan Xu* Refer to `Makefile` and `verilator.mk` for more information.
11205f23f57SWilliam Wang
11305f23f57SWilliam WangExample:
1148c0a01afSClSlaid
115a2ba9cdcSYinan Xu```bash
1161545277aSYinan Xumake emu CONFIG=MinimalConfig EMU_THREADS=2 -j10
1172f256e1dSwakafa./build/emu -b 0 -e 0 -i ./ready-to-run/coremark-2-iteration.bin --diff ./ready-to-run/riscv64-nemu-interpreter-so
1185c647eb5SZihao Yu```
1195c647eb5SZihao Yu
1202d02df72SWilliam Wang## Troubleshooting Guide
1212d02df72SWilliam Wang
1222d02df72SWilliam Wang[Troubleshooting Guide](https://github.com/OpenXiangShan/XiangShan/wiki/Troubleshooting-Guide)
1230080a7d3SHaoyuan Feng
1240080a7d3SHaoyuan Feng## Acknowledgement
1250080a7d3SHaoyuan Feng
1260080a7d3SHaoyuan FengThe implementation of XiangShan is inspired by several key papers. We list these papers in XiangShan document, see: [Acknowledgements](https://docs.xiangshan.cc/zh-cn/latest/acknowledgments/). We very much encourage and expect that more academic innovations can be realised based on XiangShan in the future.
127*2a03c3bdSXu, Zefan
128*2a03c3bdSXu, Zefan## LICENSE
129*2a03c3bdSXu, Zefan
130*2a03c3bdSXu, ZefanCopyright © 2020-2025 Institute of Computing Technology, Chinese Academy of Sciences.
131*2a03c3bdSXu, Zefan
132*2a03c3bdSXu, ZefanCopyright © 2021-2025 Beijing Institute of Open Source Chip
133*2a03c3bdSXu, Zefan
134*2a03c3bdSXu, ZefanCopyright © 2020-2022 by Peng Cheng Laboratory.
135*2a03c3bdSXu, Zefan
136*2a03c3bdSXu, ZefanXiangShan is licensed under [Mulan PSL v2](LICENSE).
137