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