clash-lib-0.6.21: CAES Language for Synchronous Hardware - As a Library

Copyright(C) 2012-2016, University of Twente
LicenseBSD2 (see the file LICENSE)
MaintainerChristiaan Baaij <>
Safe HaskellNone



Module that connects all the parts of the CLaSH compiler library



generateHDL Source #


:: Backend backend 
=> BindingMap

Set of functions

-> Maybe backend 
-> PrimMap Text

Primitive / BlackBox Definitions

-> HashMap TyConName TyCon

TyCon cache

-> IntMap TyConName

Tuple TyCon cache

-> (HashMap TyConName TyCon -> Type -> Maybe (Either String HWType))

Hardcoded Type -> HWType translator

-> (HashMap TyConName TyCon -> Bool -> Term -> Term)

Hardcoded evaluator (delta-reduction)

-> (TmName, Maybe TopEntity)

topEntity bndr + (maybe) TopEntity annotation

-> Maybe TmName

testInput bndr

-> Maybe TmName

expectedOutput bndr

-> CLaSHOpts

Debug information level for the normalization process

-> (UTCTime, UTCTime) 
-> IO () 

Create a set of target HDL files for a set of functions

createHDL Source #


:: Backend backend 
=> backend


-> String 
-> [(SrcSpan, Component)]

List of components

-> [(String, Doc)] 

Pretty print Components to HDL Documents

prepareDir Source #


:: Bool

Remove existing HDL files

-> String

File extension of the HDL files.

-> String 
-> IO () 

Prepares the directory for writing HDL files. This means creating the dir if it does not exist and removing all existing .hdl files from it.

writeHDL :: Backend backend => backend -> FilePath -> (String, Doc) -> IO () Source #

Writes a HDL file to the given directory