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