!Target¶
The !Target tag declares a target within a block’s address map, this must refer to an existing boundary IO port on the block which handles the outbound bus traffic.
!Targets have properties of offset and aperture, which define the absolute address window that each outbound port can be accessed through. Remember to take into account the masking and offset applied to the inbound address by the !Initiator tag.
You can also constrain an !Target so that it can only be accessed by certain (!Initiators) by specifying a list of !Point objects which refer to other boundary IO ports that have an associated !Initiator tag.
Warning
You can only make boundary IO ports on the block an !Initiator or a !Target, ports on child blocks cannot be promoted. This is because bus distribution components need an implementation and therefore are assumed to be leaf nodes.
Usage¶
- !Mod
name : my_distributor
ports:
- !HisRef [inbound_a, axi4, "Inbound from CPU", 1]
- !HisRef [inbound_b, axi4, "Inbound from NoC", 1]
- !HisRef [outbounds, axi4, "Outbound ports", 3]
addressmap:
...
- !Target
offset : 0
aperture: 0x100
port :
- !Point [outbounds, 0]
- !Target
offset : 0x100
aperture : 0x200
port :
- !Point [outbounds, 1]
constrain: # Only allow 'inbound_a' to access this target
- !Point [inbound_a, 0]
...
-
class
blade.schema.ph_target.Target(port, offset=0, aperture=4294967295, constrain=None)¶ Represents a target port within the address map
-
__init__(port, offset=0, aperture=4294967295, constrain=None)¶ Initialisation for the !Target tag.
- Parameters
port – !Point tag referring to the exact port and index to associate
offset – Base address of the window at which this target can be accessed
aperture – Size of the window through which this target can be accessed
constrain – List of !Point tags referring to legal !Initiator ports - if omitted then all !Initiators can access this !Target
-
validate()¶ Check that this tag agrees with our YAML schema
-