Quick start

Prerequisites

The following packages need to be installed for generating fabric HDLs

FABulous repository

git clone https://github.com/FPGA-Research-Manchester/FABulous
Python

version >= 3.9

python dependencies

pip3 install -r requirements.txt

This will also require to install Tkinter for the TCL facilities. To install Tkinter on Ubuntu, run:

sudo apt-get install python3-tk

The following packages need to be installed for the CAD toolchain

Yosys

version > 0.26+0

Nextpnr-generic

version > 0.4-28-gac17c36b

Building Fabric and Bitstream

python3 FABulous.py -c <name_of_project>
python3 FABulous.py <name_of_project>
# inside the FABulous shell
load_fabric
run_FABulous_fabric
run_FABulous_bitstream npnr user_design/sequential_16bit_en.v

After a successful call with the command run_FABulous_fabric the RTL file of each of the tiles can be found in the Tile folder and the fabric RTL file can be found in the Fabric folder.

After a successful call with the command run_FABulous_bitstream npnr user_design/sequential_16bit_en.v. The bitstream and all the log files generated during synthesis and place and route can be found under the user_design folder. The bitstream will be named as sequential_16bit_en.bin The above command is using the npnr options which suggest we are using Yosys for synthesis and Nextpnr for placement and routing. Another option would be using vpr, which will allow for using Yosys for synthesis and VPR for placement and routing. (currently, the VPR flow is not working after the refactoring)

Running in a Docker container

Within the FABulous repo we provide a Dockerfile that allows users to run the FABulous flow within a Docker container, installing all requirements automatically.

Setting up the Docker environment

To set up the Docker environment, navigate to the FABulous root directory and run:

docker build -t fabulous .
Running the Docker environment

To run the Docker environment, stay in the FABulous root directory (this is vital as the command mounts the current directory as the container’s filesystem) and run:

docker run -it -v $PWD:/workspace fabulous

This will bring up an interactive bash environment within the Docker container, within which you can use FABulous as if hosted natively on your machine. When you are finished using FABulous, simply type exit, and all changes made will have been made to your copy of the FABulous repository.