Exemplo n.º 1
0
    def setup_time_manager(self):
        class _FakeTimeManager:
            def __init__(self):
                self.time = 0.

            def _noop(self, *args, **kwargs):
                pass

            def _take_time(self, duration):
                self.time += unitless(duration)

            def _get_time(self):
                return self.time

            enter_sequential = _noop
            enter_parallel = _noop
            exit = _noop
            set_time_mu = _noop
            get_time_mu = _get_time
            get_time = _get_time
            take_time_mu = _take_time
            take_time = _take_time

        self.time_manager = _FakeTimeManager()
        core_language.set_time_manager(self.time_manager)
Exemplo n.º 2
0
 def setUp(self):
     core_language.set_time_manager(sim_time.Manager())
     self.rtio_manager = RTIOManager()
     self.rtio_manager.patch(spline)
     self.rtio_manager.patch(sawg)
     self.core = sim_devices.Core({})
     self.core.coarse_ref_period = 6.66666
     self.core.ref_multiplier = 1
     self.t = self.core.coarse_ref_period
     self.channel = mg.ClockDomainsRenamer({"rio_phy": "sys"})(
         Channel(width=16, parallelism=2))
     self.driver = sawg.SAWG({"core": self.core}, channel_base=0,
                             parallelism=self.channel.parallelism)
Exemplo n.º 3
0
 def setUp(self):
     core_language.set_time_manager(sim_time.Manager())
     self.rtio_manager = RTIOManager()
     self.rtio_manager.patch(spline)
     self.rtio_manager.patch(sawg)
     self.core = sim_devices.Core({})
     self.core.coarse_ref_period = 20/3
     self.core.ref_multiplier = 1
     self.t = self.core.coarse_ref_period
     self.channel = mg.ClockDomainsRenamer({"rio_phy": "sys"})(
         Channel(width=16, parallelism=2))
     self.driver = sawg.SAWG({"core": self.core}, channel_base=0,
                             parallelism=self.channel.parallelism)
Exemplo n.º 4
0
        self.stack[-1].take_time(duration)

    def get_time_mu(self):
        return self.stack[-1].current_time

    def set_time_mu(self, t):
        dt = t - self.get_time_mu()
        if dt < 0 * s:
            raise ValueError("Attempted to go back in time")
        self.take_time(dt)

    take_time = take_time_mu

    def event(self, description):
        self.timeline.append((self.get_time_mu(), description))

    def format_timeline(self):
        r = ""
        prev_time = 0 * s
        for time, description in sorted(self.timeline, key=itemgetter(0)):
            r += "@{:.9f} (+{:.9f}) ".format(time, time - prev_time)
            for item in description:
                r += "{:16}".format(str(item))
            r += "\n"
            prev_time = time
        return r


manager = Manager()
core_language.set_time_manager(manager)
Exemplo n.º 5
0
 def setUp(self) -> None:
     assert isinstance(self.REF_PERIOD, float)
     assert self.REF_PERIOD > 0.0
     set_time_manager(DaxTimeManager(self.REF_PERIOD))
     self.rnd = random.Random(self.SEED)