2020-12-04 15:09:40 -06:00
# SOFA
2020-11-30 22:29:15 -06:00
[![linux_build ](https://github.com/LNIS-Projects/skywater-openfpga/workflows/linux_build/badge.svg )](https://github.com/LNIS-Projects/skywater-openfpga/actions)
[![Documentation Status ](https://readthedocs.org/projects/skywater-openfpga/badge/?version=latest )](https://skywater-openfpga.readthedocs.io/en/latest/?badge=latest)
2021-04-03 18:54:59 -05:00
2020-11-30 22:29:15 -06:00
## Introduction
2021-04-02 12:50:53 -05:00
SOFA (**S**kywater **O**pensource **F**PG**A**s) are a series of open-source FPGA IPs using the open-source [Skywater 130nm PDK ](https://github.com/google/skywater-pdk ) and [OpenFPGA ](https://github.com/lnis-uofu/OpenFPGA ) framework.
This repository provide the following support for the eFPGA IPs
2021-04-02 12:51:54 -05:00
- **Architecture description file** : Users can inspect architecture details and try architecture evalution using the [VTR project ](https://github.com/verilog-to-routing/vtr-verilog-to-routing ) and the [OpenFPGA project ](https://github.com/lnis-uofu/OpenFPGA ).
2021-04-02 20:04:32 -05:00
- **Fabrication-ready GDSII layouts**: Users can integrate to their chip designs.
2021-04-02 12:50:53 -05:00
- **Post-layout Verilog Netlists**: Users can run HDL simulations on the eFPGA IPs to validate their applications
- **Benchmark suites**: An example benchmarking suite with which users can run quick examples on the eFPGA IPs
- **Documentation**: Datasheets for each eFPGA IPs downto circuit-level details
2020-10-09 23:17:00 -05:00
2021-04-02 12:33:34 -05:00
< p >
2021-04-02 12:40:12 -05:00
< img src = "./DOC/source/device/hd_fpga/figures/sofa_hd_layout.png" width = "200" >
< img src = "./DOC/source/device/hd_fpga/figures/qlsofa_hd_layout.png" width = "200" >
< img src = "./DOC/source/device/hd_fpga/figures/sofa_chd_layout.png" width = "200" >
2021-04-02 12:33:34 -05:00
< / p >
2021-04-02 12:27:48 -05:00
2020-10-14 10:50:37 -05:00
## Quick Start
2021-04-03 18:54:59 -05:00
To run the user flow using SOFA repository you need to have OpenFPGA installed.
Please visit https://github.com/lnis-uofu/OpenFPGA#compilation for OpenFPGA installaton.
2020-10-14 10:50:37 -05:00
```bash
2021-04-03 18:54:59 -05:00
export OPENFPGA_PATH=< path_to_openfpga_root >
# Clone the SOFA repository
git clone https://github.com/lnis-uofu/SOFA.git
# ======== Goto specific design ========
# FPGA1212_SOFA_CHD_PNR
# FPGA1212_QLSOFA_HD_PNR
# FPGA1212_SOFA_HD_PNR
cd FPGA1212_QLSOFA_HD_PNR
# ======== Run example OpenFPGA Task ========
make runOpenFPGA
# ======== To view the results ========
cat FPGA1212_QLSOFA_HD_task/latest/task_result.csv
# ======== To view detailed log ========
cat codeopen FPGA1212_QLSOFA_HD_task/latest/vpr_arch/top/MIN_ROUTE_CHAN_WIDTH/**/openfpgashell.log
2020-10-14 10:50:37 -05:00
```
2021-04-03 18:54:59 -05:00
### To bechmark your own design
Copy your verilog file `FPGA1212_QLSOFA_HD_task/micro_benchmark` directory
and modify `FPGA1212_QLSOFA_HD_task/config/task_simulation.conf` file.
2020-10-14 10:50:37 -05:00
2021-04-03 18:54:59 -05:00
Details of different paramters can be found [Configure run_fpga_task ](https://openfpga.readthedocs.io/en/latest/manual/openfpga_flow/run_fpga_task/ )
2020-10-14 12:15:40 -05:00
2021-04-03 18:54:59 -05:00
```bash
cd FPGA1212_QLSOFA_HD_PNR
vi FPGA1212_QLSOFA_HD_task/config/task_simulation.conf
```
2020-10-14 12:15:40 -05:00
2021-04-03 18:54:59 -05:00
---
2021-04-02 12:27:48 -05:00
2021-04-05 17:32:30 -05:00
## Documentation
2021-04-02 12:27:48 -05:00
2021-04-05 17:32:30 -05:00
You can find a chip gallery as well as datasheets in the [online documentation ](https://skywater-openfpga.readthedocs.io/en/latest/ )
2021-04-02 12:27:48 -05:00
2020-10-14 12:15:40 -05:00
## Directory Organization
2020-10-14 10:50:37 -05:00
2020-10-09 23:17:00 -05:00
* Keep this folder clean and organized as follows
2020-10-09 23:37:39 -05:00
- **DOC**: documentation of the project
- **ARCH**: Architecture XML and other input files which OpenFPGA requires to generate Verilog netlists
- **BENCHMARK**: Benchmarks to be tested on the FPGA fabric
- **HDL**: Hardware description netlists for the FPGA fabrics
- **SDC**: design constraints
- **SCRIPT**: Scripts to setup, run OpenFPGA etc.
2021-04-03 18:54:59 -05:00
- **TESTBENCH**: Verilog testbenches generated by OpenFPGA
2020-10-09 23:37:39 -05:00
- **PDK**: Technology files linked from skywater opensource pdk
2020-10-09 23:41:04 -05:00
- **SNPS\_ICC2**: workspace of Synopsys IC Compiler 2
Keep a README inside the folder about the ICC2 version and how-to-use.
- **MSIM**: workspace of verification using Mentor ModelSim
2020-10-09 23:17:00 -05:00
2020-11-13 10:20:30 -06:00
---
2021-04-03 18:54:59 -05:00
* Note:
2020-10-09 23:41:04 -05:00
- Please **ONLY** place folders under this directory.
README should be the **ONLY** file under this directory
- Each EDA tool should have **independent** workspace in separated directories