MTL_Monitor/tests/washing_machine/properties/all_props_combined/prop_combined.hs

34 lines
2.0 KiB
Haskell

module Prop_combined where
import Clash.Explicit.Testbench
import Clash.Prelude
import Prop1(prop1)
import Prop2(prop2)
import Prop3(prop3)
import Prop4(prop4)
import Prop5(prop5)
finalprop (drain,dry,start,wash,fill,soak) = bundle (prop1 (drain,dry) , prop2 (start, wash), prop3 (fill, soak), prop4 (start,soak), prop5 (start, dry) )
topEntity
:: Clock System
-> Reset System
-> Enable System
-> (Signal System (Bool), Signal System (Bool), Signal System (Bool), Signal System (Bool),Signal System (Bool),Signal System (Bool))
-> (Signal System (Bool,Bool,Bool,Bool,Bool))
topEntity = exposeClockResetEnable finalprop
testBench :: Signal System Bool
testBench = done
where
testInput1 = stimuliGenerator clk rst $(listToVecTH [False::Bool , False, True, False, False, True, False, False, True, True, True, True, False])
testInput2 = stimuliGenerator clk rst $(listToVecTH [True::Bool , True, True, True, True, True, False, False, True, True, True, True, False])
testInput3 = stimuliGenerator clk rst $(listToVecTH [False::Bool , False, True, False, False, True, False, False, True, True, True, True, False])
testInput4 = stimuliGenerator clk rst $(listToVecTH [False::Bool , False, True, False, False, True, False, False, True, True, True, True, False])
testInput5 = stimuliGenerator clk rst $(listToVecTH [False::Bool , False, True, False, False, True, False, False, True, True, True, True, False])
testInput6 = stimuliGenerator clk rst $(listToVecTH [False::Bool , False, True, False, False, True, False, False, True, True, True, True, False])
expectOutput = outputVerifier' clk rst $(listToVecTH [(False,False, True , True, False) ::(Bool,Bool,Bool,Bool,Bool), (True, True, False, True, True), (False, False, False, False, True)])
done = expectOutput (topEntity clk rst en (testInput1, testInput2,testInput3,testInput4,testInput5,testInput6))
en = enableGen
clk = tbSystemClockGen (not <$> done)
rst = systemResetGen