merged tutorial to online documentation and reworked compilation guidelines

This commit is contained in:
tangxifan 2020-03-09 13:58:24 -06:00
parent af6319a6b0
commit 3c7fd30e12
17 changed files with 82 additions and 332 deletions

View File

@ -6,7 +6,7 @@
The OpenFPGA framework is the **first open-source FPGA IP generator** supporting highly-customizable homogeneous FPGA architectures. OpenFPGA provides a full set of EDA support for customized FPGAs, including Verilog-to-bitstream generation and self-testing verification [testbenches/scripts](./testbenches/scripts) 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. The OpenFPGA framework is the **first open-source FPGA IP generator** supporting highly-customizable homogeneous FPGA architectures. OpenFPGA provides a full set of EDA support for customized FPGAs, including Verilog-to-bitstream generation and self-testing verification [testbenches/scripts](./testbenches/scripts) 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.
## Compilation ## Compilation
Dependencies and help using docker can be found at [**./tutorials/building.md**](./tutorials/building.md). Dependencies and help using docker can be found [**here**](./docs/source/tutorials/building.rst).
**Compilation Steps:** **Compilation Steps:**
```bash ```bash

View File

@ -12,14 +12,10 @@ Welcome to OpenFPGA's documentation!
motivation motivation
.. toctree:: .. toctree::
:maxdepth: 2
:caption: Getting Started :caption: Getting Started
eda_flow tutorials/index
run_fpga_flow
run_fpga_task
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
@ -33,12 +29,6 @@ Welcome to OpenFPGA's documentation!
fpga_bitstream/index fpga_bitstream/index
.. toctree::
:maxdepth: 2
:caption: User Guide
tutorials/index
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
:caption: Appendix :caption: Appendix
@ -52,8 +42,6 @@ For more information on the Yosys see yosys_doc_ or yosys_github_
For more information on the original FPGA architecture description language see xml_vtr_ For more information on the original FPGA architecture description language see xml_vtr_
Indices and tables Indices and tables
================== ==================

View File

@ -65,10 +65,4 @@ FPGA-SPICE aims at generating SPICE netlists and testbenches for the FPGA archit
SPICE modeling for FPGA architectures requires detailed transistor-level modeling for all the circuit elements within the considered FPGA architecture. However, current VPR architectural description language :cite:`JLuu_FPGA_2011` does not offer enough transistor-level parameters to model the most common circuit modules, such as multiplexers and LUTs. Therefore, we develop an extension on the VPR architectural description language to model the transistor-level circuit designs. SPICE modeling for FPGA architectures requires detailed transistor-level modeling for all the circuit elements within the considered FPGA architecture. However, current VPR architectural description language :cite:`JLuu_FPGA_2011` does not offer enough transistor-level parameters to model the most common circuit modules, such as multiplexers and LUTs. Therefore, we develop an extension on the VPR architectural description language to model the transistor-level circuit designs.
In this manual, we will introduce how to use FPGA-SPICE to conduct an accurate power analysis. First, we give an overview of the design flow of FPGA-SPICE-based tool suites. Then, we show the command-line options of FPGA-SPICE. Afterward, we introduce the extension of architectural language and the transistor-level design supports. Finally, we present how to simulate the generated SPICE netlists and testbenches.
In the appendix, we introduce the hierarchy of the generated SPICE netlists and testbenches, to help you customize the SPICE netlists. We also attach an example of an architecture XML file for your interest.
The technical details can be found in our ICCD15 paper :cite:`XTang_ICCD_2015` and TVLSI'19 paper :cite:`XTang_TVLSI_2019`. The technical details can be found in our ICCD15 paper :cite:`XTang_ICCD_2015` and TVLSI'19 paper :cite:`XTang_TVLSI_2019`.

View File

