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