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 slots = NotImplemented
def add_trigger(self, process, signal, *, trigger=None): def add_signal_trigger(self, process, signal, *, trigger=None):
raise NotImplementedError # :nocov: raise NotImplementedError # :nocov:
def remove_trigger(self, process, signal): def remove_signal_trigger(self, process, signal):
raise NotImplementedError # :nocov: raise NotImplementedError # :nocov:
def add_memory_trigger(self, process, memory): def add_memory_trigger(self, process, memory):

View file

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

View file

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

View file

@ -476,13 +476,13 @@ class _PySimulation(BaseSimulation):
self.memories[memory] = index self.memories[memory] = index
return 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) index = self.get_signal(signal)
assert (process not in self.slots[index].waiters or assert (process not in self.slots[index].waiters or
self.slots[index].waiters[process] == trigger) self.slots[index].waiters[process] == trigger)
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) index = self.get_signal(signal)
assert process in self.slots[index].waiters assert process in self.slots[index].waiters
del self.slots[index].waiters[process] del self.slots[index].waiters[process]