blob: 53ec4728219c9f3868199f629fbdd03a49d0a295 [file] [log] [blame]
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`.