BD_ADDR_SEG - 2022.1 English

Vivado Design Suite Properties Reference Guide

Document ID
UG912
Release Date
2022-06-08
Version
2022.1 English

BD_ADDR_SEG

Description

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 2-1:      Block Design Address Space and Address Segments

X-Ref Target - Figure 2-1

X14845-block-design-address-space.jpg

 

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]

 

Properties

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 Vivado Design Suite Tcl shell or Tcl Console:

report_property -all [lindex [get_bd_addr_segs ] 0]