Hello All,
I apologize for talking here about IP-XACT and not strictly UVM but I’m running into some troubles and your help will help me to generate an UVM registers description.
Idea is to generate the UVM registers description of an IP, using the IP-XACT standard.
Few weeks ago I started to write 2 scripts :
- 1 perl for parsing our IP Specifications and generating the IP-XACT file
- another perl for parsing the IP-XACT and generating all UVM registers and fields description
Everything is working fine (not so bad I think) except for one kind of registers :
Thoses who are duplicated based on an IP Parameter.
I’m not able to find the correct way to describe them in IP-XACT…
Let’s take an example :
A register nammed PRR at @0xA0 has 2 fields :
- PEF
- PER
Below is the IP-XACT description of such a register.
<spirit:register>
<spirit:name>PRR</spirit:name>
<spirit:description>foo</spirit:description>
<spirit:addressOffset>0x0A0</spirit:addressOffset>
<spirit:size>32</spirit:size>
<spirit:access>read-write</spirit:access>
<spirit:field>
<spirit:name>PER</spirit:name>
<spirit:description>bar</spirit:description>
<spirit:bitOffset>0</spirit:bitOffset>
<spirit:bitWidth>15</spirit:bitWidth>
<spirit:access>read-write</spirit:access>
<spirit:volatile>false</spirit:volatile>
</spirit:field>
<spirit:field>
<spirit:name>REF</spirit:name>
<spirit:description>bar</spirit:description>
<spirit:bitOffset>16</spirit:bitOffset>
<spirit:bitWidth>15</spirit:bitWidth>
<spirit:access>read-write</spirit:access>
<spirit:volatile>false</spirit:volatile>
</spirit:field>
</spirit:register>
No issue so far!
But now consider that this register is repeated n times with register address equals to @0xA0 + 0x04*n.
n is between 0 to PARAM_N and PARAM_N is an RTL IP Parameter.
Is someone knowing how to describe this register in IP-XACT?
I already tried to found some XML IP-XACT examples on the net + read carefully the IP-XACT specification (IEEE) but I’m not really sure about the exact XML description.
Thanks in advance.
Xavier