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.