2020-10-10 22:44:18 -05:00
# Getting Started with OpenFPGA <img src="./docs/source/overview/figures/OpenFPGA_logo.png" width="200" align="right">
2020-11-30 12:57:08 -06:00
[![linux build ](https://github.com/LNIS-Projects/OpenFPGA/workflows/linux_build/badge.svg )](https://github.com/LNIS-Projects/OpenFPGA/actions?query=workflow%3Alinux_build)
2018-12-30 15:35:07 -06:00
[![Documentation Status ](https://readthedocs.org/projects/openfpga/badge/?version=master )](https://openfpga.readthedocs.io/en/master/?badge=master)
2022-05-02 11:08:19 -05:00
[![Binder ](https://mybinder.org/badge_logo.svg )](https://mybinder.org/v2/gh/lnis-uofu/OpenFPGA/master?urlpath=vscode)
2018-12-30 15:35:07 -06:00
2022-05-22 02:27:22 -05:00
Version: see [`VERSION.md` ](VERSION.md )
2018-10-03 18:10:29 -05:00
## Introduction
2020-10-27 11:08:25 -05:00
2022-05-08 14:03:16 -05:00
The award-winning OpenFPGA framework is the **first open-source FPGA IP generator** supporting highly-customizable homogeneous FPGA architectures. OpenFPGA provides complete EDA support for customized FPGAs, including Verilog-to-bitstream generation and self-testing verification. OpenFPGA opens the door to democratizing FPGA technology and EDA techniques with agile prototyping approaches and constantly evolving EDA tools for chip designers and researchers.
2018-09-13 12:52:12 -05:00
2022-05-08 14:03:16 -05:00
**If this is your first time working with OpenFPGA, we strongly **recommend you watch the** [introduction video about OpenFPGA ](https://youtu.be/ocODUGcYGqo )**
2021-02-06 18:15:53 -06:00
2021-04-05 12:37:43 -05:00
A quick overview of OpenFPGA tools can be found [**here** ](https://openfpga.readthedocs.io/en/master/tutorials/getting_started/tools/ ).
2022-05-08 14:03:16 -05:00
We also recommend potential users check out the summary of [**technical capabilities** ](https://openfpga.readthedocs.io/en/master/overview/tech_highlights/# ) before compiling.
2020-10-27 11:08:25 -05:00
2018-10-03 18:10:29 -05:00
## Compilation
2018-09-13 12:52:12 -05:00
2022-05-08 14:03:16 -05:00
**A tutorial **video about **how to compile** can be** found [here ](https://youtu.be/F9sMRmDewM0 )**
2021-02-06 18:15:53 -06:00
2022-05-08 14:03:16 -05:00
Before starting, we strongly recommend you read the required dependencies at [**compilation guidelines** ](https://openfpga.readthedocs.io/en/master/tutorials/getting_started/compile/ ).
2022-09-23 11:10:22 -05:00
It also includes detailed information about the docker image.
2020-10-27 10:53:57 -05:00
2020-10-27 11:08:25 -05:00
---
**Compilation Steps:**
```bash
# Clone the repository and go inside it
git clone https://github.com/LNIS-Projects/OpenFPGA.git & & cd OpenFPGA
2020-12-11 05:51:23 -06:00
make all
2020-10-27 11:08:25 -05:00
```
---
**Quick Compilation Verification**
2022-05-08 14:03:16 -05:00
To quickly verify the tool is well compiled, the user can run the following command from the OpenFPGA root directory.
2020-10-27 11:08:25 -05:00
```bash
2022-05-08 14:03:16 -05:00
source openfpga.sh
run-task compilation_verification --debug --show_thread_logs
2020-10-27 11:08:25 -05:00
```
2022-05-08 14:03:16 -05:00
*Python3 and iVerilog v10.1+ are required. GUI will pop up if enabled during compilation.*
2020-10-27 11:08:25 -05:00
---
**Supported Operating Systems**
We currently target OpenFPGA for:
1. Ubuntu 18.04
2. Red Hat 7.5
*The tool was tested with these operating systems. It might work with earlier versions and other distributions.*
2018-09-27 10:33:39 -05:00
2022-05-08 14:03:16 -05:00
## Running with pre-built docker image
```bash
2022-09-23 11:10:22 -05:00
# To get the docker image from the repository,
2022-05-08 14:03:16 -05:00
docker pull ghcr.io/lnis-uofu/openfpga-master:latest
# To invoke openfpga_shell
docker run -it ghcr.io/lnis-uofu/openfpga-master:latest openfpga/openfpga bash
```
2022-09-23 11:10:22 -05:00
## Backward compatibility with OpenFPGA v1.1
OpenFPGA v1.2 is a major upgrade over v1.1, which upgrades the internal VPR engine.
The (VPR) architecture files used with v1.1 may not be compatible with v1.2.
You can upgrade your architecture files with script
```bash
python3 openfpga_flow/scripts/arch_file_updater.py \
--input_file ${v1.1_arch_file} \
--output_file ${v1.2_compatible_arch_file}
```
2022-09-23 12:08:44 -05:00
Or, If you want to stay with v1.1, the final build was (tag: [_OpenFPGA:v1.1.541](https://github.com/lnis-uofu/OpenFPGA/tree/v1.1.541
2022-09-23 11:10:22 -05:00
))
```bash
2022-09-23 12:08:44 -05:00
https://github.com/lnis-uofu/OpenFPGA/tree/v1.1.541
2022-09-23 11:10:22 -05:00
```
or you can download the docker image
```bash
2022-09-23 12:08:44 -05:00
docker pull ghcr.io/lnis-uofu/openfpga-master:v1.1.541
2022-09-23 11:10:22 -05:00
```
2018-12-30 15:37:17 -06:00
## Documentation
2020-10-27 10:53:57 -05:00
2018-12-30 15:37:17 -06:00
OpenFPGA's [full documentation ](https://openfpga.readthedocs.io/en/master/ ) includes tutorials, descriptions of the design flow, and tool options.
2019-07-17 13:07:40 -05:00
## Tutorials
2020-10-27 10:53:57 -05:00
2022-09-23 11:10:22 -05:00
You can find a set of [tutorials ](https://openfpga.readthedocs.io/en/master/tutorials/ ), with which you get familiar with the tool and use OpenFPGA for various purposes.