Source code for usbcore.test.clock

#!/usr/bin/env python3

from migen import *


[docs]class CommonTestMultiClockDomain:
[docs] def setUp(self, clock_names): self.signals = {} self.cycle_count = {} self.last_value = {} for n in clock_names: self.signals[n] = ClockSignal(n) self.cycle_count[n] = 0 self.last_value[n] = 0
[docs] def update_clocks(self): for n in self.signals: current_value = yield self.signals[n] # Run the callback if current_value and not self.last_value[n]: yield from getattr(self, "on_%s_edge" % n)() self.cycle_count[n] += 1 self.last_value[n] = current_value
[docs] def wait_for_edge(self, name): count_last = self.cycle_count[name] while True: yield from self.update_internal_signals() count_next = self.cycle_count[name] if count_last != count_next: break yield
[docs] def update_internal_signals(self): yield from self.update_clocks()