# 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.
