{-# OPTIONS --safe --cubical #-}
module Tutorials.Project01.Main where
open import Spartan6.API.Circuit
open Expression
open Design
inputA inputB : Expr 2 0
inputA = input fzero
inputB = input (fsuc fzero)
sumBit carryBit : Expr 2 0
sumBit = inputA xorE inputB
carryBit = inputA andE inputB
halfAdder : Design 2 2 0
halfAdder = combinationalDesign (sumBit ∷ carryBit ∷ [])
half-adder-00 : observe halfAdder (low ∷ low ∷ []) [] ≡ low ∷ low ∷ []
half-adder-00 = refl
half-adder-01 : observe halfAdder (low ∷ high ∷ []) [] ≡ high ∷ low ∷ []
half-adder-01 = refl
half-adder-10 : observe halfAdder (high ∷ low ∷ []) [] ≡ high ∷ low ∷ []
half-adder-10 = refl
half-adder-11 : observe halfAdder (high ∷ high ∷ []) [] ≡ low ∷ high ∷ []
half-adder-11 = refl
half-adder-has-no-idle-state-change :
step halfAdder idle (high ∷ high ∷ []) [] ≡ []
half-adder-has-no-idle-state-change = refl
half-adder-has-no-edge-state-change :
step halfAdder risingEdge (high ∷ high ∷ []) [] ≡ []
half-adder-has-no-edge-state-change = refl