Refactor reset handling code

This commit is contained in:
Alex Forencich
2021-03-22 22:02:53 -07:00
parent c677ab245c
commit a285f008ca
2 changed files with 32 additions and 44 deletions

View File

@@ -208,31 +208,28 @@ class AxiMasterWrite(Reset):
self.w_channel.clear() self.w_channel.clear()
self.b_channel.clear() self.b_channel.clear()
while not self.write_command_queue.empty(): def flush_cmd(cmd):
cmd = self.write_command_queue.get_nowait()
self.log.warning("Flushed write operation during reset: %s", cmd) self.log.warning("Flushed write operation during reset: %s", cmd)
if cmd.event: if cmd.event:
cmd.event.set(None) cmd.event.set(None)
while not self.write_command_queue.empty():
cmd = self.write_command_queue.get_nowait()
flush_cmd(cmd)
if self.current_write_command: if self.current_write_command:
cmd = self.current_write_command cmd = self.current_write_command
self.current_write_command = None self.current_write_command = None
self.log.warning("Flushed write operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
while not self.int_write_resp_command_queue.empty(): while not self.int_write_resp_command_queue.empty():
cmd = self.int_write_resp_command_queue.get_nowait() cmd = self.int_write_resp_command_queue.get_nowait()
self.log.warning("Flushed write operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
if self.current_write_resp_command: if self.current_write_resp_command:
cmd = self.current_write_resp_command cmd = self.current_write_resp_command
self.current_write_resp_command = None self.current_write_resp_command = None
self.log.warning("Flushed write operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
for q in self.int_write_resp_queue_list: for q in self.int_write_resp_queue_list:
while not q.empty(): while not q.empty():
@@ -559,31 +556,28 @@ class AxiMasterRead(Reset):
self.ar_channel.clear() self.ar_channel.clear()
self.r_channel.clear() self.r_channel.clear()
while not self.read_command_queue.empty(): def flush_cmd(cmd):
cmd = self.read_command_queue.get_nowait()
self.log.warning("Flushed read operation during reset: %s", cmd) self.log.warning("Flushed read operation during reset: %s", cmd)
if cmd.event: if cmd.event:
cmd.event.set(None) cmd.event.set(None)
while not self.read_command_queue.empty():
cmd = self.read_command_queue.get_nowait()
flush_cmd(cmd)
if self.current_read_command: if self.current_read_command:
cmd = self.current_read_command cmd = self.current_read_command
self.current_read_command = None self.current_read_command = None
self.log.warning("Flushed read operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
while not self.int_read_resp_command_queue.empty(): while not self.int_read_resp_command_queue.empty():
cmd = self.int_read_resp_command_queue.get_nowait() cmd = self.int_read_resp_command_queue.get_nowait()
self.log.warning("Flushed read operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
if self.current_read_resp_command: if self.current_read_resp_command:
cmd = self.current_read_resp_command cmd = self.current_read_resp_command
self.current_read_resp_command = None self.current_read_resp_command = None
self.log.warning("Flushed read operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
for q in self.int_read_resp_queue_list: for q in self.int_read_resp_queue_list:
while not q.empty(): while not q.empty():

View File

@@ -151,31 +151,28 @@ class AxiLiteMasterWrite(Reset):
self.w_channel.clear() self.w_channel.clear()
self.b_channel.clear() self.b_channel.clear()
while not self.write_command_queue.empty(): def flush_cmd(cmd):
cmd = self.write_command_queue.get_nowait()
self.log.warning("Flushed write operation during reset: %s", cmd) self.log.warning("Flushed write operation during reset: %s", cmd)
if cmd.event: if cmd.event:
cmd.event.set(None) cmd.event.set(None)
while not self.write_command_queue.empty():
cmd = self.write_command_queue.get_nowait()
flush_cmd(cmd)
if self.current_write_command: if self.current_write_command:
cmd = self.current_write_command cmd = self.current_write_command
self.current_write_command = None self.current_write_command = None
self.log.warning("Flushed write operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
while not self.int_write_resp_command_queue.empty(): while not self.int_write_resp_command_queue.empty():
cmd = self.int_write_resp_command_queue.get_nowait() cmd = self.int_write_resp_command_queue.get_nowait()
self.log.warning("Flushed write operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
if self.current_write_resp_command: if self.current_write_resp_command:
cmd = self.current_write_resp_command cmd = self.current_write_resp_command
self.current_write_resp_command = None self.current_write_resp_command = None
self.log.warning("Flushed write operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
self.in_flight_operations = 0 self.in_flight_operations = 0
self._idle.set() self._idle.set()
@@ -371,31 +368,28 @@ class AxiLiteMasterRead(Reset):
self.ar_channel.clear() self.ar_channel.clear()
self.r_channel.clear() self.r_channel.clear()
while not self.read_command_queue.empty(): def flush_cmd(cmd):
cmd = self.read_command_queue.get_nowait()
self.log.warning("Flushed read operation during reset: %s", cmd) self.log.warning("Flushed read operation during reset: %s", cmd)
if cmd.event: if cmd.event:
cmd.event.set(None) cmd.event.set(None)
while not self.read_command_queue.empty():
cmd = self.read_command_queue.get_nowait()
flush_cmd(cmd)
if self.current_read_command: if self.current_read_command:
cmd = self.current_read_command cmd = self.current_read_command
self.current_read_command = None self.current_read_command = None
self.log.warning("Flushed read operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
while not self.int_read_resp_command_queue.empty(): while not self.int_read_resp_command_queue.empty():
cmd = self.int_read_resp_command_queue.get_nowait() cmd = self.int_read_resp_command_queue.get_nowait()
self.log.warning("Flushed read operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
if self.current_read_resp_command: if self.current_read_resp_command:
cmd = self.current_read_resp_command cmd = self.current_read_resp_command
self.current_read_resp_command = None self.current_read_resp_command = None
self.log.warning("Flushed read operation during reset: %s", cmd) flush_cmd(cmd)
if cmd.event:
cmd.event.set(None)
self.in_flight_operations = 0 self.in_flight_operations = 0
self._idle.set() self._idle.set()