2022-03-10 04:46:21 -05:00
|
|
|
How it works
|
|
|
|
############
|
2019-04-05 10:56:47 -04:00
|
|
|
|
2019-08-30 10:19:54 -04:00
|
|
|
EDA Tooling Ecosystem
|
2022-03-10 04:46:21 -05:00
|
|
|
=====================
|
2019-08-30 10:19:54 -04:00
|
|
|
|
|
|
|
For both ASIC- and FPGA-oriented EDA tooling, there are three major areas that
|
|
|
|
the workflow needs to cover: hardware description, frontend and backend.
|
|
|
|
|
|
|
|
Hardware description languages are generally open, with both established HDLs
|
|
|
|
such as Verilog and VHDL and emerging software-inspired paradigms like
|
|
|
|
`Chisel <https://chisel.eecs.berkeley.edu/>`_,
|
|
|
|
`SpinalHDL <https://spinalhdl.github.io/SpinalDoc-RTD/>`_ or
|
|
|
|
`Migen <https://m-labs.hk/gateware/migen/>`_.
|
|
|
|
The major problem lies however in the front- and backend, where previously
|
|
|
|
there was no established standard, vendor-neutral tooling that would cover
|
|
|
|
all the necessary components for an end-to-end flow.
|
|
|
|
|
2022-02-21 12:54:23 -05:00
|
|
|
This pertains both to ASIC and FPGA workflows, although F4PGA focuses
|
|
|
|
on the latter (some parts of F4PGA will also be useful in the former).
|
2019-08-30 10:19:54 -04:00
|
|
|
|
2022-02-09 21:42:47 -05:00
|
|
|
.. figure:: _static/images/EDA.svg
|
2019-08-30 10:19:54 -04:00
|
|
|
|
|
|
|
Project structure
|
2022-03-10 04:46:21 -05:00
|
|
|
=================
|
2019-08-30 10:19:54 -04:00
|
|
|
|
2022-02-21 12:54:23 -05:00
|
|
|
To achieve F4PGA's goal of a complete FOSS FPGA toolchain, a number of tools and projects are necessary to provide all
|
|
|
|
the needed components of an end-to-end flow.
|
|
|
|
Thus, F4PGA serves as an umbrella project for several activities, the central of which pertains to the creation of
|
|
|
|
so-called FPGA "architecture definitions", i.e. documentation of how specific FPGAs work internally.
|
|
|
|
More information can be found in the :doc:`F4PGA Architecture Definitions <arch-defs:index>` project.
|
2019-08-30 10:19:54 -04:00
|
|
|
|
|
|
|
Those definitions and serve as input to backend tools like
|
|
|
|
`nextpnr <https://github.com/YosysHQ/nextpnr>`_ and
|
|
|
|
`Verilog to Routing <https://verilogtorouting.org/>`_, and frontend tools
|
|
|
|
like `Yosys <http://www.clifford.at/yosys/>`_. They are created within separate
|
|
|
|
collaborating projects targeting different FPGAs - :doc:`Project X-Ray
|
2022-02-09 19:45:12 -05:00
|
|
|
<prjxray:index>` for Xilinx 7-Series, `Project IceStorm
|
2019-08-30 10:19:54 -04:00
|
|
|
<http://www.clifford.at/icestorm/>`_ for Lattice iCE40 and :doc:`Project Trellis
|
2022-02-09 19:45:12 -05:00
|
|
|
<prjtrellis:index>` for Lattice ECP5 FPGAs.
|
2019-08-30 10:19:54 -04:00
|
|
|
|
2022-02-09 21:42:47 -05:00
|
|
|
.. figure:: _static/images/parts.svg
|
2019-08-30 10:19:54 -04:00
|
|
|
|