blob: 1cb8ca2bbf60ee0e8b2c84e7fcaf5c0dbb8f8241 [file] [log] [blame] [view]
# FASM Proof of Concept using Vivado Partial Reconfig flow
harness.v is a top-level design that routes a variety of signal into a black-box
region of interest (ROI). Vivado's Partial Reconfiguration flow (see UG909
and UG947) is used to implement that design and obtain a bitstream that
configures portions of the chip that are currently undocumented.
Designs that fit within the ROI are written in FASM and merged with the above
harness into a bitstream with fasm2frame and xc7patch. Since writting FASM is
rather tedious, rules are provided to convert Verilog ROI designs into FASM via
Vivado.
## Usage
make rules are provided for generating each step of the process so that
intermediate forms can be analyzed. Assuming you have a .fasm file, invoking
the %\_hand\_crafted.bit rule will generate a merged bitstream:
```
make foo.hand\_crafted.bit # reads foo.fasm
```
## Using Vivado to generate .fasm
Vivado's Partial Reconfiguration flow can be used to synthesize and implement a
ROI design that is then converted to .fasm. Write a Verilog module
that _exactly_ matches the roi blackbox model in the top-level design. Note
that even the name of the module must match exactly. Assuming you have created
that design in my\_roi\_design.v, 'make my\_roi\_design\_hand\_crafted.bit'
will synthesize and implement the design with Vivado, translate the resulting
partial bitstream into FASM, and then generate a full bitstream by patching the
harness bitstream with the FASM. non\_inv.v is provided as an example ROI
design for this flow.