>>> reg = register 5 (reg + 1) >>> f en = andEnable en reg >>> sampleN @System 10 (f (riseEvery d2)) [5,5,5,6,6,7,7,8,8,9]Force andEnable to work on System (hence sampleN not needing an explicit domain later):
>>> reg = register 5 (reg + 1) >>> f en = andEnable @System en reg >>> sampleN 10 (f (riseEvery d2)) [5,5,5,6,6,7,7,8,8,9]
>>> reg = register 5 (reg + 1) >>> sig = exposeClockResetEnable reg clockGen resetGen enableGen >>> sampleN @System 10 sig [5,5,6,7,8,9,10,11,12,13]Force exposeClockResetEnable to work on System (hence sampleN not needing an explicit domain later):
>>> reg = register 5 (reg + 1) >>> sig = exposeClockResetEnable @System reg clockGen resetGen enableGen >>> sampleN 10 sig [5,5,6,7,8,9,10,11,12,13]Usage in a testbench context:
topEntity :: Vec 2 (Vec 3 (Unsigned 8)) -> Vec 6 (Unsigned 8) topEntity = concat testBench :: Signal System Bool testBench = done where testInput = pure ((1 :> 2 :> 3 :> Nil) :> (4 :> 5 :> 6 :> Nil) :> Nil) expectedOutput = outputVerifier' ((1:>2:>3:>4:>5:>6:>Nil):>Nil) done = exposeClockResetEnable (expectedOutput (topEntity <$> testInput)) clk rst en clk = tbSystemClockGen (not <$> done) rst = systemResetGen en = enableGen
>>> reg = register 5 (reg + 1) >>> sig = exposeEnable reg enableGen >>> sampleN @System 10 sig [5,5,6,7,8,9,10,11,12,13]Force exposeEnable to work on System (hence sampleN not needing an explicit domain later):
>>> reg = register 5 (reg + 1) >>> sig = exposeEnable @System reg enableGen >>> sampleN 10 sig [5,5,6,7,8,9,10,11,12,13]
>>> reg = register 5 (reg + 1) >>> sig = withClockResetEnable clockGen resetGen enableGen reg >>> sampleN @System 10 sig [5,5,6,7,8,9,10,11,12,13]Force withClockResetEnable to work on System (hence sampleN not needing an explicit domain later):
>>> reg = register 5 (reg + 1) >>> sig = withClockResetEnable @System clockGen resetGen enableGen reg >>> sampleN 10 sig [5,5,6,7,8,9,10,11,12,13]
>>> reg = register 5 (reg + 1) >>> sig = withEnable enableGen reg >>> sampleN @System 10 sig [5,5,6,7,8,9,10,11,12,13]Force withEnable to work on System (hence sampleN not needing an explicit domain later):
>>> reg = register 5 (reg + 1) >>> sig = withEnable @System enableGen reg >>> sampleN 10 sig [5,5,6,7,8,9,10,11,12,13]