| Copyright | (c) Aleksandr Penskoi 2021 |
|---|---|
| License | BSD3 |
| Maintainer | aleksandr.penskoi@gmail.com |
| Stability | experimental |
| Safe Haskell | None |
| 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 t1 => u -> DataFlowGraph v x -> TargetSystem u tag v x t2
- 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 :: (Suffix v1, Hashable v1, Bounded t, UnitTag tag, Default t, Val p, Show t, Integral t, Typeable v1, Typeable t, 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 t1 => u -> DataFlowGraph v x -> TargetSystem u tag v x t2 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 :: (Suffix v1, Hashable v1, Bounded t, UnitTag tag, Default t, Val p, Show t, Integral t, Typeable v1, Typeable t, 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 #