Fuxi (伏羲) is a 32-bit pipelined RISC-V processor written in Chisel3.
Loading README and project media…
Fuxi (伏羲) is a 32-bit pipelined RISC-V processor written in Chisel.
Fuxi processor is designed for running GeeOS, or other simple operating systems or bare-metal software. Considering the complexity, the following functions has not yet been implemented:
mstatus register: MPRV bit and MXR bit are hardwired to 0.mstatus register: TVM bit, TW bit and TSR bit are hardwired to 0.With default configuration:
Fuxi currently targets Chisel 7.13.0 and Scala 2.13.18. JDK 17 and sbt are recommended for building it; running the unit tests also requires Verilator.
By issuing the following command lines, you can get generated verilog file in directory verilog/build:
$ git clone https://github.com/MaxXSoft/Fuxi
$ cd Fuxi
$ make
All unit tests are available in directory src/test/scala. For example, unit test for decode stage is available in core/DecoderTest.scala, you can run this test by executing the following command lines:
$ sbt
> Test / runMain core.DecoderTest
CoreTestCoreTest is a special unit test provided in this repository, it can run simple RISC-V programs using the Fuxi core. We also provided some programs in directory src/test/resources. For example, you can run one of it:
$ sbt
> Test / runMain core.CoreTest -if src/test/resources/fib.txt
Trace information during running program fib.txt will be printed to the console.
CoreTest supports the following command line arguments:
| Option | Abbreviation | Argument | Description |
|---|---|---|---|
--init-file | -if | path to program file | Specify the initialization file of ROM. |
--trace-file | -tf | path to trace file | Specify the trace file, default to empty. |
--gen-trace | -gt | 0 or other values | Set to 0 for trace comparison, otherwise use Fuxi core to generate trace file. Default to 0. |
So you can test the core using a trace file generated by other processor or emulator:
> Test / runMain core.CoreTest -if src/test/resources/fib.txt -tf src/test/resources/fib_trace.txt
For other details, please read the source file of CoreTest.scala.
All provided programs:
| Name | Description |
|---|---|
| fib.txt | Generate the first 10 terms of the Fibonacci sequence. |
| mdu.txt | Perform some multiplications and divisions. |
| mecall.txt | Test machine mode environment call. |
| secall.txt | Test supervisor mode environment call. |
Copyright (C) 2020-2026 MaxXing. License GPLv3.
Special thanks to @Yukiteru Lee.