From: Christiaan Baaij Date: Thu, 6 Aug 2009 12:54:43 +0000 (+0200) Subject: Add the module hardware types, that exports all builtin types. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=de13e862545494042f299f4a894dcc3a2f771163;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git Add the module hardware types, that exports all builtin types. This way, users only have to import CLasH.HardwareTypes to get access to all translatable hardware types. --- diff --git a/HighOrdAlu.hs b/HighOrdAlu.hs index 6b11350..39bf4d9 100644 --- a/HighOrdAlu.hs +++ b/HighOrdAlu.hs @@ -1,20 +1,9 @@ -{-# LANGUAGE TemplateHaskell, ScopedTypeVariables #-} +{-# LANGUAGE TemplateHaskell, ScopedTypeVariables, NoImplicitPrelude #-} module HighOrdAlu where import qualified Prelude as P -import Prelude hiding ( - null, length, head, tail, last, init, take, drop, (++), map, foldl, foldr, - zipWith, zip, unzip, concat, reverse, iterate ) -import Bits --- import Types -import Types.Data.Num.Ops -import Types.Data.Num.Decimal.Digits -import Types.Data.Num.Decimal.Ops -import Types.Data.Num.Decimal.Literals -import Data.Param.TFVec -import Data.RangedWord -import Data.SizedInt +import CLasH.HardwareTypes import CLasH.Translator.Annotations constant :: NaturalT n => e -> Op n e diff --git "a/c\316\273ash/CLasH/HardwareTypes.hs" "b/c\316\273ash/CLasH/HardwareTypes.hs" new file mode 100644 index 0000000..b48760a --- /dev/null +++ "b/c\316\273ash/CLasH/HardwareTypes.hs" @@ -0,0 +1,53 @@ +{-# LANGUAGE TemplateHaskell, DeriveDataTypeable #-} + +module CLasH.HardwareTypes + ( module Types + , module Data.Param.TFVec + , module Data.RangedWord + , module Data.SizedInt + , module Data.SizedWord + , module Prelude + , Bit(..) + , hwand + , hwor + , hwxor + , hwnot + ) where + +import qualified Prelude as P +import Prelude hiding ( + null, length, head, tail, last, init, take, drop, (++), map, foldl, foldr, + zipWith, zip, unzip, concat, reverse, iterate ) +import Types +import Data.Param.TFVec +import Data.RangedWord +import Data.SizedInt +import Data.SizedWord + +import Language.Haskell.TH.Lift +import Data.Typeable + +-- The plain Bit type +data Bit = High | Low + deriving (P.Show, P.Eq, P.Read, Typeable) + +$(deriveLift1 ''Bit) + +hwand :: Bit -> Bit -> Bit +hwor :: Bit -> Bit -> Bit +hwxor :: Bit -> Bit -> Bit +hwnot :: Bit -> Bit + +High `hwand` High = High +_ `hwand` _ = Low + +High `hwor` _ = High +_ `hwor` High = High +Low `hwor` Low = Low + +High `hwxor` Low = High +Low `hwxor` High = High +_ `hwxor` _ = Low + +hwnot High = Low +hwnot Low = High \ No newline at end of file diff --git "a/c\316\273ash/clash.cabal" "b/c\316\273ash/clash.cabal" index d1dac48..1797f28 100644 --- "a/c\316\273ash/clash.cabal" +++ "b/c\316\273ash/clash.cabal" @@ -20,9 +20,10 @@ Library build-depends: ghc >= 6.11, pretty, vhdl > 0.1, haskell98, syb, data-accessor, containers, base >= 4, transformers, filepath, template-haskell, data-accessor-template, - prettyclass, directory + prettyclass, directory, th-lift-ng, tfp, tfvec - exposed-modules: CLasH.Translator + exposed-modules: CLasH.HardwareTypes + CLasH.Translator CLasH.Translator.Annotations CLasH.Utils