Source code for elasticai.creator_plugins.combinatorial.vhdl_nodes.shift_register
from elasticai.creator.ir2vhdl import Instance, VhdlNode
from .clocked_combinatorial import ClockedInstance
from .node_factory import InstanceFactoryForCombinatorial
[docs]
@InstanceFactoryForCombinatorial.register
def shift_register(node: VhdlNode) -> Instance:
return ShiftRegister(node)
[docs]
class ShiftRegister(ClockedInstance):
_logic_signals_with_default_suffix = ("valid_in", "valid_out")
def __init__(self, node: VhdlNode):
data_width = node.input_shape.size()
num_points = node.output_shape.width
output_width = node.output_shape.size()
super().__init__(
node,
input_width=data_width,
output_width=output_width,
generic_map={"data_width": data_width, "num_points": num_points},
)