README.md 6.2 KB
Newer Older
1
# XiangShan
Z
add doc  
Zihao Yu 已提交
2

Y
Yinan Xu 已提交
3
XiangShan (香山) is an open-source high-performance RISC-V processor project.
Z
add doc  
Zihao Yu 已提交
4

5
中文说明[在此](readme.zh-cn.md)
Z
add doc  
Zihao Yu 已提交
6

7
Copyright 2020-2022 by Institute of Computing Technology, Chinese Academy of Sciences.
Z
add doc  
Zihao Yu 已提交
8

9
Copyright 2020-2022 by Peng Cheng Laboratory.
Y
Yinan Xu 已提交
10

L
Lingrui98 已提交
11
## Docs and slides
W
wangkaifan 已提交
12

13 14 15
[XiangShan-doc](https://github.com/OpenXiangShan/XiangShan-doc) is our official documentation repository. It contains design spec., technical slides, tutorial and more.

* Micro-architecture documentation of XiangShan has been published. Please check out https://xiangshan-doc.readthedocs.io
Y
Yinan Xu 已提交
16

17 18 19 20 21 22 23 24 25 26 27 28
## Publications

### MICRO 2022: Towards Developing High Performance RISC-V Processors Using Agile Methodology

Our paper introduces XiangShan and the practice of agile development methodology on high performance RISC-V processors.
It covers some representative tools we have developed and used to accelerate the chip development process, including design, functional verification, debugging, performance validation, etc.
This paper is awarded all three available badges for artifact evaluation (Available, Functional, and Reproduced).

![Artifacts Available](https://github.com/OpenXiangShan/XiangShan-doc/raw/main/publications/images/artifacts_available_dl.jpg)
![Artifacts Evaluated — Functional](https://github.com/OpenXiangShan/XiangShan-doc/raw/main/publications/images/artifacts_evaluated_functional_dl.jpg)
![Results Reproduced](https://github.com/OpenXiangShan/XiangShan-doc/raw/main/publications/images/results_reproduced_dl.jpg)

29
[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)
30

Y
Yinan Xu 已提交
31 32 33 34 35 36 37 38 39
## Follow us

Wechat/微信:香山开源处理器

<div align=left><img width="340" height="117" src="images/wechat.png"/></div>

Zhihu/知乎:[香山开源处理器](https://www.zhihu.com/people/openxiangshan)

Weibo/微博:[香山开源处理器](https://weibo.com/u/7706264932)
W
wangkaifan 已提交
40

L
Lingrui98 已提交
41 42
You can contact us through [our mail list](mailto:xiangshan-all@ict.ac.cn). All mails from this list will be archived to [here](https://www.mail-archive.com/xiangshan-all@ict.ac.cn/).

W
wangkaifan 已提交
43 44
## Architecture

45 46 47 48 49
The first stable micro-architecture of XiangShan is called Yanqihu (雁栖湖) [on the yanqihu branch](https://github.com/OpenXiangShan/XiangShan/tree/yanqihu), which has been developed since June 2020.

The second stable micro-architecture of XiangShan is called Nanhu (南湖) [on the nanhu branch](https://github.com/OpenXiangShan/XiangShan/tree/nanhu).

The current version of XiangShan, also known as Kunminghu (昆明湖), is still under development on the master branch.
W
wangkaifan 已提交
50

51
The micro-architecture overview of Nanhu (南湖) is shown below.
W
wangkaifan 已提交
52

53
![xs-arch-nanhu](images/xs-arch-nanhu.svg)
W
wangkaifan 已提交
54 55 56 57 58 59 60 61 62



## Sub-directories Overview

Some of the key directories are shown below.

```
.
63 64 65 66 67 68 69 70
├── src
│   └── main/scala         # design files
│       ├── device         # virtual device for simulation
│       ├── system         # SoC wrapper
│       ├── top            # top module
│       ├── utils          # utilization code
│       ├── xiangshan      # main design code
│       └── xstransforms   # some useful firrtl transforms
W
wangkaifan 已提交
71
├── scripts                # scripts for agile development
72 73 74 75
├── fudian                 # floating unit submodule of XiangShan
├── huancun                # L2/L3 cache submodule of XiangShan
├── difftest               # difftest co-simulation framework
└── ready-to-run           # pre-built simulation images
W
wangkaifan 已提交
76 77
```

78 79 80 81 82 83 84 85 86 87 88
## IDE Support

### bsp
```
make bsp
```

### IDEA
```
make idea
```
W
wangkaifan 已提交
89 90 91 92 93 94 95 96 97 98 99 100


## Generate Verilog

* Run `make verilog` to generate verilog code. The output file is `build/XSTop.v`.
* Refer to `Makefile` for more information.



## Run Programs by Simulation

### Prepare environment
Z
add doc  
Zihao Yu 已提交
101

Y
Yinan Xu 已提交
102 103 104 105
* Set environment variable `NEMU_HOME` to the **absolute path** of the [NEMU project](https://github.com/OpenXiangShan/NEMU).
* Set environment variable `NOOP_HOME` to the **absolute path** of the XiangShan project.
* Set environment variable `AM_HOME` to the **absolute path** of the [AM project](https://github.com/OpenXiangShan/nexus-am).
* Install `mill`. Refer to [the Manual section in this guide](https://com-lihaoyi.github.io/mill/mill/Intro_to_Mill.html#_installation).
W
wangkaifan 已提交
106
* Clone this project and run `make init` to initialize submodules.
Z
add doc  
Zihao Yu 已提交
107

W
wangkaifan 已提交
108
### Run with simulator
109

Y
Yinan Xu 已提交
110 111
* Install [Verilator](https://verilator.org/guide/latest/), the open-source Verilog simulator.
* Run `make emu` to build the C++ simulator `./build/emu` with Verilator.
Y
Yinan Xu 已提交
112
* Refer to `./build/emu --help` for run-time arguments of the simulator.
Y
Yinan Xu 已提交
113
* Refer to `Makefile` and `verilator.mk` for more information.
Z
Zihao Yu 已提交
114

115
Example:
116

Y
Yinan Xu 已提交
117
```bash
118
make emu CONFIG=MinimalConfig EMU_THREADS=2 -j10
W
wakafa 已提交
119
./build/emu -b 0 -e 0 -i ./ready-to-run/coremark-2-iteration.bin --diff ./ready-to-run/riscv64-nemu-interpreter-so
120
```
Z
Zihao Yu 已提交
121

122 123 124 125
## Troubleshooting Guide

[Troubleshooting Guide](https://github.com/OpenXiangShan/XiangShan/wiki/Troubleshooting-Guide)

W
wakafa 已提交
126 127
## Acknowledgement

128
In the development of XiangShan, some sub-modules from the open-source community are employed. All relevant usage is listed below.
W
wakafa 已提交
129 130 131

| Sub-module         | Source                                                       | Detail                                                       |
| ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
J
Jiawei Lin 已提交
132
| L2 Cache/LLC       | [Sifive block-inclusivecache](https://github.com/ucb-bar/block-inclusivecache-sifive) | Our new L2/L3 design are inspired by Sifive's `block-inclusivecache`. |
133
| Diplomacy/TileLink | [Rocket-chip](https://github.com/chipsalliance/rocket-chip)  | We reused the Diplomacy framework and TileLink utility that exist in rocket-chip to negotiate bus. |
W
wakafa 已提交
134

135
We are grateful for the support of the open-source community and encourage other open-source projects to reuse our code within the scope of the [license](LICENSE).