From 22d03b4943a3bb6339c03a0607c0893410766609 Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Tue, 13 Dec 2011 15:25:46 +0100 Subject: [PATCH] timeline: only trigger in rest state --- migen/corelogic/timeline.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/migen/corelogic/timeline.py b/migen/corelogic/timeline.py index bae4f722b..1515c6ec1 100644 --- a/migen/corelogic/timeline.py +++ b/migen/corelogic/timeline.py @@ -4,7 +4,7 @@ class Inst: def __init__(self, trigger, events): self.trigger = trigger self.events = events - self.lastevent = max([e[0] for e in events] + [e[2] for e in events if len(e) == 3]) + self.lastevent = max([e[0] for e in events]) f.Declare(self, "_counter", f.BV(f.BitsFor(self.lastevent))) def GetFragment(self): @@ -18,16 +18,10 @@ class Inst: [f.Assign(self._counter, f.Constant(0, self._counter.bv))], [counterlogic]) def getcond(e): - if len(e) == 3: - if e[0] == 0: - return self.trigger & (self._counter <= f.Constant(e[2], self._counter.bv)) - else: - return (self._counter >= f.Constant(e[0], self._counter.bv)) & (self._counter <= f.Constant(e[2], self._counter.bv)) + if e[0] == 0: + return self.trigger & (self._counter == f.Constant(0, self._counter.bv)) else: - if e[0] == 0: - return self.trigger - else: - return self._counter == f.Constant(e[0], self._counter.bv) + return self._counter == f.Constant(e[0], self._counter.bv) sync = [f.If(getcond(e), e[1]) for e in self.events] sync.append(counterlogic) return f.Fragment(sync=sync)