lib.cdc: add tests for MultiReg.

This commit is contained in:
whitequark 2018-12-26 12:58:30 +00:00
parent 35a44f017f
commit fe8cb55204
2 changed files with 44 additions and 0 deletions

View file

@ -7,6 +7,7 @@ from vcd.gtkw import GTKWSave
from ..tools import flatten
from ..hdl.ast import *
from ..hdl.ir import *
from ..hdl.xfrm import ValueVisitor, StatementVisitor
@ -359,6 +360,9 @@ class Simulator:
self._gtkw_file = gtkw_file
self._traces = traces
while not isinstance(self._fragment, Fragment):
self._fragment = self._fragment.get_fragment(platform=None)
@staticmethod
def _check_process(process):
if inspect.isgeneratorfunction(process):

View file

@ -0,0 +1,40 @@
from .tools import *
from ..hdl.ast import *
from ..back.pysim import *
from ..lib.cdc import *
class MultiRegTestCase(FHDLTestCase):
def test_basic(self):
i = Signal()
o = Signal()
frag = MultiReg(i, o)
with Simulator(frag) as sim:
sim.add_clock(1e-6)
def process():
self.assertEqual((yield o), 0)
yield i.eq(1)
yield Tick()
self.assertEqual((yield o), 0)
yield Tick()
self.assertEqual((yield o), 0)
yield Tick()
self.assertEqual((yield o), 1)
sim.add_process(process)
def test_basic(self):
i = Signal(reset=1)
o = Signal()
frag = MultiReg(i, o, reset=1)
with Simulator(frag) as sim:
sim.add_clock(1e-6)
def process():
self.assertEqual((yield o), 1)
yield i.eq(0)
yield Tick()
self.assertEqual((yield o), 1)
yield Tick()
self.assertEqual((yield o), 1)
yield Tick()
self.assertEqual((yield o), 0)
sim.add_process(process)