{-# OPTIONS_GHC -XFlexibleInstances #-} ------------------------------------------------------------------------------- --- $Id: SequentialSimulation.hs#1 2009/10/01 10:31:09 REDMOND\\satnams $ ------------------------------------------------------------------------------- module Lava.SequentialSimulation where import Data.List import Lava.Bit import Lava.CombinationalSimulation import Lava.Classes import Lava.Sim instance GroundAndPower [Bit] where zero = repeat Zero one = repeat One instance Combinational Sim [Bit] where lut1 f i = Sim (map (desim . lut1 f) i) lut2 f (i0, i1) = Sim (map (desim . lut2 f) (zip i0 i1)) lut3 f (i0, i1, i2) = Sim (map (desim . lut3 f) (zip3 i0 i1 i2)) lut4 f (i0, i1, i2, i3) = Sim (map (desim . lut4 f) (zip4 i0 i1 i2 i3)) instance Sequential Sim [Bit] where delay0 i = Sim (Zero:i) delay1 i = Sim (One:i)