Firrtl is an intermediate representation (IR) for digital circuits designed as a platform for writing circuit-level transformations. This repository consists of a collection of transformations (written in Scala) which simplify, verify, transform, or emit their input circuit.
A Firrtl compiler is constructed by chaining together these transformations, then writing the final circuit to a file.
This repository is in ALPHA VERSION, so many things may change in the coming months.
Disclaimer: This project is in alpha, so there is no guarantee anything works. The installation instructions should work for OSX/Linux machines.
- If not already installed, install verilator (Requires at least v3.880)
- If not already installed, install sbt (Requires at least v0.13.6)
- Clone the repository:
git clone https://github.com/ucb-bar/firrtl; cd firrtl
- Compile firrtl:
sbt compile
- Run tests:
sbt test
- Build executable (
utils/bin/firrtl
):sbt assembly
- Note: You can add
utils/bin/firrtl
to your path to call firrtl from other processes
- Note: You can add
- Run regression:
mkdir -p build
./utils/bin/firrtl -i regress/rocket.fir -o build/rocket.v -X verilog
- Run a single test suite:
sbt "testOnly firrtlTests.UnitTests"
- Continually execute a command:
sbt ~compile
- Only invoke sbt once:
sbt
> compile
> test
utils/bin/firrtl -i regress/rocket.fir -o regress/rocket.v -X verilog // Compiles rocket-chip to Verilog
utils/bin/firrtl --help // Returns usage string