back

FPGAs

Work on These Today

Synthesis Software

This guide is only for WSL/Linux. If you are on MacOS, you will need to borrow a Linux machine. You may use the following example if you want to install the tools yourself: E4tHam/tangnano_example.

  • Install Apicula
    • pip3 install apycula
  • Download OSS CAD Suite
    • cd ~/Downloads
    • curl -JOL https://github.com/YosysHQ/oss-cad-suite-build/releases/download/2022-04-30/oss-cad-suite-linux-x64-20220430.tgz
    • tar -xzvf oss-cad-suite-linux-x64-20220430.tgz -C ~/Utils/
    • Add "~/Utils/oss-cad-suite/bin" to PATH.
  • Download nextpnr-gowin (compiled by myself)
    • sudo apt install libboost-all-dev
    • cd ~/Utils/oss-cad-suite/bin
    • curl -JOL https://ieee.sifferman.dev/S22-FPGA/Lecture/FPGAs/nextpnr-gowin
    • chmod +x nextpnr-gowin

FPGAs

FPGA stands for field-programmable gate array. They are used to implement digital circuits designed in RTL. There is a good explanation of their architecture in Parallel Programming for FPGAs by Ryan Kastner, Janarbek Matai, and Stephen Neuendorffer, Section 1.2. The following figures are taken from that textbook.

LUT Diagram:
LUT Diagram
Routing Diagram:
Routing Diagram
Full FPGA Diagram:
Full FPGA Diagram

Verilog

Now that our RTL is finished, we need to set our IO on our FPGA. You can use the following template:

Next, add the new files to the core file and create a new Apicula target.

New fileset:
New target: