back.pysim: make initial phase configurable.
This commit is contained in:
parent
0ef5ced492
commit
e230383aac
|
@ -250,15 +250,17 @@ class Simulator:
|
|||
pass
|
||||
self.add_process(sync_process())
|
||||
|
||||
def add_clock(self, period, domain="sync"):
|
||||
def add_clock(self, period, phase=None, domain="sync"):
|
||||
if self._fastest_clock == self._epsilon or period < self._fastest_clock:
|
||||
self._fastest_clock = period
|
||||
|
||||
half_period = period / 2
|
||||
if phase is None:
|
||||
phase = half_period
|
||||
clk = self._domains[domain].clk
|
||||
def clk_process():
|
||||
yield Passive()
|
||||
yield Delay(half_period)
|
||||
yield Delay(phase)
|
||||
while True:
|
||||
yield clk.eq(1)
|
||||
yield Delay(half_period)
|
||||
|
|
|
@ -18,7 +18,7 @@ def run_simulation(fragment_or_module, generators, clocks={"sync": 10}, vcd_name
|
|||
|
||||
with Simulator(fragment, vcd_file=open(vcd_name, "w") if vcd_name else None) as sim:
|
||||
for domain, period in clocks.items():
|
||||
sim.add_clock(period / 1e9, domain)
|
||||
sim.add_clock(period / 1e9, domain=domain)
|
||||
for domain, process in generators.items():
|
||||
sim.add_sync_process(process, domain)
|
||||
sim.add_sync_process(process, domain=domain)
|
||||
sim.run()
|
||||
|
|
Loading…
Reference in a new issue