Copyright | (c) Aleksandr Penskoi 2021 |
---|---|
License | BSD3 |
Maintainer | aleksandr.penskoi@gmail.com |
Stability | experimental |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
NITTA.Synthesis
Description
TargetSynthesis is an entry point for synthesis process. TargetSynthesis flow shown on fig.
==================================================================================================================== Prepare NITTA.Synthesis:TargetSynthesis NITTA.Project... # tName NITTA.Frontends # tMicroArch ----------------------------- # tSourceCode -+ | /--+-- mkModelWithOneNetwork | | | | *<-translate | | | | | | v NITTA.Model:TargetSystem---------- # tDFG +--------*-------- # mUnit | | NITTA.Model... | | | | /----------- | v | | | Target | +----------------------------------------*-----------> # mDataFlowGraph | -----+ System | | | Imitation | # tReceivedValues | | Model | # tVerbose | -----------/ # tSynthesisMethod ---------------------------------- | | | | | =================================================================================================================== | | Synthesis process NITTA.Synthesis.Types:Tree | | NITTA.Synthesis.Types # sID | | NITTA.Synthesis.Method # sState <------------------------------------------------------------+ # sDecision | # option | # decision *<-- search for best synthesis path # metrics | # score v # sSubForestVar ------------------------->/ * / ----- | v NITTA.Synthesis.Types:Tree # sState # sTarget /------------------------------- # mUnit | /---------------------- # mDataFlowGraph | | # ... | | # ... | | =================================================================================================================== | | Target project generation NITTA.Project.Types:Project | | NITTA.Project.... | # pName <--------- $tName | | | # pLibPath | +<----- $tReceivedValues | # pTargetProjectPath | | | # pModel<----------------------/ *<----- functional simulation (FIXME) | | | # pTestCntx <---------------------------/ | | *<---------- $writeProject | # TargetSystem | # hardware | # software | # TestBench | # Templates | ---> filesystem
Synopsis
- module NITTA.Synthesis.Explore
- module NITTA.Synthesis.Method
- module NITTA.Synthesis.Steps
- module NITTA.Synthesis.Types
- mkModelWithOneNetwork :: ProcessorUnit u v x t => u -> DataFlowGraph v x -> TargetSystem u tag v x t
- data TargetSynthesis tag v x t = TargetSynthesis {
- tName :: String
- tMicroArch :: BusNetwork tag v x t
- tSourceCode :: Maybe Text
- tDFG :: DataFlowGraph v x
- tReceivedValues :: [(v, [x])]
- tSynthesisMethod :: SynthesisMethod tag v x t
- tLibPath :: String
- tPath :: String
- tTemplates :: [FilePath]
- tSimulationCycleN :: Int
- tSourceCodeType :: FrontendType
- runTargetSynthesis :: (Bounded t, Suffix v1, Hashable v1, UnitTag tag, Val p, Default t, Show t, Integral t, Typeable t, Typeable v1, Ord v1, ToString v1, IsString v1) => TargetSynthesis tag v1 p t -> IO (Either String (TestbenchReport v1 p))
- synthesizeTargetSystem :: (UnitTag tag, VarValTime v x t) => TargetSynthesis tag v x t -> IO (DefTree tag v x t, Either String (Project (BusNetwork tag v x t) v x))
Documentation
module NITTA.Synthesis.Explore
module NITTA.Synthesis.Method
module NITTA.Synthesis.Steps
module NITTA.Synthesis.Types
mkModelWithOneNetwork :: ProcessorUnit u v x t => u -> DataFlowGraph v x -> TargetSystem u tag v x t Source #
Make a model of NITTA process with one network and a specific algorithm. All functions are already bound to the network.
data TargetSynthesis tag v x t Source #
Description of synthesis task. Applicable for target system synthesis and testing purpose.
Constructors
TargetSynthesis | |
Fields
|
Instances
SynthesisMethodConstraints tag v x t => Default (TargetSynthesis tag v x t) Source # | |
Defined in NITTA.Synthesis Methods def :: TargetSynthesis tag v x t # | |
(UnitTag tag, VarValTime v x t) => ProcessorUnit (TargetSynthesis tag v x t) v x t Source # | |
Defined in NITTA.Synthesis Methods tryBind :: F v x -> TargetSynthesis tag v x t -> Either String (TargetSynthesis tag v x t) Source # process :: TargetSynthesis tag v x t -> Process t (StepInfo v x t) Source # parallelismType :: TargetSynthesis tag v x t -> ParallelismType Source # puSize :: TargetSynthesis tag v x t -> Float Source # |
runTargetSynthesis :: (Bounded t, Suffix v1, Hashable v1, UnitTag tag, Val p, Default t, Show t, Integral t, Typeable t, Typeable v1, Ord v1, ToString v1, IsString v1) => TargetSynthesis tag v1 p t -> IO (Either String (TestbenchReport v1 p)) Source #
synthesizeTargetSystem :: (UnitTag tag, VarValTime v x t) => TargetSynthesis tag v x t -> IO (DefTree tag v x t, Either String (Project (BusNetwork tag v x t) v x)) Source #