Jump to content
  • 0

Changing peripheral IP Addresses


engrpetero

Question

More weird behavior I don't understand.  I have a few peripherals in a project.  I've had no issue changing their Addresses up until this morning.  I adjust them in the Address Editor in Vivado, synth, implement, gen bitstream, export hw (SIGBE) for use in Vitis.  In Vitis, one of the peripherals base address in the xparameters.h file never updates though.  In fact, it always shows incorrect (default) addresses. 

I've tried changing it a few times to similar random addresses, I even removed it and readded it to my project (doing the SIGBE sequence while it was removed, then again when readded).  For the config shown in the pics below, I expect to find the item in the xparameters.h file defined as 'XPAR_ADSSIP_0_S_AXI_BASEADDR' (not the XPAR_ADSSIP_0_S00_AXI_BASEADDR shown) as it is virtually identical to the other two items highlighted.

Internet searches concerning the issue have not been helpful.  Any thoughts as to why the changes are not getting to Vitis?

image.png.7f91e2e48d49794ffaab889676403ac7.png

image.png.d498d6381f11b7ef0e21d0f3c3ce8759.png

image.png

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Personally, I've also ran into issues with addresses not being updated in the xparameters.h file. Literally as you described - made change in address editor, synth->impl->gen bitstream->export HW. 

Cleaning the platform, updating the HW spec file and then rebuilding it fully typically takes care of it for me. 

(Right clicked on the actual HW platform project in vitis, not my working project code)

image.png.2937e09080846016d11a6c3fc55563b0.png

 

If that doesn't work, there's always the ole' "delete hw platform in vitis and recreate it from scratch using the new HW .xsa file"

Link to comment
Share on other sites

  • 0

Yeah, in this instance, I even created a new HW platform using the XSA file and no luck.  There must be something to the 0xFFFFFFFF (not anything normal).  I found this thread on one of the Xilinx/AMD fora but it hasn't proven helpful yet. 

IP Address of 0xFFFFFFFF

in one of the first few comments, stephenm (AMD) offered this comment but I have no idea what the 'p' parameter is...

     0xfffffff is the default if the p parameter is not found. Can you share your driver and I'll have a look?

Further down, UserNotFound offered a suggestion about the ' TCL file in the data folder of the driver' for both a peripheral that is working correctly (that is, one I can change the address of) but looking at the file wasn't helpful.  In neither case did the TCL file contain information about the base address/offset.

Edited by engrpetero
Link to comment
Share on other sites

  • 0

This is mostly anecdotal at this point (without more time spent looking into it), but some of the Digilent IP provided through vivado-library use TCL files to define what is included in xparameters, including base addresses.

Addressing and memory screen showing parameters used for the address block values:

image.png

Those same parameters showing up in the hidden parameters section of the customization parameters view (hidden means they don't show up in the custom IP configuration window / customization GUI):

image.png

Driver source files included in the IP, the mdd file defines the driver and the tcl file defines a callback used when xparameters is generated:

image.png

Example tcl file for this, notably you can also pass other parameter values in, if you wanted to pass customization parameters up to VItis. So like for PWM, we don't do it, but it would be possible to tell the software how many duty cycle registers are defined for X number of LED output pins.

image.png

I think a lot of this driver structure changed in 2023.2 with the move to new Vitis as opposed to Vitis Classic (MSS files might be replaced with a YAML or JSON format in the new GUI specifically), and Digilent hasn't moved to update these IP for the new GUI yet, so unless you're using Classic, these IP might not be the best example for what you're working on.

Link to comment
Share on other sites

  • 0

I am using Vitis Classic and still using Vivado 2023.1 so I think your post applies.  I've spent some time this morning looking into your comments and my peripherals and it's opened a lot of questions to me, more about how the tools work than any verilog code itself.  And perhaps I should be looking for some best practices (or at least things you guys to that give you ease of use and ease of maintenance).

I think I'll continue that line of discussion in another post and keep this one for additional info I learn or about which I have questions.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...