Init as bytearray instead of convert to bytearray

This commit is contained in:
Alex Forencich
2020-12-21 23:09:02 -08:00
parent 4336c32b40
commit ad83d58b01

View File

@@ -589,7 +589,7 @@ class AxiStreamSink(object):
self.set_pause_generator(None) self.set_pause_generator(None)
async def _run(self): async def _run(self):
frame = AxiStreamFrame([], [], [], [], []) frame = None
self.active = False self.active = False
while True: while True:
@@ -601,13 +601,19 @@ class AxiStreamSink(object):
if self.reset is not None and self.reset.value: if self.reset is not None and self.reset.value:
await RisingEdge(self.clock) await RisingEdge(self.clock)
frame = AxiStreamFrame([], [], [], [], []) frame = None
self.active = False self.active = False
if hasattr(self.bus, "tready"): if hasattr(self.bus, "tready"):
self.bus.tready <= 0 self.bus.tready <= 0
continue continue
if tready_sample and tvalid_sample: if tready_sample and tvalid_sample:
if frame is None:
if self.byte_size == 8:
frame = AxiStreamFrame(bytearray(), [], [], [], [])
else:
frame = AxiStreamFrame([], [], [], [], [])
for offset in range(self.byte_lanes): for offset in range(self.byte_lanes):
frame.tdata.append((self.bus.tdata.value.integer >> (offset * self.byte_size)) & self.byte_mask) frame.tdata.append((self.bus.tdata.value.integer >> (offset * self.byte_size)) & self.byte_mask)
@@ -621,9 +627,6 @@ class AxiStreamSink(object):
frame.tuser.append(self.bus.tuser.value.integer) frame.tuser.append(self.bus.tuser.value.integer)
if not hasattr(self.bus, "tlast") or self.bus.tlast.value: if not hasattr(self.bus, "tlast") or self.bus.tlast.value:
if self.byte_size == 8:
frame.tdata = bytearray(frame.tdata)
self.log.info("RX frame: %s", frame) self.log.info("RX frame: %s", frame)
self.queue_occupancy_bytes += len(frame) self.queue_occupancy_bytes += len(frame)
@@ -632,7 +635,7 @@ class AxiStreamSink(object):
self.queue.append(frame) self.queue.append(frame)
self.sync.set() self.sync.set()
frame = AxiStreamFrame([], [], [], [], []) frame = None
await RisingEdge(self.clock) await RisingEdge(self.clock)
@@ -772,7 +775,7 @@ class AxiStreamMonitor(object):
await self.sync.wait() await self.sync.wait()
async def _run(self): async def _run(self):
frame = AxiStreamFrame([], [], [], [], []) frame = None
self.active = False self.active = False
while True: while True:
@@ -784,11 +787,17 @@ class AxiStreamMonitor(object):
if self.reset is not None and self.reset.value: if self.reset is not None and self.reset.value:
await RisingEdge(self.clock) await RisingEdge(self.clock)
frame = AxiStreamFrame([], [], [], [], []) frame = None
self.active = False self.active = False
continue continue
if tready_sample and tvalid_sample: if tready_sample and tvalid_sample:
if frame is None:
if self.byte_size == 8:
frame = AxiStreamFrame(bytearray(), [], [], [], [])
else:
frame = AxiStreamFrame([], [], [], [], [])
for offset in range(self.byte_lanes): for offset in range(self.byte_lanes):
frame.tdata.append((self.bus.tdata.value.integer >> (offset * self.byte_size)) & self.byte_mask) frame.tdata.append((self.bus.tdata.value.integer >> (offset * self.byte_size)) & self.byte_mask)
@@ -802,14 +811,11 @@ class AxiStreamMonitor(object):
frame.tuser.append(self.bus.tuser.value.integer) frame.tuser.append(self.bus.tuser.value.integer)
if not hasattr(self.bus, "tlast") or self.bus.tlast.value: if not hasattr(self.bus, "tlast") or self.bus.tlast.value:
if self.byte_size == 8:
frame.tdata = bytearray(frame.tdata)
self.log.info("RX frame: %s", frame) self.log.info("RX frame: %s", frame)
self.queue.append(frame) self.queue.append(frame)
self.sync.set() self.sync.set()
frame = AxiStreamFrame([], [], [], [], []) frame = None
await RisingEdge(self.clock) await RisingEdge(self.clock)