QERV is the four-bit perfomance-enhanced version of the award-winning SERV, the world's smallest RISC-V CPU
QERV builds upon SERV and will eventually be completely integrated. This repository is a staging area where QERV development will be performed until then. Apart from being faster and slightly larger, QERV is compatible with SERV, and we therefor recommend reading the SERV documentation and see the SERV repository for more detailed information.
QERV uses FuseSoC to handle its dependencies and run the design through different tool flows.
- Install FuseSoC
pip3 install fusesoc
- Create an empty workspace directory and enter it
mkdir workspace && cd workspace
- From within your workspace directory add the required FuseSoC libraries
- Base library
fusesoc library add fusesoc-cores https://github.com/fusesoc/fusesoc-cores
- SERV
fusesoc library add serv https://github.com/olofk/serv
- QERV
fusesoc library add qerv https://github.com/olofk/qerv
- Base library
- FuseSoC should be able to see the QERV core. Verify this by running
fusesoc core show qerv
- We can now run a simulation of QERV executing a simple Zephyr application.
fusesoc run --target=verilator_tb servant --uart_baudrate=191000 --timeout=10000000
will launch a simulation using Verilator and printing out a text string twice before exiting. Other firmware can be loaded using the--firmware
parameter. - Synthesizing a minimal version of QERV using Yosys for an iCE40 FPGA can be done with
fusesoc run --target=default --tool=icestorm qerv --pnr=none --WITH_CSR=0
- Create a GDS using OpenLANE
fusesoc run --target=sky130 qerv
. It is also possible to automatically download and run the EDA tools from Docker containers by setting the environment variableEDALIZE_LAUNCHER
toel_docker
, i.e. run the commandEDALIZE_LAUNCHER=el_docker fusesoc run --target=sky130 qerv
instead if you don't have the toolchain locally installed.