mirror of https://github.com/openXC7/prjxray.git
68 lines
2.5 KiB
ReStructuredText
68 lines
2.5 KiB
ReStructuredText
|
|
============
|
||
|
|
Introduction
|
||
|
|
============
|
||
|
|
|
||
|
|
`Project X-Ray`_ documents the `Xilinx`_ 7-Series FPGA architecture to enable
|
||
|
|
the development of open-source tools. Our goal is to provide sufficient information
|
||
|
|
to develop a free and open Verilog to bitstream toolchain for these devices.
|
||
|
|
|
||
|
|
The project is a part of SymbiFlow Toolchain. `SymbiFlow`_ uses the obtained
|
||
|
|
information about the chip in `Architecture Definitions`_ project, which
|
||
|
|
allows for creating bitstreams for many architectures including 7-Series devices.
|
||
|
|
|
||
|
|
Collected information
|
||
|
|
---------------------
|
||
|
|
|
||
|
|
To allow the usage of Xilinx FPGAs in SymbiFlow toolchain we collect some
|
||
|
|
important data about the Xilinx chips. The needed information includes:
|
||
|
|
|
||
|
|
- Architecture description:
|
||
|
|
|
||
|
|
* chip internals
|
||
|
|
* timings
|
||
|
|
|
||
|
|
- Bitstream format:
|
||
|
|
|
||
|
|
* metadata (i.e. header, crc)
|
||
|
|
* configuration bits
|
||
|
|
|
||
|
|
Final results are stored in the database which is further used by the
|
||
|
|
`Architecture Definitions`_ project. The whole database is described in
|
||
|
|
the dedicated :doc:`chapter <format/index>`.
|
||
|
|
|
||
|
|
Methodology
|
||
|
|
-----------
|
||
|
|
|
||
|
|
The most important element of the project are fuzzers - scripts responsible
|
||
|
|
for obtaining information about the chips. Their name comes from the fact that
|
||
|
|
they use a similar idea to `Fuzz testing`_. Firstly, they generate a huge
|
||
|
|
amount of designs in which the examined chip property is either enabled or
|
||
|
|
disabled. By comparing the differences in the final bitstream obtained
|
||
|
|
from vendor tools, we can detect relations between bits in the bitstream and
|
||
|
|
provided functionalities.
|
||
|
|
|
||
|
|
However, some of the fuzzers works differently, i.e. they just creating
|
||
|
|
the database structure, the whole idea is similar and rely on the output produced
|
||
|
|
by the vendor tools.
|
||
|
|
|
||
|
|
All fuzzers are described in the dedicated :doc:`chapter <db_dev_process/fuzzers/index>`.
|
||
|
|
|
||
|
|
.. _Fuzz testing: https://en.wikipedia.org/wiki/Fuzzing
|
||
|
|
|
||
|
|
Important Parts
|
||
|
|
---------------
|
||
|
|
|
||
|
|
The important parts of the `Project X-Ray` are:
|
||
|
|
|
||
|
|
- *minitests* - designs that can be viewed by a human in Vivado to better
|
||
|
|
understand how to generate more useful designs.
|
||
|
|
- *experiments* - similar to *minitests* except for the fact that they are only
|
||
|
|
useful for a short time.
|
||
|
|
- *tools & libs* - they convert the resulting bitstreams into various formats.
|
||
|
|
- *utils* - tools that are used but still require some testing
|
||
|
|
|
||
|
|
.. _Project X-Ray: https://github.com/SymbiFlow/prjxray
|
||
|
|
.. _Xilinx: http://www.xilinx.com/
|
||
|
|
.. _SymbiFlow: https://symbiflow.readthedocs.io/
|
||
|
|
.. _Architecture Definitions: https://github.com/SymbiFlow/symbiflow-arch-defs
|