Jump to content

Local memory map in IP-Xact


Recommended Posts

In IP-Xact there is a section localMemoryMap inside address space which looks similar to the memoryMap. I am not sure to understand the difference between the two and what should be used and when.

Can you help me on this ?

Also in IP-xact, is it possible to define a register somewhere and instantiate it or use it at other places ?



Link to comment
Share on other sites

Hi Kushi,

A normal memory map is accessible through a slave bus interface; a local memory map is not. A local memory map is local to the component. You can describe internal registers in it, for instance, for a CPU. A local memory map is described with an address space that can be referenced from a cpu element. 

The current IEEE std. 1685-2014 does not allow separate definition and instantiation of registers. The Accellera IP-XACT Working Group is working on a proposal for a revision of the standard that does support that.

Best regards,

Link to comment
Share on other sites

  • 2 years later...

Hi everyone, can any one explain me how to write memory map components in IPXACT FILE , in example there are two address block , i think one for register and one for memory map, here  the address block is there can you explain me what will be the baseAddress for memory and what will be the baseAddress for register.

<cadence:hdlAccess cadence:path="mem"/>
if possible please explain baseAddress,addressUnitBits,width.


Link to comment
Share on other sites

Hello Rohit,

The value of addressUnitBits defines the number of bits that is used to address an element in the memory map (mmap0). In your example the value is 8 meaning that you address bytes in the memory map. So address offset 0 addresses the first 8 bits, address offset 1 addresses the second 8 bits, and so on.

The value of addressBlock base address defines the address offset of the address block in the memory map expressed in the address unit bits value. In your example, the value 0x100 means that the address block is located at bit offset 0x100 * 8 bits = 2048 which is equal to byte offset 256 (0x100).

The value of addressBlock width defines the maximum number of data bits that are accessed by a single transaction in the address block. Note that the number of bits in a register in the addressBlock cannot exceed the width of an addressBlock.

Note that register addressOffsets are relative compared to the addressBlock baseAddress. They are also expressed in addressUnitBits. So the offset of a register in an addressBlock in a memoryMap equals addressBlock baseAddress + register addressOffset.

Best regards,


Link to comment
Share on other sites

In the memory map that encloses the address block, the base address is also 0x0. This memory map is referenced by the slave bus interface. When you instantiate this component and connect the slave interface to a master interface of another component instance, then the memory map is mapped into the address space that is referenced by that master interface. Typically that address space is then mapped into a memory in the same component using a transparent bridge or subspace map. The address space can then be shifted. Please see Clauses 12 and 13 and Annex H of IEEE Std 1685 for details.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...