copilot-4.8: examples/Clock.hs
-- Copyright © 2019 National Institute of Aerospace / Galois, Inc.
-- | Example showing usage of clocks to generate periodically recurring truth
-- values.
module Main where
import Language.Copilot
import Copilot.Library.Clocks
-- | We need to force a type for the argument of `period`.
p :: Word8
p = 5
-- | Both have the same period, but a different phase.
clkStream :: Stream Bool
clkStream = clk (period p) (phase 0)
clkStream' :: Stream Bool
clkStream' = clk (period p) (phase 2)
spec :: Spec
spec = do
observer "clk" clkStream
observer "clk'" clkStream'
main :: IO ()
main = interpret 30 spec