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>] [‑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> |
[-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
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.
-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.
-verbose
- (Optional) Temporarily override any message limits and return all messages from this command.
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]