| Tools | |
| ===== | |
| `SymbiFlow/prjxray/tools/` | |
| Here, you can find various programs to work with bitstreams, mainly to assist building fuzzers. | |
| bitread: | |
| Used to read a bitstream file to output a readable bitfile that can be than used | |
| to get the various FASM features. | |
| segmatch: | |
| Used in the fuzzing process to correlate the different bits and find which one belong to which feature. | |
| gen_part_base_yaml: | |
| Used to get a high level information on the device structure (number of | |
| configuration rows/columns and maximum frame addresses) | |
| xc7frames2bit: | |
| Used to write a bitstream file starting from a frames one. Where, in turn, | |
| the frames file can be generated starting from a FASM file. | |
| xc7patch: | |
| Used to patch a pre-existing bitstream with additional bits. | |
| bittool: | |
| ??? | |
| bits2rbt: | |
| ??? | |
| frame_address_decoder: | |
| ??? | |
| segmatch | |
| -------- | |
| This tools takes input files of the format: | |
| code:: | |
| seg 00000000_050 | |
| bit 38_15 | |
| bit 39_14 | |
| <....> | |
| tag HCLK_IOI3.LVDS_25_IN_USE 0 | |
| tag HCLK_IOI3.ONLY_DIFF_IN_USE 0 | |
| <...> | |
| seg 00001C80_050 | |
| bit 38_15 | |
| bit 38_26 | |
| where `seg <base_frame_address>_<tile_offset>` indicates how to address the tile, | |
| and `bit <frame_address_offset>_<bit_position>` indicates the position of the bit | |
| within the tile. | |
| base_frame_address: | |
| The frame address of the first frame that configures the tile. | |
| tile_offset: | |
| The word index of the first word that configures the tile within a frame. | |
| frame_address_offset: | |
| frame_address - base_frame_address | |
| bit_position: | |
| The index of the bit within the words of this frame that configure this tile. | |
| The `prjxray.segmaker.Segmaker` is a helper class that can be used to write these | |
| files inside the fuzzer's `generate.py`. |