Here, you can find various programs to work with bitstreams, mainly to assist building fuzzers.
Used to read a bitstream file to output a readable bitfile that can be than used to get the various FASM features.
Used in the fuzzing process to correlate the different bits and find which one belong to which feature.
Used to get a high level information on the device structure (number of configuration rows/columns and maximum frame addresses)
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.
Used to patch a pre-existing bitstream with additional bits.
This tools takes input files of the format:
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.
The frame address of the first frame that configures the tile.
The word index of the first word that configures the tile within a frame.
frame_address - base_frame_address
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.