hwtLib.amba.axis_comp.frame_parser package

Submodules

hwtLib.amba.axis_comp.frame_parser.field_connector module

class hwtLib.amba.axis_comp.frame_parser.field_connector.AxiS_frameParserFieldConnector(parent: Unit, dataIn: AxiStream, dataOut: Union[StructIntf, UnionSource])[source]

Bases: object

__init__(parent: Unit, dataIn: AxiStream, dataOut: Union[StructIntf, UnionSource])[source]
choiceIsSelected(interfaceOfChoice: Union[UnionSource, UnionSink])[source]

Check if union member is selected by _select interface in union interface

connectChoicesOfFrameParts(hsNondes: ListOfOutNodeInfos, part: ChoicesOfFrameParts, en: Union[RtlSignal, bool], exclusiveEn: Optional[RtlSignal], wordIndex: Optional[RtlSignal], currentWordIndex: int)[source]
connectPart(hsNondes: ListOfOutNodeInfos, part: Union[TransPart, ChoicesOfFrameParts], en: Union[RtlSignal, bool], exclusiveEn: Union[RtlSignal, bool], wordIndex: Optional[RtlSignal], currentWordIndex: int)[source]

Create datamux for a single output word in main fsm and colect metainformations for handshake logic and strb/keep

Parameters

hsNondes – list of nodes of handshaked logic

connectParts(allOutNodes: ListOfOutNodeInfos, words: Tuple[int, List[Union[TransPart, ChoicesOfFrameParts]], bool], wordIndex: Optional[RtlSignal])[source]

Create main datamux from dataIn to dataOut

connectStreamOfFrameParts(hsNondes: ListOfOutNodeInfos, part: Union[TransPart, ChoicesOfFrameParts], en: Union[RtlSignal, bool], exclusiveEn: Optional[RtlSignal], wordIndex: Optional[RtlSignal], currentWordIndex: int)[source]
getInDataSignal(transPart: TransPart)[source]
hwtLib.amba.axis_comp.frame_parser.field_connector.get_byte_order_modifier(axis: AxiStream)[source]

hwtLib.amba.axis_comp.frame_parser.footer_split module

class hwtLib.amba.axis_comp.frame_parser.footer_split.AxiS_footerSplit(intfCls=<class 'hwtLib.amba.axis.AxiStream'>, hdl_name_override: ~typing.Optional[str] = None)[source]

Bases: AxiSCompBase

Split a constant size footer and prefix data from a input frame.

HStruct(
    (HStream(uint8_t, frame_len=(1, inf)), "dataIn[0]"),
    (HStream(Bits(self.FOOTER_SIZE), , frame_len=1), "dataIn[1]"),
)

Functionality:

First the data is loaded to internal registers, if this data overflows it is passed to dataOut[0]. Once last word is fond the mask of boundary word is resolved and data is send to dataOut[0] and [1]. Then the rest of data in registers is send on dataOut[1].

HDL params
  • INTF_CLS - default value <class ‘hwtLib.amba.axis.AxiStream’> of type type

  • IS_BIGENDIAN - default value False of type bool

  • USE_STRB - default value True of type bool

  • USE_KEEP - default value False of type bool

  • ID_WIDTH - default value 0 of type int

  • DEST_WIDTH - default value 0 of type int

  • DATA_WIDTH - default value 8 of type int

  • USER_WIDTH - default value 0 of type int

  • FOOTER_WIDTH - default value 8 of type int

HDL IO
schematic
flush_en_logic(regs)[source]
generate_regs(LOOK_AHEAD: int) List[Tuple[RtlSignal, RtlSignal, RtlSignal, RtlSignal, RtlSignal]][source]
hwtLib.amba.axis_comp.frame_parser.footer_split._example_AxiS_footerSplit()[source]

hwtLib.amba.axis_comp.frame_parser.out_containers module

class hwtLib.amba.axis_comp.frame_parser.out_containers.ExclusieveListOfHsNodes(selectorIntf)[source]

Bases: list

