Compare commits
3 Commits
first_depl
...
v0.1.30
| Author | SHA1 | Date | |
|---|---|---|---|
| 80b4095d73 | |||
| 9f8d271384 | |||
| aa3605a55c |
@@ -108,7 +108,7 @@ class ApbPause:
|
|||||||
|
|
||||||
def set_pause_generator(self, generator=None):
|
def set_pause_generator(self, generator=None):
|
||||||
if self._pause_cr is not None:
|
if self._pause_cr is not None:
|
||||||
self._pause_cr.kill()
|
self._pause_cr.cancel()
|
||||||
self._pause_cr = None
|
self._pause_cr = None
|
||||||
|
|
||||||
self._pause_generator = generator
|
self._pause_generator = generator
|
||||||
@@ -146,6 +146,9 @@ class ApbMaster(ApbPause, Region, Reset):
|
|||||||
self.command_queue.queue_occupancy_limit = 2
|
self.command_queue.queue_occupancy_limit = 2
|
||||||
self.current_command = None
|
self.current_command = None
|
||||||
|
|
||||||
|
self.read_resp = None
|
||||||
|
self.write_resp = None
|
||||||
|
|
||||||
self.in_flight_operations = 0
|
self.in_flight_operations = 0
|
||||||
self._idle = Event()
|
self._idle = Event()
|
||||||
self._idle.set()
|
self._idle.set()
|
||||||
@@ -268,7 +271,7 @@ class ApbMaster(ApbPause, Region, Reset):
|
|||||||
|
|
||||||
await self.command_queue.put(ApbWriteCmd(address, data, prot, event))
|
await self.command_queue.put(ApbWriteCmd(address, data, prot, event))
|
||||||
await event.wait()
|
await event.wait()
|
||||||
return event.data
|
return self.write_resp
|
||||||
|
|
||||||
async def _write_wrapper(self, address, data, prot, event):
|
async def _write_wrapper(self, address, data, prot, event):
|
||||||
event.set(await self.write(address, data, prot))
|
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 self.command_queue.put(ApbReadCmd(address, length, prot, event))
|
||||||
|
|
||||||
await event.wait()
|
await event.wait()
|
||||||
return event.data
|
return self.read_resp
|
||||||
|
|
||||||
async def _read_wrapper(self, address, length, prot, event):
|
async def _read_wrapper(self, address, length, prot, event):
|
||||||
event.set(await self.read(address, length, prot))
|
event.set(await self.read(address, length, prot))
|
||||||
@@ -307,7 +310,7 @@ class ApbMaster(ApbPause, Region, Reset):
|
|||||||
self.bus.penable.value = False
|
self.bus.penable.value = False
|
||||||
|
|
||||||
if self._run_cr is not None:
|
if self._run_cr is not None:
|
||||||
self._run_cr.kill()
|
self._run_cr.cancel()
|
||||||
self._run_cr = None
|
self._run_cr = None
|
||||||
|
|
||||||
def flush_cmd(cmd):
|
def flush_cmd(cmd):
|
||||||
@@ -399,8 +402,6 @@ class ApbMaster(ApbPause, Region, Reset):
|
|||||||
while self.pause:
|
while self.pause:
|
||||||
await clock_edge_event
|
await clock_edge_event
|
||||||
|
|
||||||
await clock_edge_event
|
|
||||||
|
|
||||||
if k == 0:
|
if k == 0:
|
||||||
self.bus.paddr.value = cmd.address
|
self.bus.paddr.value = cmd.address
|
||||||
else:
|
else:
|
||||||
@@ -438,14 +439,14 @@ class ApbMaster(ApbPause, Region, Reset):
|
|||||||
if pwrite:
|
if pwrite:
|
||||||
self.log.info("Write complete addr: 0x%08x prot: %s resp: %s length: %d",
|
self.log.info("Write complete addr: 0x%08x prot: %s resp: %s length: %d",
|
||||||
cmd.address, cmd.prot, resp, length)
|
cmd.address, cmd.prot, resp, length)
|
||||||
write_resp = ApbWriteResp(cmd.address, length, resp)
|
self.write_resp = ApbWriteResp(cmd.address, length, resp)
|
||||||
cmd.event.set(write_resp)
|
cmd.event.set()
|
||||||
else:
|
else:
|
||||||
if self.log.isEnabledFor(logging.INFO):
|
if self.log.isEnabledFor(logging.INFO):
|
||||||
self.log.info("Read complete addr: 0x%08x prot: %s resp: %s data: %s",
|
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)))
|
cmd.address, cmd.prot, resp, ' '.join((f'{c:02x}' for c in read_data)))
|
||||||
read_resp = ApbReadResp(cmd.address, bytes(read_data), resp)
|
self.read_resp = ApbReadResp(cmd.address, bytes(read_data), resp)
|
||||||
cmd.event.set(read_resp)
|
cmd.event.set()
|
||||||
|
|
||||||
self.current_write_command = None
|
self.current_write_command = None
|
||||||
|
|
||||||
@@ -518,7 +519,7 @@ class ApbSlave(ApbPause, Reset):
|
|||||||
self.bus.pready.value = False
|
self.bus.pready.value = False
|
||||||
|
|
||||||
if self._run_cr is not None:
|
if self._run_cr is not None:
|
||||||
self._run_cr.kill()
|
self._run_cr.cancel()
|
||||||
self._run_cr = None
|
self._run_cr = None
|
||||||
else:
|
else:
|
||||||
self.log.info("Reset de-asserted")
|
self.log.info("Reset de-asserted")
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ class TagContext:
|
|||||||
def _flush(self):
|
def _flush(self):
|
||||||
flushed_cmds = []
|
flushed_cmds = []
|
||||||
if self._cr is not None:
|
if self._cr is not None:
|
||||||
self._cr.kill()
|
self._cr.cancel()
|
||||||
self._cr = None
|
self._cr = None
|
||||||
self._manager._set_idle(self)
|
self._manager._set_idle(self)
|
||||||
if self._current_cmd is not None:
|
if self._current_cmd is not None:
|
||||||
@@ -431,10 +431,10 @@ class AxiMasterWrite(Region, Reset):
|
|||||||
if state:
|
if state:
|
||||||
self.log.info("Reset asserted")
|
self.log.info("Reset asserted")
|
||||||
if self._process_write_cr is not None:
|
if self._process_write_cr is not None:
|
||||||
self._process_write_cr.kill()
|
self._process_write_cr.cancel()
|
||||||
self._process_write_cr = None
|
self._process_write_cr = None
|
||||||
if self._process_write_resp_cr is not None:
|
if self._process_write_resp_cr is not None:
|
||||||
self._process_write_resp_cr.kill()
|
self._process_write_resp_cr.cancel()
|
||||||
self._process_write_resp_cr = None
|
self._process_write_resp_cr = None
|
||||||
|
|
||||||
self.aw_channel.clear()
|
self.aw_channel.clear()
|
||||||
@@ -842,10 +842,10 @@ class AxiMasterRead(Region, Reset):
|
|||||||
if state:
|
if state:
|
||||||
self.log.info("Reset asserted")
|
self.log.info("Reset asserted")
|
||||||
if self._process_read_cr is not None:
|
if self._process_read_cr is not None:
|
||||||
self._process_read_cr.kill()
|
self._process_read_cr.cancel()
|
||||||
self._process_read_cr = None
|
self._process_read_cr = None
|
||||||
if self._process_read_resp_cr is not None:
|
if self._process_read_resp_cr is not None:
|
||||||
self._process_read_resp_cr.kill()
|
self._process_read_resp_cr.cancel()
|
||||||
self._process_read_resp_cr = None
|
self._process_read_resp_cr = None
|
||||||
|
|
||||||
self.ar_channel.clear()
|
self.ar_channel.clear()
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ class AxiSlaveWrite(Reset):
|
|||||||
if state:
|
if state:
|
||||||
self.log.info("Reset asserted")
|
self.log.info("Reset asserted")
|
||||||
if self._process_write_cr is not None:
|
if self._process_write_cr is not None:
|
||||||
self._process_write_cr.kill()
|
self._process_write_cr.cancel()
|
||||||
self._process_write_cr = None
|
self._process_write_cr = None
|
||||||
|
|
||||||
self.aw_channel.clear()
|
self.aw_channel.clear()
|
||||||
@@ -263,7 +263,7 @@ class AxiSlaveRead(Reset):
|
|||||||
if state:
|
if state:
|
||||||
self.log.info("Reset asserted")
|
self.log.info("Reset asserted")
|
||||||
if self._process_read_cr is not None:
|
if self._process_read_cr is not None:
|
||||||
self._process_read_cr.kill()
|
self._process_read_cr.cancel()
|
||||||
self._process_read_cr = None
|
self._process_read_cr = None
|
||||||
|
|
||||||
self.ar_channel.clear()
|
self.ar_channel.clear()
|
||||||
|
|||||||
@@ -211,10 +211,10 @@ class AxiLiteMasterWrite(Region, Reset):
|
|||||||
if state:
|
if state:
|
||||||
self.log.info("Reset asserted")
|
self.log.info("Reset asserted")
|
||||||
if self._process_write_cr is not None:
|
if self._process_write_cr is not None:
|
||||||
self._process_write_cr.kill()
|
self._process_write_cr.cancel()
|
||||||
self._process_write_cr = None
|
self._process_write_cr = None
|
||||||
if self._process_write_resp_cr is not None:
|
if self._process_write_resp_cr is not None:
|
||||||
self._process_write_resp_cr.kill()
|
self._process_write_resp_cr.cancel()
|
||||||
self._process_write_resp_cr = None
|
self._process_write_resp_cr = None
|
||||||
|
|
||||||
self.aw_channel.clear()
|
self.aw_channel.clear()
|
||||||
@@ -463,10 +463,10 @@ class AxiLiteMasterRead(Region, Reset):
|
|||||||
if state:
|
if state:
|
||||||
self.log.info("Reset asserted")
|
self.log.info("Reset asserted")
|
||||||
if self._process_read_cr is not None:
|
if self._process_read_cr is not None:
|
||||||
self._process_read_cr.kill()
|
self._process_read_cr.cancel()
|
||||||
self._process_read_cr = None
|
self._process_read_cr = None
|
||||||
if self._process_read_resp_cr is not None:
|
if self._process_read_resp_cr is not None:
|
||||||
self._process_read_resp_cr.kill()
|
self._process_read_resp_cr.cancel()
|
||||||
self._process_read_resp_cr = None
|
self._process_read_resp_cr = None
|
||||||
|
|
||||||
self.ar_channel.clear()
|
self.ar_channel.clear()
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ class AxiLiteSlaveWrite(Reset):
|
|||||||
if state:
|
if state:
|
||||||
self.log.info("Reset asserted")
|
self.log.info("Reset asserted")
|
||||||
if self._process_write_cr is not None:
|
if self._process_write_cr is not None:
|
||||||
self._process_write_cr.kill()
|
self._process_write_cr.cancel()
|
||||||
self._process_write_cr = None
|
self._process_write_cr = None
|
||||||
|
|
||||||
self.aw_channel.clear()
|
self.aw_channel.clear()
|
||||||
@@ -212,7 +212,7 @@ class AxiLiteSlaveRead(Reset):
|
|||||||
if state:
|
if state:
|
||||||
self.log.info("Reset asserted")
|
self.log.info("Reset asserted")
|
||||||
if self._process_read_cr is not None:
|
if self._process_read_cr is not None:
|
||||||
self._process_read_cr.kill()
|
self._process_read_cr.cancel()
|
||||||
self._process_read_cr = None
|
self._process_read_cr = None
|
||||||
|
|
||||||
self.ar_channel.clear()
|
self.ar_channel.clear()
|
||||||
|
|||||||
@@ -369,7 +369,7 @@ class AxiStreamBase(Reset):
|
|||||||
if state:
|
if state:
|
||||||
self.log.info("Reset asserted")
|
self.log.info("Reset asserted")
|
||||||
if self._run_cr is not None:
|
if self._run_cr is not None:
|
||||||
self._run_cr.kill()
|
self._run_cr.cancel()
|
||||||
self._run_cr = None
|
self._run_cr = None
|
||||||
|
|
||||||
self.active = False
|
self.active = False
|
||||||
@@ -408,7 +408,7 @@ class AxiStreamPause:
|
|||||||
|
|
||||||
def set_pause_generator(self, generator=None):
|
def set_pause_generator(self, generator=None):
|
||||||
if self._pause_cr is not None:
|
if self._pause_cr is not None:
|
||||||
self._pause_cr.kill()
|
self._pause_cr.cancel()
|
||||||
self._pause_cr = None
|
self._pause_cr = None
|
||||||
|
|
||||||
self._pause_generator = generator
|
self._pause_generator = generator
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class Reset:
|
|||||||
|
|
||||||
async def _run_reset(self, reset_signal, active_level):
|
async def _run_reset(self, reset_signal, active_level):
|
||||||
while True:
|
while True:
|
||||||
await Edge(reset_signal)
|
await reset_signal.value_change
|
||||||
try:
|
try:
|
||||||
level = bool(int(reset_signal.value))
|
level = bool(int(reset_signal.value))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ class StreamBase(Reset):
|
|||||||
if state:
|
if state:
|
||||||
self.log.info("Reset asserted")
|
self.log.info("Reset asserted")
|
||||||
if self._run_cr is not None:
|
if self._run_cr is not None:
|
||||||
self._run_cr.kill()
|
self._run_cr.cancel()
|
||||||
self._run_cr = None
|
self._run_cr = None
|
||||||
|
|
||||||
self.active = False
|
self.active = False
|
||||||
@@ -192,7 +192,7 @@ class StreamPause:
|
|||||||
|
|
||||||
def set_pause_generator(self, generator=None):
|
def set_pause_generator(self, generator=None):
|
||||||
if self._pause_cr is not None:
|
if self._pause_cr is not None:
|
||||||
self._pause_cr.kill()
|
self._pause_cr.cancel()
|
||||||
self._pause_cr = None
|
self._pause_cr = None
|
||||||
|
|
||||||
self._pause_generator = generator
|
self._pause_generator = generator
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
__version__ = "0.1.27"
|
__version__ = "0.1.30"
|
||||||
|
|||||||
Reference in New Issue
Block a user