10-22-2019 06:59 AM - edited 10-25-2019 02:45 AM
I'm having very weird behaviour using the SDK. I have a design with a number of IP blocks that have been developed in house. I have been using these with no issues at all. I upgraded one of the IP blocks and for some very strange reason the drivers for some of the IPs are set to generic instead of the actual driver. This is odd as I've not touched these blocks at all. I then decided to revert back to the design that was working and rebuild it. The drivers are still being set to generic. I'm guessing that either some setting in the SDK or Vivado has changed for these particular IP blocks. Any idea how I track down what?
The attached images show the odd behaviour. In the first the drivers are ok for all of the IP blocks. In the second the drivers for the last few IP blocks are set to generic which is wrong. The Vivado design for both are the same. The issue is with the generation of the hdf file. If I turn this into a ZIP file and look at the contents I can see that the drivers are not in the hdf file. The third image shows the IP generated with one design and in this design the drivers are present. So clearly the issue isn't with the IP. If I then do the full design the drivers disappear. The big difference between the 2 designs is that I do have an additional wrapper so that I can include some Verilog code at the very top level. Is it this which is causing the probelm?
I have completely convinced myself its not the IP as I have created a test design with the IP in it. When I do so all the IP drivers are available (see attached driver_issue3) in the hardware platform. So the issue is with Vivado not adding the drivers when I have the full design. Reason still unknown!!
11-12-2019 06:51 AM
The SDK uses the information in the MDD file to know what driver to use.
For example, taking the GPIO:
The support peripherals can be seen here:
The SDK uses a utility called HSI (Hardware Software Interface) that cross reference this against the IP_NAME found for each cell (IP)
in the XSA or HDF (XSA replaces HDF in 2019.2). The HSI can be called from XSCT in SDK, or the command line.
For example, I created a simple script to get all the IP_NAME for all IP in the XSA/HDF
Here, you can see that the axi_gpio is found here.
So, in your case can you do the same. Cross reference the support_peripherals in your drivers MDD file against the IP_NAME for the respective IP