assign_bd_address - 2024.1 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
UG835
Release Date
2024-05-30
Version
2024.1 English

Automatically assign addresses to unmapped IP

Syntax

assign_bd_address [‑target_address_space <arg>] [‑boundary]
    [‑master_boundary] [‑external] ‑dict <arg> [‑import_from_file <arg>]
    [‑export_to_file <arg>] [‑export_gui_to_file <arg>] [‑offset <arg>]
    [‑range <arg>] [‑base_high <arg>] [‑with_locktype <arg>]
    [‑with_name <arg>] [‑force] [‑quiet] [‑verbose] [<objects>...]

Returns

The newly mapped segments, "" if failed.

Usage

Name Description
[-target_address_space] Target address space to place segment into
[-boundary] assign peripherals to the exported slave hierarchical boundary of the design
[-master_boundary] set hierarchical master boundary by assigning exported master interface segments to internal masters
[-external] allow an external master interface to be mapped to more than one address
-dict dictionary of offset range address pairs, e.g. {offset 0x00000000 range 32K offset 0x20000000 range 32K} used to map an external interface to more than one address
[-import_from_file] import the addressing from file. When extension is csv, format = <address space name>,<slave segment>,<offset>,<range>
[-export_to_file] export the address map to a file in csv format. format = <address space name>,<slave segment>,<offset>,<range>
[-export_gui_to_file] export the address map to a file in csv format. Structure is same as Address Editor GUI
[-offset] Offset of assignment. e.g. 0x00000000
[-range] Range of assignment. e.g. 4096, 4K, 16M, 1G
[-base_high] colon separated base:high offsets of a range assignment. e.g. 0x0000:0xFFFF
[-with_locktype] Assign master segments with given locktype <none | local | global>
[-with_name] Give the master segments the given name>
[-force] force the assignment, do not run any validity checks
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution
[<objects>] The objects to assign

Categories

IPIntegrator

Description

Assign unmapped IP address segments to address spaces in the IP integrator subsystem design.

If the target address space is not specified, the IP integrator will automatically assign the address segment to an available address space on a connected AXI master.

If no bd_addr_seg objects are specified the assign_bd_address command will assign all unmapped address segments to any connected AXI master address spaces.

This command returns the newly mapped address segments, or returns an error if it failed.

Arguments

-target_address_space <arg> - (Optional) The target address space to place the segment into.

Tip: If the target address space is not specified, the AMD Vivado™ IP integrator will automatically assign the address segment to an available address space.

-boundary - (Optional) Assign address spaces to the hierarchical boundary of the design. This lets you allocate address space for memory that exists outside of the block design. Map scoped external slave interfaces into the address space at contiguous offsets beginning at 0x000_0000.

-master_boundary - (Optional) For the scoped external master interfaces, a slave segment is created is mapped into internal masters on the scoped diagram, at the specified -offset and -range.

-external - (Optional) Define memory segment of a previously defined external address space. Multiple memory segments can be assigned to an external AXI port that connects to a Slave IP outside of the BD.

-import_from_file <arg> - (Optional) Read address space assignments from a specified CSV format file containing a memory map. The CSV file must be in the form <address space name>,<slave segment>,<offset>,<range>. This command will overwrite any existing address space definition if the CSV file contains a valid address map. Otherwise the command will return an error.

-export_to_file <arg> - (Optional) Write address space assignments to a specified CSV format file. The CSV file will be in the form <address space name>,<slave segment>,<offset>,<range>. This command will not overwrite an existing file of the same name, unless -force is also specified.

-force - (Optional) Overwrite an existing CSV file when used with the -export_to_file option.

-base_high <arg> - (Optional) Assign the address space by specifying the <base address>:<high address>, in the form -base_high 0x4000_0000:0x4000_FFFF for instance.

-offset <arg> - (Optional) Specify the memory offset of address space to assign the address segment to. For example, 0x00000000.

-range <arg> - (Optional) Range, or size, of address space to assign the address segment into. For example 4096, 4K, 16M, 1G.

-dict <arg> - (Optional) A dictionary of Offset/Range value pairs to be defined at one time. The format of the offset/range value pair is as follows:

-dict {offset 0x00000000 range 64M offset 0x20000000 range 64M}
-quiet - (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
Note: Any errors encountered on the command-line, while launching the command, will be returned. Only errors occurring inside the command will be trapped.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
Note: Message limits can be defined with the set_msg_config command.

<objects> - The block design address segment objects to assign to the target address space.

Example

The following example automatically assigns the specified address segment object to an address space. In this example, the target space is not provided, so the IP integrator automatically assigns the address segment to an available address space:

assign_bd_address [get_bd_addr_segs \
{/microblaze_1_local_memory/ilmb_bram_if_cntlr/SLMB/Mem }]

The following example creates an memory space on an external AXI port, and then assigns specified block design address segments to two separate address ranges, with specified offsets, within that external address space:

assign_bd_address -offset 0xA0000000 -range 64K [get_bd_addr_segs {/M02_AXI_0/Reg}]
assign_bd_address -external -offset 0xA0000000 -range 4K \
[get_bd_addr_segs /M02_AXI_0/Seg] -target_address_space [get_bd_addr_space /M02_AXI_0/Reg]
assign_bd_address -external -offset 0xA0001000 -range 4K \
[get_bd_addr_segs /M02_AXI_0/Seg] -target_address_space [get_bd_addr_space /M02_AXI_0/Reg]

This example is the same as the prior example, except that it uses the -dict argument to specify multiple offset/range value pairs in a single assign_bd_address command:

assign_bd_address -offset 0xA0000000 -range 64K [get_bd_addr_segs {/M02_AXI_0/Reg}]
assign_bd_address -external -dict {offset 0xA0000000 range 4K offset 0xA0001000 range 4K} \
[get_bd_addr_segs /M02_AXI_0/Seg] -target_address_space [get_bd_addr_space /M02_AXI_0/Reg]