|
|
|
|
@@ -146,6 +146,9 @@ class ApbMaster(ApbPause, Region, Reset):
|
|
|
|
|
self.command_queue.queue_occupancy_limit = 2
|
|
|
|
|
self.current_command = None
|
|
|
|
|
|
|
|
|
|
self.read_resp = None
|
|
|
|
|
self.write_resp = None
|
|
|
|
|
|
|
|
|
|
self.in_flight_operations = 0
|
|
|
|
|
self._idle = Event()
|
|
|
|
|
self._idle.set()
|
|
|
|
|
@@ -268,7 +271,7 @@ class ApbMaster(ApbPause, Region, Reset):
|
|
|
|
|
|
|
|
|
|
await self.command_queue.put(ApbWriteCmd(address, data, prot, event))
|
|
|
|
|
await event.wait()
|
|
|
|
|
return event.data
|
|
|
|
|
return self.write_resp
|
|
|
|
|
|
|
|
|
|
async def _write_wrapper(self, address, data, prot, event):
|
|
|
|
|
event.set(await self.write(address, data, prot))
|
|
|
|
|
@@ -294,7 +297,7 @@ class ApbMaster(ApbPause, Region, Reset):
|
|
|
|
|
await self.command_queue.put(ApbReadCmd(address, length, prot, event))
|
|
|
|
|
|
|
|
|
|
await event.wait()
|
|
|
|
|
return event.data
|
|
|
|
|
return self.read_resp
|
|
|
|
|
|
|
|
|
|
async def _read_wrapper(self, address, length, prot, event):
|
|
|
|
|
event.set(await self.read(address, length, prot))
|
|
|
|
|
@@ -436,14 +439,14 @@ class ApbMaster(ApbPause, Region, Reset):
|
|
|
|
|
if pwrite:
|
|
|
|
|
self.log.info("Write complete addr: 0x%08x prot: %s resp: %s length: %d",
|
|
|
|
|
cmd.address, cmd.prot, resp, length)
|
|
|
|
|
write_resp = ApbWriteResp(cmd.address, length, resp)
|
|
|
|
|
cmd.event.set(write_resp)
|
|
|
|
|
self.write_resp = ApbWriteResp(cmd.address, length, resp)
|
|
|
|
|
cmd.event.set()
|
|
|
|
|
else:
|
|
|
|
|
if self.log.isEnabledFor(logging.INFO):
|
|
|
|
|
self.log.info("Read complete addr: 0x%08x prot: %s resp: %s data: %s",
|
|
|
|
|
cmd.address, cmd.prot, resp, ' '.join((f'{c:02x}' for c in read_data)))
|
|
|
|
|
read_resp = ApbReadResp(cmd.address, bytes(read_data), resp)
|
|
|
|
|
cmd.event.set(read_resp)
|
|
|
|
|
self.read_resp = ApbReadResp(cmd.address, bytes(read_data), resp)
|
|
|
|
|
cmd.event.set()
|
|
|
|
|
|
|
|
|
|
self.current_write_command = None
|
|
|
|
|
|
|
|
|
|
|