@ -0,0 +1,68 @@
How to Compile
==============
General Compilation Guidelines
------------------------------
OpenFPGA uses CMake to generate the Makefile scripts
In general, please follow the steps to compile
::
git clone https://github.com/LNIS-Projects/OpenFPGA.git
cd OpenFPGA
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=debug
make
.. note:: OpenFPGA requires gcc/g++ version >5
.. note:: cmake3.12+ is recommended to compile OpenFPGA with GUI
.. note:: recommand to use ``make -j`` to accelerate the compilation
Quick Compilation Verification
To quickly verify the tool is well compiled, user can run the following command from OpenFPGA root repository
::
python3 openfpga_flow/scripts/run_fpga_task.py compilation_verification --debug --show_thread_logs
Dependencies
------------
Full list of dependencies can be found at travis_setup_link_
In particular, OpenFPGA requires specific versions for the following dependencies:
:cmake:
version >3.12 for graphical interface
:iverilog:
version 10.1+ is required to run Verilog-to-Verification flow
.. _travis_setup_link: https://github.com/LNIS-Projects/OpenFPGA/blob/0cfb88a49f152aab0a06f309ff160f222bb51ed7/.travis.yml#L34
Docker
------
If some of these dependencies are not installed on your machine, you can choose to use a Docker (the Docker tool needs to be installed).
For the ease of the customer first experience, a Dockerfile is provided in the OpenFPGA folder. A container ready to use can be created with the following command
::
docker run lnis/open_fpga:release
.. note:: This command is for quick testing. If you want to conserve your work, you should certainly use other options, such as ``-v``.
Otherwise, a container where you can build OpenFPGA yourself can be created with the following commands
::
docker build . -t open_fpga
docker run -it --rm -v $PWD:/localfile/OpenFPGA -w="/localfile/OpenFPGA" open_fpga bash
For more information about dock, see dock_download_link_
.. _dock_download_link: https://www.docker.com/products/docker-desktop
To build the tool, go in the OpenFPGA folder and follow the compilation steps
.. note:: Using docker, you cannot use ``make -j``, errors will happen

View File

@ -5,7 +5,7 @@ As illustrated in :numref:`fig_eda_flow`, FPGA-SPICE creates a modified VTR flow
.. _fig_eda_flow: .. _fig_eda_flow:
.. figure:: figures/eda_flow.png .. figure:: ./figures/eda_flow.png
:scale: 50% :scale: 50%
:alt: map to buried treasure :alt: map to buried treasure
@ -14,44 +14,3 @@ As illustrated in :numref:`fig_eda_flow`, FPGA-SPICE creates a modified VTR flow
FPGA-Verilog is the part of the flow in charge of the Verilog and the semi-custom design flow. In our case, we use Cadence Innovus. The goal is to get the full-FPGA layout to complete the analysis provided by FPGA-SPICE. By having the layout, we can get an area analysis on the one hand and have new information concerning the power analysis. For instance, having the layout allows the user to have new information on the circuit such as the parasitics. FPGA-Verilog is the part of the flow in charge of the Verilog and the semi-custom design flow. In our case, we use Cadence Innovus. The goal is to get the full-FPGA layout to complete the analysis provided by FPGA-SPICE. By having the layout, we can get an area analysis on the one hand and have new information concerning the power analysis. For instance, having the layout allows the user to have new information on the circuit such as the parasitics.
FPGA-Bitstream is the part of the flow in charge of the functional verification of the produced FPGA. Testbenches are generated by FPGA-Verilog and are combined with the full FPGA fabric in Modelsim. A bitstream is generated at the same time as the testbenches. This bitstream configures the FPGA with the functionality given by the user to VPR at the beginning of the flow. First, we configure the FPGA with the bitstream, and then waveforms are sent onto the I/O pads to check the functionality. FPGA-Bitstream is the part of the flow in charge of the functional verification of the produced FPGA. Testbenches are generated by FPGA-Verilog and are combined with the full FPGA fabric in Modelsim. A bitstream is generated at the same time as the testbenches. This bitstream configures the FPGA with the functionality given by the user to VPR at the beginning of the flow. First, we configure the FPGA with the bitstream, and then waveforms are sent onto the I/O pads to check the functionality.
How to compile
==============
Guides can be found in the *compilation* directory in the main folder. We tested it for MacOS High Sierra 10.13.4, Ubuntu 18.04 and Red Hat 7.5. This list is not exhaustive as other distributions could work as well.
As a general rule, the compilation follows these steps:
1) You clone the repository with:
git clone --recurse-submodules https://github.com/LNIS-Projects/OpenFPGA,git
Two different approaches exist from then on: Either you need the full flow, or you just need the extended version of VPR.
If you need the full flow:
2) Go into the folder you just cloned and make the different submodules through a global Makefile:
cd OpenFPGA
mkdir build (*if folder doesn't already exist*)
cd build
cmake ..
make OR make -j (*if you have multiple cores, this will make the compilation way faster*)
If you only need vpr:
cd OpenFPGA
mkdir build (if folder doesn't already exist)
cd build
cmake ..
make vpr/make vpr -j
3) Architectures, circuits and already written scripts exist to allow you to test the flow without having to provide any new information to the system. For this:
cd vpr7_x2p
cd vpr
source ./go_fpga_verilog/spice.sh
They are scripts linking to a testing architecture and a simple circuit.
4) If you only need to see the new options implemented in vpr, do:
./vpr
This step will show you all the different options which were added on top of VPR to enable deeper analysis of FPGA architectures.
The released package includes a version of VPR with FPGA-SPICE, Verilog and Bitstream support, Yosys and ACE2.

