Copyright | (C) 2012-2016 University of Twente 2016-2017 Myrtle Software Ltd 2017 QBayLogic Google Inc. |
---|---|
License | BSD2 (see the file LICENSE) |
Maintainer | Christiaan Baaij <christiaan.baaij@gmail.com> |
Safe Haskell | None |
Language | Haskell2010 |
Module that connects all the parts of the Clash compiler library
Synopsis
- generateHDL :: forall backend. Backend backend => BindingMap -> Maybe backend -> PrimMap Text -> HashMap TyConOccName TyCon -> IntMap TyConName -> (HashMap TyConOccName TyCon -> Bool -> Type -> Maybe (Either String HWType)) -> PrimEvaluator -> [(TmName, Type, Maybe TopEntity, Maybe TmName)] -> ClashOpts -> (UTCTime, UTCTime) -> IO ()
- parsePrimitive :: Primitive Text -> Primitive BlackBoxTemplate
- createHDL :: Backend backend => backend -> String -> [(SrcSpan, Component)] -> Component -> (String, Either Manifest Manifest) -> ([(String, Doc)], Manifest)
- prepareDir :: Bool -> String -> String -> IO ()
- writeHDL :: FilePath -> (String, Doc) -> IO ()
- copyDataFiles :: [FilePath] -> FilePath -> [(String, FilePath)] -> IO ()
- callGraphBindings :: BindingMap -> TmOccName -> [Term]
- normalizeEntity :: BindingMap -> PrimMap BlackBoxTemplate -> HashMap TyConOccName TyCon -> IntMap TyConName -> (HashMap TyConOccName TyCon -> Bool -> Type -> Maybe (Either String HWType)) -> PrimEvaluator -> [TmOccName] -> ClashOpts -> Supply -> TmOccName -> BindingMap
Documentation
:: Backend backend | |
=> BindingMap | Set of functions |
-> Maybe backend | |
-> PrimMap Text | Primitive / BlackBox Definitions |
-> HashMap TyConOccName TyCon | TyCon cache |
-> IntMap TyConName | Tuple TyCon cache |
-> (HashMap TyConOccName TyCon -> Bool -> Type -> Maybe (Either String HWType)) | |
-> PrimEvaluator | Hardcoded evaluator (delta-reduction) |
-> [(TmName, Type, Maybe TopEntity, Maybe TmName)] | topEntity bndr + (maybe) TopEntity annotation + (maybe) testBench bndr |
-> ClashOpts | Debug information level for the normalization process |
-> (UTCTime, UTCTime) | |
-> IO () |
Create a set of target HDL files for a set of functions
:: Backend backend | |
=> backend | Backend |
-> String | Module hierarchy root |
-> [(SrcSpan, Component)] | List of components |
-> Component | Top component |
-> (String, Either Manifest Manifest) | Name of the manifest file
+ Either:
* Left manifest: Only write/update the hashes of the |
-> ([(String, Doc)], Manifest) | The pretty-printed HDL documents + The update manifest file |
Pretty print Components to HDL Documents
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.
:: BindingMap | All bindings |
-> TmOccName | Root of the call graph |
-> [Term] |
Get all the terms corresponding to a call graph
:: BindingMap | All bindings |
-> PrimMap BlackBoxTemplate | BlackBox HDL templates |
-> HashMap TyConOccName TyCon | TyCon cache |
-> IntMap TyConName | Tuple TyCon cache |
-> (HashMap TyConOccName TyCon -> Bool -> Type -> Maybe (Either String HWType)) | |
-> PrimEvaluator | Hardcoded evaluator (delta-reduction) |
-> [TmOccName] | TopEntities |
-> ClashOpts | Debug information level for the normalization process |
-> Supply | Unique supply |
-> TmOccName | root of the hierarchy |
-> BindingMap |
Normalize a complete hierarchy