sync_process = sync_process()
self.add_process(sync_process)
- def add_clock(self, period, phase=None, domain="sync"):
+ def add_clock(self, period, *, phase=None, domain="sync", if_exists=False):
if self._fastest_clock == self._epsilon or period < self._fastest_clock:
self._fastest_clock = period
if domain in self._all_clocks:
clk = domain_obj.clk
break
else:
- raise ValueError("Domain '{}' is not present in simulation"
- .format(domain))
+ if if_exists:
+ return
+ else:
+ raise ValueError("Domain '{}' is not present in simulation"
+ .format(domain))
def clk_process():
yield Passive()
yield Delay(phase)
"a generator function"):
sim.add_process(1)
- def test_add_clock_wrong(self):
+ def test_add_clock_wrong_twice(self):
m = Module()
s = Signal()
m.d.sync += s.eq(0)
msg="Domain 'sync' already has a clock driving it"):
sim.add_clock(1)
- def test_add_clock_wrong(self):
+ def test_add_clock_wrong_missing(self):
m = Module()
with self.assertSimulation(m) as sim:
with self.assertRaises(ValueError,
msg="Domain 'sync' is not present in simulation"):
sim.add_clock(1)
+ def test_add_clock_if_exists(self):
+ m = Module()
+ with self.assertSimulation(m) as sim:
+ sim.add_clock(1, if_exists=True)
+
def test_eq_signal_unused_wrong(self):
self.setUp_lhs_rhs()
self.s = Signal()