from ..tools import flatten
 from ..hdl.ast import *
+from ..hdl.ir import *
 from ..hdl.xfrm import ValueVisitor, StatementVisitor
 
 
         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):
 
--- /dev/null
+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)