from amaranth import * from amaranth.lib import data from amaranth.sim import Simulator class UartShiftRegIn(data.Struct): class BackingStore(data.Union): read: data.StructLayout({ "start" : unsigned(1), "payload" : unsigned(8), "stop" : unsigned (1) }) write: data.StructLayout({ "next" : unsigned(1), "rest" : unsigned(8 + 1) }) valid: unsigned(1) shift: unsigned(1) data: BackingStore class ShiftIn(Elaboratable): def __init__(self): self._view = UartShiftRegIn() self.inp = Signal(1) self.last = Const(1, 1) self.valid = Signal(1) self.ready = Signal(1) self.data = Signal(8) def elaborate(self, platform): ### count = Signal(self._view.data) m = Module() return m shift_in = ShiftIn() sim = Simulator(shift_in)