Run the following command to setup the prerequisite environment for the project:
source config.shTo generate verilog from the chisel code, run the following command:
make verilogThe generated verilog will be in under the $BUILD_ROOT/verilog directory.
Run the following command to run all tests:
make testTo view waveforms, run the following command:
gtkwave $BUILD_ROOT/test/$TOP.fstIt shoud look similar to this:

TODO
To synthesize the design, run the following command:
make synthThis will generate a synthesized netlist in the $BUILD_ROOT/synth directory.
To run static timing analysis, run the following command:
make staThis will generate a timing report in the $BUILD_ROOT/sta directory.
STA requires an SDC file to define the constraints of the design. The SDC file is dynamically generated based on the design. It is generated into the $BUILD_ROOT/synth directory.
If you would like to generate this manually, run the following command:
python3 synth/sdc.py --top Gpio --out out/sta/Gpio.sdc --clock clock=5.0- Top is the name of the top module
- Clock is the name of the clock signal and the period of the clock
- Out is the output file
Recommended IDE is VSCode
Recommended Plugins are:
- Prettier
- Scala Syntax (Official)
- Scala (Metals)
If you are using the nix package manager, the simplest way to get setup is by running sh dev_shell.sh
Dependancies can be found in flake.nix, can use nix to install dependancies with sh dev_shell.sh from the root of the project.
If not using nix, the following dependancies are required:
- sbt
- scala-cli
- scalafmt
- chisel 5.3.0
- firtool 1.44.0
- sbt-scoverage
- verilator
- ninja
- cmake
- opensta
- yosys
- gtkwave
- iverilog
- latex
Also note that you will need to source the config / setup script in the root of the project: source config.sh