| 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`. |