View File

Before

Width:  |  Height:  |  Size: 268 KiB

After

Width:  |  Height:  |  Size: 268 KiB

View File

@ -1,10 +1,18 @@
.. _tutorials: .. _tutorials:
Tutorials Getting Started
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
getting_started compile
eda_flow
run_fpga_flow
run_fpga_task

View File

@ -1,54 +0,0 @@
# How to build?
## Dependencies
OpenFPGA requires all the following dependencies:
- autoconf
- automake
- bash
- bison
- build-essential
- cmake (version 3.12 for graphical interface or at least 3.X)
- ctags
- curl
- doxygen
- flex
- fontconfig
- g++-8
- gcc-8
- g++-4.9
- gcc-4.9
- gdb
- git
- gperf
- iverilog
- libcairo2-dev
- libevent-dev
- libfontconfig1-dev
- liblist-moreutils-perl
- libncurses5-dev
- libx11-dev
- libxft-dev
- libxml++2.6-dev
- perl
- python
- texinfo
- time
- valgrind
- zip
- qt5-default
## Docker
If some of these dependencies are not installed on your machine, you can choose to use a Docker (the Docker tool needs to be installed). For the ease of the customer first experience, a Dockerfile is provided in the OpenFPGA folder. A container ready to use can be created with the following command:
- docker run lnis/open_fpga:release <br />
*Warning: This command is for quick testing. If you want to conserve your work, you should certainly use other options, such as "-v".*
Otherwise, a container where you can build OpenFPGA yourself can be created with the following commands:
- docker build . -t open_fpga
- docker run -it --rm -v $PWD:/localfile/OpenFPGA -w="/localfile/OpenFPGA" open_fpga bash<br />
[*docker download link*](https://www.docker.com/products/docker-desktop)
## Building
To build the tool, go in the OpenFPGA folder and do:
- mkdir build && cd build
- cmake .. -DCMAKE_BUILD_TYPE=debug
- make (*WARNING using docker you cannot use "make -j", errors will happen*)

View File

@ -1,30 +0,0 @@
# fpga_flow folder organization
The fpga_flow folder is organized as follow:
* **arch**: contains architectures description files
* **benchmarks**: contains Verilog and blif benchmarks + lists
* **configs**: contains configuration files to run fpga_flow.pl
* **scripts**: contains all the scripts required to run the flow
* **tech**: contains xml tech files for power estimation
## arch
In this folder are saved the architecture files. These files are Hardware description for the FPGA written in XML. This folder contains 3 sub-folders:
- **fpga_spice**: contains existing architecture ready to use.
- **template**: contains template architecture which contain keyword to replace
- **generated**: empty at the beginning, will host rewritten template
## benchmarks
This folder contains benchmarks to implement in the FPGA. it's divided in 3 folders:
- **Blif**: Contains .blif and .act file to use in OpenFPGA. Benchmarks are divided in folder with the same name as the top module
- **Verilog**: Contains Verilog netlist of benchmarks to use in OpenFPGA. Each project is saved in a folder with the same name as the top module.
- **List**: Contains files with a list of benchmarks to run in one flow. More details are available in [fpga_flow tutorial](https://github.com/LNIS-Projects/OpenFPGA/blob/master/tutorials/fpga_flow/how2use.md#benchmark-list)
## configs
This folder contains configuration files required by openFPGA flow. They specify path to tools and benchmarks as well as flow utilization mode. More details are available in [fpga_flow tutorial](https://github.com/LNIS-Projects/OpenFPGA/blob/master/tutorials/fpga_flow/how2use.md#configuration-file)
## scripts
This folder contains scripts call by OpenFPGA flow. Some of them can be used out of the flow as **pro_blif.pl** and **rewrite_path_in_file.pl** which respectively rewrite a blif file with 3 members on a ".latch" module to let it have 5 and replace a keyword in a file.<br />
Any script provide help if call without argument.
## tech
This folder contains XML files describing the technology used. These files are used during power analysis.

View File

@ -1,88 +0,0 @@
# FPGA Flow
This tutorial will help the user to understand how to use the OpenFPGA flow.<br />
During this tutorial, we consider that the user starts in the OpenFPGA folder and we will use tips and information provided in [tutorial index](https://github.com/LNIS-Projects/OpenFPGA/blob/master/tutorials/tutorial_index.md#tips-and-informations). Details on how the folder is organized are available [here](https://github.com/LNIS-Projects/OpenFPGA/blob/master/tutorials/fpga_flow/folder_organization.md).
## Running fpga_flow.pl
A script example can be found at OPENFPGAPATHKEYWORD/fpga_flow/tuto_fpga_flow.sh.
### Experiment
cd fpga_flow<br />
./tuto_fpga_flow.sh<br />
### Explanation
The *fpga_flow.pl* script takes an architecture description file (.xml), generates its netlists and generates a bitstream to implement a benchmark on the FPGA fabric and verifis its correct implementation.<br />
When you open the perl script, you can see that 2 scripts are called. The first one is **rewrite_path_in_file.pl** which allows us to make this tutorial generic by generating full path to the dependencies.<br />
The second one is **fpga_flow.pl**. This script launches the OpenFPGA flow and can be used with many different [options](https://github.com/LNIS-Projects/OpenFPGA/blob/master/tutorials/fpga_flow/options.md).<br />
There are 3 important things to observe here:
- All the FPGA-Verilog options have been activated
- fpga_flow.pl calls a configuration file through the "config_file" variable
- fpga_flow.pl calls a list of benchmark to be implemented and tested through the "bench_txt" variable
### Configuration File
In this file, paths have to be defined as **absolute** paths as relative paths could lead to errors.<br />
The file is organized in 3 parts:
* **dir_path**: provides all the tool and repository paths
* **flow_conf**: provides information on how the flow runs
* **csv_tags**: *to be completed*
When empty, the file is as follow:
[dir_path]<br />
script_base = OPENFPGAPATHKEYWORD/fpga_flow/scripts<br />
benchmark_dir = *<Path to the folder containing all sources of the design>*<br />
yosys_path = OPENFPGAPATHKEYWORD/yosys<br />
odin2_path = not_used<br />
cirkit_path = not_used<br />
abc_path = OPENFPGAPATHKEYWORD/abc<br />
abc_mccl_path = OPENFPGAPATHKEYWORD/abc<br />
abc_with_bb_support_path = OPENFPGAPATHKEYWORD/abc<br />
mpack1_path = not_used<br />
m2net_path = not_used<br />
mpack2_path = not_used<br />
vpr_path = OPENFPGAPATHKEYWORD/vpr7_x2p/vpr<br />
rpt_dir = *<wherever you want logs to be saved>*<br />
ace_path = OPENFPGAPATHKEYWORD/ace2<br />
[flow_conf]<br />
flow_type = yosys_vpr *to use verilog input*<br />
vpr_arch = *<wherever the architecture file is saved>*<br />
mpack1_abc_stdlib = DRLC7T_SiNWFET.genlib # Use relative path under ABC folder is OK<br />
m2net_conf = not_used<br />
mpack2_arch = not_used<br />
power_tech_xml = *<wherever the xml tech file is saved>*<br />
[csv_tags]<br />
mpack1_tags = Global mapping efficiency:|efficiency:|occupancy wo buf:|efficiency wo buf:<br />
mpack2_tags = BLE Number:|BLE Fill Rate: <br />
vpr_tags = Netlist clb blocks:|Final critical path:|Total logic delay:|total net delay:|Total routing area:|Total used logic block area:|Total wirelength:|Packing took|Placement took|Routing took|Average net density:|Median net density:|Recommend no. of clock cycles:<br />
vpr_power_tags = PB Types|Routing|Switch Box|Connection Box|Primitives|Interc Structures|lut6|ff<br />
*This example file can be found at OPENFPGAPATHKEYWORD/fpga_flow/configs/tutorial/tuto.conf*
### Benchmark List
The benchmark folder contains 3 sub-folders:
* **Blif**: contains .blif and .act of benchmarks
* **List**: contains all benchmark list files
* **Verilog**: contains Verilog designs
Blif and Verilog folders are organized by folders using the name of the projects. **The folder, top module and top module file must share the same name.**<br />
The benchmark list file can contain as many benchmarks as available in the same folder targetted by the "benchmark_dir" variable from the configuration file. It's written as:<br />
top_module/*.v,<int_value>; where <int_value> is the number of channel/wire between each block.
*This example file can be found at OPENFPGAPATHKEYWORD/fpga_flow/benchmarks/List/tuto_benchmark.txt*
## Modifying the Flow
Once the dependencies are understood, the flow can be modified by changing the architecture file and the route channel width.
### Experiment
* cd OPENFPGAPATHKEYWORD/fpga_flow/configs/tutorial
* replace the architecture "k6_N10_sram_chain_HC_template.xml" and "k6_N10_sram_chain_HC.xml" respectively with "k8_N10_sram_chain_FC_template.xml" and "k8_N10_sram_chain_FC.xml" in tuto.conf
* cd OPENFPGAPATHKEYWORD/fpga_flow/benchmarks/List
* replace "200" with "300" in tuto_benchmark.txt
* cd OPENFPGAPATHKEYWORD/fpga_flow
* replace the architecture "k6_N10_sram_chain_HC_template.xml" and "k6_N10_sram_chain_HC.xml" respectively with "k8_N10_sram_chain_FC_template.xml" and "k8_N10_sram_chain_FC.xml" in tuto_fpga_flow.sh
* ./tuto_fpga_flow.sh
### Explanations
With this last experiment, the [**K6 architecture**](https://github.com/LNIS-Projects/OpenFPGA/blob/master/tutorials/images/architectures_schematics/frac_lut6.pdf) was replaced by a [**K8 architecture**](https://github.com/LNIS-Projects/OpenFPGA/blob/master/tutorials/images/architectures_schematics/frac_lut8.pdf), which means that an 8-input fracturable LUT (implemented by LUT6 and LUT4 with 2 shared inputs) is used. This architecture provides more modes for the CLB and the crossbar which is changed from a half-connected to a fully connected, implying bigger multiplexors between the CLB and LUT inputs. These requirements in term of interconnection will lead an increase in the routing channel width. Indeed, if the routing channel is too low, it could be impossible to route a benchmark or the FPGA output could be delayed.

View File

@ -1,75 +0,0 @@
# OpenFPGA flow options
Usage -> **fpga_flow *-options <value>* **<br />
Mandatory options: <br />
- -conf <file> : *specify the basic configuration files for fpga_flow*
- -benchmark <file> : *the configuration file contains benchmark file names*
- -rpt <file> : *CSV file consists of data*
- -N <int> : *N-LUT/Matrix*
## Other Options:
### General
- -matlab_rpt <data_name> : *.m file consists of data compatible to matlab scripts. Specify the data name to be appeared in the script*
- -I <int> : *Number of inputs of a CLB, mandatory when mpack1 flow is chosen*
- -K <int> : *K-LUT, mandatory when standard flow is chosen*
- -M <int> : *M-Matrix, mandatory when mpack1 flow is chosen*
- -power : *run power estimation oriented flow*
- -black_box_ace: *run activity estimation with black box support. It increase the power.*
- -remove_designs: *remove all the old results.*
- -multi_thread <int>: *turn on the mutli-thread mode, specify the number of threads*
- -multi_task <int>: *turn on the mutli-task mode*
- -parse_results_only : *only parse the flow results and write CSV report.*
- -debug : *debug mode*
- -help : *print usage*
- -end_flow_with_test: *Uses Icarus Verilog simulator to verified bencmark implementation*
### ODIN II
- -min_hard_adder_size: *min. size of hard adder in carry chain defined in Arch XML.(Default:1)*
- -mem_size: *size of memory, mandatory when VTR/VTR_MCCL/VTR_MIG_MCCL flow is chosen*
- -odin2_carry_chain_support: *turn on the carry_chain support only valid for VTR_MCCL/VTR_MIG_MCCL flow *
### ABC
- -abc_scl : *run ABC optimization for sequential circuits, mandatory when VTR flow is selected.*
- -abc_verilog_rewrite : *run ABC to convert a blif netlist to a Verilog netlist.*
### ACE
- -ace_p <float> : *specify the default signal probablity of PIs in ACE2.*
- -ace_d <float> : *specify the default signal density of PIs in ACE2.*
### VPR - Original Version
- -vpr_timing_pack_off : *turn off the timing-driven pack for vpr.*
- -vpr_place_clb_pin_remap: *turn on place_clb_pin_remap in VPR.*
- -vpr_max_router_iteration <int> : *specify the max router iteration in VPR.*
- -vpr_route_breadthfirst : *use the breadth-first routing algorithm of VPR.*
- -vpr_use_tileable_route_chan_width: *turn on the conversion to tileable_route_chan_width in VPR.*
- -min_route_chan_width <float> : *turn on routing with <float>* min_route_chan_width.*
- -fix_route_chan_width : *turn on routing with a fixed route_chan_width, defined in benchmark configuration file.*
### VPR - FPGA-X2P Extension
- -vpr_fpga_x2p_rename_illegal_port : *turn on renaming illegal ports option of VPR FPGA SPICE*
- -vpr_fpga_x2p_signal_density_weight <float>: *specify the option signal_density_weight of VPR FPGA SPICE*
- -vpr_fpga_x2p_sim_window_size <float>: *specify the option sim_window_size of VPR FPGA SPICE*
- -vpr_fpga_x2p_compact_routing_hierarchy : *allow routing block modularization*
### VPR - FPGA-SPICE Extension
- -vpr_fpga_spice <task_file> : *turn on SPICE netlists print-out in VPR, specify a task file*
- -vpr_fpga_spice_sim_mt_num <int>: *specify the option sim_mt_num of VPR FPGA SPICE*
- -vpr_fpga_spice_print_component_tb : *print component-level testbenches in VPR FPGA SPICE*
- -vpr_fpga_spice_print_grid_tb : *print Grid-level testbenches in VPR FPGA SPICE*
- -vpr_fpga_spice_print_top_tb : *print full-chip testbench in VPR FPGA SPICE*
- -vpr_fpga_spice_leakage_only : *turn on leakage_only mode in VPR FPGA SPICE*
- -vpr_fpga_spice_parasitic_net_estimation_off : *turn off parasitic_net_estimation in VPR FPGA SPICE*
- -vpr_fpga_spice_testbench_load_extraction_off : *turn off testbench_load_extraction in VPR FPGA SPICE*
- -vpr_fpga_spice_simulator_path <string> : *Specify simulator path*
### VPR - FPGA-Verilog Extension
- -vpr_fpga_verilog : *turn on OpenFPGA Verilog Generator*
- -vpr_fpga_verilog_dir <verilog_path>: *provides the path where generated verilog files will be written*
- -vpr_fpga_verilog_include_timing : *turn on printing delay specification in Verilog files*
- -vpr_fpga_verilog_include_signal_init : *turn on printing signal initialization in Verilog files*
- -vpr_fpga_verilog_print_autocheck_top_testbench: *turn on printing autochecked top-level testbench for OpenFPGA Verilog Generator*
- -vpr_fpga_verilog_formal_verification_top_netlist : *turn on printing formal top Verilog files*
- -vpr_fpga_verilog_include_icarus_simulator : *Add syntax and definition required to use Icarus Verilog simulator*
- -vpr_fpga_verilog_print_user_defined_template : *Generates a template of hierarchy modules and their port mapping*
- -vpr_fpga_verilog_print_report_timing_tcl : *Generates tcl script useful for timing report generation*
- -vpr_fpga_verilog_report_timing_rpt_path <path_to_generate_reports> : *Specify path for report timing*
- -vpr_fpga_verilog_print_sdc_pnr : *Generates sdc file to constraint Hardware P&R*
- -vpr_fpga_verilog_print_sdc_analysis : *Generates sdc file to do STA*
- -vpr_fpga_verilog_print_top_tb : *turn on printing top-level testbench for OpenFPGA Verilog Generator*
- -vpr_fpga_verilog_print_input_blif_tb : *turn on printing testbench for input blif file in OpenFPGA Verilog Generator*
- -vpr_fpga_verilog_print_modelsim_autodeck <modelsim.ini_path>: *turn on printing modelsim simulation script*
### VPR - FPGA-Bitstream Extension
- -vpr_fpga_bitstream_generator: *turn on FPGA-SPICE bitstream generator*

View File

@ -1,20 +0,0 @@
# Tutorial Introduction
OpenFPGA is an IP Verilog Generator allowing reliable and fast testing of homogeneous FPGA architectures.<br />
Its main goal is to easily and efficiently generated a complete customizable FPGA and uses a semi-custom design flow.<br /><br />
In order to help you get in touch with the software, we provide few tutorials which are organized as follow:
* [Building the tool and his dependencies](https://github.com/LNIS-Projects/OpenFPGA/blob/master/tutorials/building.md)
* [Launching the flow and understand how it works](https://github.com/LNIS-Projects/OpenFPGA/blob/master/tutorials/fpga_flow/how2use.md)
* Architecture modification
## Folder Organization
OpenFPGA repository is organized as follow:
* **abc**: open source synthesys tool
* **ace2**: abc extension generating .act files
* **ace2**: abc extension generating activity files (.act)
* **vpr7_x2p**: sources of modified vpr
* **yosys**: opensource synthesys tool
* **fpga_flow**: scripts and dependencies to run the complete flow
## Tips and Information
Some keywords will be used during in the tutorials:
* OPENFPGAPATHKEYWORD: refers to OpenFPGA folder full path