packages feed

clash-0.1: CLasH/VHDL/Constants.hs

module CLasH.VHDL.Constants where

-- VHDL Imports  
import qualified Language.VHDL.AST as AST

-- | A list of all builtin functions. Partly duplicates the name table
-- in VHDL.Generate, but we can't use that map everywhere due to
-- circular dependencie.
builtinIds = [ exId, replaceId, headId, lastId, tailId, initId, takeId, dropId
             , selId, plusgtId, ltplusId, plusplusId, mapId, zipWithId, foldlId
             , foldrId, zipId, unzipId, shiftlId, shiftrId, rotlId, rotrId
             , concatId, reverseId, iteratenId, iterateId, generatenId, generateId
             , emptyId, singletonId, copynId, copyId, lengthTId, nullId
             , hwxorId, hwandId, hworId, hwnotId, equalityId, inEqualityId, ltId
             , lteqId, gtId, gteqId, boolOrId, boolAndId, plusId, timesId
             , negateId, minusId, fromSizedWordId, fromIntegerId, resizeWordId
             , resizeIntId, sizedIntId, smallIntegerId, fstId, sndId, blockRAMId
             , splitId, minimumId, fromRangedWordId 
             ]
--------------
-- Identifiers
--------------

-- | reset and clock signal identifiers in String form
resetStr, clockStr :: String
resetStr = "resetn"
clockStr = "clock"

-- | reset and clock signal identifiers in basic AST.VHDLId form
resetId, clockId :: AST.VHDLId
resetId = AST.unsafeVHDLBasicId resetStr
clockId = AST.unsafeVHDLBasicId clockStr

integerId :: AST.VHDLId
integerId = AST.unsafeVHDLBasicId "integer"

-- | \"types\" identifier
typesId :: AST.VHDLId
typesId = AST.unsafeVHDLBasicId "types"

-- | work identifier
workId :: AST.VHDLId
workId = AST.unsafeVHDLBasicId "work"

-- | std identifier
stdId :: AST.VHDLId
stdId = AST.unsafeVHDLBasicId "std"


-- | textio identifier
textioId :: AST.VHDLId
textioId = AST.unsafeVHDLBasicId "textio"

-- | range attribute identifier
rangeId :: AST.VHDLId
rangeId = AST.unsafeVHDLBasicId "range"


-- | high attribute identifier
highId :: AST.VHDLId
highId = AST.unsafeVHDLBasicId "high"

-- | range attribute identifier
imageId :: AST.VHDLId
imageId = AST.unsafeVHDLBasicId "image"

-- | event attribute identifie
eventId :: AST.VHDLId
eventId = AST.unsafeVHDLBasicId "event"


-- | default function identifier
defaultId :: AST.VHDLId
defaultId = AST.unsafeVHDLBasicId "default"

-- FSVec function identifiers

-- | ex (operator ! in original Haskell source) function identifier
exId :: String
exId = "!"

-- | sel (function select in original Haskell source) function identifier
selId :: String
selId = "select"


-- | ltplus (function (<+) in original Haskell source) function identifier
ltplusId :: String
ltplusId = "<+"


-- | plusplus (function (++) in original Haskell source) function identifier
plusplusId :: String
plusplusId = "++"


-- | empty function identifier
emptyId :: String
emptyId = "empty"

-- | plusgt (function (+>) in original Haskell source) function identifier
plusgtId :: String
plusgtId = "+>"

-- | singleton function identifier
singletonId :: String
singletonId = "singleton"

-- | length function identifier
lengthId :: String
lengthId = "length"


-- | isnull (function null in original Haskell source) function identifier
nullId :: String
nullId = "null"


-- | replace function identifier
replaceId :: String
replaceId = "replace"


-- | head function identifier
headId :: String
headId = "head"


-- | last function identifier
lastId :: String
lastId = "last"


-- | init function identifier
initId :: String
initId = "init"


-- | tail function identifier
tailId :: String
tailId = "tail"

-- | minimum ftp function identifier
minimumId :: String
minimumId = "minimum"

-- | take function identifier
takeId :: String
takeId = "take"


-- | drop function identifier
dropId :: String
dropId = "drop"

-- | shiftl function identifier
shiftlId :: String
shiftlId = "shiftl"

-- | shiftr function identifier
shiftrId :: String
shiftrId = "shiftr"

-- | rotl function identifier
rotlId :: String
rotlId = "rotl"

-- | reverse function identifier
rotrId :: String
rotrId = "rotr"

-- | concatenate the vectors in a vector
concatId :: String
concatId = "concat"

-- | reverse function identifier
reverseId :: String
reverseId = "reverse"

-- | iterate function identifier
iterateId :: String
iterateId = "iterate"

