BD_ADDR_SEG - 2023.2 English

Vivado Design Suite Properties Reference Guide (UG912)

Document ID
Release Date
2023.2 English


Address segments, or bd_addr_seg objects, describe the location and size of a range of memory. They have a range (size) and an optional starting offset.

For various memory mapped master and slave interfaces, IP integrator follows the industry standard IP-XACT data format for capturing memory requirements and capabilities of endpoint masters and slaves.

Addressable slave interfaces reference an address segment container, called a memory map. These memory maps are usually named after the slave interface pins, for example, S_AXI, though that is not required.

The memory map contains slave address segments. These address segments correspond to the address decode window for the slave interface referencing the memory map. When specified in the memory map, slave segments must have a range and can optionally have a hard offset, (indicating that the slave can only be mapped into master address spaces at that offset or apertures of it).

A typical AXI4-Lite slave interface for instance references a memory map with only one address segment, representing a range of memory. However, some slaves, like a bridge, will have multiple address segments; or a range of addresses for each address decode window.

Slave address segments are assigned into master address spaces using the assign_bd_address or create_bd_addr_seg command.

Addressing master interfaces reference an address segment container called an Address Space, or bd_addr_space. The address space is referenced by interface pins, bd_intf_pin, on the cell. In the case of external AXI masters, the address space is referenced by the external interface port, bd_intf_port. Several interfaces of varying protocols can reference the same master address space. The MicroBlaze™ processor Data address space, for instance, is referenced by its DLMB, M_AXI_DP and M_AXI_DC interfaces.

The Address space contains master address segments. These master address segments reference slave address segments that have been assigned into the master address space, and the offset and range at which the master accesses it.

Related Objects

Figure 1. Block Design Address Space and Address Segments

The bd_addr_seg object refers to both master and slave address segments. The bd_addr_space object refers to both memory maps and master address spaces.

You can query the relationship between all related address spaces and address segments. For example:

# Get the slave address segments of a memory map space. 
get_bd_addr_segs -of_objects [get_bd_addr_spaces /mdm_1/S_AXI]

# Get the master address segments of amaster address space. 
get_bd_addr_segs -of_objects [get_bd_addr_spaces /Microblaze_0/Data]

# Get the slave adress segment from its referenced master address segment, or the 
# master address segment from its referencing slave address segment. 
get_bd_addr_segs -of_objects [get_bd_addr_segs <slave or master>_segment]

# Get the addr_segs referencing/referenced by interfaces.

# Get all Master or slave interfaces.
set vMB [get_bd_intf_pins -of_objects [get_bd_cells *] -filter {Mode == "Master"}] 
set vSB [get_bd_intf_pins -of_objects [get_bd_cells *] -filter {Mode == "Slave"}]

# Get master segments
set vMS [get_bd_addr_segs -of_objects $vMB]

# Get slave segments
set vSS [get_bd_addr_segs -of_objects $vSB]


The properties on a block design address segment object, bd_addr_seg, include the following, with example values:

Property	Type	Read-only	Visible	Value
ACCESS	string	false	true	read-write
CLASS	string	true	true	bd_addr_seg
EXEIMG	string	false	true	
MEMTYPE	string	false	true	data
NAME	string	false	true	SEG_axi_gpio_0_Reg
OFFSET	string	false	true	0x40000000
PATH	string	true	true	/microblaze_0/Data/SEG_axi_gpio_0_Reg
RANGE	string	false	true	0x00010000
SECURE	bool	false	true	0
USAGE	string	false	true	register

To report the properties for a bd_addr_seg object, you can copy and paste the following command into the AMD Vivado™ Design Suite Tcl shell or Tcl Console:

report_property -all [lindex [get_bd_addr_segs ] 0]