class StreamInterface(Interface): def __init__(self, signature, *, path): super().__init__(signature, path = path) if signature.backpressure == False: self.ready = C(1) async def recv(self, sim): await self.ready.set(1) await sim.tick().until(self.valid) payload = await self.payload.get() await sim.tick() await self.ready.set(0) return payload async def send(self, sim, value): await self.payload.set(value) await self.valid.set(1) await sim.tick().until(self.ready) await sim.tick() await self.valid.set(0)