The fuzzer instantiates a MMCM in each available site with 2/3 probability of using it. Once used it is connected randomly to various clock and logic resources.
For some nets a randomized “manual” route is chosen to cover as many routing scenarios as possible.
The information whether a MMCM is used or not is stored in a file ("design.txt"
) along with the randomized route (route.txt
)
After the design synthesis the generate.py
sets fixed routes on some nets which is read from the route.txt
file. The rest of the design is routed in the regular way. The script also dumps all used PIPs (as reported by Vivado) to the design_pips.txt
.
The tag generation is done in the following way:
The raw solution of tag bits is postprocessed via the custom script fixup_and_group.py
. The script does two things:
tag_groups.txt
file. Bits that are common to the group are set as 0 in each tag that belongs to it (tags within a group are exclusive).