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
	
	 whitequark
						whitequark