@ivar selectorIntf: selector for this node

__init__(selectorIntf)[source]
ack() RtlSignal[source]
append(selectorVal, item)[source]

Append object to the end of the list.

sync(allNodes: List[OutNodeInfo], en: RtlSignal, din_vld: RtlSignal) None[source]
class hwtLib.amba.axis_comp.frame_parser.out_containers.InNodeInfo(inInterface: Handshaked, en: RtlSignal)[source]

Bases: object

Interface has to be ready and handshaked logic should be constructed

__init__(inInterface: Handshaked, en: RtlSignal)[source]
ack() RtlSignal[source]
sync(others: List[OutNodeInfo], en: RtlSignal, in_vld: RtlSignal)[source]
class hwtLib.amba.axis_comp.frame_parser.out_containers.InNodeReadOnlyInfo(inInterface: Handshaked, en: RtlSignal)[source]

Bases: InNodeInfo

Interface has to be ready but handshake logic is not constructed

sync(others: List[OutNodeInfo], en: RtlSignal, in_vld: RtlSignal)[source]
class hwtLib.amba.axis_comp.frame_parser.out_containers.ListOfOutNodeInfos(iterable=(), /)[source]

Bases: list

ack() RtlSignal[source]
sync(allNodes: List[OutNodeInfo], en: RtlSignal, din_vld: RtlSignal) None[source]
class hwtLib.amba.axis_comp.frame_parser.out_containers.OutNodeInfo(parent: Unit, outInterface: Union[Handshaked, VldSynced], en: RtlSignal, exclusiveEn: Optional[RtlSignal])[source]

Bases: object

Container for informations about output for handshake logic

Variables
  • ~.outInterface – output parsed interface

  • ~.en – enable signal of word

  • ~.exvlusiveEn – enable signal of union member

__init__(parent: Unit, outInterface: Union[Handshaked, VldSynced], en: RtlSignal, exclusiveEn: Optional[RtlSignal])[source]
__repr__()[source]

Return repr(self).

_sync(others: List[OutNodeInfo], en: RtlSignal, din_vld: RtlSignal)[source]
Returns

output validity signal which is checked if data from this word was previously consumed

ack() RtlSignal[source]
sync(others: List[OutNodeInfo], en: RtlSignal, din_vld: RtlSignal)[source]
class hwtLib.amba.axis_comp.frame_parser.out_containers.OutStreamNodeGroup(word_index: Optional[RtlSignal], word_index_start: int)[source]

Bases: object

__init__(word_index: Optional[RtlSignal], word_index_start: int)[source]
class hwtLib.amba.axis_comp.frame_parser.out_containers.OutStreamNodeInfo(parent: Unit, outInterface: AxiStream, en: RtlSignal, exclusiveEn: Optional[RtlSignal], streamGroup: OutStreamNodeGroup)[source]

Bases: OutNodeInfo

__init__(parent: Unit, outInterface: AxiStream, en: RtlSignal, exclusiveEn: Optional[RtlSignal], streamGroup: OutStreamNodeGroup)[source]
is_in_word_range(range_min: int, range_max: int)[source]
sync(others: List[OutNodeInfo], en: RtlSignal, din_vld: RtlSignal)[source]
hwtLib.amba.axis_comp.frame_parser.out_containers.getAckOfOthers(self: OutNodeInfo, others: List[OutNodeInfo])[source]

hwtLib.amba.axis_comp.frame_parser.test_types module

hwtLib.amba.axis_comp.frame_parser.word_factory module

class hwtLib.amba.axis_comp.frame_parser.word_factory.WordFactory(wordIndexReg: Optional[RtlSignal])[source]

Bases: object

An object which sotres information about synchronization of input words for FrameParser instances

__init__(wordIndexReg: Optional[RtlSignal])[source]
_getAck_no_wordIndex(x)[source]
_getAck_with_wordIndex(x)[source]
ack() RtlSignal[source]
addWord(index, hsNodes)[source]
sync(en: RtlSignal, din_vld: RtlSignal) None[source]