| ============ | |
| 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 <dev_database/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 |