-- | iteraten function identifier
iteratenId :: String
iteratenId = "iteraten"

-- | iterate function identifier
generateId :: String
generateId = "generate"

-- | iteraten function identifier
generatenId :: String
generatenId = "generaten"

-- | copy function identifier
copyId :: String
copyId = "copy"

-- | copyn function identifier
copynId :: String
copynId = "copyn"

-- | map function identifier
mapId :: String
mapId = "map"

-- | zipwith function identifier
zipWithId :: String
zipWithId = "zipWith"

-- | foldl function identifier
foldlId :: String
foldlId = "foldl"

-- | foldr function identifier
foldrId :: String
foldrId = "foldr"

-- | zip function identifier
zipId :: String
zipId = "zip"

-- | unzip function identifier
unzipId :: String
unzipId = "unzip"

-- | hwxor function identifier
hwxorId :: String
hwxorId = "hwxor"

-- | hwor function identifier
hworId :: String
hworId = "hwor"

-- | hwnot function identifier
hwnotId :: String
hwnotId = "hwnot"

-- | hwand function identifier
hwandId :: String
hwandId = "hwand"

lengthTId :: String
lengthTId = "lengthT"

fstId :: String
fstId = "fst"

sndId :: String
sndId = "snd"

splitId :: String
splitId = "split"

-- Equality Operations
equalityId :: String
equalityId = "=="

inEqualityId :: String
inEqualityId = "/="

gtId :: String
gtId = ">"

ltId :: String
ltId = "<"

gteqId :: String
gteqId = ">="

lteqId :: String
lteqId = "<="

boolOrId :: String
boolOrId = "||"

boolAndId :: String
boolAndId = "&&"

boolNot :: String
boolNot = "not"

-- Numeric Operations

-- | plus operation identifier
plusId :: String
plusId = "+"

-- | times operation identifier
timesId :: String
timesId = "*"

-- | negate operation identifier
negateId :: String
negateId = "negate"

-- | minus operation identifier
minusId :: String
minusId = "-"

-- | convert sizedword to ranged
fromSizedWordId :: String
fromSizedWordId = "fromUnsigned"

fromRangedWordId :: String
fromRangedWordId = "fromIndex"

toIntegerId :: String
toIntegerId = "to_integer"

fromIntegerId :: String
fromIntegerId = "fromInteger"

toSignedId :: String
toSignedId = "to_signed"

toUnsignedId :: String
toUnsignedId = "to_unsigned"

resizeId :: String
resizeId = "resize"

resizeWordId :: String
resizeWordId = "resizeWord"

resizeIntId :: String
resizeIntId = "resizeInt"

smallIntegerId :: String
smallIntegerId = "smallInteger"

sizedIntId :: String
sizedIntId = "Signed"

tfvecId :: String
tfvecId = "Vector"

blockRAMId :: String
blockRAMId = "blockRAM"

-- | output file identifier (from std.textio)
showIdString :: String
showIdString = "show"

showId :: AST.VHDLId
showId = AST.unsafeVHDLExtId showIdString

-- | write function identifier (from std.textio)
writeId :: AST.VHDLId
writeId = AST.unsafeVHDLBasicId "write"

-- | output file identifier (from std.textio)
outputId :: AST.VHDLId
outputId = AST.unsafeVHDLBasicId "output"

------------------
-- VHDL type marks
------------------

-- | The Bit type mark
bitTM :: AST.TypeMark
bitTM = AST.unsafeVHDLBasicId "Bit"

-- | Stardard logic type mark
std_logicTM :: AST.TypeMark
std_logicTM = AST.unsafeVHDLBasicId "std_logic"

-- | boolean type mark
booleanTM :: AST.TypeMark
booleanTM = AST.unsafeVHDLBasicId "boolean"

-- | fsvec_index AST. TypeMark
tfvec_indexTM :: AST.TypeMark
tfvec_indexTM = AST.unsafeVHDLBasicId "tfvec_index"

-- | natural AST. TypeMark
naturalTM :: AST.TypeMark
naturalTM = AST.unsafeVHDLBasicId "natural"

-- | integer TypeMark
integerTM :: AST.TypeMark
integerTM = AST.unsafeVHDLBasicId "integer"

-- | signed TypeMark
signedTM :: AST.TypeMark
signedTM = AST.unsafeVHDLBasicId "signed"

-- | unsigned TypeMark
unsignedTM :: AST.TypeMark
unsignedTM = AST.unsafeVHDLBasicId "unsigned"

-- | string TypeMark
stringTM :: AST.TypeMark
stringTM = AST.unsafeVHDLBasicId "string"

-- | tup VHDLName suffix
tupVHDLSuffix :: AST.VHDLId -> AST.Suffix
tupVHDLSuffix id = AST.SSimple id