Clone this repo:


  1. 013b1f7 final gds oasis by Jeff DiCorpo · 7 weeks ago main
  2. a98d42c update user_defines.v from MGMT to USER by ALLEN DONALD BOSTON · 9 weeks ago
  3. dae706b modified decap cell from open_pdk_lib by ALLEN DONALD BOSTON · 9 weeks ago
  4. e3d94fd adding user_defines.v by ALLEN DONALD BOSTON · 9 weeks ago
  5. f3c79a1 adding user_defines.v by ALLEN DONALD BOSTON · 9 weeks ago

FPGA Programming Management Unit (PMU)

License UPRJ_CI Caravel Build


The Programming Management Unit will serve as a macro that can be placed near a FPGA to handle bitstream loading. While the primary functionality of the PMU is to load a bitstream into an FPGA Core it will also incorporate some hardware security and integrity features. This is in response to the need for OpenFPGA to be able to incorporate some hardware security IPs to FPGA designs. To accurately access the level of protection the security features provide to the FPGA/FPGA bitstream, an iterative approach to the PMU design will be taken starting with version one. This version, submitted to MPW7 is the third version of the PMU containing AES and SHA cores.

As of today the primary objectives of the PMU are to accurately transfer FPGA bitstream data to the core and protect the IP the lies within a bitstream using AES as well as authenticating the bitstream data and user via SHA. The PMU is capable of on the fly use of both AES and SHA algorithms when transfering data from a host PC to FPGA core. This project will serve as a test implementation of the PMU where the user project wrapper includes the PMU version 3, SOFA 2x2 FPGA generated using OpenFPGA, and AES/SHA cores from secworks. Git repositories for all macros are given below.






SiliconCompiler was used to complete RTL-to-GDS flow for this project. SiliconCompiler is opensource compiler for automating source code to silicon using a Python API.