Maverick is an open-source computer-aided design (CAD) flow for generating reconfigurable modules (RMs) which target PR regions in FPGA designs. Maverick builds upon existing open source tools (Yosys, RapidSmith2, and Project X-Ray) to form an end-to-end compilation flow. After an initial static design and PR region are created with Xilinx’s Vivado PR flow, Maverick can then compile and configure RMs onto that PR region—without the use of vendor tools. Maverick currently supports Xilinx 7-Series devices and has specifically been tested on the ZYNQ XC7Z020-1CLG400C SoC.
A more detailed description of Maverick, "Maverick: A Stand-Alone CAD Flow for Partially Reconfigurable FPGA Modules", was published at FCCM 2019. Even more information on Maverick can be found in Dallon Glick's master's thesis on Maverick.
Maverick consists of a "Static Design Phase" and a "Reconfigurable Module (RM) Phase".
- Use Vivado's PR flow to create an initial static design, containing a single PR region. Generate an initial full and partial bitstream.
- Execute Tincr's "write_rm_rscp" command to generate static data files that describe the static design.
- Use RapidSmith2's Partial Device Generator to create a partial device file for the PR region previously chosen.
- Generate a bitstream database that at least documents the targeted PR region.
- Synthesize and tech-map the design.
- Import the tech-mapped design.
- Pack, place, and route the design.
- Export an FPGA Assembly (FASM) file.
- Convert the FASM file to a FRM file with FASM2FRAME.
- Generate a new partial bistream with xc7PartialPatch.