Source code for hwtLib.handshaked.builder
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from hwtLib.abstract.streamBuilder import AbstractStreamBuilder
from hwtLib.handshaked.fifo import HandshakedFifo
from hwtLib.handshaked.fifoAsync import HsFifoAsync
from hwtLib.handshaked.handshakedToAxiStream import HandshakedToAxiStream
from hwtLib.handshaked.joinFair import HsJoinFairShare
from hwtLib.handshaked.joinPrioritized import HsJoinPrioritized
from hwtLib.handshaked.reg import HandshakedReg
from hwtLib.handshaked.resizer import HsResizer
from hwtLib.handshaked.splitCopy import HsSplitCopy
from hwtLib.handshaked.splitFair import HsSplitFair
from hwtLib.handshaked.splitPrioritized import HsSplitPrioritized
from hwtLib.handshaked.splitSelect import HsSplitSelect
[docs]class HsBuilder(AbstractStreamBuilder):
"""
Helper class which simplifies building of large stream paths
"""
FifoCls = HandshakedFifo
FifoAsyncCls = HsFifoAsync
JoinExplicitCls = NotImplemented
JoinPrioritizedCls = HsJoinPrioritized
JoinFairCls = HsJoinFairShare
ResizerCls = HsResizer
RegCls = HandshakedReg
SplitCopyCls = HsSplitCopy
SplitFairCls = HsSplitFair
SplitPrioritizedCls = HsSplitPrioritized
SplitSelectCls = HsSplitSelect
[docs] def to_axis(self, MAX_FRAME_WORDS=None, IN_TIMEOUT=None):
assert MAX_FRAME_WORDS or IN_TIMEOUT
DATA_WIDTH = self.end._bit_length() - 2
def set_params(u: HandshakedToAxiStream):
u.DATA_WIDTH = DATA_WIDTH
u.MAX_FRAME_WORDS = MAX_FRAME_WORDS
u.IN_TIMEOUT = IN_TIMEOUT
next_self = self._genericInstance(HandshakedToAxiStream, "hsToAxiS", set_params)
from hwtLib.amba.axis_comp.builder import AxiSBuilder
return AxiSBuilder(self.parent, next_self.end)