timeline: only trigger in rest state
This commit is contained in:
parent
6f7a35e0a3
commit
22d03b4943
|
@ -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,14 +18,8 @@ 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))
|
||||
else:
|
||||
if e[0] == 0:
|
||||
return self.trigger
|
||||
return self.trigger & (self._counter == f.Constant(0, self._counter.bv))
|
||||
else:
|
||||
return self._counter == f.Constant(e[0], self._counter.bv)
|
||||
sync = [f.If(getcond(e), e[1]) for e in self.events]
|
||||
|
|
Loading…
Reference in New Issue