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.
To allow the usage of Xilinx FPGAs in SymbiFlow toolchain we collect some important data about the Xilinx chips. The needed information includes:
metadata (i.e. header, crc)
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 chapter.
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