USR_ACCESS primitive with AXI interface

There are a couple of posts in the notes section of this site about using the USR_ACCESS primitive for identifying bitstreams (here and here).

For some designs, especially those with embedded processors, it could be useful to put an AXI interface on the USR_ACCESS block so that it can be read by the software so I've created a simple peripheral that does just that. The source code can be downloaded here.

The peripheral can be packaged up using Vivado's IP Packager tool and then used in IP Integrator designs. The peripheral is read-only so only contains the AXI read channel and occasionally you may see warnings like this:

Figure 1: IP Integrator warnings

..these warnings can be safely ignored.