sim: {add,remove}_trigger{add,remove}_signal_trigger

This commit is contained in:
Catherine 2024-04-27 16:07:15 +00:00
parent eef248a080
commit 78a289e5aa
4 changed files with 9 additions and 9 deletions

View file

@ -52,10 +52,10 @@ class BaseSimulation:
slots = NotImplemented
def add_trigger(self, process, signal, *, trigger=None):
def add_signal_trigger(self, process, signal, *, trigger=None):
raise NotImplementedError # :nocov:
def remove_trigger(self, process, signal):
def remove_signal_trigger(self, process, signal):
raise NotImplementedError # :nocov:
def add_memory_trigger(self, process, memory):

View file

@ -42,12 +42,12 @@ class PyCoroProcess(BaseProcess):
return f"{inspect.getfile(frame)}:{inspect.getlineno(frame)}"
def add_trigger(self, signal, trigger=None):
self.state.add_trigger(self, signal, trigger=trigger)
self.state.add_signal_trigger(self, signal, trigger=trigger)
self.waits_on.add(signal)
def clear_triggers(self):
for signal in self.waits_on:
self.state.remove_trigger(self, signal)
self.state.remove_signal_trigger(self, signal)
self.waits_on.clear()
def run(self):

View file

@ -501,15 +501,15 @@ class _FragmentCompiler:
lhs(port._data)(data)
for input in inputs:
self.state.add_trigger(domain_process, input)
self.state.add_signal_trigger(domain_process, input)
else:
domain = fragment.domains[domain_name]
clk_trigger = 1 if domain.clk_edge == "pos" else 0
self.state.add_trigger(domain_process, domain.clk, trigger=clk_trigger)
self.state.add_signal_trigger(domain_process, domain.clk, trigger=clk_trigger)
if domain.rst is not None and domain.async_reset:
rst_trigger = 1
self.state.add_trigger(domain_process, domain.rst, trigger=rst_trigger)
self.state.add_signal_trigger(domain_process, domain.rst, trigger=rst_trigger)
for signal in domain_signals:
signal_index = self.state.get_signal(signal)

View file

@ -476,13 +476,13 @@ class _PySimulation(BaseSimulation):
self.memories[memory] = index
return index
def add_trigger(self, process, signal, *, trigger=None):
def add_signal_trigger(self, process, signal, *, trigger=None):
index = self.get_signal(signal)
assert (process not in self.slots[index].waiters or
self.slots[index].waiters[process] == trigger)
self.slots[index].waiters[process] = trigger
def remove_trigger(self, process, signal):
def remove_signal_trigger(self, process, signal):
index = self.get_signal(signal)
assert process in self.slots[index].waiters
del self.slots[index].waiters[process]