-
Notifications
You must be signed in to change notification settings - Fork 113
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2852 from antmicro/umarcor/docs/update
docs: update
- Loading branch information
Showing
6 changed files
with
237 additions
and
231 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
.. _Development:GettingStarted: | ||
|
||
Getting Started with F4PGA Toolchain development | ||
################################################ | ||
|
||
.. IMPORTANT:: | ||
This documentation explains the first steps in the development of the toolchain itself: generating definitions about | ||
the primitives and routing infrastructure of the architectures. | ||
If you are looking for the **user documentation**, i.e. how to generate bitstreams from HDL designs, please look at | ||
:doc:`f4pga:index` and :doc:`examples:index` instead. | ||
|
||
.. WARNING:: | ||
Generating Architecture Definition files is expected to take a long time to build, even on fast machines. | ||
To run the tests in this repository, please make sure these resources are available: | ||
|
||
* Memory: 5.5G | ||
* Disk space: 20G | ||
|
||
|
||
This section provides an introduction on how to get started with the development of the F4PGA toolchain. | ||
Each FPGA architecture has its own toolchain backend that will be called during build. | ||
The aim of this repository is to gather the knowledge from those backends and generate useful human and machine readable | ||
documentation to be used by tools such as yosys, vpr and/or vpr. | ||
See `Project X-Ray <https://prjxray.readthedocs.io/en/latest/>`_ | ||
and `Project Trellis <https://prjtrellis.readthedocs.io/en/latest/>`_ for more information. | ||
|
||
In order to generate architecture definitions, any intermediate file format or bitstreams, you can use one of the | ||
toolchain tests in this repository. | ||
The following steps describe the whole process: | ||
|
||
|
||
Prepare the environment | ||
======================= | ||
|
||
Clone the repository: | ||
|
||
.. sourcecode:: bash | ||
|
||
git clone https://github.com/chipsalliance/f4pga-arch-defs.git | ||
|
||
Bootstrap an isolated Conda environment with all the necessary dependencies: | ||
|
||
.. sourcecode:: bash | ||
|
||
cd f4pga-arch-defs | ||
make env | ||
|
||
.. HINT:: | ||
This also checks out all the submodules and generates the build system (``Make`` or ``Ninja``) from the CMake | ||
configuration. | ||
If you want to use the ``Ninja`` build tool add this line before calling ``make env``: | ||
|
||
.. sourcecode:: bash | ||
|
||
export CMAKE_FLAGS="-GNinja" | ||
|
||
|
||
Build the tests | ||
=============== | ||
|
||
While different architectures provide different build targets, there are some targets that should exist for all | ||
architectures. | ||
|
||
For development purposes a set of test designs are included for each supported architecture. | ||
In order to perform a build of a test design with the ``Make`` build system, enter the appropriate test build directory | ||
specific to your target architecture and invoke the desired target. | ||
|
||
Assuming that you would like to generate the bitstream ``.bit`` file with the counter example for the Arty board, which | ||
uses Xilinx Artix-7 FPGA, you will execute the following: | ||
|
||
.. sourcecode:: bash | ||
|
||
cd build/xilinx/xc7/tests/counter | ||
make counter_arty_bit | ||
|
||
If you use ``Ninja``, the target is accessible from the root of the build directory: | ||
|
||
.. sourcecode:: bash | ||
|
||
cd build | ||
ninja counter_arty_bit | ||
|
||
.. NOTE:: | ||
Test design target names are based on the following naming convention: ``<design>_<platform>_<target_step>``, | ||
where ``<target_step>`` is the actual step to be done, e.g.: ``bit``, ``place``, ``route``, ``prog``. | ||
|
||
There are targets to run multiple tests at once: | ||
|
||
.. sourcecode:: bash | ||
|
||
# Build all demo bitstreams, targetting all architectures | ||
make all_demos | ||
|
||
# Build all Xilinx 7-series demo bitstreams | ||
make all_xc7 | ||
|
||
# Build all Lattice ICE40 demo bitstreams | ||
make all_ice40 | ||
|
||
# Build all QuickLogic demo bitstreams | ||
make all_quicklogic | ||
|
||
Specific bitstreams can be built by specifying their target name, followed by a suffix specifying the desired output. | ||
For example, the LUT-RAM test for the RAM64X1D primative is called `dram_test_64x1d`. | ||
Example targets are: | ||
|
||
.. sourcecode:: bash | ||
|
||
# Just run synthesis on the input Verilog | ||
make dram_test_64x1d_eblif | ||
|
||
# Complete synthesis and place and route the circuit | ||
make dram_test_64x1d_route | ||
|
||
# Create the output bitstream (including synthesis and place and route) | ||
make dram_test_64x1d_bin | ||
|
||
# Run bitstream back into Vivado for timing checks, etc. | ||
make dram_test_64x1d_vivado | ||
|
||
|
||
Load the bitstreams | ||
=================== | ||
|
||
The last step to test the whole flow is to load the bitstream to your platform. | ||
The final output file can be found in the appropriate test directory, i.e: | ||
``build/xilinx/xc7/tests/counter/counter_arty/artix7-xc7a50t-arty-swbut-roi-virt-xc7a50t-arty-swbut-test/top.bit`` | ||
|
||
Programming tools used in F4PGA are either provided as a conda package during the environment setup, or are automatically | ||
downloaded and referenced by ``CMake``. | ||
|
||
For convenience, the ``prog`` targets are provided for loading the bitstream, e.g.: | ||
|
||
.. sourcecode:: bash | ||
|
||
make counter_arty_prog | ||
|
||
or for ``Ninja``: | ||
|
||
.. sourcecode:: bash | ||
|
||
ninja counter_arty_prog | ||
|
||
Find further details about loading bitstreams in :ref:`f4pga:GettingStarted:LoadingBitstreams`. |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.