Fuzzers¶
Fuzzers are things that generate a design, feed it to Vivado, and look at the resulting bitstream to make some conclusion. This is how the contents of the database are generated.
The general idea behind fuzzers is to pick some element in the device (say a block RAM or IOB) to target. If you picked the IOB (no one is working on that yet), you’d write a design that is implemented in a specific IOB. Then you’d create a program that creates variations of the design (called specimens) that vary the design parameters, for example, changing the configuration of a single pin.
A lot of this program is TCL that runs inside Vivado to change the design parameters, because it is a bit faster to load in one Verilog model and use TCL to replicate it with varying inputs instead of having different models and loading them individually.
By looking at all the resulting specimens, you can correlate which bits in which frame correspond to a particular choice in the design.
Looking at the implemented design in Vivado with “Show Routing Resources” turned on is quite helpful in understanding what all choices exist.
Configurable Logic Blocks (CLB)¶
Block RAM (BRAM)¶
Input / Output (IOB)¶
Clocking (CMT, PLL, BUFG, etc)¶
- clk-bufg-config Fuzzer
- BUFG interconnect fuzzer
- BUFG interconnect fuzzer
- clk-hrow-config Fuzzer
- clk-hrow-pips Fuzzer
- clk-rebuf-pips Fuzzer
- HCLK_CMT interconnect fuzzer
- hclk-config Fuzzer
- HCLK_IOI interconnect fuzzer
- Fuzzer for INT PIPs driving the CLK wires
- Fuzzer for PIPs in HCLK titles
- MMCM
- Clock Management Tile (CMT) - Phase Lock Loop (PLL) Fuzzer
- cmt-pll-pips Fuzzer
Programmable Interconnect Points (PIPs)¶
- int-imux-gfan Fuzzer
- int-piplist Fuzzer
- BUFG interconnect fuzzer
- BUFG interconnect fuzzer
- clk-hrow-pips Fuzzer
- clk-rebuf-pips Fuzzer
- cmt-pll-pips Fuzzer
- HCLK_CMT interconnect fuzzer
- HCLK_IOI interconnect fuzzer
- iob-pips Fuzzer
- Fuzzer for bidirectional INT PIPs
- Fuzzer for the FAN_ALT*.BYP_BOUNCE PIPs
- Fuzzer for INT PIPs driving the CLK wires
- Fuzzer for INT PIPs driving the CTRL wires
- Fuzzer for the FAN_ALT.*GFAN PIPs and BYP_ALT.*GFAN PIPs
- Fuzzer for INT PIPs driving the GFAN wires with GND
- Fuzzer for PIPs in HCLK titles
- Fuzzer for INT LOGIC_OUTS -> IMUX PIPs
- Fuzzer for the remaining INT PIPs
- Generic fuzzer for INT PIPs
- piplist Fuzzer
- ppips Fuzzer
Hard Block Fuzzers¶
Grid and Wire¶
Timing¶
All Fuzzers¶
- 035a-iob-idelay Fuzzer
- bram-cascades Fuzzer
- BRAM Configuration
- BRAM Data
- bram-fifo-config Fuzzer
- bram36-config Fuzzer
- clb-ffconfig Fuzzer
- clb-ffsrcemux Fuzzer
- clb-lutinit Fuzzer
- clb-n5ffmux Fuzzer
- clb-ncy0 Fuzzer
- clb-ndi1mux Fuzzer
- clb-nffmux Fuzzer
- clb-noutmux Fuzzer
- clb-precyinit Fuzzer
- clb-ram Fuzzer
- clk-bufg-config Fuzzer
- BUFG interconnect fuzzer
- BUFG interconnect fuzzer
- clk-hrow-config Fuzzer
- clk-hrow-pips Fuzzer
- clk-rebuf-pips Fuzzer
- MMCM
- Clock Management Tile (CMT) - Phase Lock Loop (PLL) Fuzzer
- cmt-pll-pips Fuzzer
- dsp-mskpat Fuzzer
- dump_all Fuzzer
- fifo-config Fuzzer
- get_counts Fuzzer
- HCLK_CMT interconnect fuzzer
- hclk-config Fuzzer
- HCLK_IOI interconnect fuzzer
- init-db Fuzzer
- int-imux-gfan Fuzzer
- int-piplist Fuzzer
- IOB Fuzzer
- iob-ilogic Fuzzer
- iob-ologic Fuzzer
- iob-pips Fuzzer
- XADC Fuzzer
- ordered_wires Fuzzer
- part-yaml Fuzzer
- pins Fuzzer
- Fuzzer for bidirectional INT PIPs
- Fuzzer for the FAN_ALT*.BYP_BOUNCE PIPs
- Fuzzer for INT PIPs driving the CLK wires
- Fuzzer for INT PIPs driving the CTRL wires
- Fuzzer for the FAN_ALT.*GFAN PIPs and BYP_ALT.*GFAN PIPs
- Fuzzer for INT PIPs driving the GFAN wires with GND
- Fuzzer for PIPs in HCLK titles
- Fuzzer for INT LOGIC_OUTS -> IMUX PIPs
- Fuzzer for the remaining INT PIPs
- Generic fuzzer for INT PIPs
- piplist Fuzzer
- ppips Fuzzer
- Tilegrid Fuzzer
- timing Fuzzer