module Clash.Verification
(
Assertion
, Property
, RenderAs(..)
, EV.name
, EV.lit
, EV.not
, EV.and
, EV.or
, EV.implies
, EV.next
, EV.nextN
, EV.before
, EV.timplies
, EV.timpliesOverlapping
, EV.always
, EV.never
, EV.assert
, EV.cover
, check
, checkI
, EV.hideAssertion
) where
import qualified Clash.Explicit.Verification as EV
import Clash.Signal
(KnownDomain, HiddenClock, HiddenReset, Signal, hasClock, hasReset)
import Clash.Verification.Internal
import Data.Text (Text)
check
:: ( KnownDomain dom
, HiddenClock dom
, HiddenReset dom
)
=> Text
-> RenderAs
-> Property dom
-> Signal dom AssertionResult
check :: Text -> RenderAs -> Property dom -> Signal dom AssertionResult
check = Clock dom
-> Reset dom
-> Text
-> RenderAs
-> Property dom
-> Signal dom AssertionResult
forall (dom :: Domain).
KnownDomain dom =>
Clock dom
-> Reset dom
-> Text
-> RenderAs
-> Property dom
-> Signal dom AssertionResult
EV.check Clock dom
forall (dom :: Domain). HiddenClock dom => Clock dom
hasClock Reset dom
forall (dom :: Domain). HiddenReset dom => Reset dom
hasReset
checkI
:: ( KnownDomain dom
, HiddenClock dom
, HiddenReset dom
)
=> Text
-> RenderAs
-> Property dom
-> Signal dom a
-> Signal dom a
checkI :: Text -> RenderAs -> Property dom -> Signal dom a -> Signal dom a
checkI = Clock dom
-> Reset dom
-> Text
-> RenderAs
-> Property dom
-> Signal dom a
-> Signal dom a
forall (dom :: Domain) a.
KnownDomain dom =>
Clock dom
-> Reset dom
-> Text
-> RenderAs
-> Property dom
-> Signal dom a
-> Signal dom a
EV.checkI Clock dom
forall (dom :: Domain). HiddenClock dom => Clock dom
hasClock Reset dom
forall (dom :: Domain). HiddenReset dom => Reset dom
hasReset