!His¶
The !His tag defines an interconnect type, which can carry multiple signals between a nominated ‘master’ and ‘slave’. Signals within the interconnect can travel in either direction (i.e. from master to slave, or from slave to master), allowing complex bus connections to be expressed as a single port.
Each component of the !His can be a primitive signal, with a specified width (!Port), or it can be a reference (!HisRef) to another !His.
As every component, and indeed any sub-components when using a (!HisRef, can have a different role, the net role of each signal must be resolved recursively. For example:
MyHis [M-->S]
|-- MyCompA [M-->S]
| |-- MySubCompA1 [M<--S]
| |-- MySubCompA2 [M-->S]
|-- MyCompB [M<--S]
|-- MySubCompB1 [M-->S]
|-- MySubCompB2 [M<--S]
This arrangement results in the following net roles:
| Signal | Direction |
|---|---|
| MyHis.MyCompA.MySubCompA1 | M<--S |
| MyHis.MyCompA.MySubCompA2 | M-->S |
| MyHis.MyCompB.MySubCompB1 | M<--S |
| MyHis.MyCompB.MySubCompB2 | M-->S |
Warning
BLADE currently supports an attribute of role on a !His defintion - when set to slave it effectively reverses all of the logic when creating a port. However, this is unnecessary complication as you could instead change the role of the port on your block. As such, this attribute will be deprecated in the near future.
Usage¶
- !His
name : channel
ld : Describes a data transmission channel with valid and acknowledgement
ports:
- !Port [valid, 1, "Valid signal", 1, 0, Master]
- !Port [ack, 1, "Acknowledgement", 1, 0, Slave ]
- !Port [data, 32, "Data carried", 1, 0, Master]
- !His
name : bidirectional_bus
ld : A bus carrying two channels with channel enable signals
ports:
- !HisRef [outbound, channel, "Transmit bus", 1, Master]
- !HisRef [inbound, channel, "Receive bus", 1, Slave ]
- !Port [enable, 1, "Channel enable", 2, Master]
-
class
blade.schema.ph_his.His(name, ports, sd='', role='MASTER', ld='', options=[], includes=[])¶ !His tag schema class for describing an interconnect with components
-
__init__(name, ports, sd='', role='MASTER', ld='', options=[], includes=[])¶ Initialisation for the !His YAML tag
- Parameters
name – Name of the !His, used when declaring a port of this type
ports – List of either !HisRef or !Port tags which will be carried as components within this interconnect
sd – Short description of the interconnect - maximum 150 characters
role – Declares the overall role for this interconnect, effectively reversing whatever role it is declared as (to be deprecated)
ld – Long description of the interconnect
options – List of options either in the form ‘KEY=VAL’ or just ‘KEY’ if a value is not required.
-
set_file_marks(start, end)¶ Set start and end marks of the declaration and propagate to children
- Parameters
start – The starting mark
end – The ending mark
-
set_source_file(file)¶ Set the source file of this object and propagate it to children.
- Parameters
file – The source file path or object
-
validate()¶ Check that this tag agrees with our YAML schema
-