from amaranth import Module from amaranth.lib.wiring import Signature, In, Out, Component, connect class ROM(Component): @property def signature(self): return Signature({ "addr": Out(5), "data": In(8) }).flip() def elaborate(self, platform): m = Module() return m class Container(Component): @property def signature(self): return Signature({ "rom_data": Out(ROM().signature.members["data"].shape) # ??? }) def elaborate(self, platform): m = Module() self.rom = ROM() m.submodules.rom = self.rom connect(m, self.rom.data, self.rom_data) return m Container().elaborate(None)