diff --git a/README.md b/README.md index ec88f6763..7c2fe8b45 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,28 @@ sudo apt-get install npm yarn npm install --global tern prettier yarn ``` +### WSL2 + +Install [GHCUP](https://www.haskell.org/ghcup/). + +``` console +curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh +``` + +Install [icarus-verilog](https://github.com/steveicarus/iverilog/) and [gtkwave](https://github.com/gtkwave/gtkwave). + +``` console +sudo apt-get install iverilog +sudo apt-get install gtkwave +``` + +Install [npm](https://github.com/npm/cli) and required developer tools for UI. + +``` console +sudo apt-get install npm yarn +npm install --global tern prettier yarn +``` + ### For machine learning base synthesis (optional) 1. Install python package manager: [poetry](https://python-poetry.org/docs/). diff --git a/haddock/nitta/NITTA-Intermediate-Types.html b/haddock/nitta/NITTA-Intermediate-Types.html index 3108d784b..6ae31709c 100644 --- a/haddock/nitta/NITTA-Intermediate-Types.html +++ b/haddock/nitta/NITTA-Intermediate-Types.html @@ -1,6 +1,6 @@ NITTA.Intermediate.Types
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Aleksandr Penskoi 2019
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Intermediate.Types

Description

 
Synopsis

Function interface

newtype I v Source #

Input variable.

Constructors

I v 

Instances

Instances details
ToString v => Show (I v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

showsPrec :: Int -> I v -> ShowS #

show :: I v -> String #

showList :: [I v] -> ShowS #

Eq v => Eq (I v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

(==) :: I v -> I v -> Bool #

(/=) :: I v -> I v -> Bool #

Ord v => Ord (I v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

compare :: I v -> I v -> Ordering #

(<) :: I v -> I v -> Bool #

(<=) :: I v -> I v -> Bool #

(>) :: I v -> I v -> Bool #

(>=) :: I v -> I v -> Bool #

max :: I v -> I v -> I v #

min :: I v -> I v -> I v #

Variables (I v) v Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

variables :: I v -> Set v Source #

Eq v => Patch (I v) (v, v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

patch :: (v, v) -> I v -> I v Source #

Ord v => Patch (PU v x t) (I v, I v) Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

patch :: (I v, I v) -> PU v x t -> PU v x t Source #

newtype O v Source #

Output variable set.

Constructors

O (Set v) 

Instances

Instances details
ToString v => Show (O v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

showsPrec :: Int -> O v -> ShowS #

show :: O v -> String #

showList :: [O v] -> ShowS #

Eq v => Eq (O v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

(==) :: O v -> O v -> Bool #

(/=) :: O v -> O v -> Bool #

Ord v => Ord (O v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

compare :: O v -> O v -> Ordering #

(<) :: O v -> O v -> Bool #

(<=) :: O v -> O v -> Bool #

(>) :: O v -> O v -> Bool #

(>=) :: O v -> O v -> Bool #

max :: O v -> O v -> O v #

min :: O v -> O v -> O v #

Variables (O v) v Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

variables :: O v -> Set v Source #

Ord v => Patch (O v) (v, v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

patch :: (v, v) -> O v -> O v Source #

Ord v => Patch (PU v x t) (O v, O v) Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

patch :: (O v, O v) -> PU v x t -> PU v x t Source #

newtype X x Source #

Value of variable (constant or initial value).

Constructors

X x 

Instances

Instances details
Show x => Show (X x) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

showsPrec :: Int -> X x -> ShowS #

show :: X x -> String #

showList :: [X x] -> ShowS #

Eq x => Eq (X x) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

(==) :: X x -> X x -> Bool #

(/=) :: X x -> X x -> Bool #

Function description

data F v x where Source #

Box forall functions.

Constructors

F 

Fields

Instances

Instances details
(Var v, Val x) => ConstantFoldingProblem [F v x] v x Source # 
Instance details

Defined in NITTA.Model.Problems.Refactor.ConstantFolding

(Var v, Val x) => OptimizeAccumProblem [F v x] v x Source # 
Instance details

Defined in NITTA.Model.Problems.Refactor.OptimizeAccum

Methods

optimizeAccumOptions :: [F v x] -> [OptimizeAccum v x] Source #

optimizeAccumDecision :: [F v x] -> OptimizeAccum v x -> [F v x] Source #

Show (F v x) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

showsPrec :: Int -> F v x -> ShowS #

show :: F v x -> String #

showList :: [F v x] -> ShowS #

Eq (F v x) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

(==) :: F v x -> F v x -> Bool #

(/=) :: F v x -> F v x -> Bool #

Ord (F v x) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

compare :: F v x -> F v x -> Ordering #

(<) :: F v x -> F v x -> Bool #

(<=) :: F v x -> F v x -> Bool #

(>) :: F v x -> F v x -> Bool #

(>=) :: F v x -> F v x -> Bool #

max :: F v x -> F v x -> F v x #

min :: F v x -> F v x -> F v x #

Label (F v x) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

label :: F v x -> String Source #

Function (F v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

inputs :: F v x -> Set v Source #

outputs :: F v x -> Set v Source #

isInternalLockPossible :: F v x -> Bool Source #

Var v => Locks (F v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

locks :: F v x -> [Lock v] Source #

Var v => Variables (F v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

variables :: F v x -> Set v Source #

Viewable (F v x) FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

view :: F v x -> FView Source #

FunctionSimulation (F v x) v x Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

simulate :: CycleCntx v x -> F v x -> [(v, x)] Source #

Ord v => Patch (F v x) (Changeset v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

patch :: Changeset v -> F v x -> F v x Source #

Patch (F v x) (v, v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

patch :: (v, v) -> F v x -> F v x Source #

WithFunctions (DataFlowGraph v x) (F v x) Source # 
Instance details

Defined in NITTA.Intermediate.DataFlow

Methods

functions :: DataFlowGraph v x -> [F v x] Source #

Ord t => WithFunctions (Process t (StepInfo v x t)) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

functions :: Process t (StepInfo v x t) -> [F v x] Source #

WithFunctions (Bind tag v x) (F v x) Source # 
Instance details

Defined in NITTA.Model.Problems.Bind

Methods

functions :: Bind tag v x -> [F v x] Source #

Ord t => WithFunctions (Accum v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Accum

Methods

functions :: Accum v x t -> [F v x] Source #

Ord t => WithFunctions (Broken v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Broken

Methods

functions :: Broken v x t -> [F v x] Source #

Ord t => WithFunctions (Divider v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Divider

Methods

functions :: Divider v x t -> [F v x] Source #

VarValTime v x t => WithFunctions (Fram v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Fram

Methods

functions :: Fram v x t -> [F v x] Source #

Ord t => WithFunctions (Multiplier v x t) (F v x) Source #

This class is allowed to extract all bound functions. It has a very simple implementation: we take process description (all planned functions), and -function in progress, if it is.

Instance details

Defined in NITTA.Model.ProcessorUnits.Multiplier

Methods

functions :: Multiplier v x t -> [F v x] Source #

WithFunctions (BusNetwork tag v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.Networks.Bus

Methods

functions :: BusNetwork tag v x t -> [F v x] Source #

WithFunctions u (F v x) => WithFunctions (TargetSystem u tag v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.TargetSystem

Methods

functions :: TargetSystem u tag v x t -> [F v x] Source #

data FView Source #

Helper for JSON serialization

Constructors

FView 

Fields

Instances

Instances details
ToJSON FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

Generic FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

Associated Types

type Rep FView :: Type -> Type #

Methods

from :: FView -> Rep FView x #

to :: Rep FView x -> FView #

Show FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

showsPrec :: Int -> FView -> ShowS #

show :: FView -> String #

showList :: [FView] -> ShowS #

Viewable (F v x) FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

view :: F v x -> FView Source #

type Rep FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

type Rep FView = D1 ('MetaData "FView" "NITTA.Intermediate.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "FView" 'PrefixI 'True) (S1 ('MetaSel ('Just "fvFun") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "fvHistory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text])))

packF :: (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x Source #

castF :: (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) Source #

Helper for extraction function from existential container F.

class Function f v | f -> v where Source #

Type class for application algorithm functions.

Minimal complete definition

Nothing

Methods

inputs :: f -> Set v Source #

Get all input variables.

outputs :: f -> Set v Source #

Get all output variables.

isInternalLockPossible :: f -> Bool Source #

Sometimes, one function can cause internal process unit lock for another function.

Instances

Instances details
Var v => Function (Add v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

inputs :: Add v x -> Set v Source #

outputs :: Add v x -> Set v Source #

isInternalLockPossible :: Add v x -> Bool Source #

Var v => Function (BrokenBuffer v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (Buffer v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

(Show x, Eq x, Typeable x) => Function (Constant v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (Division v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Function (Loop v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

inputs :: Loop v x -> Set v Source #

outputs :: Loop v x -> Set v Source #

isInternalLockPossible :: Loop v x -> Bool Source #

Var v => Function (LoopBegin v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (LoopEnd v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (Multiply v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Ord v => Function (Neg v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

inputs :: Neg v x -> Set v Source #

outputs :: Neg v x -> Set v Source #

isInternalLockPossible :: Neg v x -> Bool Source #

Var v => Function (Receive v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (Send v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

inputs :: Send v x -> Set v Source #

outputs :: Send v x -> Set v Source #

isInternalLockPossible :: Send v x -> Bool Source #

Var v => Function (ShiftLR v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (Sub v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

inputs :: Sub v x -> Set v Source #

outputs :: Sub v x -> Set v Source #

isInternalLockPossible :: Sub v x -> Bool Source #

Ord v => Function (Acc v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions.Accum

Methods

inputs :: Acc v x -> Set v Source #

outputs :: Acc v x -> Set v Source #

isInternalLockPossible :: Acc v x -> Bool Source #

Function (F v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

inputs :: F v x -> Set v Source #

outputs :: F v x -> Set v Source #

isInternalLockPossible :: F v x -> Bool Source #

data Lock v Source #

Variable casuality.

Constructors

Lock 

Fields

Instances

Instances details
ToJSON v => ToJSON (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Generic (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Associated Types

type Rep (Lock v) :: Type -> Type #

Methods

from :: Lock v -> Rep (Lock v) x #

to :: Rep (Lock v) x -> Lock v #

ToString v => Show (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

showsPrec :: Int -> Lock v -> ShowS #

show :: Lock v -> String #

showList :: [Lock v] -> ShowS #

Eq v => Eq (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

(==) :: Lock v -> Lock v -> Bool #

(/=) :: Lock v -> Lock v -> Bool #

Ord v => Ord (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

compare :: Lock v -> Lock v -> Ordering #

(<) :: Lock v -> Lock v -> Bool #

(<=) :: Lock v -> Lock v -> Bool #

(>) :: Lock v -> Lock v -> Bool #

(>=) :: Lock v -> Lock v -> Bool #

max :: Lock v -> Lock v -> Lock v #

min :: Lock v -> Lock v -> Lock v #

UnitTag tag => ToSample (Lock tag) Source # 
Instance details

Defined in NITTA.UIBackend.REST

Methods

toSamples :: Proxy (Lock tag) -> [(Text, Lock tag)] #

UnitTag tag => ToSample [(Text, [Lock tag])] Source # 
Instance details

Defined in NITTA.UIBackend.REST

Methods

toSamples :: Proxy [(Text, [Lock tag])] -> [(Text, [(Text, [Lock tag])])] #

type Rep (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

type Rep (Lock v) = D1 ('MetaData "Lock" "NITTA.Intermediate.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "Lock" 'PrefixI 'True) (S1 ('MetaSel ('Just "locked") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 v) :*: S1 ('MetaSel ('Just "lockBy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 v)))

class Var v => Locks x v | x -> v where Source #

Casuality of variable processing sequence in term of locks.

For example: +function in progress, if it is.

Instance details

Defined in NITTA.Model.ProcessorUnits.Multiplier

Methods

functions :: Multiplier v x t -> [F v x] Source #

WithFunctions (BusNetwork tag v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.Networks.Bus

Methods

functions :: BusNetwork tag v x t -> [F v x] Source #

WithFunctions u (F v x) => WithFunctions (TargetSystem u tag v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.TargetSystem

Methods

functions :: TargetSystem u tag v x t -> [F v x] Source #

data FView Source #

Helper for JSON serialization

Constructors

FView 

Fields

Instances

Instances details
ToJSON FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

toJSON :: FView -> Value #

toEncoding :: FView -> Encoding #

toJSONList :: [FView] -> Value #

toEncodingList :: [FView] -> Encoding #

Generic FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

Associated Types

type Rep FView :: Type -> Type #

Methods

from :: FView -> Rep FView x #

to :: Rep FView x -> FView #

Show FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

showsPrec :: Int -> FView -> ShowS #

show :: FView -> String #

showList :: [FView] -> ShowS #

Viewable (F v x) FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

view :: F v x -> FView Source #

type Rep FView Source # 
Instance details

Defined in NITTA.Intermediate.Types

type Rep FView = D1 ('MetaData "FView" "NITTA.Intermediate.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "FView" 'PrefixI 'True) (S1 ('MetaSel ('Just "fvFun") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "fvHistory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text])))

packF :: (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x Source #

castF :: (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) Source #

Helper for extraction function from existential container F.

class Function f v | f -> v where Source #

Type class for application algorithm functions.

Minimal complete definition

Nothing

Methods

inputs :: f -> Set v Source #

Get all input variables.

outputs :: f -> Set v Source #

Get all output variables.

isInternalLockPossible :: f -> Bool Source #

Sometimes, one function can cause internal process unit lock for another function.

Instances

Instances details
Var v => Function (Add v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

inputs :: Add v x -> Set v Source #

outputs :: Add v x -> Set v Source #

isInternalLockPossible :: Add v x -> Bool Source #

Var v => Function (BrokenBuffer v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (Buffer v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

(Show x, Eq x, Typeable x) => Function (Constant v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (Division v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Function (Loop v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

inputs :: Loop v x -> Set v Source #

outputs :: Loop v x -> Set v Source #

isInternalLockPossible :: Loop v x -> Bool Source #

Var v => Function (LoopBegin v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (LoopEnd v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (Multiply v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Ord v => Function (Neg v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

inputs :: Neg v x -> Set v Source #

outputs :: Neg v x -> Set v Source #

isInternalLockPossible :: Neg v x -> Bool Source #

Var v => Function (Receive v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (Send v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

inputs :: Send v x -> Set v Source #

outputs :: Send v x -> Set v Source #

isInternalLockPossible :: Send v x -> Bool Source #

Var v => Function (ShiftLR v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Var v => Function (Sub v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

inputs :: Sub v x -> Set v Source #

outputs :: Sub v x -> Set v Source #

isInternalLockPossible :: Sub v x -> Bool Source #

Ord v => Function (Acc v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions.Accum

Methods

inputs :: Acc v x -> Set v Source #

outputs :: Acc v x -> Set v Source #

isInternalLockPossible :: Acc v x -> Bool Source #

Function (F v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

inputs :: F v x -> Set v Source #

outputs :: F v x -> Set v Source #

isInternalLockPossible :: F v x -> Bool Source #

data Lock v Source #

Variable casuality.

Constructors

Lock 

Fields

Instances

Instances details
ToJSON v => ToJSON (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

toJSON :: Lock v -> Value #

toEncoding :: Lock v -> Encoding #

toJSONList :: [Lock v] -> Value #

toEncodingList :: [Lock v] -> Encoding #

Generic (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Associated Types

type Rep (Lock v) :: Type -> Type #

Methods

from :: Lock v -> Rep (Lock v) x #

to :: Rep (Lock v) x -> Lock v #

ToString v => Show (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

showsPrec :: Int -> Lock v -> ShowS #

show :: Lock v -> String #

showList :: [Lock v] -> ShowS #

Eq v => Eq (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

(==) :: Lock v -> Lock v -> Bool #

(/=) :: Lock v -> Lock v -> Bool #

Ord v => Ord (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

compare :: Lock v -> Lock v -> Ordering #

(<) :: Lock v -> Lock v -> Bool #

(<=) :: Lock v -> Lock v -> Bool #

(>) :: Lock v -> Lock v -> Bool #

(>=) :: Lock v -> Lock v -> Bool #

max :: Lock v -> Lock v -> Lock v #

min :: Lock v -> Lock v -> Lock v #

UnitTag tag => ToSample (Lock tag) Source # 
Instance details

Defined in NITTA.UIBackend.REST

Methods

toSamples :: Proxy (Lock tag) -> [(Text, Lock tag)] #

UnitTag tag => ToSample [(Text, [Lock tag])] Source # 
Instance details

Defined in NITTA.UIBackend.REST

Methods

toSamples :: Proxy [(Text, [Lock tag])] -> [(Text, [(Text, [Lock tag])])] #

type Rep (Lock v) Source # 
Instance details

Defined in NITTA.Intermediate.Types

type Rep (Lock v) = D1 ('MetaData "Lock" "NITTA.Intermediate.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "Lock" 'PrefixI 'True) (S1 ('MetaSel ('Just "locked") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 v) :*: S1 ('MetaSel ('Just "lockBy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 v)))

class Var v => Locks x v | x -> v where Source #

Casuality of variable processing sequence in term of locks.

For example: > c := a + b > [ Lock{ locked=c, lockBy=a }, Lock{ locked=c, lockBy=b } ]

Methods

locks :: x -> [Lock v] Source #

Instances

Instances details
Var v => Locks (Add v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: Add v x -> [Lock v] Source #

Var v => Locks (BrokenBuffer v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: BrokenBuffer v x -> [Lock v] Source #

Var v => Locks (Buffer v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: Buffer v x -> [Lock v] Source #

Var v => Locks (Constant v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: Constant v x -> [Lock v] Source #

Var v => Locks (Division v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: Division v x -> [Lock v] Source #

Var v => Locks (Loop v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: Loop v x -> [Lock v] Source #

Var v => Locks (LoopBegin v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: LoopBegin v x -> [Lock v] Source #

Var v => Locks (LoopEnd v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: LoopEnd v x -> [Lock v] Source #

Var v => Locks (Multiply v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: Multiply v x -> [Lock v] Source #

Var v => Locks (Neg v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: Neg v x -> [Lock v] Source #

Var v => Locks (Receive v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: Receive v x -> [Lock v] Source #

Var v => Locks (Send v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: Send v x -> [Lock v] Source #

Var v => Locks (ShiftLR v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: ShiftLR v x -> [Lock v] Source #

Var v => Locks (Sub v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions

Methods

locks :: Sub v x -> [Lock v] Source #

Var v => Locks (Acc v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Functions.Accum

Methods

locks :: Acc v x -> [Lock v] Source #

Var v => Locks (F v x) v Source # 
Instance details

Defined in NITTA.Intermediate.Types

Methods

locks :: F v x -> [Lock v] Source #

Var v => Locks (PU v x t) v Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

locks :: PU v x t -> [Lock v] Source #

Var v => Locks (Accum v x t) v Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Accum

Methods

locks :: Accum v x t -> [Lock v] Source #

Var v => Locks (Broken v x t) v Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Broken

Methods

locks :: Broken v x t -> [Lock v] Source #

(Var v, Time t) => Locks (Divider v x t) v Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Divider

Methods

locks :: Divider v x t -> [Lock v] Source #

Var v => Locks (Fram v x t) v Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Fram

Methods

locks :: Fram v x t -> [Lock v] Source #

Var v => Locks (Multiplier v x t) v Source #

Tracking internal dependencies on the processed variables. It includes:

  • dependencies between inputs and outputs of currently evaluated function;
  • dependencies of all remain functions from the currently evaluated function (if it is).
Instance details

Defined in NITTA.Model.ProcessorUnits.Multiplier

Methods

locks :: Multiplier v x t -> [Lock v] Source #

Var v => Locks (Shift v x t) v Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Shift

Methods

locks :: Shift v x t -> [Lock v] Source #

Var v => Locks (SimpleIO i v x t) v Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.IO.SimpleIO

Methods

locks :: SimpleIO i v x t -> [Lock v] Source #

inputsLockOutputs :: Function f v => f -> [Lock v] Source #

All input variables locks all output variables.

class WithFunctions a f | a -> f where Source #

Type class of something, which is related to functions.

Methods

functions :: a -> [f] Source #

Get a list of associated functions.

Instances

Instances details
WithFunctions (DataFlowGraph v x) (F v x) Source # 
Instance details

Defined in NITTA.Intermediate.DataFlow

Methods

functions :: DataFlowGraph v x -> [F v x] Source #

Ord t => WithFunctions (Process t (StepInfo v x t)) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

functions :: Process t (StepInfo v x t) -> [F v x] Source #

WithFunctions (Bind tag v x) (F v x) Source # 
Instance details

Defined in NITTA.Model.Problems.Bind

Methods

functions :: Bind tag v x -> [F v x] Source #

Ord t => WithFunctions (Accum v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Accum

Methods

functions :: Accum v x t -> [F v x] Source #

Ord t => WithFunctions (Broken v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Broken

Methods

functions :: Broken v x t -> [F v x] Source #

Ord t => WithFunctions (Divider v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Divider

Methods

functions :: Divider v x t -> [F v x] Source #

VarValTime v x t => WithFunctions (Fram v x t) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Fram

Methods

functions :: Fram v x t -> [F v x] Source #

Ord t => WithFunctions (Multiplier v x t) (F v x) Source #

This class is allowed to extract all bound functions. It has a very simple diff --git a/haddock/nitta/NITTA-Intermediate-Value.html b/haddock/nitta/NITTA-Intermediate-Value.html index bfde60250..994e280aa 100644 --- a/haddock/nitta/NITTA-Intermediate-Value.html +++ b/haddock/nitta/NITTA-Intermediate-Value.html @@ -1,4 +1,4 @@ -NITTA.Intermediate.Value

nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Aleksandr Penskoi 2020
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Intermediate.Value

Description

 
Synopsis

Type classes

class (Typeable x, Show x, Read x, PrintfArg x, Default x, Integral x, Enum x, Eq x, Num x, Bits x, Validity x, FixedPointCompatible x, ToJSON x) => Val x where Source #

Type class for representation of processing values. A value should include two parts: data and attribute.

Minimal complete definition

dataWidth, rawData, rawAttr, fromRaw, dataLiteral

Methods

dataWidth :: x -> Int Source #

data bus width

attrWidth :: x -> Int Source #

attribute bus width

rawData :: x -> Integer Source #

raw representation of data (Integer)

rawAttr :: x -> Integer Source #

raw representation of attributes (Integer)

fromRaw :: Integer -> Integer -> x Source #

construct a value from raw data and attributes

dataLiteral :: x -> Text Source #

convert a value to Verilog literal with data

attrLiteral :: x -> Text Source #

convert a value to Verilog literal with attributes

verilogHelper :: x -> Text Source #

helper functions to work with values in Verilog (trace and assert)

verilogAssertRE :: x -> Regex Source #

RE for extraction assertion data from a testbench log

Instances

Instances details
Val Int Source # 
Instance details

Defined in NITTA.Intermediate.Value

Val x => Val (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

KnownNat w => Val (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

(KnownNat m, KnownNat b) => Val (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

class Default x => DefaultX u x | u -> x where Source #

Minimal complete definition

Nothing

Methods

defX :: u -> x Source #

Instances

Instances details
Default x => DefaultX (Accum v x t) x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Accum

Methods

defX :: Accum v x t -> x Source #

Default x => DefaultX (Broken v x t) x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Broken

Methods

defX :: Broken v x t -> x Source #

Default x => DefaultX (Divider v x t) x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Divider

Methods

defX :: Divider v x t -> x Source #

Default x => DefaultX (Fram v x t) x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Fram

Methods

defX :: Fram v x t -> x Source #

Default x => DefaultX (Multiplier v x t) x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Multiplier

Methods

defX :: Multiplier v x t -> x Source #

Default x => DefaultX (Project m v x) x Source # 
Instance details

Defined in NITTA.Project.Types

Methods

defX :: Project m v x -> x Source #

Default x => DefaultX (BusNetwork tag v x t) x Source # 
Instance details

Defined in NITTA.Model.Networks.Bus

Methods

defX :: BusNetwork tag v x t -> x Source #

class FixedPointCompatible a where Source #

Type class for values, which contain information about fractional part of -value (for fixed point arithmetics).

minMaxRaw :: (Num b, Val p) => p -> (b, b) Source #

Minimal and maximal raw value.

Compositional type

data Attr x Source #

All values with attributes.

Constructors

Attr 

Fields

Instances

Instances details
Applicative Attr Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

pure :: a -> Attr a #

(<*>) :: Attr (a -> b) -> Attr a -> Attr b #

liftA2 :: (a -> b -> c) -> Attr a -> Attr b -> Attr c #

(*>) :: Attr a -> Attr b -> Attr b #

(<*) :: Attr a -> Attr b -> Attr a #

Functor Attr Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

fmap :: (a -> b) -> Attr a -> Attr b #

(<$) :: a -> Attr b -> Attr a #

ToJSON x => ToJSON (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

(Bits x, Validity x) => Bits (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(.&.) :: Attr x -> Attr x -> Attr x #

(.|.) :: Attr x -> Attr x -> Attr x #

xor :: Attr x -> Attr x -> Attr x #

complement :: Attr x -> Attr x #

shift :: Attr x -> Int -> Attr x #

rotate :: Attr x -> Int -> Attr x #

zeroBits :: Attr x #

bit :: Int -> Attr x #

setBit :: Attr x -> Int -> Attr x #

clearBit :: Attr x -> Int -> Attr x #

complementBit :: Attr x -> Int -> Attr x #

testBit :: Attr x -> Int -> Bool #

bitSizeMaybe :: Attr x -> Maybe Int #

bitSize :: Attr x -> Int #

isSigned :: Attr x -> Bool #

shiftL :: Attr x -> Int -> Attr x #

unsafeShiftL :: Attr x -> Int -> Attr x #

shiftR :: Attr x -> Int -> Attr x #

unsafeShiftR :: Attr x -> Int -> Attr x #

rotateL :: Attr x -> Int -> Attr x #

rotateR :: Attr x -> Int -> Attr x #

popCount :: Attr x -> Int #

(Enum x, Validity x) => Enum (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

succ :: Attr x -> Attr x #

pred :: Attr x -> Attr x #

toEnum :: Int -> Attr x #

fromEnum :: Attr x -> Int #

enumFrom :: Attr x -> [Attr x] #

enumFromThen :: Attr x -> Attr x -> [Attr x] #

enumFromTo :: Attr x -> Attr x -> [Attr x] #

enumFromThenTo :: Attr x -> Attr x -> Attr x -> [Attr x] #

(Num x, Validity x) => Num (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(+) :: Attr x -> Attr x -> Attr x #

(-) :: Attr x -> Attr x -> Attr x #

(*) :: Attr x -> Attr x -> Attr x #

negate :: Attr x -> Attr x #

abs :: Attr x -> Attr x #

signum :: Attr x -> Attr x #

fromInteger :: Integer -> Attr x #

Read x => Read (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Val x => Integral (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

quot :: Attr x -> Attr x -> Attr x #

rem :: Attr x -> Attr x -> Attr x #

div :: Attr x -> Attr x -> Attr x #

mod :: Attr x -> Attr x -> Attr x #

quotRem :: Attr x -> Attr x -> (Attr x, Attr x) #

divMod :: Attr x -> Attr x -> (Attr x, Attr x) #

toInteger :: Attr x -> Integer #

(Real x, Validity x) => Real (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

toRational :: Attr x -> Rational #

Show x => Show (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

showsPrec :: Int -> Attr x -> ShowS #

show :: Attr x -> String #

showList :: [Attr x] -> ShowS #

PrintfArg x => PrintfArg (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Default x => Default (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

def :: Attr x #

Eq x => Eq (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(==) :: Attr x -> Attr x -> Bool #

(/=) :: Attr x -> Attr x -> Bool #

Ord x => Ord (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

compare :: Attr x -> Attr x -> Ordering #

(<) :: Attr x -> Attr x -> Bool #

(<=) :: Attr x -> Attr x -> Bool #

(>) :: Attr x -> Attr x -> Bool #

(>=) :: Attr x -> Attr x -> Bool #

max :: Attr x -> Attr x -> Attr x #

min :: Attr x -> Attr x -> Attr x #

FixedPointCompatible x => FixedPointCompatible (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Val x => Val (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Validity x => Validity (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

validate :: Attr x -> Validation #

Value types

newtype IntX (w :: Nat) Source #

Integer number with specific bit width.

Constructors

IntX 

Fields

Instances

Instances details
ToJSON (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

KnownNat w => Bits (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(.&.) :: IntX w -> IntX w -> IntX w #

(.|.) :: IntX w -> IntX w -> IntX w #

xor :: IntX w -> IntX w -> IntX w #

complement :: IntX w -> IntX w #

shift :: IntX w -> Int -> IntX w #

rotate :: IntX w -> Int -> IntX w #

zeroBits :: IntX w #

bit :: Int -> IntX w #

setBit :: IntX w -> Int -> IntX w #

clearBit :: IntX w -> Int -> IntX w #

complementBit :: IntX w -> Int -> IntX w #

testBit :: IntX w -> Int -> Bool #

bitSizeMaybe :: IntX w -> Maybe Int #

bitSize :: IntX w -> Int #

isSigned :: IntX w -> Bool #

shiftL :: IntX w -> Int -> IntX w #

unsafeShiftL :: IntX w -> Int -> IntX w #

shiftR :: IntX w -> Int -> IntX w #

unsafeShiftR :: IntX w -> Int -> IntX w #

rotateL :: IntX w -> Int -> IntX w #

rotateR :: IntX w -> Int -> IntX w #

popCount :: IntX w -> Int #

Enum (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

succ :: IntX w -> IntX w #

pred :: IntX w -> IntX w #

toEnum :: Int -> IntX w #

fromEnum :: IntX w -> Int #

enumFrom :: IntX w -> [IntX w] #

enumFromThen :: IntX w -> IntX w -> [IntX w] #

enumFromTo :: IntX w -> IntX w -> [IntX w] #

enumFromThenTo :: IntX w -> IntX w -> IntX w -> [IntX w] #

Num (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(+) :: IntX w -> IntX w -> IntX w #

(-) :: IntX w -> IntX w -> IntX w #

(*) :: IntX w -> IntX w -> IntX w #

negate :: IntX w -> IntX w #

abs :: IntX w -> IntX w #

signum :: IntX w -> IntX w #

fromInteger :: Integer -> IntX w #

Read (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Integral (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

quot :: IntX w -> IntX w -> IntX w #

rem :: IntX w -> IntX w -> IntX w #

div :: IntX w -> IntX w -> IntX w #

mod :: IntX w -> IntX w -> IntX w #

quotRem :: IntX w -> IntX w -> (IntX w, IntX w) #

divMod :: IntX w -> IntX w -> (IntX w, IntX w) #

toInteger :: IntX w -> Integer #

Real (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

toRational :: IntX w -> Rational #

Show (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

showsPrec :: Int -> IntX w -> ShowS #

show :: IntX w -> String #

showList :: [IntX w] -> ShowS #

PrintfArg (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Default (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

def :: IntX w #

Eq (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(==) :: IntX w -> IntX w -> Bool #

(/=) :: IntX w -> IntX w -> Bool #

Ord (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

compare :: IntX w -> IntX w -> Ordering #

(<) :: IntX w -> IntX w -> Bool #

(<=) :: IntX w -> IntX w -> Bool #

(>) :: IntX w -> IntX w -> Bool #

(>=) :: IntX w -> IntX w -> Bool #

max :: IntX w -> IntX w -> IntX w #

min :: IntX w -> IntX w -> IntX w #

FixedPointCompatible (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

KnownNat w => Val (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

KnownNat m => Validity (IntX m) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

validate :: IntX m -> Validation #

newtype FX (m :: Nat) (b :: Nat) Source #

Number with fixed point. FX m b where

  • m the number of magnitude or integer bits
  • b the total number of bits

fxm.b: The "fx" prefix is similar to the above, but uses the word length as +NITTA.Intermediate.Value

nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Aleksandr Penskoi 2020
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Intermediate.Value

Description

 
Synopsis

Type classes

class (Typeable x, Show x, Read x, PrintfArg x, Default x, Integral x, Enum x, Eq x, Num x, Bits x, Validity x, FixedPointCompatible x, ToJSON x) => Val x where Source #

Type class for representation of processing values. A value should include two parts: data and attribute.

Minimal complete definition

dataWidth, rawData, rawAttr, fromRaw, dataLiteral

Methods

dataWidth :: x -> Int Source #

data bus width

attrWidth :: x -> Int Source #

attribute bus width

rawData :: x -> Integer Source #

raw representation of data (Integer)

rawAttr :: x -> Integer Source #

raw representation of attributes (Integer)

fromRaw :: Integer -> Integer -> x Source #

construct a value from raw data and attributes

dataLiteral :: x -> Text Source #

convert a value to Verilog literal with data

attrLiteral :: x -> Text Source #

convert a value to Verilog literal with attributes

verilogHelper :: x -> Text Source #

helper functions to work with values in Verilog (trace and assert)

verilogAssertRE :: x -> Regex Source #

RE for extraction assertion data from a testbench log

Instances

Instances details
Val Int Source # 
Instance details

Defined in NITTA.Intermediate.Value

Val x => Val (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

KnownNat w => Val (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

(KnownNat m, KnownNat b) => Val (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

class Default x => DefaultX u x | u -> x where Source #

Minimal complete definition

Nothing

Methods

defX :: u -> x Source #

Instances

Instances details
Default x => DefaultX (Accum v x t) x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Accum

Methods

defX :: Accum v x t -> x Source #

Default x => DefaultX (Broken v x t) x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Broken

Methods

defX :: Broken v x t -> x Source #

Default x => DefaultX (Divider v x t) x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Divider

Methods

defX :: Divider v x t -> x Source #

Default x => DefaultX (Fram v x t) x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Fram

Methods

defX :: Fram v x t -> x Source #

Default x => DefaultX (Multiplier v x t) x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Multiplier

Methods

defX :: Multiplier v x t -> x Source #

Default x => DefaultX (Project m v x) x Source # 
Instance details

Defined in NITTA.Project.Types

Methods

defX :: Project m v x -> x Source #

Default x => DefaultX (BusNetwork tag v x t) x Source # 
Instance details

Defined in NITTA.Model.Networks.Bus

Methods

defX :: BusNetwork tag v x t -> x Source #

class FixedPointCompatible a where Source #

Type class for values, which contain information about fractional part of +value (for fixed point arithmetics).

minMaxRaw :: (Num b, Val p) => p -> (b, b) Source #

Minimal and maximal raw value.

Compositional type

data Attr x Source #

All values with attributes.

Constructors

Attr 

Fields

Instances

Instances details
Applicative Attr Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

pure :: a -> Attr a #

(<*>) :: Attr (a -> b) -> Attr a -> Attr b #

liftA2 :: (a -> b -> c) -> Attr a -> Attr b -> Attr c #

(*>) :: Attr a -> Attr b -> Attr b #

(<*) :: Attr a -> Attr b -> Attr a #

Functor Attr Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

fmap :: (a -> b) -> Attr a -> Attr b #

(<$) :: a -> Attr b -> Attr a #

ToJSON x => ToJSON (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

toJSON :: Attr x -> Value #

toEncoding :: Attr x -> Encoding #

toJSONList :: [Attr x] -> Value #

toEncodingList :: [Attr x] -> Encoding #

(Bits x, Validity x) => Bits (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(.&.) :: Attr x -> Attr x -> Attr x #

(.|.) :: Attr x -> Attr x -> Attr x #

xor :: Attr x -> Attr x -> Attr x #

complement :: Attr x -> Attr x #

shift :: Attr x -> Int -> Attr x #

rotate :: Attr x -> Int -> Attr x #

zeroBits :: Attr x #

bit :: Int -> Attr x #

setBit :: Attr x -> Int -> Attr x #

clearBit :: Attr x -> Int -> Attr x #

complementBit :: Attr x -> Int -> Attr x #

testBit :: Attr x -> Int -> Bool #

bitSizeMaybe :: Attr x -> Maybe Int #

bitSize :: Attr x -> Int #

isSigned :: Attr x -> Bool #

shiftL :: Attr x -> Int -> Attr x #

unsafeShiftL :: Attr x -> Int -> Attr x #

shiftR :: Attr x -> Int -> Attr x #

unsafeShiftR :: Attr x -> Int -> Attr x #

rotateL :: Attr x -> Int -> Attr x #

rotateR :: Attr x -> Int -> Attr x #

popCount :: Attr x -> Int #

(Enum x, Validity x) => Enum (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

succ :: Attr x -> Attr x #

pred :: Attr x -> Attr x #

toEnum :: Int -> Attr x #

fromEnum :: Attr x -> Int #

enumFrom :: Attr x -> [Attr x] #

enumFromThen :: Attr x -> Attr x -> [Attr x] #

enumFromTo :: Attr x -> Attr x -> [Attr x] #

enumFromThenTo :: Attr x -> Attr x -> Attr x -> [Attr x] #

(Num x, Validity x) => Num (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(+) :: Attr x -> Attr x -> Attr x #

(-) :: Attr x -> Attr x -> Attr x #

(*) :: Attr x -> Attr x -> Attr x #

negate :: Attr x -> Attr x #

abs :: Attr x -> Attr x #

signum :: Attr x -> Attr x #

fromInteger :: Integer -> Attr x #

Read x => Read (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Val x => Integral (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

quot :: Attr x -> Attr x -> Attr x #

rem :: Attr x -> Attr x -> Attr x #

div :: Attr x -> Attr x -> Attr x #

mod :: Attr x -> Attr x -> Attr x #

quotRem :: Attr x -> Attr x -> (Attr x, Attr x) #

divMod :: Attr x -> Attr x -> (Attr x, Attr x) #

toInteger :: Attr x -> Integer #

(Real x, Validity x) => Real (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

toRational :: Attr x -> Rational #

Show x => Show (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

showsPrec :: Int -> Attr x -> ShowS #

show :: Attr x -> String #

showList :: [Attr x] -> ShowS #

PrintfArg x => PrintfArg (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Default x => Default (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

def :: Attr x #

Eq x => Eq (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(==) :: Attr x -> Attr x -> Bool #

(/=) :: Attr x -> Attr x -> Bool #

Ord x => Ord (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

compare :: Attr x -> Attr x -> Ordering #

(<) :: Attr x -> Attr x -> Bool #

(<=) :: Attr x -> Attr x -> Bool #

(>) :: Attr x -> Attr x -> Bool #

(>=) :: Attr x -> Attr x -> Bool #

max :: Attr x -> Attr x -> Attr x #

min :: Attr x -> Attr x -> Attr x #

FixedPointCompatible x => FixedPointCompatible (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Val x => Val (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Validity x => Validity (Attr x) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

validate :: Attr x -> Validation #

Value types

newtype IntX (w :: Nat) Source #

Integer number with specific bit width.

Constructors

IntX 

Fields

Instances

Instances details
ToJSON (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

toJSON :: IntX w -> Value #

toEncoding :: IntX w -> Encoding #

toJSONList :: [IntX w] -> Value #

toEncodingList :: [IntX w] -> Encoding #

KnownNat w => Bits (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(.&.) :: IntX w -> IntX w -> IntX w #

(.|.) :: IntX w -> IntX w -> IntX w #

xor :: IntX w -> IntX w -> IntX w #

complement :: IntX w -> IntX w #

shift :: IntX w -> Int -> IntX w #

rotate :: IntX w -> Int -> IntX w #

zeroBits :: IntX w #

bit :: Int -> IntX w #

setBit :: IntX w -> Int -> IntX w #

clearBit :: IntX w -> Int -> IntX w #

complementBit :: IntX w -> Int -> IntX w #

testBit :: IntX w -> Int -> Bool #

bitSizeMaybe :: IntX w -> Maybe Int #

bitSize :: IntX w -> Int #

isSigned :: IntX w -> Bool #

shiftL :: IntX w -> Int -> IntX w #

unsafeShiftL :: IntX w -> Int -> IntX w #

shiftR :: IntX w -> Int -> IntX w #

unsafeShiftR :: IntX w -> Int -> IntX w #

rotateL :: IntX w -> Int -> IntX w #

rotateR :: IntX w -> Int -> IntX w #

popCount :: IntX w -> Int #

Enum (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

succ :: IntX w -> IntX w #

pred :: IntX w -> IntX w #

toEnum :: Int -> IntX w #

fromEnum :: IntX w -> Int #

enumFrom :: IntX w -> [IntX w] #

enumFromThen :: IntX w -> IntX w -> [IntX w] #

enumFromTo :: IntX w -> IntX w -> [IntX w] #

enumFromThenTo :: IntX w -> IntX w -> IntX w -> [IntX w] #

Num (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(+) :: IntX w -> IntX w -> IntX w #

(-) :: IntX w -> IntX w -> IntX w #

(*) :: IntX w -> IntX w -> IntX w #

negate :: IntX w -> IntX w #

abs :: IntX w -> IntX w #

signum :: IntX w -> IntX w #

fromInteger :: Integer -> IntX w #

Read (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Integral (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

quot :: IntX w -> IntX w -> IntX w #

rem :: IntX w -> IntX w -> IntX w #

div :: IntX w -> IntX w -> IntX w #

mod :: IntX w -> IntX w -> IntX w #

quotRem :: IntX w -> IntX w -> (IntX w, IntX w) #

divMod :: IntX w -> IntX w -> (IntX w, IntX w) #

toInteger :: IntX w -> Integer #

Real (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

toRational :: IntX w -> Rational #

Show (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

showsPrec :: Int -> IntX w -> ShowS #

show :: IntX w -> String #

showList :: [IntX w] -> ShowS #

PrintfArg (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Default (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

def :: IntX w #

Eq (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(==) :: IntX w -> IntX w -> Bool #

(/=) :: IntX w -> IntX w -> Bool #

Ord (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

compare :: IntX w -> IntX w -> Ordering #

(<) :: IntX w -> IntX w -> Bool #

(<=) :: IntX w -> IntX w -> Bool #

(>) :: IntX w -> IntX w -> Bool #

(>=) :: IntX w -> IntX w -> Bool #

max :: IntX w -> IntX w -> IntX w #

min :: IntX w -> IntX w -> IntX w #

FixedPointCompatible (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

KnownNat w => Val (IntX w) Source # 
Instance details

Defined in NITTA.Intermediate.Value

KnownNat m => Validity (IntX m) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

validate :: IntX m -> Validation #

newtype FX (m :: Nat) (b :: Nat) Source #

Number with fixed point. FX m b where

  • m the number of magnitude or integer bits
  • b the total number of bits

fxm.b: The "fx" prefix is similar to the above, but uses the word length as the second item in the dotted pair. For example, fx1.16 describes a number -with 1 magnitude bit and 15 fractional bits in a 16 bit word.

Constructors

FX 

Fields

Instances

Instances details
(KnownNat m, KnownNat b) => ToJSON (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

toJSON :: FX m b -> Value #

toEncoding :: FX m b -> Encoding #

toJSONList :: [FX m b] -> Value #

toEncodingList :: [FX m b] -> Encoding #

(KnownNat m, KnownNat b) => Bits (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(.&.) :: FX m b -> FX m b -> FX m b #

(.|.) :: FX m b -> FX m b -> FX m b #

xor :: FX m b -> FX m b -> FX m b #

complement :: FX m b -> FX m b #

shift :: FX m b -> Int -> FX m b #

rotate :: FX m b -> Int -> FX m b #

zeroBits :: FX m b #

bit :: Int -> FX m b #

setBit :: FX m b -> Int -> FX m b #

clearBit :: FX m b -> Int -> FX m b #

complementBit :: FX m b -> Int -> FX m b #

testBit :: FX m b -> Int -> Bool #

bitSizeMaybe :: FX m b -> Maybe Int #

bitSize :: FX m b -> Int #

isSigned :: FX m b -> Bool #

shiftL :: FX m b -> Int -> FX m b #

unsafeShiftL :: FX m b -> Int -> FX m b #

shiftR :: FX m b -> Int -> FX m b #

unsafeShiftR :: FX m b -> Int -> FX m b #

rotateL :: FX m b -> Int -> FX m b #

rotateR :: FX m b -> Int -> FX m b #

popCount :: FX m b -> Int #

(KnownNat m, KnownNat b) => Enum (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

succ :: FX m b -> FX m b #

pred :: FX m b -> FX m b #

toEnum :: Int -> FX m b #

fromEnum :: FX m b -> Int #

enumFrom :: FX m b -> [FX m b] #

enumFromThen :: FX m b -> FX m b -> [FX m b] #

enumFromTo :: FX m b -> FX m b -> [FX m b] #

enumFromThenTo :: FX m b -> FX m b -> FX m b -> [FX m b] #

Generic (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Associated Types

type Rep (FX m b) :: Type -> Type #

Methods

from :: FX m b -> Rep (FX m b) x #

to :: Rep (FX m b) x -> FX m b #

(KnownNat m, KnownNat b) => Num (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(+) :: FX m b -> FX m b -> FX m b #

(-) :: FX m b -> FX m b -> FX m b #

(*) :: FX m b -> FX m b -> FX m b #

negate :: FX m b -> FX m b #

abs :: FX m b -> FX m b #

signum :: FX m b -> FX m b #

fromInteger :: Integer -> FX m b #

(KnownNat m, KnownNat b) => Read (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

readsPrec :: Int -> ReadS (FX m b) #

readList :: ReadS [FX m b] #

readPrec :: ReadPrec (FX m b) #

readListPrec :: ReadPrec [FX m b] #

(KnownNat m, KnownNat b) => Integral (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

quot :: FX m b -> FX m b -> FX m b #

rem :: FX m b -> FX m b -> FX m b #

div :: FX m b -> FX m b -> FX m b #

mod :: FX m b -> FX m b -> FX m b #

quotRem :: FX m b -> FX m b -> (FX m b, FX m b) #

divMod :: FX m b -> FX m b -> (FX m b, FX m b) #

toInteger :: FX m b -> Integer #

(KnownNat m, KnownNat b) => Real (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

toRational :: FX m b -> Rational #

(KnownNat m, KnownNat b) => Show (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

showsPrec :: Int -> FX m b -> ShowS #

show :: FX m b -> String #

showList :: [FX m b] -> ShowS #

(KnownNat m, KnownNat b) => PrintfArg (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Default (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

def :: FX m b #

Eq (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(==) :: FX m b -> FX m b -> Bool #

(/=) :: FX m b -> FX m b -> Bool #

Ord (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

compare :: FX m b -> FX m b -> Ordering #

(<) :: FX m b -> FX m b -> Bool #

(<=) :: FX m b -> FX m b -> Bool #

(>) :: FX m b -> FX m b -> Bool #

(>=) :: FX m b -> FX m b -> Bool #

max :: FX m b -> FX m b -> FX m b #

min :: FX m b -> FX m b -> FX m b #

(KnownNat m, KnownNat b) => FixedPointCompatible (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

(KnownNat m, KnownNat b) => Val (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

(KnownNat b, KnownNat m) => Validity (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

validate :: FX m b -> Validation #

type Rep (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

type Rep (FX m b) = D1 ('MetaData "FX" "NITTA.Intermediate.Value" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'True) (C1 ('MetaCons "FX" 'PrefixI 'True) (S1 ('MetaSel ('Just "rawFX") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)))
\ No newline at end of file +with 1 magnitude bit and 15 fractional bits in a 16 bit word.

Constructors

FX 

Fields

Instances

Instances details
(KnownNat m, KnownNat b) => ToJSON (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

toJSON :: FX m b -> Value #

toEncoding :: FX m b -> Encoding #

toJSONList :: [FX m b] -> Value #

toEncodingList :: [FX m b] -> Encoding #

(KnownNat m, KnownNat b) => Bits (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(.&.) :: FX m b -> FX m b -> FX m b #

(.|.) :: FX m b -> FX m b -> FX m b #

xor :: FX m b -> FX m b -> FX m b #

complement :: FX m b -> FX m b #

shift :: FX m b -> Int -> FX m b #

rotate :: FX m b -> Int -> FX m b #

zeroBits :: FX m b #

bit :: Int -> FX m b #

setBit :: FX m b -> Int -> FX m b #

clearBit :: FX m b -> Int -> FX m b #

complementBit :: FX m b -> Int -> FX m b #

testBit :: FX m b -> Int -> Bool #

bitSizeMaybe :: FX m b -> Maybe Int #

bitSize :: FX m b -> Int #

isSigned :: FX m b -> Bool #

shiftL :: FX m b -> Int -> FX m b #

unsafeShiftL :: FX m b -> Int -> FX m b #

shiftR :: FX m b -> Int -> FX m b #

unsafeShiftR :: FX m b -> Int -> FX m b #

rotateL :: FX m b -> Int -> FX m b #

rotateR :: FX m b -> Int -> FX m b #

popCount :: FX m b -> Int #

(KnownNat m, KnownNat b) => Enum (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

succ :: FX m b -> FX m b #

pred :: FX m b -> FX m b #

toEnum :: Int -> FX m b #

fromEnum :: FX m b -> Int #

enumFrom :: FX m b -> [FX m b] #

enumFromThen :: FX m b -> FX m b -> [FX m b] #

enumFromTo :: FX m b -> FX m b -> [FX m b] #

enumFromThenTo :: FX m b -> FX m b -> FX m b -> [FX m b] #

Generic (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Associated Types

type Rep (FX m b) :: Type -> Type #

Methods

from :: FX m b -> Rep (FX m b) x #

to :: Rep (FX m b) x -> FX m b #

(KnownNat m, KnownNat b) => Num (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(+) :: FX m b -> FX m b -> FX m b #

(-) :: FX m b -> FX m b -> FX m b #

(*) :: FX m b -> FX m b -> FX m b #

negate :: FX m b -> FX m b #

abs :: FX m b -> FX m b #

signum :: FX m b -> FX m b #

fromInteger :: Integer -> FX m b #

(KnownNat m, KnownNat b) => Read (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

readsPrec :: Int -> ReadS (FX m b) #

readList :: ReadS [FX m b] #

readPrec :: ReadPrec (FX m b) #

readListPrec :: ReadPrec [FX m b] #

(KnownNat m, KnownNat b) => Integral (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

quot :: FX m b -> FX m b -> FX m b #

rem :: FX m b -> FX m b -> FX m b #

div :: FX m b -> FX m b -> FX m b #

mod :: FX m b -> FX m b -> FX m b #

quotRem :: FX m b -> FX m b -> (FX m b, FX m b) #

divMod :: FX m b -> FX m b -> (FX m b, FX m b) #

toInteger :: FX m b -> Integer #

(KnownNat m, KnownNat b) => Real (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

toRational :: FX m b -> Rational #

(KnownNat m, KnownNat b) => Show (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

showsPrec :: Int -> FX m b -> ShowS #

show :: FX m b -> String #

showList :: [FX m b] -> ShowS #

(KnownNat m, KnownNat b) => PrintfArg (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Default (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

def :: FX m b #

Eq (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

(==) :: FX m b -> FX m b -> Bool #

(/=) :: FX m b -> FX m b -> Bool #

Ord (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

compare :: FX m b -> FX m b -> Ordering #

(<) :: FX m b -> FX m b -> Bool #

(<=) :: FX m b -> FX m b -> Bool #

(>) :: FX m b -> FX m b -> Bool #

(>=) :: FX m b -> FX m b -> Bool #

max :: FX m b -> FX m b -> FX m b #

min :: FX m b -> FX m b -> FX m b #

(KnownNat m, KnownNat b) => FixedPointCompatible (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

(KnownNat m, KnownNat b) => Val (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

(KnownNat b, KnownNat m) => Validity (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

Methods

validate :: FX m b -> Validation #

type Rep (FX m b) Source # 
Instance details

Defined in NITTA.Intermediate.Value

type Rep (FX m b) = D1 ('MetaData "FX" "NITTA.Intermediate.Value" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'True) (C1 ('MetaCons "FX" 'PrefixI 'True) (S1 ('MetaSel ('Just "rawFX") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)))
\ No newline at end of file diff --git a/haddock/nitta/NITTA-Model-Microarchitecture-Config.html b/haddock/nitta/NITTA-Model-Microarchitecture-Config.html index c7ae2b54a..bfcd76e61 100644 --- a/haddock/nitta/NITTA-Model-Microarchitecture-Config.html +++ b/haddock/nitta/NITTA-Model-Microarchitecture-Config.html @@ -1 +1 @@ -NITTA.Model.Microarchitecture.Config
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Model.Microarchitecture.Config

\ No newline at end of file +NITTA.Model.Microarchitecture.Config
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Model.Microarchitecture.Config

\ No newline at end of file diff --git a/haddock/nitta/NITTA-Model-Microarchitecture-Types.html b/haddock/nitta/NITTA-Model-Microarchitecture-Types.html index 9cfd9e8f1..dd7cbcf18 100644 --- a/haddock/nitta/NITTA-Model-Microarchitecture-Types.html +++ b/haddock/nitta/NITTA-Model-Microarchitecture-Types.html @@ -1 +1 @@ -NITTA.Model.Microarchitecture.Types
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Daniil Prohorov Aleksandr Penskoi 2021
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Model.Microarchitecture.Types

Description

 

Documentation

data MicroarchitectureDesc tag Source #

Instances

Instances details
ToJSON tag => ToJSON (MicroarchitectureDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Generic (MicroarchitectureDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Associated Types

type Rep (MicroarchitectureDesc tag) :: Type -> Type #

UnitTag tag => ToSample (MicroarchitectureDesc tag) Source # 
Instance details

Defined in NITTA.UIBackend.REST

type Rep (MicroarchitectureDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

type Rep (MicroarchitectureDesc tag) = D1 ('MetaData "MicroarchitectureDesc" "NITTA.Model.Microarchitecture.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "MicroarchitectureDesc" 'PrefixI 'True) (S1 ('MetaSel ('Just "networks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [NetworkDesc tag]) :*: S1 ('MetaSel ('Just "ioSyncMode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IOSynchronization)))

data NetworkDesc tag Source #

Constructors

NetworkDesc 

Fields

Instances

Instances details
ToJSON tag => ToJSON (NetworkDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Generic (NetworkDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Associated Types

type Rep (NetworkDesc tag) :: Type -> Type #

Methods

from :: NetworkDesc tag -> Rep (NetworkDesc tag) x #

to :: Rep (NetworkDesc tag) x -> NetworkDesc tag #

type Rep (NetworkDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

type Rep (NetworkDesc tag) = D1 ('MetaData "NetworkDesc" "NITTA.Model.Microarchitecture.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "NetworkDesc" 'PrefixI 'True) (S1 ('MetaSel ('Just "networkTag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tag) :*: (S1 ('MetaSel ('Just "valueType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "units") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitDesc tag]))))

data UnitDesc tag Source #

Constructors

UnitDesc 

Fields

Instances

Instances details
ToJSON tag => ToJSON (UnitDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Generic (UnitDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Associated Types

type Rep (UnitDesc tag) :: Type -> Type #

Methods

from :: UnitDesc tag -> Rep (UnitDesc tag) x #

to :: Rep (UnitDesc tag) x -> UnitDesc tag #

type Rep (UnitDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

type Rep (UnitDesc tag) = D1 ('MetaData "UnitDesc" "NITTA.Model.Microarchitecture.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "UnitDesc" 'PrefixI 'True) (S1 ('MetaSel ('Just "unitTag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tag) :*: S1 ('MetaSel ('Just "unitType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

microarchitectureDesc :: forall tag v x t. Typeable x => BusNetwork tag v x t -> MicroarchitectureDesc tag Source #

\ No newline at end of file +NITTA.Model.Microarchitecture.Types
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Daniil Prohorov Aleksandr Penskoi 2021
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Model.Microarchitecture.Types

Description

 

Documentation

data MicroarchitectureDesc tag Source #

Instances

Instances details
ToJSON tag => ToJSON (MicroarchitectureDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Methods

toJSON :: MicroarchitectureDesc tag -> Value #

toEncoding :: MicroarchitectureDesc tag -> Encoding #

toJSONList :: [MicroarchitectureDesc tag] -> Value #

toEncodingList :: [MicroarchitectureDesc tag] -> Encoding #

Generic (MicroarchitectureDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Associated Types

type Rep (MicroarchitectureDesc tag) :: Type -> Type #

UnitTag tag => ToSample (MicroarchitectureDesc tag) Source # 
Instance details

Defined in NITTA.UIBackend.REST

type Rep (MicroarchitectureDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

type Rep (MicroarchitectureDesc tag) = D1 ('MetaData "MicroarchitectureDesc" "NITTA.Model.Microarchitecture.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "MicroarchitectureDesc" 'PrefixI 'True) (S1 ('MetaSel ('Just "networks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [NetworkDesc tag]) :*: S1 ('MetaSel ('Just "ioSyncMode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IOSynchronization)))

data NetworkDesc tag Source #

Constructors

NetworkDesc 

Fields

Instances

Instances details
ToJSON tag => ToJSON (NetworkDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Methods

toJSON :: NetworkDesc tag -> Value #

toEncoding :: NetworkDesc tag -> Encoding #

toJSONList :: [NetworkDesc tag] -> Value #

toEncodingList :: [NetworkDesc tag] -> Encoding #

Generic (NetworkDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Associated Types

type Rep (NetworkDesc tag) :: Type -> Type #

Methods

from :: NetworkDesc tag -> Rep (NetworkDesc tag) x #

to :: Rep (NetworkDesc tag) x -> NetworkDesc tag #

type Rep (NetworkDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

type Rep (NetworkDesc tag) = D1 ('MetaData "NetworkDesc" "NITTA.Model.Microarchitecture.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "NetworkDesc" 'PrefixI 'True) (S1 ('MetaSel ('Just "networkTag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tag) :*: (S1 ('MetaSel ('Just "valueType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "units") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitDesc tag]))))

data UnitDesc tag Source #

Constructors

UnitDesc 

Fields

Instances

Instances details
ToJSON tag => ToJSON (UnitDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Methods

toJSON :: UnitDesc tag -> Value #

toEncoding :: UnitDesc tag -> Encoding #

toJSONList :: [UnitDesc tag] -> Value #

toEncodingList :: [UnitDesc tag] -> Encoding #

Generic (UnitDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

Associated Types

type Rep (UnitDesc tag) :: Type -> Type #

Methods

from :: UnitDesc tag -> Rep (UnitDesc tag) x #

to :: Rep (UnitDesc tag) x -> UnitDesc tag #

type Rep (UnitDesc tag) Source # 
Instance details

Defined in NITTA.Model.Microarchitecture.Types

type Rep (UnitDesc tag) = D1 ('MetaData "UnitDesc" "NITTA.Model.Microarchitecture.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "UnitDesc" 'PrefixI 'True) (S1 ('MetaSel ('Just "unitTag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tag) :*: S1 ('MetaSel ('Just "unitType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

microarchitectureDesc :: forall tag v x t. Typeable x => BusNetwork tag v x t -> MicroarchitectureDesc tag Source #

\ No newline at end of file diff --git a/haddock/nitta/NITTA-Model-Networks-Types.html b/haddock/nitta/NITTA-Model-Networks-Types.html index 258014f43..85f42309d 100644 --- a/haddock/nitta/NITTA-Model-Networks-Types.html +++ b/haddock/nitta/NITTA-Model-Networks-Types.html @@ -1,3 +1,3 @@ -NITTA.Model.Networks.Types
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Aleksandr Penskoi 2021
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Model.Networks.Types

Description

 
Synopsis

Documentation

data PU v x t where Source #

Existential container for a processor unit .

Constructors

PU 

Fields

Instances

Instances details
TargetSystemComponent (PU v x t) Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

moduleName :: Text -> PU v x t -> Text Source #

software :: Text -> PU v x t -> Implementation Source #

hardware :: Text -> PU v x t -> Implementation Source #

hardwareInstance :: Text -> PU v x t -> UnitEnv (PU v x t) -> Verilog Source #

Var v => Locks (PU v x t) v Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

locks :: PU v x t -> [Lock v] Source #

Ord v => EndpointProblem (PU v x t) v t Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

endpointOptions :: PU v x t -> [EndpointSt v (TimeConstraint t)] Source #

endpointDecision :: PU v x t -> EndpointSt v (Interval t) -> PU v x t Source #

BreakLoopProblem (PU v x t) v x Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

breakLoopOptions :: PU v x t -> [BreakLoop v x] Source #

breakLoopDecision :: PU v x t -> BreakLoop v x -> PU v x t Source #

OptimizeAccumProblem (PU v x t) v x Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

optimizeAccumOptions :: PU v x t -> [OptimizeAccum v x] Source #

optimizeAccumDecision :: PU v x t -> OptimizeAccum v x -> PU v x t Source #

ResolveDeadlockProblem (PU v x t) v x Source # 
Instance details

Defined in NITTA.Model.Networks.Types

IOTestBench (PU v x t) v x Source # 
Instance details

Defined in NITTA.Model.Networks.Types

VarValTime v x t => ProcessorUnit (PU v x t) v x t Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

tryBind :: F v x -> PU v x t -> Either String (PU v x t) Source #

process :: PU v x t -> Process t (StepInfo v x t) Source #

parallelismType :: PU v x t -> ParallelismType Source #

puSize :: PU v x t -> Float Source #

Ord v => Patch (PU v x t) (Changeset v) Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

patch :: Changeset v -> PU v x t -> PU v x t Source #

Ord v => Patch (PU v x t) (I v, I v) Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

patch :: (I v, I v) -> PU v x t -> PU v x t Source #

Ord v => Patch (PU v x t) (O v, O v) Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

patch :: (O v, O v) -> PU v x t -> PU v x t Source #

unitType :: PU v x t -> TypeRep Source #

data IOSynchronization Source #

Constructors

Sync

IO cycle synchronously to process cycle

ASync

if IO cycle lag behiend - ignore them

OnBoard

defined by onboard signal (sync - false, async - true)

Instances

Instances details
FromJSON IOSynchronization Source # 
Instance details

Defined in NITTA.Model.Networks.Types

ToJSON IOSynchronization Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Generic IOSynchronization Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Associated Types

type Rep IOSynchronization :: Type -> Type #

Read IOSynchronization Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Show IOSynchronization Source # 
Instance details

Defined in NITTA.Model.Networks.Types

type Rep IOSynchronization Source # 
Instance details

Defined in NITTA.Model.Networks.Types

type Rep IOSynchronization = D1 ('MetaData "IOSynchronization" "NITTA.Model.Networks.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "Sync" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ASync" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OnBoard" 'PrefixI 'False) (U1 :: Type -> Type)))

data PUPrototype tag v x t where Source #

PU and some additional information required for allocation on BusNetwork

Constructors

PUPrototype 

Fields

Instance details

Defined in NITTA.Model.ProcessorUnits.Multiplier

VarValTime v x t => ProcessorUnit (Shift v x t) v x t Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Shift

Methods

tryBind :: F v x -> Shift v x t -> Either String (Shift v x t) Source #

process :: Shift v x t -> Process t (StepInfo v x t) Source #

parallelismType :: Shift v x t -> ParallelismType Source #

puSize :: Shift v x t -> Float Source #

(UnitTag tag, VarValTime v x t) => ProcessorUnit (BusNetwork tag v x t) v x t Source # 
Instance details

Defined in NITTA.Model.Networks.Bus

Methods

tryBind :: F v x -> BusNetwork tag v x t -> Either String (BusNetwork tag v x t) Source #

process :: BusNetwork tag v x t -> Process t (StepInfo v x t) Source #

parallelismType :: BusNetwork tag v x t -> ParallelismType Source #

puSize :: BusNetwork tag v x t -> Float Source #

(VarValTime v x t, SimpleIOInterface i) => ProcessorUnit (SimpleIO i v x t) v x t Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.IO.SimpleIO

Methods

tryBind :: F v x -> SimpleIO i v x t -> Either String (SimpleIO i v x t) Source #

process :: SimpleIO i v x t -> Process t (StepInfo v x t) Source #

parallelismType :: SimpleIO i v x t -> ParallelismType Source #

puSize :: SimpleIO i v x t -> Float Source #

(UnitTag tag, VarValTime v x t) => ProcessorUnit (TargetSynthesis tag v x t) v x t Source # 
Instance details

Defined in NITTA.Synthesis

ProcessorUnit u v x t => ProcessorUnit (TargetSystem u tag v x t) v x t Source # 
Instance details

Defined in NITTA.Model.TargetSystem

Methods

tryBind :: F v x -> TargetSystem u tag v x t -> Either String (TargetSystem u tag v x t) Source #

process :: TargetSystem u tag v x t -> Process t (StepInfo v x t) Source #

parallelismType :: TargetSystem u tag v x t -> ParallelismType Source #

puSize :: TargetSystem u tag v x t -> Float Source #

bind :: ProcessorUnit u v x t => F v x -> u -> u Source #

allowToProcess :: ProcessorUnit b v x t => F v x -> b -> Bool Source #

class NextTick u t | u -> t where Source #

Methods

nextTick :: u -> t Source #

Instances

Instances details
ProcessorUnit u v x t => NextTick u t Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

nextTick :: u -> t Source #

NextTick (Process t si) t Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

nextTick :: Process t si -> t Source #

data ParallelismType Source #

Processor unit parallelism type

Constructors

Full

All operations can be performed in parallel mode

Pipeline

All operations can be performed in pipeline mode

None

Other processor units

Instances

Instances details
ToJSON ParallelismType Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Generic ParallelismType Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Associated Types

type Rep ParallelismType :: Type -> Type #

Show ParallelismType Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Eq ParallelismType Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

type Rep ParallelismType Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

type Rep ParallelismType = D1 ('MetaData "ParallelismType" "NITTA.Model.ProcessorUnits.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "Full" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Pipeline" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "None" 'PrefixI 'False) (U1 :: Type -> Type)))

Process description

data Process t i Source #

Computational process description. It was designed in ISO 15926 style, with -separated data and relations storage.

Constructors

Process 

Fields

Instances

Instances details
(ToJSON t, ToJSON i) => ToJSON (Process t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Generic (Process t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Associated Types

type Rep (Process t i) :: Type -> Type #

Methods

from :: Process t i -> Rep (Process t i) x #

to :: Rep (Process t i) x -> Process t i #

Default t => Default (Process t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

def :: Process t i #

(Time t, Show i) => Pretty (Process t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

pretty :: Process t i -> Doc ann #

prettyList :: [Process t i] -> Doc ann #

Time t => ToSample (Process t StepInfoView) Source # 
Instance details

Defined in NITTA.UIBackend.REST

NextTick (Process t si) t Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

nextTick :: Process t si -> t Source #

Ord t => WithFunctions (Process t (StepInfo v x t)) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

functions :: Process t (StepInfo v x t) -> [F v x] Source #

(Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) Source # 
Instance details

Defined in NITTA.UIBackend.ViewHelper

Methods

view :: Process t (StepInfo v x t) -> Process t StepInfoView Source #

type Rep (Process t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

type Rep (Process t i) = D1 ('MetaData "Process" "NITTA.Model.ProcessorUnits.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "Process" 'PrefixI 'True) ((S1 ('MetaSel ('Just "steps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Step t i]) :*: S1 ('MetaSel ('Just "relations") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Relation])) :*: (S1 ('MetaSel ('Just "nextTick_") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 t) :*: S1 ('MetaSel ('Just "nextUid") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProcessStepID))))

type ProcessStepID = Int Source #

Unique ID of a process step. Uniquity presented only inside PU.

data Step t i Source #

Process step representation

Constructors

Step 

Fields

Instances

Instances details
(ToJSON t, ToJSON i) => ToJSON (Step t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

toJSON :: Step t i -> Value #

toEncoding :: Step t i -> Encoding #

toJSONList :: [Step t i] -> Value #

toEncodingList :: [Step t i] -> Encoding #

Generic (Step t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Associated Types

type Rep (Step t i) :: Type -> Type #

Methods

from :: Step t i -> Rep (Step t i) x #

to :: Rep (Step t i) x -> Step t i #

(Show t, Show i) => Show (Step t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

showsPrec :: Int -> Step t i -> ShowS #

show :: Step t i -> String #

showList :: [Step t i] -> ShowS #

Ord v => Patch (Step t (StepInfo v x t)) (Changeset v) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

patch :: Changeset v -> Step t (StepInfo v x t) -> Step t (StepInfo v x t) Source #

type Rep (Step t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

type Rep (Step t i) = D1 ('MetaData "Step" "NITTA.Model.ProcessorUnits.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "Step" 'PrefixI 'True) (S1 ('MetaSel ('Just "pID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProcessStepID) :*: (S1 ('MetaSel ('Just "pInterval") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Interval t)) :*: S1 ('MetaSel ('Just "pDesc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 i))))

data StepInfo v x t where Source #

Informative process step description at a specific process level.

Constructors

CADStep :: String -> StepInfo v x t

CAD level step

RefactorStep :: (Typeable ref, Show ref, Eq ref) => ref -> StepInfo v x t

Apply refactoring

IntermediateStep :: F v x -> StepInfo v x t

intermidiate level step (function execution)

EndpointRoleStep :: EndpointRole v -> StepInfo v x t

endpoint level step (source or target)

InstructionStep :: (Show (Instruction pu), Typeable (Instruction pu)) => Instruction pu -> StepInfo v x t

process unit instruction (depends on process unit type)

NestedStep

wrapper for nested process unit step (used for networks)

Fields

AllocationStep :: (Typeable a, Show a, Eq a) => a -> StepInfo v x t

Process unit allocation step

Instances

Instances details
Ord v => Patch (Step t (StepInfo v x t)) (Changeset v) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

patch :: Changeset v -> Step t (StepInfo v x t) -> Step t (StepInfo v x t) Source #

Ord t => WithFunctions (Process t (StepInfo v x t)) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

functions :: Process t (StepInfo v x t) -> [F v x] Source #

(Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) Source # 
Instance details

Defined in NITTA.UIBackend.ViewHelper

Methods

view :: Process t (StepInfo v x t) -> Process t StepInfoView Source #

(Var v, Show (Step t (StepInfo v x t))) => Show (StepInfo v x t) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

showsPrec :: Int -> StepInfo v x t -> ShowS #

show :: StepInfo v x t -> String #

showList :: [StepInfo v x t] -> ShowS #

(Var v, Time t) => Viewable (StepInfo v x t) StepInfoView Source # 
Instance details

Defined in NITTA.UIBackend.ViewHelper

Methods

view :: StepInfo v x t -> StepInfoView Source #

Ord v => Patch (StepInfo v x t) (Changeset v) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

patch :: Changeset v -> StepInfo v x t -> StepInfo v x t Source #

data Relation Source #

Relations between process steps.

Constructors

Vertical

Vertical relationships (up and down). For example, the intermediate + is chosen.

Binding can be done either gradually due synthesis process at the start.

Instance details

Defined in NITTA.Model.ProcessorUnits.Multiplier

VarValTime v x t => ProcessorUnit (Shift v x t) v x t Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Shift

Methods

tryBind :: F v x -> Shift v x t -> Either String (Shift v x t) Source #

process :: Shift v x t -> Process t (StepInfo v x t) Source #

parallelismType :: Shift v x t -> ParallelismType Source #

puSize :: Shift v x t -> Float Source #

(UnitTag tag, VarValTime v x t) => ProcessorUnit (BusNetwork tag v x t) v x t Source # 
Instance details

Defined in NITTA.Model.Networks.Bus

Methods

tryBind :: F v x -> BusNetwork tag v x t -> Either String (BusNetwork tag v x t) Source #

process :: BusNetwork tag v x t -> Process t (StepInfo v x t) Source #

parallelismType :: BusNetwork tag v x t -> ParallelismType Source #

puSize :: BusNetwork tag v x t -> Float Source #

(VarValTime v x t, SimpleIOInterface i) => ProcessorUnit (SimpleIO i v x t) v x t Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.IO.SimpleIO

Methods

tryBind :: F v x -> SimpleIO i v x t -> Either String (SimpleIO i v x t) Source #

process :: SimpleIO i v x t -> Process t (StepInfo v x t) Source #

parallelismType :: SimpleIO i v x t -> ParallelismType Source #

puSize :: SimpleIO i v x t -> Float Source #

(UnitTag tag, VarValTime v x t) => ProcessorUnit (TargetSynthesis tag v x t) v x t Source # 
Instance details

Defined in NITTA.Synthesis

ProcessorUnit u v x t => ProcessorUnit (TargetSystem u tag v x t) v x t Source # 
Instance details

Defined in NITTA.Model.TargetSystem

Methods

tryBind :: F v x -> TargetSystem u tag v x t -> Either String (TargetSystem u tag v x t) Source #

process :: TargetSystem u tag v x t -> Process t (StepInfo v x t) Source #

parallelismType :: TargetSystem u tag v x t -> ParallelismType Source #

puSize :: TargetSystem u tag v x t -> Float Source #

bind :: ProcessorUnit u v x t => F v x -> u -> u Source #

allowToProcess :: ProcessorUnit b v x t => F v x -> b -> Bool Source #

class NextTick u t | u -> t where Source #

Methods

nextTick :: u -> t Source #

Instances

Instances details
ProcessorUnit u v x t => NextTick u t Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

nextTick :: u -> t Source #

NextTick (Process t si) t Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

nextTick :: Process t si -> t Source #

data ParallelismType Source #

Processor unit parallelism type

Constructors

Full

All operations can be performed in parallel mode

Pipeline

All operations can be performed in pipeline mode

None

Other processor units

Instances

Instances details
ToJSON ParallelismType Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

toJSON :: ParallelismType -> Value #

toEncoding :: ParallelismType -> Encoding #

toJSONList :: [ParallelismType] -> Value #

toEncodingList :: [ParallelismType] -> Encoding #

Generic ParallelismType Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Associated Types

type Rep ParallelismType :: Type -> Type #

Show ParallelismType Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Eq ParallelismType Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

type Rep ParallelismType Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

type Rep ParallelismType = D1 ('MetaData "ParallelismType" "NITTA.Model.ProcessorUnits.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "Full" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Pipeline" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "None" 'PrefixI 'False) (U1 :: Type -> Type)))

Process description

data Process t i Source #

Computational process description. It was designed in ISO 15926 style, with +separated data and relations storage.

Constructors

Process 

Fields

Instances

Instances details
(ToJSON t, ToJSON i) => ToJSON (Process t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

toJSON :: Process t i -> Value #

toEncoding :: Process t i -> Encoding #

toJSONList :: [Process t i] -> Value #

toEncodingList :: [Process t i] -> Encoding #

Generic (Process t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Associated Types

type Rep (Process t i) :: Type -> Type #

Methods

from :: Process t i -> Rep (Process t i) x #

to :: Rep (Process t i) x -> Process t i #

Default t => Default (Process t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

def :: Process t i #

(Time t, Show i) => Pretty (Process t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

pretty :: Process t i -> Doc ann #

prettyList :: [Process t i] -> Doc ann #

Time t => ToSample (Process t StepInfoView) Source # 
Instance details

Defined in NITTA.UIBackend.REST

NextTick (Process t si) t Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

nextTick :: Process t si -> t Source #

Ord t => WithFunctions (Process t (StepInfo v x t)) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

functions :: Process t (StepInfo v x t) -> [F v x] Source #

(Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) Source # 
Instance details

Defined in NITTA.UIBackend.ViewHelper

Methods

view :: Process t (StepInfo v x t) -> Process t StepInfoView Source #

type Rep (Process t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

type Rep (Process t i) = D1 ('MetaData "Process" "NITTA.Model.ProcessorUnits.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "Process" 'PrefixI 'True) ((S1 ('MetaSel ('Just "steps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Step t i]) :*: S1 ('MetaSel ('Just "relations") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Relation])) :*: (S1 ('MetaSel ('Just "nextTick_") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 t) :*: S1 ('MetaSel ('Just "nextUid") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProcessStepID))))

type ProcessStepID = Int Source #

Unique ID of a process step. Uniquity presented only inside PU.

data Step t i Source #

Process step representation

Constructors

Step 

Fields

Instances

Instances details
(ToJSON t, ToJSON i) => ToJSON (Step t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

toJSON :: Step t i -> Value #

toEncoding :: Step t i -> Encoding #

toJSONList :: [Step t i] -> Value #

toEncodingList :: [Step t i] -> Encoding #

Generic (Step t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Associated Types

type Rep (Step t i) :: Type -> Type #

Methods

from :: Step t i -> Rep (Step t i) x #

to :: Rep (Step t i) x -> Step t i #

(Show t, Show i) => Show (Step t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

showsPrec :: Int -> Step t i -> ShowS #

show :: Step t i -> String #

showList :: [Step t i] -> ShowS #

Ord v => Patch (Step t (StepInfo v x t)) (Changeset v) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

patch :: Changeset v -> Step t (StepInfo v x t) -> Step t (StepInfo v x t) Source #

type Rep (Step t i) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

type Rep (Step t i) = D1 ('MetaData "Step" "NITTA.Model.ProcessorUnits.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "Step" 'PrefixI 'True) (S1 ('MetaSel ('Just "pID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProcessStepID) :*: (S1 ('MetaSel ('Just "pInterval") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Interval t)) :*: S1 ('MetaSel ('Just "pDesc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 i))))

data StepInfo v x t where Source #

Informative process step description at a specific process level.

Constructors

CADStep :: String -> StepInfo v x t

CAD level step

RefactorStep :: (Typeable ref, Show ref, Eq ref) => ref -> StepInfo v x t

Apply refactoring

IntermediateStep :: F v x -> StepInfo v x t

intermidiate level step (function execution)

EndpointRoleStep :: EndpointRole v -> StepInfo v x t

endpoint level step (source or target)

InstructionStep :: (Show (Instruction pu), Typeable (Instruction pu)) => Instruction pu -> StepInfo v x t

process unit instruction (depends on process unit type)

NestedStep

wrapper for nested process unit step (used for networks)

Fields

AllocationStep :: (Typeable a, Show a, Eq a) => a -> StepInfo v x t

Process unit allocation step

Instances

Instances details
Ord v => Patch (Step t (StepInfo v x t)) (Changeset v) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

patch :: Changeset v -> Step t (StepInfo v x t) -> Step t (StepInfo v x t) Source #

Ord t => WithFunctions (Process t (StepInfo v x t)) (F v x) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

functions :: Process t (StepInfo v x t) -> [F v x] Source #

(Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) Source # 
Instance details

Defined in NITTA.UIBackend.ViewHelper

Methods

view :: Process t (StepInfo v x t) -> Process t StepInfoView Source #

(Var v, Show (Step t (StepInfo v x t))) => Show (StepInfo v x t) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

showsPrec :: Int -> StepInfo v x t -> ShowS #

show :: StepInfo v x t -> String #

showList :: [StepInfo v x t] -> ShowS #

(Var v, Time t) => Viewable (StepInfo v x t) StepInfoView Source # 
Instance details

Defined in NITTA.UIBackend.ViewHelper

Methods

view :: StepInfo v x t -> StepInfoView Source #

Ord v => Patch (StepInfo v x t) (Changeset v) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

patch :: Changeset v -> StepInfo v x t -> StepInfo v x t Source #

data Relation Source #

Relations between process steps.

Constructors

Vertical

Vertical relationships (up and down). For example, the intermediate step (function execution) can be translated to a sequence of endpoint steps (receiving and sending variable), and process unit instructions.

Fields

Horizontal

Horizontal relationships (on one level). For example, we bind the function and apply the refactoring. The binding step should be - connected to refactoring steps, including new binding steps.

Instances

Instances details
ToJSON Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Generic Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Associated Types

type Rep Relation :: Type -> Type #

Methods

from :: Relation -> Rep Relation x #

to :: Rep Relation x -> Relation #

Show Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Eq Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Ord Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

type Rep Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

descent :: StepInfo v x t -> StepInfo v x t Source #

whatsHappen :: Ord a => a -> Process a i -> [Step a i] Source #

withShift :: (Eq a, Num a) => a -> a -> a Source #

Shift nextTick value if it is not zero on a specific offset. Use case: The + connected to refactoring steps, including new binding steps.

Instances

Instances details
ToJSON Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Methods

toJSON :: Relation -> Value #

toEncoding :: Relation -> Encoding #

toJSONList :: [Relation] -> Value #

toEncodingList :: [Relation] -> Encoding #

Generic Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Associated Types

type Rep Relation :: Type -> Type #

Methods

from :: Relation -> Rep Relation x #

to :: Rep Relation x -> Relation #

Show Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Eq Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

Ord Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

type Rep Relation Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Types

descent :: StepInfo v x t -> StepInfo v x t Source #

whatsHappen :: Ord a => a -> Process a i -> [Step a i] Source #

withShift :: (Eq a, Num a) => a -> a -> a Source #

Shift nextTick value if it is not zero on a specific offset. Use case: The processor unit has buffered output, so we should provide oe signal for one tick before data actually send to the bus. That raises the following cases:

  1. First usage. We can receive value immediately on nextTick

    tick | Endpoint     | Instruction |
      0   | Target "c"   | WR          | <- nextTick
    diff --git a/haddock/nitta/NITTA-Model-Time.html b/haddock/nitta/NITTA-Model-Time.html
    index 2a3c6c515..eae23a63d 100644
    --- a/haddock/nitta/NITTA-Model-Time.html
    +++ b/haddock/nitta/NITTA-Model-Time.html
    @@ -1 +1 @@
    -NITTA.Model.Time
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2019
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.Model.Time

    Description

     
    Synopsis

    Documentation

    type VarValTime v x t = (Var v, Val x, Time t) Source #

    Shortcut for variable (v), value (x) and time (t) type constrains.

    type VarValTimeJSON v x t = (VarValTime v x t, ToJSONKey v, ToJSON v, ToJSON x, ToJSON t) Source #

    type Time t = (Default t, Num t, Bounded t, Ord t, Show t, Typeable t, Enum t, Integral t) Source #

    Shortcut for time type constrain.

    data TimeConstraint t Source #

    Time constrain for processor activity.

    Constructors

    TimeConstraint 

    Fields

    Instances

    Instances details
    ToJSON tp => ToJSON (TimeConstraint tp) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Generic (TimeConstraint t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Associated Types

    type Rep (TimeConstraint t) :: Type -> Type #

    (Show t, Eq t, Bounded t) => Show (TimeConstraint t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Eq t => Eq (TimeConstraint t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    (ToString v, Time t) => Show (EndpointSt v (TimeConstraint t)) Source # 
    Instance details

    Defined in NITTA.Model.Problems.Endpoint

    ToSample (EndpointSt String (TimeConstraint Int)) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (DataflowSt tag v (TimeConstraint t)) (DataflowSt tag v (Interval t)) DataflowMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Dataflow

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float Source #

    type Rep (TimeConstraint t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    type Rep (TimeConstraint t) = D1 ('MetaData "TimeConstraint" "NITTA.Model.Time" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TimeConstraint" 'PrefixI 'True) (S1 ('MetaSel ('Just "tcAvailable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Interval t)) :*: S1 ('MetaSel ('Just "tcDuration") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Interval t))))

    data TaggedTime tag t Source #

    Forgoten implementation of tagged time for speculative if statement. Current - dead code.

    Constructors

    TaggedTime 

    Fields

    Instances

    Instances details
    Num t => Bounded (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    minBound :: TaggedTime tag t #

    maxBound :: TaggedTime tag t #

    Enum t => Enum (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    succ :: TaggedTime tag t -> TaggedTime tag t #

    pred :: TaggedTime tag t -> TaggedTime tag t #

    toEnum :: Int -> TaggedTime tag t #

    fromEnum :: TaggedTime tag t -> Int #

    enumFrom :: TaggedTime tag t -> [TaggedTime tag t] #

    enumFromThen :: TaggedTime tag t -> TaggedTime tag t -> [TaggedTime tag t] #

    enumFromTo :: TaggedTime tag t -> TaggedTime tag t -> [TaggedTime tag t] #

    enumFromThenTo :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t -> [TaggedTime tag t] #

    Generic (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Associated Types

    type Rep (TaggedTime tag t) :: Type -> Type #

    Methods

    from :: TaggedTime tag t -> Rep (TaggedTime tag t) x #

    to :: Rep (TaggedTime tag t) x -> TaggedTime tag t #

    (Num t, Show tag, Eq tag) => Num (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    (+) :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t #

    (-) :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t #

    (*) :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t #

    negate :: TaggedTime tag t -> TaggedTime tag t #

    abs :: TaggedTime tag t -> TaggedTime tag t #

    signum :: TaggedTime tag t -> TaggedTime tag t #

    fromInteger :: Integer -> TaggedTime tag t #

    Time t => Show (TaggedTime String t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    (Time t, Show tag) => Show (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    showsPrec :: Int -> TaggedTime tag t -> ShowS #

    show :: TaggedTime tag t -> String #

    showList :: [TaggedTime tag t] -> ShowS #

    Default t => Default (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    def :: TaggedTime tag t #

    Eq t => Eq (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    (==) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    (/=) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    Ord t => Ord (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    compare :: TaggedTime tag t -> TaggedTime tag t -> Ordering #

    (<) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    (<=) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    (>) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    (>=) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    max :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t #

    min :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t #

    type Rep (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    type Rep (TaggedTime tag t) = D1 ('MetaData "TaggedTime" "NITTA.Model.Time" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TaggedTime" 'PrefixI 'True) (S1 ('MetaSel ('Just "tTag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe tag)) :*: S1 ('MetaSel ('Just "tClock") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 t)))

    Orphan instances

    ToJSON t => ToJSON (Interval t) Source # 
    Instance details

    \ No newline at end of file +NITTA.Model.Time
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2019
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.Model.Time

    Description

     
    Synopsis

    Documentation

    type VarValTime v x t = (Var v, Val x, Time t) Source #

    Shortcut for variable (v), value (x) and time (t) type constrains.

    type VarValTimeJSON v x t = (VarValTime v x t, ToJSONKey v, ToJSON v, ToJSON x, ToJSON t) Source #

    type Time t = (Default t, Num t, Bounded t, Ord t, Show t, Typeable t, Enum t, Integral t) Source #

    Shortcut for time type constrain.

    data TimeConstraint t Source #

    Time constrain for processor activity.

    Constructors

    TimeConstraint 

    Fields

    Instances

    Instances details
    ToJSON tp => ToJSON (TimeConstraint tp) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    toJSON :: TimeConstraint tp -> Value #

    toEncoding :: TimeConstraint tp -> Encoding #

    toJSONList :: [TimeConstraint tp] -> Value #

    toEncodingList :: [TimeConstraint tp] -> Encoding #

    Generic (TimeConstraint t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Associated Types

    type Rep (TimeConstraint t) :: Type -> Type #

    (Show t, Eq t, Bounded t) => Show (TimeConstraint t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Eq t => Eq (TimeConstraint t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    (ToString v, Time t) => Show (EndpointSt v (TimeConstraint t)) Source # 
    Instance details

    Defined in NITTA.Model.Problems.Endpoint

    ToSample (EndpointSt String (TimeConstraint Int)) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (DataflowSt tag v (TimeConstraint t)) (DataflowSt tag v (Interval t)) DataflowMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Dataflow

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float Source #

    type Rep (TimeConstraint t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    type Rep (TimeConstraint t) = D1 ('MetaData "TimeConstraint" "NITTA.Model.Time" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TimeConstraint" 'PrefixI 'True) (S1 ('MetaSel ('Just "tcAvailable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Interval t)) :*: S1 ('MetaSel ('Just "tcDuration") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Interval t))))

    data TaggedTime tag t Source #

    Forgoten implementation of tagged time for speculative if statement. Current - dead code.

    Constructors

    TaggedTime 

    Fields

    Instances

    Instances details
    Num t => Bounded (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    minBound :: TaggedTime tag t #

    maxBound :: TaggedTime tag t #

    Enum t => Enum (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    succ :: TaggedTime tag t -> TaggedTime tag t #

    pred :: TaggedTime tag t -> TaggedTime tag t #

    toEnum :: Int -> TaggedTime tag t #

    fromEnum :: TaggedTime tag t -> Int #

    enumFrom :: TaggedTime tag t -> [TaggedTime tag t] #

    enumFromThen :: TaggedTime tag t -> TaggedTime tag t -> [TaggedTime tag t] #

    enumFromTo :: TaggedTime tag t -> TaggedTime tag t -> [TaggedTime tag t] #

    enumFromThenTo :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t -> [TaggedTime tag t] #

    Generic (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Associated Types

    type Rep (TaggedTime tag t) :: Type -> Type #

    Methods

    from :: TaggedTime tag t -> Rep (TaggedTime tag t) x #

    to :: Rep (TaggedTime tag t) x -> TaggedTime tag t #

    (Num t, Show tag, Eq tag) => Num (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    (+) :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t #

    (-) :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t #

    (*) :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t #

    negate :: TaggedTime tag t -> TaggedTime tag t #

    abs :: TaggedTime tag t -> TaggedTime tag t #

    signum :: TaggedTime tag t -> TaggedTime tag t #

    fromInteger :: Integer -> TaggedTime tag t #

    Time t => Show (TaggedTime String t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    (Time t, Show tag) => Show (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    showsPrec :: Int -> TaggedTime tag t -> ShowS #

    show :: TaggedTime tag t -> String #

    showList :: [TaggedTime tag t] -> ShowS #

    Default t => Default (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    def :: TaggedTime tag t #

    Eq t => Eq (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    (==) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    (/=) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    Ord t => Ord (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    Methods

    compare :: TaggedTime tag t -> TaggedTime tag t -> Ordering #

    (<) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    (<=) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    (>) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    (>=) :: TaggedTime tag t -> TaggedTime tag t -> Bool #

    max :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t #

    min :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t #

    type Rep (TaggedTime tag t) Source # 
    Instance details

    Defined in NITTA.Model.Time

    type Rep (TaggedTime tag t) = D1 ('MetaData "TaggedTime" "NITTA.Model.Time" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TaggedTime" 'PrefixI 'True) (S1 ('MetaSel ('Just "tTag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe tag)) :*: S1 ('MetaSel ('Just "tClock") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 t)))

    Orphan instances

    ToJSON t => ToJSON (Interval t) Source # 
    Instance details

    Methods

    toJSON :: Interval t -> Value #

    toEncoding :: Interval t -> Encoding #

    toJSONList :: [Interval t] -> Value #

    toEncodingList :: [Interval t] -> Encoding #

    \ No newline at end of file diff --git a/haddock/nitta/NITTA-Project-TestBench.html b/haddock/nitta/NITTA-Project-TestBench.html index 9738e14a9..b5ccdaea7 100644 --- a/haddock/nitta/NITTA-Project-TestBench.html +++ b/haddock/nitta/NITTA-Project-TestBench.html @@ -3,4 +3,4 @@ process. You can see tests in test/Spec.hs. Testbench contains:

    • The sequence of control signals that implement the already scheduled process.
    • The sequence of bus state checks in which we compare actual values with the results of the functional simulation.
    Instance details

    Defined in NITTA.Model.ProcessorUnits.Multiplier

    (UnitTag tag, VarValTime v x t) => Testable (BusNetwork tag v x t) v x Source # 
    Instance details

    Defined in NITTA.Model.Networks.Bus

class IOTestBench pu v x | pu -> v x where Source #

Processor units with input/output ports should be tested by generation external input ports signals and checking output port signals.

Minimal complete definition

Nothing

Instances

Instances details
IOTestBench (PU v x t) v x Source # 
Instance details

Defined in NITTA.Model.Networks.Types

IOTestBench (Accum v x t) v x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Accum

IOTestBench (Broken v x t) v x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Broken

IOTestBench (Divider v x t) v x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Divider

IOTestBench (Fram v x t) v x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Fram

VarValTime v x t => IOTestBench (SPI v x t) v x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.IO.SPI

IOTestBench (Multiplier v x t) v x Source #

Empty implementation of IOTestBench class -means that multiplier, as expected, doesn't have any IO.

Instance details

Defined in NITTA.Model.ProcessorUnits.Multiplier

IOTestBench (Shift v x t) v x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Shift

data TestEnvironment v x Source #

Information required for testbench generation.

Constructors

TestEnvironment 

Fields

data TestbenchReport v x Source #

Instances

Instances details
(ToJSONKey v, ToJSON v, ToJSON x) => ToJSON (TestbenchReport v x) Source # 
Instance details

Defined in NITTA.UIBackend.ViewHelper

Generic (TestbenchReport v x) Source # 
Instance details

Defined in NITTA.Project.TestBench

Associated Types

type Rep (TestbenchReport v x) :: Type -> Type #

Methods

from :: TestbenchReport v x -> Rep (TestbenchReport v x) x0 #

to :: Rep (TestbenchReport v x) x0 -> TestbenchReport v x #

(ToString v, Show x) => Show (TestbenchReport v x) Source # 
Instance details

Defined in NITTA.Project.TestBench

ToSample (TestbenchReport String Int) Source # 
Instance details

Defined in NITTA.UIBackend.ViewHelper

type Rep (TestbenchReport v x) Source # 
Instance details

Defined in NITTA.Project.TestBench

type Rep (TestbenchReport v x) = D1 ('MetaData "TestbenchReport" "NITTA.Project.TestBench" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TestbenchReport" 'PrefixI 'True) (((S1 ('MetaSel ('Just "tbStatus") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "tbPath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath)) :*: (S1 ('MetaSel ('Just "tbFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "tbFunctions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text]))) :*: ((S1 ('MetaSel ('Just "tbSynthesisSteps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text]) :*: S1 ('MetaSel ('Just "tbCompilerDump") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "tbSimulationDump") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "tbFunctionalSimulationLog") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [HashMap v x]) :*: S1 ('MetaSel ('Just "tbLogicalSimulationLog") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [HashMap v x]))))))

testBenchTopModuleName :: (TargetSystemComponent m, Testable m v x) => Project m v x -> FilePath Source #

Get name of testbench top module.

verilogProjectFiles :: (TargetSystemComponent m, Testable m v x) => Project m v x -> [FilePath] Source #

Generate list of project verilog files (including testbench).

data SnippetTestBenchConf m Source #

Data Type for SnippetTestBench function

snippetTestBench :: forall m v x t. (WithFunctions m (F v x), ProcessorUnit m v x t, TargetSystemComponent m, UnambiguouslyDecode m, Typeable m, Show (Instruction m), Default (Microcode m)) => Project m v x -> SnippetTestBenchConf m -> Text Source #

Function for testBench PU test

\ No newline at end of file +means that multiplier, as expected, doesn't have any IO.

Instance details

Defined in NITTA.Model.ProcessorUnits.Multiplier

Methods

testEnvironmentInitFlag :: Text -> Multiplier v x t -> Maybe Text Source #

testEnvironment :: Text -> Multiplier v x t -> UnitEnv (Multiplier v x t) -> TestEnvironment v x -> Maybe Verilog Source #

IOTestBench (Shift v x t) v x Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Shift

Methods

testEnvironmentInitFlag :: Text -> Shift v x t -> Maybe Text Source #

testEnvironment :: Text -> Shift v x t -> UnitEnv (Shift v x t) -> TestEnvironment v x -> Maybe Verilog Source #

data TestEnvironment v x Source #

Information required for testbench generation.

Constructors

TestEnvironment 

Fields

data TestbenchReport v x Source #

Constructors

TestbenchReport 

Instances

Instances details
(ToJSONKey v, ToJSON v, ToJSON x) => ToJSON (TestbenchReport v x) Source # 
Instance details

Defined in NITTA.UIBackend.ViewHelper

Methods

toJSON :: TestbenchReport v x -> Value #

toEncoding :: TestbenchReport v x -> Encoding #

toJSONList :: [TestbenchReport v x] -> Value #

toEncodingList :: [TestbenchReport v x] -> Encoding #

Generic (TestbenchReport v x) Source # 
Instance details

Defined in NITTA.Project.TestBench

Associated Types

type Rep (TestbenchReport v x) :: Type -> Type #

Methods

from :: TestbenchReport v x -> Rep (TestbenchReport v x) x0 #

to :: Rep (TestbenchReport v x) x0 -> TestbenchReport v x #

(ToString v, Show x) => Show (TestbenchReport v x) Source # 
Instance details

Defined in NITTA.Project.TestBench

ToSample (TestbenchReport String Int) Source # 
Instance details

Defined in NITTA.UIBackend.ViewHelper

type Rep (TestbenchReport v x) Source # 
Instance details

Defined in NITTA.Project.TestBench

type Rep (TestbenchReport v x) = D1 ('MetaData "TestbenchReport" "NITTA.Project.TestBench" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TestbenchReport" 'PrefixI 'True) (((S1 ('MetaSel ('Just "tbStatus") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "tbPath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath)) :*: (S1 ('MetaSel ('Just "tbFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "tbFunctions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text]))) :*: ((S1 ('MetaSel ('Just "tbSynthesisSteps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text]) :*: S1 ('MetaSel ('Just "tbCompilerDump") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "tbSimulationDump") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "tbFunctionalSimulationLog") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [HashMap v x]) :*: S1 ('MetaSel ('Just "tbLogicalSimulationLog") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [HashMap v x]))))))

testBenchTopModuleName :: (TargetSystemComponent m, Testable m v x) => Project m v x -> FilePath Source #

Get name of testbench top module.

verilogProjectFiles :: (TargetSystemComponent m, Testable m v x) => Project m v x -> [FilePath] Source #

Generate list of project verilog files (including testbench).

data SnippetTestBenchConf m Source #

Data Type for SnippetTestBench function

Constructors

SnippetTestBenchConf 

snippetTestBench :: forall m v x t. (WithFunctions m (F v x), ProcessorUnit m v x t, TargetSystemComponent m, UnambiguouslyDecode m, Typeable m, Show (Instruction m), Default (Microcode m)) => Project m v x -> SnippetTestBenchConf m -> Text Source #

Function for testBench PU test

\ No newline at end of file diff --git a/haddock/nitta/NITTA-Project-Types.html b/haddock/nitta/NITTA-Project-Types.html index fde186457..c051d5c77 100644 --- a/haddock/nitta/NITTA-Project-Types.html +++ b/haddock/nitta/NITTA-Project-Types.html @@ -1,4 +1,4 @@ NITTA.Project.Types
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Aleksandr Penskoi 2019
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Project.Types

Description

 
Synopsis

Documentation

data Project m v x Source #

Target project for different purpose (testing, target system, etc). Should -be writable to disk.

Constructors

Project 

Fields

Instances

Instances details
Default x => DefaultX (Project m v x) x Source # 
Instance details

Defined in NITTA.Project.Types

Methods

defX :: Project m v x -> x Source #

class TargetSystemComponent pu where Source #

Type class for target components. Target -- a target system project or a testbench.

Methods

moduleName :: Text -> pu -> Text Source #

Name of the structural hardware module or Verilog module name (network or process unit)

software :: Text -> pu -> Implementation Source #

Software and other specification which depends on application algorithm

hardware :: Text -> pu -> Implementation Source #

Hardware which depends on microarchitecture description and requires synthesis.

hardwareInstance :: Text -> pu -> UnitEnv pu -> Verilog Source #

Generate code for making an instance of the hardware module

Instances

Instances details
TargetSystemComponent (PU v x t) Source # 
Instance details

Defined in NITTA.Model.Networks.Types

Methods

moduleName :: Text -> PU v x t -> Text Source #

software :: Text -> PU v x t -> Implementation Source #

hardware :: Text -> PU v x t -> Implementation Source #

hardwareInstance :: Text -> PU v x t -> UnitEnv (PU v x t) -> Verilog Source #

VarValTime v x t => TargetSystemComponent (Accum v x t) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Accum

VarValTime v x t => TargetSystemComponent (Broken v x t) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Broken

(Val x, Show t) => TargetSystemComponent (Divider v x t) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Divider

VarValTime v x t => TargetSystemComponent (Fram v x t) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.Fram

(ToJSON v, VarValTime v x t) => TargetSystemComponent (I2C v x t) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.IO.I2C

Methods

moduleName :: Text -> I2C v x t -> Text Source #

software :: Text -> I2C v x t -> Implementation Source #

hardware :: Text -> I2C v x t -> Implementation Source #

hardwareInstance :: Text -> I2C v x t -> UnitEnv (I2C v x t) -> Verilog Source #

(ToJSON v, VarValTime v x t) => TargetSystemComponent (SPI v x t) Source # 
Instance details

Defined in NITTA.Model.ProcessorUnits.IO.SPI

Methods

moduleName :: Text -> SPI v x t -> Text Source #

software :: Text -> SPI v x t -> Implementation Source #

hardware :: Text -> SPI v x t -> Implementation Source #

hardwareInstance :: Text -> SPI v x t -> UnitEnv (SPI v x t) -> Verilog Source #

VarValTime v x t => TargetSystemComponent (Multiplier v x t) Source #

Usage of PU requires some artifacts of a synthesis process:

GroupBindMetrics 

Fields

Instances

Instances details
ToJSON BindMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.Bind

Methods

toJSON :: BindMetrics -> Value #

toEncoding :: BindMetrics -> Encoding #

toJSONList :: [BindMetrics] -> Value #

toEncodingList :: [BindMetrics] -> Encoding #

Generic BindMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.Bind

Associated Types

type Rep BindMetrics :: Type -> Type #

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (Bind tag v x) (Bind tag v x) BindMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.Bind

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> [(Bind tag v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics -> Float Source #

type Rep BindMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.Bind

type Rep BindMetrics = D1 ('MetaData "BindMetrics" "NITTA.Synthesis.Steps.Bind" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "SingleBindMetrics" 'PrefixI 'True) (((S1 ('MetaSel ('Just "pCritical") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "pAlternative") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float)) :*: (S1 ('MetaSel ('Just "pRestless") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "pOutputNumber") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float))) :*: ((S1 ('MetaSel ('Just "pAllowDataFlow") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "pPossibleDeadlock") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :*: (S1 ('MetaSel ('Just "pNumberOfBoundFunctions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: (S1 ('MetaSel ('Just "pPercentOfBoundInputs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "pWave") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Float)))))) :+: C1 ('MetaCons "GroupBindMetrics" 'PrefixI 'True) ((S1 ('MetaSel ('Just "pOnlyObviousBinds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "pFunctionPercentInBinds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "pAvgBinds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float))) :*: (S1 ('MetaSel ('Just "pVarianceBinds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: (S1 ('MetaSel ('Just "pAvgUnitWorkload") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "pVarianceUnitWorkload") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float)))))

Orphan instances

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (Bind tag v x) (Bind tag v x) BindMetrics Source # 
Instance details

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> [(Bind tag v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics -> Float Source #

\ No newline at end of file diff --git a/haddock/nitta/NITTA-Synthesis-Steps-BreakLoop.html b/haddock/nitta/NITTA-Synthesis-Steps-BreakLoop.html index 5b6de01f2..99bfd5319 100644 --- a/haddock/nitta/NITTA-Synthesis-Steps-BreakLoop.html +++ b/haddock/nitta/NITTA-Synthesis-Steps-BreakLoop.html @@ -1 +1 @@ -NITTA.Synthesis.Steps.BreakLoop
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Aleksandr Penskoi 2021
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Synthesis.Steps.BreakLoop

Description

 

Documentation

data BreakLoopMetrics Source #

Constructors

BreakLoopMetrics 

Instances

Instances details
ToJSON BreakLoopMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.BreakLoop

Generic BreakLoopMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.BreakLoop

Associated Types

type Rep BreakLoopMetrics :: Type -> Type #

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (BreakLoop v x) (BreakLoop v x) BreakLoopMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.BreakLoop

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> [(BreakLoop v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics -> Float Source #

type Rep BreakLoopMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.BreakLoop

type Rep BreakLoopMetrics = D1 ('MetaData "BreakLoopMetrics" "NITTA.Synthesis.Steps.BreakLoop" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "BreakLoopMetrics" 'PrefixI 'False) (U1 :: Type -> Type))

Orphan instances

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (BreakLoop v x) (BreakLoop v x) BreakLoopMetrics Source # 
Instance details

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> [(BreakLoop v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics -> Float Source #

\ No newline at end of file +NITTA.Synthesis.Steps.BreakLoop
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Aleksandr Penskoi 2021
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Synthesis.Steps.BreakLoop

Description

 

Documentation

data BreakLoopMetrics Source #

Constructors

BreakLoopMetrics 

Instances

Instances details
ToJSON BreakLoopMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.BreakLoop

Methods

toJSON :: BreakLoopMetrics -> Value #

toEncoding :: BreakLoopMetrics -> Encoding #

toJSONList :: [BreakLoopMetrics] -> Value #

toEncodingList :: [BreakLoopMetrics] -> Encoding #

Generic BreakLoopMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.BreakLoop

Associated Types

type Rep BreakLoopMetrics :: Type -> Type #

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (BreakLoop v x) (BreakLoop v x) BreakLoopMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.BreakLoop

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> [(BreakLoop v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics -> Float Source #

type Rep BreakLoopMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.BreakLoop

type Rep BreakLoopMetrics = D1 ('MetaData "BreakLoopMetrics" "NITTA.Synthesis.Steps.BreakLoop" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "BreakLoopMetrics" 'PrefixI 'False) (U1 :: Type -> Type))

Orphan instances

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (BreakLoop v x) (BreakLoop v x) BreakLoopMetrics Source # 
Instance details

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> [(BreakLoop v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics -> Float Source #

\ No newline at end of file diff --git a/haddock/nitta/NITTA-Synthesis-Steps-ConstantFolding.html b/haddock/nitta/NITTA-Synthesis-Steps-ConstantFolding.html index 52eeeb69b..977437ec0 100644 --- a/haddock/nitta/NITTA-Synthesis-Steps-ConstantFolding.html +++ b/haddock/nitta/NITTA-Synthesis-Steps-ConstantFolding.html @@ -1 +1 @@ -NITTA.Synthesis.Steps.ConstantFolding
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Daniil Prohorov 2021
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Synthesis.Steps.ConstantFolding

Description

 

Documentation

data ConstantFoldingMetrics Source #

Instances

Instances details
ToJSON ConstantFoldingMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.ConstantFolding

Generic ConstantFoldingMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.ConstantFolding

Associated Types

type Rep ConstantFoldingMetrics :: Type -> Type #

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ConstantFolding v x) (ConstantFolding v x) ConstantFoldingMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.ConstantFolding

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> [(ConstantFolding v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics -> Float Source #

type Rep ConstantFoldingMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.ConstantFolding

type Rep ConstantFoldingMetrics = D1 ('MetaData "ConstantFoldingMetrics" "NITTA.Synthesis.Steps.ConstantFolding" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "ConstantFoldingMetrics" 'PrefixI 'False) (U1 :: Type -> Type))

Orphan instances

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ConstantFolding v x) (ConstantFolding v x) ConstantFoldingMetrics Source # 
Instance details

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> [(ConstantFolding v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics -> Float Source #

\ No newline at end of file +NITTA.Synthesis.Steps.ConstantFolding
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Daniil Prohorov 2021
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Synthesis.Steps.ConstantFolding

Description

 

Documentation

data ConstantFoldingMetrics Source #

Instances

Instances details
ToJSON ConstantFoldingMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.ConstantFolding

Generic ConstantFoldingMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.ConstantFolding

Associated Types

type Rep ConstantFoldingMetrics :: Type -> Type #

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ConstantFolding v x) (ConstantFolding v x) ConstantFoldingMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.ConstantFolding

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> [(ConstantFolding v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics -> Float Source #

type Rep ConstantFoldingMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.ConstantFolding

type Rep ConstantFoldingMetrics = D1 ('MetaData "ConstantFoldingMetrics" "NITTA.Synthesis.Steps.ConstantFolding" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "ConstantFoldingMetrics" 'PrefixI 'False) (U1 :: Type -> Type))

Orphan instances

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ConstantFolding v x) (ConstantFolding v x) ConstantFoldingMetrics Source # 
Instance details

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> [(ConstantFolding v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics -> Float Source #

\ No newline at end of file diff --git a/haddock/nitta/NITTA-Synthesis-Steps-Dataflow.html b/haddock/nitta/NITTA-Synthesis-Steps-Dataflow.html index 74f75288b..7d794c0d0 100644 --- a/haddock/nitta/NITTA-Synthesis-Steps-Dataflow.html +++ b/haddock/nitta/NITTA-Synthesis-Steps-Dataflow.html @@ -1,2 +1,2 @@ NITTA.Synthesis.Steps.Dataflow
nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
Copyright(c) Aleksandr Penskoi 2021
LicenseBSD3
Maintaineraleksandr.penskoi@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

NITTA.Synthesis.Steps.Dataflow

Description

 

Documentation

data DataflowMetrics Source #

Constructors

DataflowMetrics 

Fields

Instances

Instances details
ToJSON DataflowMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.Dataflow

Generic DataflowMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.Dataflow

Associated Types

type Rep DataflowMetrics :: Type -> Type #

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (DataflowSt tag v (TimeConstraint t)) (DataflowSt tag v (Interval t)) DataflowMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.Dataflow

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float Source #

type Rep DataflowMetrics Source # 
Instance details

Defined in NITTA.Synthesis.Steps.Dataflow

type Rep DataflowMetrics = D1 ('MetaData "DataflowMetrics" "NITTA.Synthesis.Steps.Dataflow" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "DataflowMetrics" 'PrefixI 'True) ((S1 ('MetaSel ('Just "pWaitTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "pRestrictedTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :*: (S1 ('MetaSel ('Just "pNotTransferableInputs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Float]) :*: S1 ('MetaSel ('Just "pFirstWaveOfTargetUse") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float))))

Orphan instances

(UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (DataflowSt tag v (TimeConstraint t)) (DataflowSt tag v (Interval t)) DataflowMetrics Source # 
Instance details

Methods

decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics Source #

estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float Source #

\ No newline at end of file + functions.

  • pFirstWaveOfTargetUse :: Float

    number of the first wave in which one of the target variables is used

  • Instances

    Instances details
    ToJSON DataflowMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Dataflow

    Methods

    toJSON :: DataflowMetrics -> Value #

    toEncoding :: DataflowMetrics -> Encoding #

    toJSONList :: [DataflowMetrics] -> Value #

    toEncodingList :: [DataflowMetrics] -> Encoding #

    Generic DataflowMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Dataflow

    Associated Types

    type Rep DataflowMetrics :: Type -> Type #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (DataflowSt tag v (TimeConstraint t)) (DataflowSt tag v (Interval t)) DataflowMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Dataflow

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float Source #

    type Rep DataflowMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Dataflow

    type Rep DataflowMetrics = D1 ('MetaData "DataflowMetrics" "NITTA.Synthesis.Steps.Dataflow" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "DataflowMetrics" 'PrefixI 'True) ((S1 ('MetaSel ('Just "pWaitTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "pRestrictedTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :*: (S1 ('MetaSel ('Just "pNotTransferableInputs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Float]) :*: S1 ('MetaSel ('Just "pFirstWaveOfTargetUse") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float))))

    Orphan instances

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (DataflowSt tag v (TimeConstraint t)) (DataflowSt tag v (Interval t)) DataflowMetrics Source # 
    Instance details

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float Source #

    \ No newline at end of file diff --git a/haddock/nitta/NITTA-Synthesis-Steps-OptimizeAccum.html b/haddock/nitta/NITTA-Synthesis-Steps-OptimizeAccum.html index ef39e9285..bb6dfcbaf 100644 --- a/haddock/nitta/NITTA-Synthesis-Steps-OptimizeAccum.html +++ b/haddock/nitta/NITTA-Synthesis-Steps-OptimizeAccum.html @@ -1 +1 @@ -NITTA.Synthesis.Steps.OptimizeAccum
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2021
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.Synthesis.Steps.OptimizeAccum

    Description

     

    Documentation

    data OptimizeAccumMetrics Source #

    Constructors

    OptimizeAccumMetrics 

    Instances

    Instances details
    ToJSON OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    Generic OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    Associated Types

    type Rep OptimizeAccumMetrics :: Type -> Type #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (OptimizeAccum v x) (OptimizeAccum v x) OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> [(OptimizeAccum v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics -> Float Source #

    type Rep OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    type Rep OptimizeAccumMetrics = D1 ('MetaData "OptimizeAccumMetrics" "NITTA.Synthesis.Steps.OptimizeAccum" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "OptimizeAccumMetrics" 'PrefixI 'False) (U1 :: Type -> Type))

    Orphan instances

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (OptimizeAccum v x) (OptimizeAccum v x) OptimizeAccumMetrics Source # 
    Instance details

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> [(OptimizeAccum v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics -> Float Source #

    \ No newline at end of file +NITTA.Synthesis.Steps.OptimizeAccum
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2021
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.Synthesis.Steps.OptimizeAccum

    Description

     

    Documentation

    data OptimizeAccumMetrics Source #

    Constructors

    OptimizeAccumMetrics 

    Instances

    Instances details
    ToJSON OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    Generic OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    Associated Types

    type Rep OptimizeAccumMetrics :: Type -> Type #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (OptimizeAccum v x) (OptimizeAccum v x) OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> [(OptimizeAccum v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics -> Float Source #

    type Rep OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    type Rep OptimizeAccumMetrics = D1 ('MetaData "OptimizeAccumMetrics" "NITTA.Synthesis.Steps.OptimizeAccum" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "OptimizeAccumMetrics" 'PrefixI 'False) (U1 :: Type -> Type))

    Orphan instances

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (OptimizeAccum v x) (OptimizeAccum v x) OptimizeAccumMetrics Source # 
    Instance details

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> [(OptimizeAccum v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics -> Float Source #

    \ No newline at end of file diff --git a/haddock/nitta/NITTA-Synthesis-Steps-ResolveDeadlock.html b/haddock/nitta/NITTA-Synthesis-Steps-ResolveDeadlock.html index 5be45aba9..9b9cf211c 100644 --- a/haddock/nitta/NITTA-Synthesis-Steps-ResolveDeadlock.html +++ b/haddock/nitta/NITTA-Synthesis-Steps-ResolveDeadlock.html @@ -1 +1 @@ -NITTA.Synthesis.Steps.ResolveDeadlock
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2021
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.Synthesis.Steps.ResolveDeadlock

    Description

     

    Documentation

    data ResolveDeadlockMetrics Source #

    Instances

    Instances details
    ToJSON ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    Generic ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    Associated Types

    type Rep ResolveDeadlockMetrics :: Type -> Type #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ResolveDeadlock v x) (ResolveDeadlock v x) ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> [(ResolveDeadlock v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics -> Float Source #

    type Rep ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    type Rep ResolveDeadlockMetrics = D1 ('MetaData "ResolveDeadlockMetrics" "NITTA.Synthesis.Steps.ResolveDeadlock" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "ResolveDeadlockMetrics" 'PrefixI 'True) (S1 ('MetaSel ('Just "pNumberOfLockedVariables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: (S1 ('MetaSel ('Just "pBufferCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "pNumberOfTransferableVariables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float))))

    Orphan instances

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ResolveDeadlock v x) (ResolveDeadlock v x) ResolveDeadlockMetrics Source # 
    Instance details

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> [(ResolveDeadlock v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics -> Float Source #

    \ No newline at end of file +NITTA.Synthesis.Steps.ResolveDeadlock
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2021
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.Synthesis.Steps.ResolveDeadlock

    Description

     

    Documentation

    data ResolveDeadlockMetrics Source #

    Instances

    Instances details
    ToJSON ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    Generic ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    Associated Types

    type Rep ResolveDeadlockMetrics :: Type -> Type #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ResolveDeadlock v x) (ResolveDeadlock v x) ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> [(ResolveDeadlock v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics -> Float Source #

    type Rep ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    type Rep ResolveDeadlockMetrics = D1 ('MetaData "ResolveDeadlockMetrics" "NITTA.Synthesis.Steps.ResolveDeadlock" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "ResolveDeadlockMetrics" 'PrefixI 'True) (S1 ('MetaSel ('Just "pNumberOfLockedVariables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: (S1 ('MetaSel ('Just "pBufferCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "pNumberOfTransferableVariables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float))))

    Orphan instances

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ResolveDeadlock v x) (ResolveDeadlock v x) ResolveDeadlockMetrics Source # 
    Instance details

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> [(ResolveDeadlock v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics -> Float Source #

    \ No newline at end of file diff --git a/haddock/nitta/NITTA-Synthesis-Types.html b/haddock/nitta/NITTA-Synthesis-Types.html index f489acf7a..f0727bfb6 100644 --- a/haddock/nitta/NITTA-Synthesis-Types.html +++ b/haddock/nitta/NITTA-Synthesis-Types.html @@ -5,10 +5,10 @@ mutable structure implemented by TVar.

    From this point of view, the synthesis process is a finding of the best tree leaf (lowest process duration for finished synthesis), and the best synthesis method - a method which directly walks over the tree to the best leaf without -wrong steps.

    Synopsis

    Documentation

    class SynthesisDecisionCls ctx m o d p | ctx o -> m d p where Source #

    Methods

    decisions :: ctx -> o -> [(d, m)] Source #

    parameters :: ctx -> o -> d -> p Source #

    estimate :: ctx -> o -> d -> p -> Float Source #

    Instances

    Instances details
    UnitTag tag => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (Allocation tag) (Allocation tag) AllocationMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Allocation

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> [(Allocation tag, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> Allocation tag -> AllocationMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> Allocation tag -> AllocationMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (BreakLoop v x) (BreakLoop v x) BreakLoopMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.BreakLoop

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> [(BreakLoop v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ConstantFolding v x) (ConstantFolding v x) ConstantFoldingMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ConstantFolding

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> [(ConstantFolding v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (OptimizeAccum v x) (OptimizeAccum v x) OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> [(OptimizeAccum v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ResolveDeadlock v x) (ResolveDeadlock v x) ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> [(ResolveDeadlock v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (Bind tag v x) (Bind tag v x) BindMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Bind

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> [(Bind tag v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (DataflowSt tag v (TimeConstraint t)) (DataflowSt tag v (Interval t)) DataflowMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Dataflow

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float Source #

    data Tree m tag v x t Source #

    Synthesis tree

    Constructors

    Tree 

    Fields

    Instances

    Instances details
    (UnitTag tag, VarValTimeJSON v x t) => Viewable (DefTree tag v x t) (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: DefTree tag v x t -> NodeView tag v x t Source #

    data SynthesisDecision ctx m where Source #

    Constructors

    Root :: SynthesisDecision ctx m 
    SynthesisDecision 

    Fields

    data SynthesisState m tag v x t Source #

    Constructors

    SynthesisState 

    Fields

    Synopsis

    Documentation

    class SynthesisDecisionCls ctx m o d p | ctx o -> m d p where Source #

    Methods

    decisions :: ctx -> o -> [(d, m)] Source #

    parameters :: ctx -> o -> d -> p Source #

    estimate :: ctx -> o -> d -> p -> Float Source #

    Instances

    Instances details
    UnitTag tag => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (Allocation tag) (Allocation tag) AllocationMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Allocation

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> [(Allocation tag, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> Allocation tag -> AllocationMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> Allocation tag -> AllocationMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (BreakLoop v x) (BreakLoop v x) BreakLoopMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.BreakLoop

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> [(BreakLoop v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ConstantFolding v x) (ConstantFolding v x) ConstantFoldingMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ConstantFolding

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> [(ConstantFolding v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (OptimizeAccum v x) (OptimizeAccum v x) OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> [(OptimizeAccum v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ResolveDeadlock v x) (ResolveDeadlock v x) ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> [(ResolveDeadlock v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (Bind tag v x) (Bind tag v x) BindMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Bind

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> [(Bind tag v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (DataflowSt tag v (TimeConstraint t)) (DataflowSt tag v (Interval t)) DataflowMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Dataflow

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float Source #

    data Tree m tag v x t Source #

    Synthesis tree

    Constructors

    Tree 

    Fields

    Instances

    Instances details
    (UnitTag tag, VarValTimeJSON v x t) => Viewable (DefTree tag v x t) (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: DefTree tag v x t -> NodeView tag v x t Source #

    data SynthesisDecision ctx m where Source #

    Constructors

    Root :: SynthesisDecision ctx m 
    SynthesisDecision 

    Fields

    data SynthesisState m tag v x t Source #

    Constructors

    SynthesisState 

    Fields

    Instances

    Instances details
    UnitTag tag => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (Allocation tag) (Allocation tag) AllocationMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Allocation

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> [(Allocation tag, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> Allocation tag -> AllocationMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> Allocation tag -> AllocationMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (BreakLoop v x) (BreakLoop v x) BreakLoopMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.BreakLoop

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> [(BreakLoop v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ConstantFolding v x) (ConstantFolding v x) ConstantFoldingMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ConstantFolding

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> [(ConstantFolding v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (OptimizeAccum v x) (OptimizeAccum v x) OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> [(OptimizeAccum v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ResolveDeadlock v x) (ResolveDeadlock v x) ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> [(ResolveDeadlock v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (Bind tag v x) (Bind tag v x) BindMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Bind

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> [(Bind tag v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (DataflowSt tag v (TimeConstraint t)) (DataflowSt tag v (Interval t)) DataflowMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Dataflow

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float Source #

    type SynthesisMethodConstraints tag v x t = (VarValTimeJSON v x t, ToJSON tag, UnitTag tag) Source #

    Shortcut for constraints in signatures of synthesis method functions. + synthesis step

  • unitWorkloadInFunction :: Map tag Int

    dictionary with number of bound functions for each unit

  • Instances

    Instances details
    UnitTag tag => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (Allocation tag) (Allocation tag) AllocationMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Allocation

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> [(Allocation tag, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> Allocation tag -> AllocationMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> Allocation tag -> AllocationMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (BreakLoop v x) (BreakLoop v x) BreakLoopMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.BreakLoop

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> [(BreakLoop v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ConstantFolding v x) (ConstantFolding v x) ConstantFoldingMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ConstantFolding

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> [(ConstantFolding v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (OptimizeAccum v x) (OptimizeAccum v x) OptimizeAccumMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.OptimizeAccum

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> [(OptimizeAccum v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (ResolveDeadlock v x) (ResolveDeadlock v x) ResolveDeadlockMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.ResolveDeadlock

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> [(ResolveDeadlock v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (Bind tag v x) (Bind tag v x) BindMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Bind

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> [(Bind tag v x, TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics -> Float Source #

    (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) (DataflowSt tag v (TimeConstraint t)) (DataflowSt tag v (Interval t)) DataflowMetrics Source # 
    Instance details

    Defined in NITTA.Synthesis.Steps.Dataflow

    Methods

    decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] Source #

    parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics Source #

    estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float Source #

    type SynthesisMethodConstraints tag v x t = (VarValTimeJSON v x t, ToJSON tag, UnitTag tag) Source #

    Shortcut for constraints in signatures of synthesis method functions. This used to be (VarValTime v x t, UnitTag tag). See below for more info.

    newtype Sid Source #

    Synthesis node ID. ID is a relative path, encoded as a sequence of an option -index.

    Constructors

    Sid [Int] 

    Instances

    Instances details
    ToJSON Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Monoid Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Methods

    mempty :: Sid #

    mappend :: Sid -> Sid -> Sid #

    mconcat :: [Sid] -> Sid #

    Semigroup Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Methods

    (<>) :: Sid -> Sid -> Sid #

    sconcat :: NonEmpty Sid -> Sid #

    stimes :: Integral b => b -> Sid -> Sid #

    Read Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Show Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Methods

    showsPrec :: Int -> Sid -> ShowS #

    show :: Sid -> String #

    showList :: [Sid] -> ShowS #

    Default Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Methods

    def :: Sid #

    FromHttpApiData Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    ToSample Sid Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    Methods

    toSamples :: Proxy Sid -> [(Text, Sid)] #

    ToCapture (Capture "sid" Sid) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    Methods

    toCapture :: Proxy (Capture "sid" Sid) -> DocCapture #

    type DefTree tag v x t = Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t Source #

    Default synthesis tree type.

    type SynthesisMethod tag v x t = DefTree tag v x t -> IO (DefTree tag v x t) Source #

    The synthesis method is a function, which manipulates a synthesis tree. It +index.

    Constructors

    Sid [Int] 

    Instances

    Instances details
    ToJSON Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Methods

    toJSON :: Sid -> Value #

    toEncoding :: Sid -> Encoding #

    toJSONList :: [Sid] -> Value #

    toEncodingList :: [Sid] -> Encoding #

    Monoid Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Methods

    mempty :: Sid #

    mappend :: Sid -> Sid -> Sid #

    mconcat :: [Sid] -> Sid #

    Semigroup Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Methods

    (<>) :: Sid -> Sid -> Sid #

    sconcat :: NonEmpty Sid -> Sid #

    stimes :: Integral b => b -> Sid -> Sid #

    Read Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Show Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Methods

    showsPrec :: Int -> Sid -> ShowS #

    show :: Sid -> String #

    showList :: [Sid] -> ShowS #

    Default Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    Methods

    def :: Sid #

    FromHttpApiData Sid Source # 
    Instance details

    Defined in NITTA.Synthesis.Types

    ToSample Sid Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    Methods

    toSamples :: Proxy Sid -> [(Text, Sid)] #

    ToCapture (Capture "sid" Sid) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    Methods

    toCapture :: Proxy (Capture "sid" Sid) -> DocCapture #

    type DefTree tag v x t = Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t Source #

    Default synthesis tree type.

    type SynthesisMethod tag v x t = DefTree tag v x t -> IO (DefTree tag v x t) Source #

    The synthesis method is a function, which manipulates a synthesis tree. It receives a node and explores it deeply by IO.

    (<?>) :: Num p => Bool -> p -> p Source #

    targetUnit :: Tree (TargetSystem c tag v x t) tag v x t -> c Source #

    targetDFG :: Tree (TargetSystem u tag v x t) tag v x t -> DataFlowGraph v x Source #

    defScore :: SynthesisDecision ctx m -> Float Source #

    mlScoreKeyPrefix :: IsString a => a Source #

    \ No newline at end of file diff --git a/haddock/nitta/NITTA-UIBackend-REST.html b/haddock/nitta/NITTA-UIBackend-REST.html index 3a1c1da85..d3bee7a73 100644 --- a/haddock/nitta/NITTA-UIBackend-REST.html +++ b/haddock/nitta/NITTA-UIBackend-REST.html @@ -1,2 +1,2 @@ -NITTA.UIBackend.REST
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2021
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.UIBackend.REST

    Description

     

    Documentation

    type SynthesisAPI tag v x t = (Description "Get whole synthesis tree" :> ("synthesisTree" :> Get '[JSON] (TreeView ShortNodeView))) :<|> ((Description "Get synthesis tree info" :> ("treeInfo" :> Get '[JSON] TreeInfo)) :<|> ("node" :> (Capture "sid" Sid :> (SynthesisTreeNavigationAPI tag v x t :<|> (NodeInspectionAPI tag v x t :<|> (TestBenchAPI v x :<|> (SynthesisMethodsAPI tag v x t :<|> SynthesisPracticesAPI tag v x t))))))) Source #

    synthesisServer :: (UnitTag tag2, Bounded b, Hashable v, Suffix v, Val x, ToJSONKey v, Label v, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, Show b, Default b, Integral b, ToJSON v, ToJSON b, ToJSON tag2, Typeable b, Typeable v, Ord v, ToString v, IsString v) => BackendCtx tag2 v x b -> m (TreeView ShortNodeView) :<|> (m TreeInfo :<|> (Sid -> (m [NodeView tag2 v x b] :<|> (m (Maybe (NodeView tag2 v x b)) :<|> m [NodeView tag2 v x b])) :<|> ((m (NodeView tag2 v x b) :<|> (m (GraphStructure GraphEdge) :<|> (m (ProcessTimelines b) :<|> (m (Process b StepInfoView) :<|> ((tag2 -> m (Process b StepInfoView)) :<|> (m [UnitEndpoints tag2 v b] :<|> (m (MicroarchitectureDesc tag2) :<|> m (Debug tag2 v b)))))))) :<|> ((String -> Int -> m (TestbenchReport v x)) :<|> ((m Sid :<|> (m Sid :<|> m Sid)) :<|> (m Sid :<|> (m Sid :<|> (m Sid :<|> (Int -> m Sid))))))))) Source #

    data BackendCtx tag v x t Source #

    Constructors

    BackendCtx 

    Fields

    Instances

    Instances details
    Default (BackendCtx tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Types

    Methods

    def :: BackendCtx tag v x t #

    data UnitEndpoints tag v t Source #

    Constructors

    UnitEndpoints 

    Fields

    Instances

    Instances details
    (ToJSON tag, ToJSON t, ToJSON v, Time t) => ToJSON (UnitEndpoints tag v t) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    Generic (UnitEndpoints tag v t) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    Associated Types

    type Rep (UnitEndpoints tag v t) :: Type -> Type #

    Methods

    from :: UnitEndpoints tag v t -> Rep (UnitEndpoints tag v t) x #

    to :: Rep (UnitEndpoints tag v t) x -> UnitEndpoints tag v t #

    ToSample (UnitEndpoints String String Int) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    type Rep (UnitEndpoints tag v t) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    type Rep (UnitEndpoints tag v t) = D1 ('MetaData "UnitEndpoints" "NITTA.UIBackend.REST" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "UnitEndpoints" 'PrefixI 'True) (S1 ('MetaSel ('Just "unitTag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tag) :*: S1 ('MetaSel ('Just "unitEndpoints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [EndpointSt v (TimeConstraint t)])))

    Orphan instances

    ToSample Sid Source # 
    Instance details

    Methods

    toSamples :: Proxy Sid -> [(Text, Sid)] #

    ToSample Char Source # 
    Instance details

    Methods

    toSamples :: Proxy Char -> [(Text, Char)] #

    ToCapture (Capture "sid" Sid) Source # 
    Instance details

    Methods

    toCapture :: Proxy (Capture "sid" Sid) -> DocCapture #

    ToCapture (Capture "tag" tag :: Type) Source # 
    Instance details

    Methods

    toCapture :: Proxy (Capture "tag" tag) -> DocCapture #

    ToParam (QueryParam' mods "deep" Int :: Type) Source # 
    Instance details

    Methods

    toParam :: Proxy (QueryParam' mods "deep" Int) -> DocQueryParam #

    ToParam (QueryParam' mods "loopsNumber" Int :: Type) Source # 
    Instance details

    Methods

    toParam :: Proxy (QueryParam' mods "loopsNumber" Int) -> DocQueryParam #

    ToParam (QueryParam' mods "pName" String :: Type) Source # 
    Instance details

    Methods

    toParam :: Proxy (QueryParam' mods "pName" String) -> DocQueryParam #

    UnitTag tag => ToSample (Lock tag) Source # 
    Instance details

    Methods

    toSamples :: Proxy (Lock tag) -> [(Text, Lock tag)] #

    UnitTag tag => ToSample (MicroarchitectureDesc tag) Source # 
    Instance details

    UnitTag tag => ToSample [(Text, [Lock tag])] Source # 
    Instance details

    Methods

    toSamples :: Proxy [(Text, [Lock tag])] -> [(Text, [(Text, [Lock tag])])] #

    ToSample (EndpointSt String (TimeConstraint Int)) Source # 
    Instance details

    Time t => ToSample (Process t StepInfoView) Source # 
    Instance details

    \ No newline at end of file +NITTA.UIBackend.REST
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2021
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.UIBackend.REST

    Description

     

    Documentation

    type SynthesisAPI tag v x t = (Description "Get whole synthesis tree" :> ("synthesisTree" :> Get '[JSON] (TreeView ShortNodeView))) :<|> ((Description "Get synthesis tree info" :> ("treeInfo" :> Get '[JSON] TreeInfo)) :<|> ("node" :> (Capture "sid" Sid :> (SynthesisTreeNavigationAPI tag v x t :<|> (NodeInspectionAPI tag v x t :<|> (TestBenchAPI v x :<|> (SynthesisMethodsAPI tag v x t :<|> SynthesisPracticesAPI tag v x t))))))) Source #

    synthesisServer :: (UnitTag tag2, Bounded b, Hashable v, Suffix v, Val x, ToJSONKey v, Label v, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, Show b, Default b, Integral b, ToJSON v, ToJSON b, ToJSON tag2, Typeable b, Typeable v, Ord v, ToString v, IsString v) => BackendCtx tag2 v x b -> m (TreeView ShortNodeView) :<|> (m TreeInfo :<|> (Sid -> (m [NodeView tag2 v x b] :<|> (m (Maybe (NodeView tag2 v x b)) :<|> m [NodeView tag2 v x b])) :<|> ((m (NodeView tag2 v x b) :<|> (m (GraphStructure GraphEdge) :<|> (m (ProcessTimelines b) :<|> (m (Process b StepInfoView) :<|> ((tag2 -> m (Process b StepInfoView)) :<|> (m [UnitEndpoints tag2 v b] :<|> (m (MicroarchitectureDesc tag2) :<|> m (Debug tag2 v b)))))))) :<|> ((String -> Int -> m (TestbenchReport v x)) :<|> ((m Sid :<|> (m Sid :<|> m Sid)) :<|> (m Sid :<|> (m Sid :<|> (m Sid :<|> (Int -> m Sid))))))))) Source #

    data BackendCtx tag v x t Source #

    Constructors

    BackendCtx 

    Fields

    Instances

    Instances details
    Default (BackendCtx tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Types

    Methods

    def :: BackendCtx tag v x t #

    data UnitEndpoints tag v t Source #

    Constructors

    UnitEndpoints 

    Fields

    Instances

    Instances details
    (ToJSON tag, ToJSON t, ToJSON v, Time t) => ToJSON (UnitEndpoints tag v t) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    Methods

    toJSON :: UnitEndpoints tag v t -> Value #

    toEncoding :: UnitEndpoints tag v t -> Encoding #

    toJSONList :: [UnitEndpoints tag v t] -> Value #

    toEncodingList :: [UnitEndpoints tag v t] -> Encoding #

    Generic (UnitEndpoints tag v t) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    Associated Types

    type Rep (UnitEndpoints tag v t) :: Type -> Type #

    Methods

    from :: UnitEndpoints tag v t -> Rep (UnitEndpoints tag v t) x #

    to :: Rep (UnitEndpoints tag v t) x -> UnitEndpoints tag v t #

    ToSample (UnitEndpoints String String Int) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    type Rep (UnitEndpoints tag v t) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    type Rep (UnitEndpoints tag v t) = D1 ('MetaData "UnitEndpoints" "NITTA.UIBackend.REST" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "UnitEndpoints" 'PrefixI 'True) (S1 ('MetaSel ('Just "unitTag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tag) :*: S1 ('MetaSel ('Just "unitEndpoints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [EndpointSt v (TimeConstraint t)])))

    Orphan instances

    ToSample Sid Source # 
    Instance details

    Methods

    toSamples :: Proxy Sid -> [(Text, Sid)] #

    ToSample Char Source # 
    Instance details

    Methods

    toSamples :: Proxy Char -> [(Text, Char)] #

    ToCapture (Capture "sid" Sid) Source # 
    Instance details

    Methods

    toCapture :: Proxy (Capture "sid" Sid) -> DocCapture #

    ToCapture (Capture "tag" tag :: Type) Source # 
    Instance details

    Methods

    toCapture :: Proxy (Capture "tag" tag) -> DocCapture #

    ToParam (QueryParam' mods "deep" Int :: Type) Source # 
    Instance details

    Methods

    toParam :: Proxy (QueryParam' mods "deep" Int) -> DocQueryParam #

    ToParam (QueryParam' mods "loopsNumber" Int :: Type) Source # 
    Instance details

    Methods

    toParam :: Proxy (QueryParam' mods "loopsNumber" Int) -> DocQueryParam #

    ToParam (QueryParam' mods "pName" String :: Type) Source # 
    Instance details

    Methods

    toParam :: Proxy (QueryParam' mods "pName" String) -> DocQueryParam #

    UnitTag tag => ToSample (Lock tag) Source # 
    Instance details

    Methods

    toSamples :: Proxy (Lock tag) -> [(Text, Lock tag)] #

    UnitTag tag => ToSample (MicroarchitectureDesc tag) Source # 
    Instance details

    UnitTag tag => ToSample [(Text, [Lock tag])] Source # 
    Instance details

    Methods

    toSamples :: Proxy [(Text, [Lock tag])] -> [(Text, [(Text, [Lock tag])])] #

    ToSample (EndpointSt String (TimeConstraint Int)) Source # 
    Instance details

    Time t => ToSample (Process t StepInfoView) Source # 
    Instance details

    \ No newline at end of file diff --git a/haddock/nitta/NITTA-UIBackend-Timeline.html b/haddock/nitta/NITTA-UIBackend-Timeline.html index 03f7116fd..0b03aa7ff 100644 --- a/haddock/nitta/NITTA-UIBackend-Timeline.html +++ b/haddock/nitta/NITTA-UIBackend-Timeline.html @@ -1 +1 @@ -NITTA.UIBackend.Timeline
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2019
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.UIBackend.Timeline

    Description

     

    Documentation

    data ViewPointID Source #

    Instances

    Instances details
    ToJSON ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Generic ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Associated Types

    type Rep ViewPointID :: Type -> Type #

    Show ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Eq ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Ord ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep ViewPointID = D1 ('MetaData "ViewPointID" "NITTA.UIBackend.Timeline" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "ViewPointID" 'PrefixI 'True) (S1 ('MetaSel ('Just "level") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "component") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String])))

    data TimelinePoint t Source #

    Instances

    Instances details
    (Time t, ToJSON t) => ToJSON (TimelinePoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Generic (TimelinePoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Associated Types

    type Rep (TimelinePoint t) :: Type -> Type #

    Time t => Show [TimelinePoint t] Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep (TimelinePoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep (TimelinePoint t) = D1 ('MetaData "TimelinePoint" "NITTA.UIBackend.Timeline" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TimelinePoint" 'PrefixI 'True) (S1 ('MetaSel ('Just "pID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProcessStepID) :*: (S1 ('MetaSel ('Just "pTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Interval t)) :*: S1 ('MetaSel ('Just "pInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String))))

    data ProcessTimelines t Source #

    Instances

    Instances details
    (Time t, ToJSON t) => ToJSON (ProcessTimelines t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Generic (ProcessTimelines t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Associated Types

    type Rep (ProcessTimelines t) :: Type -> Type #

    Time t => Show (ProcessTimelines t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    ToSample (ProcessTimelines Int) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep (ProcessTimelines t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep (ProcessTimelines t) = D1 ('MetaData "ProcessTimelines" "NITTA.UIBackend.Timeline" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "ProcessTimelines" 'PrefixI 'True) (S1 ('MetaSel ('Just "timelines") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TimelineWithViewPoint t]) :*: S1 ('MetaSel ('Just "verticalRelations") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(ProcessStepID, ProcessStepID)])))

    data TimelineWithViewPoint t Source #

    Instances

    Instances details
    (Time t, ToJSON t) => ToJSON (TimelineWithViewPoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Generic (TimelineWithViewPoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Associated Types

    type Rep (TimelineWithViewPoint t) :: Type -> Type #

    type Rep (TimelineWithViewPoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep (TimelineWithViewPoint t) = D1 ('MetaData "TimelineWithViewPoint" "NITTA.UIBackend.Timeline" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TimelineWithViewPoint" 'PrefixI 'True) (S1 ('MetaSel ('Just "timelineViewpoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ViewPointID) :*: S1 ('MetaSel ('Just "timelinePoints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [[TimelinePoint t]])))
    \ No newline at end of file +NITTA.UIBackend.Timeline
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2019
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.UIBackend.Timeline

    Description

     

    Documentation

    data ViewPointID Source #

    Instances

    Instances details
    ToJSON ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Methods

    toJSON :: ViewPointID -> Value #

    toEncoding :: ViewPointID -> Encoding #

    toJSONList :: [ViewPointID] -> Value #

    toEncodingList :: [ViewPointID] -> Encoding #

    Generic ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Associated Types

    type Rep ViewPointID :: Type -> Type #

    Show ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Eq ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Ord ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep ViewPointID Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep ViewPointID = D1 ('MetaData "ViewPointID" "NITTA.UIBackend.Timeline" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "ViewPointID" 'PrefixI 'True) (S1 ('MetaSel ('Just "level") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "component") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String])))

    data TimelinePoint t Source #

    Instances

    Instances details
    (Time t, ToJSON t) => ToJSON (TimelinePoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Methods

    toJSON :: TimelinePoint t -> Value #

    toEncoding :: TimelinePoint t -> Encoding #

    toJSONList :: [TimelinePoint t] -> Value #

    toEncodingList :: [TimelinePoint t] -> Encoding #

    Generic (TimelinePoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Associated Types

    type Rep (TimelinePoint t) :: Type -> Type #

    Time t => Show [TimelinePoint t] Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep (TimelinePoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep (TimelinePoint t) = D1 ('MetaData "TimelinePoint" "NITTA.UIBackend.Timeline" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TimelinePoint" 'PrefixI 'True) (S1 ('MetaSel ('Just "pID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProcessStepID) :*: (S1 ('MetaSel ('Just "pTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Interval t)) :*: S1 ('MetaSel ('Just "pInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String))))

    data ProcessTimelines t Source #

    Instances

    Instances details
    (Time t, ToJSON t) => ToJSON (ProcessTimelines t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Methods

    toJSON :: ProcessTimelines t -> Value #

    toEncoding :: ProcessTimelines t -> Encoding #

    toJSONList :: [ProcessTimelines t] -> Value #

    toEncodingList :: [ProcessTimelines t] -> Encoding #

    Generic (ProcessTimelines t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Associated Types

    type Rep (ProcessTimelines t) :: Type -> Type #

    Time t => Show (ProcessTimelines t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    ToSample (ProcessTimelines Int) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep (ProcessTimelines t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep (ProcessTimelines t) = D1 ('MetaData "ProcessTimelines" "NITTA.UIBackend.Timeline" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "ProcessTimelines" 'PrefixI 'True) (S1 ('MetaSel ('Just "timelines") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TimelineWithViewPoint t]) :*: S1 ('MetaSel ('Just "verticalRelations") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(ProcessStepID, ProcessStepID)])))

    data TimelineWithViewPoint t Source #

    Instances

    Instances details
    (Time t, ToJSON t) => ToJSON (TimelineWithViewPoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Generic (TimelineWithViewPoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    Associated Types

    type Rep (TimelineWithViewPoint t) :: Type -> Type #

    type Rep (TimelineWithViewPoint t) Source # 
    Instance details

    Defined in NITTA.UIBackend.Timeline

    type Rep (TimelineWithViewPoint t) = D1 ('MetaData "TimelineWithViewPoint" "NITTA.UIBackend.Timeline" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TimelineWithViewPoint" 'PrefixI 'True) (S1 ('MetaSel ('Just "timelineViewpoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ViewPointID) :*: S1 ('MetaSel ('Just "timelinePoints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [[TimelinePoint t]])))
    \ No newline at end of file diff --git a/haddock/nitta/NITTA-UIBackend-ViewHelper.html b/haddock/nitta/NITTA-UIBackend-ViewHelper.html index 09fb25b41..d91cf9410 100644 --- a/haddock/nitta/NITTA-UIBackend-ViewHelper.html +++ b/haddock/nitta/NITTA-UIBackend-ViewHelper.html @@ -1,5 +1,5 @@ NITTA.UIBackend.ViewHelper
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2021
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.UIBackend.ViewHelper

    Description

    We can not autogenerate ToJSON implementation for some types, so we add helper -types for doing that automatically. Why do we need to generate ToJSON +types for doing that automatically. Why do we need to generate ToJSON automatically? We don't want to achieve consistency between client and server -manually.

    Synopsis

    Documentation

    data FView Source #

    Helper for JSON serialization

    Constructors

    FView 

    Fields

    Instances

    Instances details
    ToJSON FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    Generic FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    Associated Types

    type Rep FView :: Type -> Type #

    Methods

    from :: FView -> Rep FView x #

    to :: Rep FView x -> FView #

    Show FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    Methods

    showsPrec :: Int -> FView -> ShowS #

    show :: FView -> String #

    showList :: [FView] -> ShowS #

    Viewable (F v x) FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    Methods

    view :: F v x -> FView Source #

    type Rep FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    type Rep FView = D1 ('MetaData "FView" "NITTA.Intermediate.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "FView" 'PrefixI 'True) (S1 ('MetaSel ('Just "fvFun") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "fvHistory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text])))

    class Viewable t v | t -> v where Source #

    Type class of helpers required for autogeneration of ToJSON and typescript - types.

    Methods

    view :: t -> v Source #

    Instances

    Instances details
    Time t => Viewable (Interval t) IntervalView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    UnitTag tag => Viewable (Allocation tag) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Viewable (F v x) FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    Methods

    view :: F v x -> FView Source #

    (Var v, Val x) => Viewable (BreakLoop v x) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Viewable (ConstantFolding v x) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Viewable (OptimizeAccum v x) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Var v => Viewable (ResolveDeadlock v x) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    (Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: Process t (StepInfo v x t) -> Process t StepInfoView Source #

    UnitTag tag => Viewable (Bind tag v x) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Methods

    view :: Bind tag v x -> DecisionView Source #

    (UnitTag tag, Var v, Time t) => Viewable (DataflowSt tag v (Interval t)) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Methods

    view :: DataflowSt tag v (Interval t) -> DecisionView Source #

    (Var v, Time t) => Viewable (StepInfo v x t) StepInfoView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: StepInfo v x t -> StepInfoView Source #

    (UnitTag tag, VarValTimeJSON v x t) => Viewable (DefTree tag v x t) (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: DefTree tag v x t -> NodeView tag v x t Source #

    viewNodeTree :: (Enum b, Num b, NextTick u b) => Tree (TargetSystem u tag v x t) tag v x t -> IO (TreeView ShortNodeView) Source #

    data TreeView a Source #

    Instances

    Instances details
    ToJSON a => ToJSON (TreeView a) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Generic (TreeView a) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Associated Types

    type Rep (TreeView a) :: Type -> Type #

    Methods

    from :: TreeView a -> Rep (TreeView a) x #

    to :: Rep (TreeView a) x -> TreeView a #

    Show a => Show (TreeView a) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    showsPrec :: Int -> TreeView a -> ShowS #

    show :: TreeView a -> String #

    showList :: [TreeView a] -> ShowS #

    ToSample (TreeView ShortNodeView) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    type Rep (TreeView a) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    type Rep (TreeView a) = D1 ('MetaData "TreeView" "NITTA.UIBackend.ViewHelper" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TreeNodeView" 'PrefixI 'True) (S1 ('MetaSel ('Just "rootLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "subForest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TreeView a])))

    data ShortNodeView Source #

    Instances

    Instances details
    ToJSON ShortNodeView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Generic ShortNodeView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Associated Types

    type Rep ShortNodeView :: Type -> Type #

    Show ShortNodeView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    ToSample (TreeView ShortNodeView) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    type Rep ShortNodeView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    data NodeView tag v x t Source #

    Instances

    Instances details
    (VarValTimeJSON v x t, ToJSON tag) => ToJSON (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    toJSON :: NodeView tag v x t -> Value #

    toEncoding :: NodeView tag v x t -> Encoding #

    toJSONList :: [NodeView tag v x t] -> Value #

    toEncodingList :: [NodeView tag v x t] -> Encoding #

    Generic (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Associated Types

    type Rep (NodeView tag v x t) :: Type -> Type #

    Methods

    from :: NodeView tag v x t -> Rep (NodeView tag v x t) x0 #

    to :: Rep (NodeView tag v x t) x0 -> NodeView tag v x t #

    ToSample (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    toSamples :: Proxy (NodeView tag v x t) -> [(Text, NodeView tag v x t)] #

    (UnitTag tag, VarValTimeJSON v x t) => Viewable (DefTree tag v x t) (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: DefTree tag v x t -> NodeView tag v x t Source #

    type Rep (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    newtype StepInfoView Source #

    Constructors

    StepInfoView Text 

    Instances

    Instances details
    ToJSON StepInfoView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Generic StepInfoView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Associated Types

    type Rep StepInfoView :: Type -> Type #

    Time t => ToSample (Process t StepInfoView) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    (Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: Process t (StepInfo v x t) -> Process t StepInfoView Source #

    (Var v, Time t) => Viewable (StepInfo v x t) StepInfoView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: StepInfo v x t -> StepInfoView Source #

    type Rep StepInfoView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    type Rep StepInfoView = D1 ('MetaData "StepInfoView" "NITTA.UIBackend.ViewHelper" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'True) (C1 ('MetaCons "StepInfoView" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

    type VarValTimeJSON v x t = (VarValTime v x t, ToJSONKey v, ToJSON v, ToJSON x, ToJSON t) Source #

    Orphan instances

    ToJSON TreeInfo Source # 
    Instance details

    ToSample TreeInfo Source # 
    Instance details

    ToSample Integer Source # 
    Instance details

    Methods

    toSamples :: Proxy Integer -> [(Text, Integer)] #

    (ToJSONKey v, ToJSON v, ToJSON x) => ToJSON (TestbenchReport v x) Source # 
    Instance details

    ToSample (TestbenchReport String Int) Source # 
    Instance details

    (Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) Source # 
    Instance details

    Methods

    view :: Process t (StepInfo v x t) -> Process t StepInfoView Source #

    (Var v, Time t) => Viewable (StepInfo v x t) StepInfoView Source # 
    Instance details

    Methods

    view :: StepInfo v x t -> StepInfoView Source #

    (UnitTag tag, VarValTimeJSON v x t) => Viewable (DefTree tag v x t) (NodeView tag v x t) Source # 
    Instance details

    Methods

    view :: DefTree tag v x t -> NodeView tag v x t Source #

    \ No newline at end of file +manually.

    Synopsis

    Documentation

    module NITTA.UIBackend.ViewHelperCls

    module NITTA.Model.Problems.ViewHelper

    data FView Source #

    Helper for JSON serialization

    Constructors

    FView 

    Fields

    Instances

    Instances details
    ToJSON FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    Methods

    toJSON :: FView -> Value #

    toEncoding :: FView -> Encoding #

    toJSONList :: [FView] -> Value #

    toEncodingList :: [FView] -> Encoding #

    Generic FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    Associated Types

    type Rep FView :: Type -> Type #

    Methods

    from :: FView -> Rep FView x #

    to :: Rep FView x -> FView #

    Show FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    Methods

    showsPrec :: Int -> FView -> ShowS #

    show :: FView -> String #

    showList :: [FView] -> ShowS #

    Viewable (F v x) FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    Methods

    view :: F v x -> FView Source #

    type Rep FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    type Rep FView = D1 ('MetaData "FView" "NITTA.Intermediate.Types" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "FView" 'PrefixI 'True) (S1 ('MetaSel ('Just "fvFun") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "fvHistory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text])))

    class Viewable t v | t -> v where Source #

    Type class of helpers required for autogeneration of ToJSON and typescript + types.

    Methods

    view :: t -> v Source #

    Instances

    Instances details
    Time t => Viewable (Interval t) IntervalView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    UnitTag tag => Viewable (Allocation tag) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Viewable (F v x) FView Source # 
    Instance details

    Defined in NITTA.Intermediate.Types

    Methods

    view :: F v x -> FView Source #

    (Var v, Val x) => Viewable (BreakLoop v x) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Viewable (ConstantFolding v x) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Viewable (OptimizeAccum v x) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Var v => Viewable (ResolveDeadlock v x) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    (Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: Process t (StepInfo v x t) -> Process t StepInfoView Source #

    UnitTag tag => Viewable (Bind tag v x) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Methods

    view :: Bind tag v x -> DecisionView Source #

    (UnitTag tag, Var v, Time t) => Viewable (DataflowSt tag v (Interval t)) DecisionView Source # 
    Instance details

    Defined in NITTA.Model.Problems.ViewHelper

    Methods

    view :: DataflowSt tag v (Interval t) -> DecisionView Source #

    (Var v, Time t) => Viewable (StepInfo v x t) StepInfoView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: StepInfo v x t -> StepInfoView Source #

    (UnitTag tag, VarValTimeJSON v x t) => Viewable (DefTree tag v x t) (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: DefTree tag v x t -> NodeView tag v x t Source #

    viewNodeTree :: (Enum b, Num b, NextTick u b) => Tree (TargetSystem u tag v x t) tag v x t -> IO (TreeView ShortNodeView) Source #

    data TreeView a Source #

    Instances

    Instances details
    ToJSON a => ToJSON (TreeView a) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    toJSON :: TreeView a -> Value #

    toEncoding :: TreeView a -> Encoding #

    toJSONList :: [TreeView a] -> Value #

    toEncodingList :: [TreeView a] -> Encoding #

    Generic (TreeView a) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Associated Types

    type Rep (TreeView a) :: Type -> Type #

    Methods

    from :: TreeView a -> Rep (TreeView a) x #

    to :: Rep (TreeView a) x -> TreeView a #

    Show a => Show (TreeView a) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    showsPrec :: Int -> TreeView a -> ShowS #

    show :: TreeView a -> String #

    showList :: [TreeView a] -> ShowS #

    ToSample (TreeView ShortNodeView) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    type Rep (TreeView a) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    type Rep (TreeView a) = D1 ('MetaData "TreeView" "NITTA.UIBackend.ViewHelper" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "TreeNodeView" 'PrefixI 'True) (S1 ('MetaSel ('Just "rootLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "subForest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TreeView a])))

    data ShortNodeView Source #

    Instances

    Instances details
    ToJSON ShortNodeView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    toJSON :: ShortNodeView -> Value #

    toEncoding :: ShortNodeView -> Encoding #

    toJSONList :: [ShortNodeView] -> Value #

    toEncodingList :: [ShortNodeView] -> Encoding #

    Generic ShortNodeView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Associated Types

    type Rep ShortNodeView :: Type -> Type #

    Show ShortNodeView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    ToSample (TreeView ShortNodeView) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    type Rep ShortNodeView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    data NodeView tag v x t Source #

    Instances

    Instances details
    (VarValTimeJSON v x t, ToJSON tag) => ToJSON (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    toJSON :: NodeView tag v x t -> Value #

    toEncoding :: NodeView tag v x t -> Encoding #

    toJSONList :: [NodeView tag v x t] -> Value #

    toEncodingList :: [NodeView tag v x t] -> Encoding #

    Generic (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Associated Types

    type Rep (NodeView tag v x t) :: Type -> Type #

    Methods

    from :: NodeView tag v x t -> Rep (NodeView tag v x t) x0 #

    to :: Rep (NodeView tag v x t) x0 -> NodeView tag v x t #

    ToSample (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    toSamples :: Proxy (NodeView tag v x t) -> [(Text, NodeView tag v x t)] #

    (UnitTag tag, VarValTimeJSON v x t) => Viewable (DefTree tag v x t) (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: DefTree tag v x t -> NodeView tag v x t Source #

    type Rep (NodeView tag v x t) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    newtype StepInfoView Source #

    Constructors

    StepInfoView Text 

    Instances

    Instances details
    ToJSON StepInfoView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    toJSON :: StepInfoView -> Value #

    toEncoding :: StepInfoView -> Encoding #

    toJSONList :: [StepInfoView] -> Value #

    toEncodingList :: [StepInfoView] -> Encoding #

    Generic StepInfoView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Associated Types

    type Rep StepInfoView :: Type -> Type #

    Time t => ToSample (Process t StepInfoView) Source # 
    Instance details

    Defined in NITTA.UIBackend.REST

    (Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: Process t (StepInfo v x t) -> Process t StepInfoView Source #

    (Var v, Time t) => Viewable (StepInfo v x t) StepInfoView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    Methods

    view :: StepInfo v x t -> StepInfoView Source #

    type Rep StepInfoView Source # 
    Instance details

    Defined in NITTA.UIBackend.ViewHelper

    type Rep StepInfoView = D1 ('MetaData "StepInfoView" "NITTA.UIBackend.ViewHelper" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'True) (C1 ('MetaCons "StepInfoView" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

    type VarValTimeJSON v x t = (VarValTime v x t, ToJSONKey v, ToJSON v, ToJSON x, ToJSON t) Source #

    Orphan instances

    ToJSON TreeInfo Source # 
    Instance details

    Methods

    toJSON :: TreeInfo -> Value #

    toEncoding :: TreeInfo -> Encoding #

    toJSONList :: [TreeInfo] -> Value #

    toEncodingList :: [TreeInfo] -> Encoding #

    ToSample TreeInfo Source # 
    Instance details

    ToSample Integer Source # 
    Instance details

    Methods

    toSamples :: Proxy Integer -> [(Text, Integer)] #

    (ToJSONKey v, ToJSON v, ToJSON x) => ToJSON (TestbenchReport v x) Source # 
    Instance details

    Methods

    toJSON :: TestbenchReport v x -> Value #

    toEncoding :: TestbenchReport v x -> Encoding #

    toJSONList :: [TestbenchReport v x] -> Value #

    toEncodingList :: [TestbenchReport v x] -> Encoding #

    ToSample (TestbenchReport String Int) Source # 
    Instance details

    (Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) Source # 
    Instance details

    Methods

    view :: Process t (StepInfo v x t) -> Process t StepInfoView Source #

    (Var v, Time t) => Viewable (StepInfo v x t) StepInfoView Source # 
    Instance details

    Methods

    view :: StepInfo v x t -> StepInfoView Source #

    (UnitTag tag, VarValTimeJSON v x t) => Viewable (DefTree tag v x t) (NodeView tag v x t) Source # 
    Instance details

    Methods

    view :: DefTree tag v x t -> NodeView tag v x t Source #

    \ No newline at end of file diff --git a/haddock/nitta/NITTA-UIBackend-VisJS.html b/haddock/nitta/NITTA-UIBackend-VisJS.html index 495c0f320..f1ebf8cf4 100644 --- a/haddock/nitta/NITTA-UIBackend-VisJS.html +++ b/haddock/nitta/NITTA-UIBackend-VisJS.html @@ -1 +1 @@ -NITTA.UIBackend.VisJS
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Dmitriy Anoshchenkov Aleksandr Penskoi 2021
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.UIBackend.VisJS

    Description

     

    Documentation

    data GraphStructure v Source #

    Constructors

    GraphStructure 

    Fields

    Instances

    Instances details
    ToJSON VisJS Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    ToSample VisJS Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    toSamples :: Proxy VisJS -> [(Text, VisJS)] #

    Generic (GraphStructure v) Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Associated Types

    type Rep (GraphStructure v) :: Type -> Type #

    type Rep (GraphStructure v) Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    type Rep (GraphStructure v) = D1 ('MetaData "GraphStructure" "NITTA.UIBackend.VisJS" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "GraphStructure" 'PrefixI 'True) (S1 ('MetaSel ('Just "nodes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GraphNode]) :*: S1 ('MetaSel ('Just "edges") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [v])))

    data GraphNode Source #

    Instances

    Instances details
    ToJSON GraphNode Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Generic GraphNode Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Associated Types

    type Rep GraphNode :: Type -> Type #

    Default GraphNode Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    def :: GraphNode #

    type Rep GraphNode Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    data GraphEdge Source #

    Constructors

    GraphEdge 

    Fields

    Instances

    Instances details
    ToJSON GraphEdge Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    ToJSON VisJS Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Generic GraphEdge Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Associated Types

    type Rep GraphEdge :: Type -> Type #

    Default GraphEdge Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    def :: GraphEdge #

    ToSample VisJS Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    toSamples :: Proxy VisJS -> [(Text, VisJS)] #

    type Rep GraphEdge Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    \ No newline at end of file +NITTA.UIBackend.VisJS
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Dmitriy Anoshchenkov Aleksandr Penskoi 2021
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.UIBackend.VisJS

    Description

     

    Documentation

    data GraphStructure v Source #

    Constructors

    GraphStructure 

    Fields

    Instances

    Instances details
    ToJSON VisJS Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    toJSON :: VisJS -> Value #

    toEncoding :: VisJS -> Encoding #

    toJSONList :: [VisJS] -> Value #

    toEncodingList :: [VisJS] -> Encoding #

    ToSample VisJS Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    toSamples :: Proxy VisJS -> [(Text, VisJS)] #

    Generic (GraphStructure v) Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Associated Types

    type Rep (GraphStructure v) :: Type -> Type #

    type Rep (GraphStructure v) Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    type Rep (GraphStructure v) = D1 ('MetaData "GraphStructure" "NITTA.UIBackend.VisJS" "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn" 'False) (C1 ('MetaCons "GraphStructure" 'PrefixI 'True) (S1 ('MetaSel ('Just "nodes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GraphNode]) :*: S1 ('MetaSel ('Just "edges") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [v])))

    data GraphNode Source #

    Instances

    Instances details
    ToJSON GraphNode Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    toJSON :: GraphNode -> Value #

    toEncoding :: GraphNode -> Encoding #

    toJSONList :: [GraphNode] -> Value #

    toEncodingList :: [GraphNode] -> Encoding #

    Generic GraphNode Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Associated Types

    type Rep GraphNode :: Type -> Type #

    Default GraphNode Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    def :: GraphNode #

    type Rep GraphNode Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    data GraphEdge Source #

    Constructors

    GraphEdge 

    Fields

    Instances

    Instances details
    ToJSON GraphEdge Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    toJSON :: GraphEdge -> Value #

    toEncoding :: GraphEdge -> Encoding #

    toJSONList :: [GraphEdge] -> Value #

    toEncodingList :: [GraphEdge] -> Encoding #

    ToJSON VisJS Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    toJSON :: VisJS -> Value #

    toEncoding :: VisJS -> Encoding #

    toJSONList :: [VisJS] -> Value #

    toEncodingList :: [VisJS] -> Encoding #

    Generic GraphEdge Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Associated Types

    type Rep GraphEdge :: Type -> Type #

    Default GraphEdge Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    def :: GraphEdge #

    ToSample VisJS Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    Methods

    toSamples :: Proxy VisJS -> [(Text, VisJS)] #

    type Rep GraphEdge Source # 
    Instance details

    Defined in NITTA.UIBackend.VisJS

    \ No newline at end of file diff --git a/haddock/nitta/NITTA-UIBackend.html b/haddock/nitta/NITTA-UIBackend.html index 9c8794708..5acaaab52 100644 --- a/haddock/nitta/NITTA-UIBackend.html +++ b/haddock/nitta/NITTA-UIBackend.html @@ -1 +1 @@ -NITTA.UIBackend
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2019
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.UIBackend

    Description

     
    Synopsis

    Documentation

    backendServer :: (Suffix w, Hashable w, Val w, Bounded w, ToJSONKey w, FromHttpApiData w, UnitTag w, Label w, ToString w, IsString w, Typeable w, Typeable w, Show w, Default w, Integral w, Ord w, ToJSON w, ToJSON w, ToJSON w) => Int -> BackendCtx w w w w -> IO () Source #

    Run backend server.

    restDocs :: Show a => a -> String Source #

    \ No newline at end of file +NITTA.UIBackend
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2019
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.UIBackend

    Description

     
    Synopsis

    Documentation

    backendServer :: (Suffix w, Hashable w, Val w, Bounded w, ToJSONKey w, FromHttpApiData w, UnitTag w, Label w, ToString w, IsString w, Typeable w, Typeable w, Show w, Default w, Integral w, Ord w, ToJSON w, ToJSON w, ToJSON w) => Int -> BackendCtx w w w w -> IO () Source #

    Run backend server.

    restDocs :: Show a => a -> String Source #

    \ No newline at end of file diff --git a/haddock/nitta/NITTA-Utils.html b/haddock/nitta/NITTA-Utils.html index 05fed4783..05c83fccb 100644 --- a/haddock/nitta/NITTA-Utils.html +++ b/haddock/nitta/NITTA-Utils.html @@ -1 +1 @@ -NITTA.Utils
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2019
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.Utils

    Description

     
    Synopsis

    Documentation

    type Verilog = Doc () Source #

    shiftI :: (Num a, Ord a) => a -> Interval a -> Interval a Source #

    HDL generation

    values2dump :: (Foldable t, Show a) => t a -> [Char] Source #

    hdlValDump :: Val p => p -> Text Source #

    Process inspection

    endpointAt :: (Ord a, Show a, ToString v) => a -> Process a (StepInfo v x t) -> Maybe (EndpointRole v) Source #

    transferred :: ProcessorUnit u a1 x t => u -> Set a1 Source #

    inputsPushedAt :: (Ord a, Ord a, Function f a) => Process a (StepInfo a x t2) -> f -> a Source #

    stepsInterval :: Ord a => [Step a i] -> Interval a Source #

    relatedEndpoints :: Ord a => Process t1 (StepInfo a x t2) -> Set a -> [Step t1 (StepInfo a x t2)] Source #

    getIntermediate :: Step t (StepInfo v x t) -> Maybe (F v x) Source #

    getIntermediates :: Ord b => Process b (StepInfo v x t) -> [F v x] Source #

    Toml

    \ No newline at end of file +NITTA.Utils
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors
    Copyright(c) Aleksandr Penskoi 2019
    LicenseBSD3
    Maintaineraleksandr.penskoi@gmail.com
    Stabilityexperimental
    Safe HaskellSafe-Inferred
    LanguageHaskell2010

    NITTA.Utils

    Description

     
    Synopsis

    Documentation

    type Verilog = Doc () Source #

    shiftI :: (Num a, Ord a) => a -> Interval a -> Interval a Source #

    HDL generation

    values2dump :: (Foldable t, Show a) => t a -> [Char] Source #

    hdlValDump :: Val p => p -> Text Source #

    Process inspection

    endpointAt :: (Ord a, Show a, ToString v) => a -> Process a (StepInfo v x t) -> Maybe (EndpointRole v) Source #

    transferred :: ProcessorUnit u a1 x t => u -> Set a1 Source #

    inputsPushedAt :: (Ord a, Ord a, Function f a) => Process a (StepInfo a x t2) -> f -> a Source #

    stepsInterval :: Ord a => [Step a i] -> Interval a Source #

    relatedEndpoints :: Ord a => Process t1 (StepInfo a x t2) -> Set a -> [Step t1 (StepInfo a x t2)] Source #

    getIntermediate :: Step t (StepInfo v x t) -> Maybe (F v x) Source #

    getIntermediates :: Ord b => Process b (StepInfo v x t) -> [F v x] Source #

    Toml

    getFromToml :: (FromJSON a, ToJSON a) => HashMap Text a -> a Source #

    getFromTomlSection :: (FromJSON a, ToJSON a) => Text -> HashMap Text a -> a Source #

    \ No newline at end of file diff --git a/haddock/nitta/README.md b/haddock/nitta/README.md index ec88f6763..7c2fe8b45 100644 --- a/haddock/nitta/README.md +++ b/haddock/nitta/README.md @@ -101,6 +101,28 @@ sudo apt-get install npm yarn npm install --global tern prettier yarn ``` +### WSL2 + +Install [GHCUP](https://www.haskell.org/ghcup/). + +``` console +curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh +``` + +Install [icarus-verilog](https://github.com/steveicarus/iverilog/) and [gtkwave](https://github.com/gtkwave/gtkwave). + +``` console +sudo apt-get install iverilog +sudo apt-get install gtkwave +``` + +Install [npm](https://github.com/npm/cli) and required developer tools for UI. + +``` console +sudo apt-get install npm yarn +npm install --global tern prettier yarn +``` + ### For machine learning base synthesis (optional) 1. Install python package manager: [poetry](https://python-poetry.org/docs/). diff --git a/haddock/nitta/doc-index-All.html b/haddock/nitta/doc-index-All.html index 6aa568ccd..05dd54e27 100644 --- a/haddock/nitta/doc-index-All.html +++ b/haddock/nitta/doc-index-All.html @@ -1 +1 @@ -nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors (Index)
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors

    Index

    $sel:actions:AccNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    $sel:addr:FramPortsNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:bindGroup:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:bounceFilter:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:brokeVerilog:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:bufferSize:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:changeset:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:cRefNew:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:cRefOld:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:currentWork:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:currentWorkEndpoints:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:denom:DivisionNITTA.Intermediate.Functions
    $sel:doneAt:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:edges:GraphStructureNITTA.UIBackend.VisJS
    $sel:edgeWidth:GraphEdgeNITTA.UIBackend.VisJS
    $sel:fontAllign:GraphEdgeNITTA.UIBackend.VisJS
    $sel:fontSize:GraphNodeNITTA.UIBackend.VisJS
    $sel:from:GraphEdgeNITTA.UIBackend.VisJS
    $sel:function:GraphNodeNITTA.UIBackend.VisJS
    $sel:function:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:history:GraphNodeNITTA.UIBackend.VisJS
    $sel:id:GraphNodeNITTA.UIBackend.VisJS
    $sel:input:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:ioSyncMode:MicroarchitectureDescNITTA.Model.Microarchitecture.Types
    $sel:isReceiveOver:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:jobs:DividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:label:GraphEdgeNITTA.UIBackend.VisJS
    $sel:label:GraphNodeNITTA.UIBackend.VisJS
    $sel:load:AccumPortsNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    $sel:lostEndpointInVerticalRelation:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:lostEndpointSource:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:lostEndpointTarget:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:lostFunctionInVerticalRelation:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:lostInstructionInVerticalRelation:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:masterSCL:I2CMasterNITTA.Model.ProcessorUnits.IO.I2C
    $sel:masterSDA:I2CMasterNITTA.Model.ProcessorUnits.IO.I2C
    $sel:master_cs:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:master_miso:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:master_mosi:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:master_sclk:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:memory:FramNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:mock:DividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:neg:AccumPortsNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    $sel:networks:MicroarchitectureDescNITTA.Model.Microarchitecture.Types
    $sel:networkTag:NetworkDescNITTA.Model.Microarchitecture.Types
    $sel:networkTag:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:new:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:newBuffer:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:nodeColor:GraphNodeNITTA.UIBackend.VisJS
    $sel:nodes:GraphStructureNITTA.UIBackend.VisJS
    $sel:nodeShape:GraphNodeNITTA.UIBackend.VisJS
    $sel:nodeSize:GraphNodeNITTA.UIBackend.VisJS
    $sel:numer:DivisionNITTA.Intermediate.Functions
    $sel:oe:AccumPortsNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    $sel:oe:BrokenPortsNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:oe:DividerPortsNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:oe:FramPortsNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:oe:MultiplierPortsNITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    $sel:oe:SimpleIOPortsNITTA.Model.ProcessorUnits.IO.SimpleIO, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits
    $sel:old:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:outputs:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:pipeline:DividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:processUnitTag:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:process_:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:process_:DividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:process_:FramNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:process_:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:pu:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:quotient:DivisionNITTA.Intermediate.Functions
    $sel:receiveN:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:receiveQueue:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:remain:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:remain:DivisionNITTA.Intermediate.Functions
    $sel:remainBuffers:FramNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:remains:DividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:resetAcc:AccumPortsNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    $sel:sel:DividerPortsNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:sendN:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:sendQueue:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:slaveSCL:I2CMasterNITTA.Model.ProcessorUnits.IO.I2C
    $sel:slaveSDA:I2CMasterNITTA.Model.ProcessorUnits.IO.I2C
    $sel:slave_cs:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:slave_miso:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:slave_mosi:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:slave_sclk:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:source:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:sources:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:stop:SimpleIOPortsNITTA.Model.ProcessorUnits.IO.SimpleIO, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits
    $sel:targets:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:targets:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:timelinePoints:TimelineWithViewPointNITTA.UIBackend.Timeline
    $sel:timelines:ProcessTimelinesNITTA.UIBackend.Timeline
    $sel:timelineViewpoint:TimelineWithViewPointNITTA.UIBackend.Timeline
    $sel:to:GraphEdgeNITTA.UIBackend.VisJS
    $sel:unitEndpoints:UnitEndpointsNITTA.UIBackend.REST
    $sel:units:NetworkDescNITTA.Model.Microarchitecture.Types
    $sel:unitTag:UnitDescNITTA.Model.Microarchitecture.Types
    $sel:unitTag:UnitEndpointsNITTA.UIBackend.REST
    $sel:unitType:UnitDescNITTA.Model.Microarchitecture.Types
    $sel:unknownDataOut:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:value:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:valueType:NetworkDescNITTA.Model.Microarchitecture.Types
    $sel:verticalRelations:ProcessTimelinesNITTA.UIBackend.Timeline
    $sel:wr:BrokenPortsNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:wr:DividerPortsNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:wr:FramPortsNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:wr:MultiplierPortsNITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    $sel:wr:SimpleIOPortsNITTA.Model.ProcessorUnits.IO.SimpleIO, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits
    $sel:wrongAttr:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:wrongControlOnPull:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:wrongControlOnPush:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:wrongVerilogSimulationValue:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    +++NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    <?>NITTA.Synthesis.Types, NITTA.Synthesis
    Acc 
    1 (Type/Class)NITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    accNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    accFromStrNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    AccumNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    AccumIONITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    AccumPortsNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    ActionNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    Add 
    1 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    2 (Type/Class)NITTA.Intermediate.Functions
    3 (Data Constructor)NITTA.Intermediate.Functions
    add 
    1 (Function)NITTA.Intermediate.Functions
    2 (Function)NITTA.Model.Networks.Bus
    addCustomNITTA.Model.Networks.Bus
    addCustomPrototypeNITTA.Model.Networks.Bus
    addFuncToDataFlowGraphNITTA.Intermediate.DataFlow
    addPrototypeNITTA.Model.Networks.Bus
    AggregateNITTA.Project.Types, NITTA.Project
    algConstantsNITTA.Frontends.Lua
    algGraphNITTA.Frontends.Lua
    algLatestLuaValueInstanceNITTA.Frontends.Lua
    algStartupArgsNITTA.Frontends.Lua
    algToVizJSNITTA.UIBackend.VisJS
    algTraceFuncsNITTA.Frontends.Lua
    algVarCountersNITTA.Frontends.Lua
    algVarsNITTA.Frontends.Lua
    allBestThreadIONITTA.Synthesis.Method, NITTA.Synthesis
    allBindsAndRefsIONITTA.Synthesis.Method, NITTA.Synthesis
    Allocation 
    1 (Type/Class)NITTA.Model.Problems.Allocation, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Allocation, NITTA.Model.Problems
    allocationDecisionNITTA.Model.Problems.Allocation, NITTA.Model.Problems
    AllocationMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    allocationOptionsNITTA.Model.Problems.Allocation, NITTA.Model.Problems
    AllocationProblemNITTA.Model.Problems.Allocation, NITTA.Model.Problems
    AllocationStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    AllocationViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    allowToProcessNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    anySPINITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    apiPathNITTA.UIBackend
    ASyncNITTA.Model.Networks.Types
    Attr 
    1 (Type/Class)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    attrLiteralNITTA.Intermediate.Value, NITTA.Intermediate.Types
    attrWidthNITTA.Intermediate.Value, NITTA.Intermediate.Types
    Aux 
    1 (Type/Class)NITTA.Frontends.XMILE.DocumentParser
    2 (Data Constructor)NITTA.Frontends.XMILE.DocumentParser
    BackendCtx 
    1 (Type/Class)NITTA.UIBackend.Types, NITTA.UIBackend.REST
    2 (Data Constructor)NITTA.UIBackend.Types, NITTA.UIBackend.REST
    backendServerNITTA.UIBackend
    baseUrlNITTA.Synthesis.MlBackend.ServerInstance
    bestStepIONITTA.Synthesis.Method, NITTA.Synthesis
    BindNITTA.Model.Problems.Bind, NITTA.Model.Problems
    bindNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    bindDecisionNITTA.Model.Problems.Bind, NITTA.Model.Problems
    bindGroupNITTA.Model.Problems.Bind, NITTA.Model.Problems
    bindingAlternativeNITTA.Synthesis.Types, NITTA.Synthesis
    BindMetricsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    bindOptionsNITTA.Model.Problems.Bind, NITTA.Model.Problems
    BindProblemNITTA.Model.Problems.Bind, NITTA.Model.Problems
    binds2bindGroupNITTA.Model.Problems.Bind, NITTA.Model.Problems
    bindWavesNITTA.Synthesis.Types, NITTA.Synthesis
    bnBoundNITTA.Model.Networks.Bus
    bnEnvNITTA.Model.Networks.Bus
    bnNameNITTA.Model.Networks.Bus
    bnProcessNITTA.Model.Networks.Bus
    bnPUPrototypesNITTA.Model.Networks.Bus
    bnPusNITTA.Model.Networks.Bus
    bnRemainsNITTA.Model.Networks.Bus
    bnSignalBusWidthNITTA.Model.Networks.Bus
    BoolNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    bool2verilogNITTA.Utils
    boundFunctionsNITTA.Model.Networks.Bus
    BreakLoop 
    1 (Type/Class)NITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    breakLoopDecisionNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    BreakLoopMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.BreakLoop, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.BreakLoop, NITTA.Synthesis.Steps, NITTA.Synthesis
    breakLoopOptionsNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    BreakLoopProblemNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    BreakLoopViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    Broken 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    BrokenBuffer 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    brokenBufferNITTA.Intermediate.Functions
    BrokenIONITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    BrokenPortsNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    BrokenSignalNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    Buffer 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    bufferNITTA.Intermediate.Functions
    bufferSuffixNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    buildProcessWavesNITTA.Intermediate.Analysis
    BusNetwork 
    1 (Type/Class)NITTA.Model.Networks.Bus
    2 (Data Constructor)NITTA.Model.Networks.Bus
    busNetworkNITTA.Model.Networks.Bus
    BusNetworkIONITTA.Model.Networks.Bus
    BusNetworkPortsNITTA.Model.Networks.Bus
    ByTimeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    Cache 
    1 (Type/Class)NITTA.Synthesis.MlBackend.FixedCache
    2 (Data Constructor)NITTA.Synthesis.MlBackend.FixedCache
    CADStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    calculateDefaultValueNITTA.Frontends.XMILE.MathParser
    castFNITTA.Intermediate.Types
    castInstructionNITTA.Utils.ProcessDescription
    catchToMaybeIONITTA.Utils.Base, NITTA.Utils
    changeINITTA.Intermediate.Types
    changeONITTA.Intermediate.Types
    Changeset 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    changesetNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    checkProcessIntegrityNITTA.Model.ProcessIntegrity
    Cntx 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    cntxCycleNumberNITTA.Intermediate.Types
    cntxProcessNITTA.Intermediate.Types
    cntxReceivedNITTA.Intermediate.Types
    cntxReceivedBySliceNITTA.Intermediate.Types
    collectNittaPathNITTA.Project.Template, NITTA.Project
    ConnectedNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    Constant 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    constantNITTA.Intermediate.Functions
    ConstantFolding 
    1 (Type/Class)NITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    constantFoldingDecisionNITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ConstantFoldingMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.ConstantFolding, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.ConstantFolding, NITTA.Synthesis.Steps, NITTA.Synthesis
    constantFoldingOptionsNITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ConstantFoldingProblemNITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ConstantFoldingViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    Content 
    1 (Type/Class)NITTA.Frontends.XMILE.DocumentParser
    2 (Data Constructor)NITTA.Frontends.XMILE.DocumentParser
    ControllableNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    controlSignalLiteralNITTA.Model.Networks.Bus
    countSuffixNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    cRefNewNITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    cRefOldNITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ctrlPortsNITTA.Project.Types, NITTA.Project
    CycleCntx 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    cycleCntxNITTA.Intermediate.Types
    dataflowDecisionNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    DataflowDecisionViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    DataFlowGraphNITTA.Intermediate.DataFlow
    DataflowMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    dataflowOption2decisionNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    dataflowOptionsNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    DataflowProblemNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    DataflowSt 
    1 (Type/Class)NITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    dataLiteralNITTA.Intermediate.Value, NITTA.Intermediate.Types
    dataWidthNITTA.Intermediate.Value, NITTA.Intermediate.Types
    decisionNITTA.Synthesis.Types, NITTA.Synthesis
    decisionsNITTA.Synthesis.Types, NITTA.Synthesis
    DecisionViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    decodeInstructionNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    DefaultXNITTA.Intermediate.Value, NITTA.Intermediate.Types
    defineNetworkNITTA.Model.Networks.Bus
    defProjectTemplatesNITTA.Project.Types, NITTA.Project
    defScoreNITTA.Synthesis.Types, NITTA.Synthesis
    DefTreeNITTA.Synthesis.Types, NITTA.Synthesis.Method, NITTA.Synthesis
    defXNITTA.Intermediate.Value, NITTA.Intermediate.Types
    descentNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    DFClusterNITTA.Intermediate.DataFlow
    DFLeafNITTA.Intermediate.DataFlow
    dfSourceNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    dfTargetsNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    diffNITTA.Model.Networks.Types
    directionNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    DivNITTA.Frontends.XMILE.MathParser
    Divider 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    dividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    DividerIONITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    DividerPortsNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    Division 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    divisionNITTA.Intermediate.Functions
    doc2textNITTA.Utils
    DuoNITTA.Frontends.XMILE.MathParser
    EmptyNITTA.Project.Types, NITTA.Project
    endpointAtNITTA.Utils
    endpointDecisionNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    endpointOptionsNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    endpointOptionToDecisionNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    EndpointProblemNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    EndpointRoleNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    EndpointRoleStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    EndpointSt 
    1 (Type/Class)NITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    envInOutPortsNITTA.Project.Types, NITTA.Project
    envInputPortsNITTA.Project.Types, NITTA.Project
    envOutputPortsNITTA.Project.Types, NITTA.Project
    epAtNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    epRoleNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    establishHorizontalRelationsNITTA.Utils.ProcessDescription
    establishVerticalRelationsNITTA.Utils.ProcessDescription
    estimateNITTA.Synthesis.Types, NITTA.Synthesis
    estimateVarWavesNITTA.Intermediate.Analysis
    execScheduleNITTA.Utils.ProcessDescription
    execScheduleWithProcessNITTA.Utils.ProcessDescription
    extInOutsNITTA.Model.Networks.Bus
    extInputsNITTA.Model.Networks.Bus
    extOutputsNITTA.Model.Networks.Bus
    extractInstructionAtNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    F 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    fetchNITTA.Synthesis.MlBackend.FixedCache
    fInNITTA.Frontends.Lua
    findStartupFunctionNITTA.Frontends.Lua
    fIntNITTA.Frontends.Lua
    FixedPointCompatibleNITTA.Intermediate.Value, NITTA.Intermediate.Types
    Flow 
    1 (Type/Class)NITTA.Frontends.XMILE.DocumentParser
    2 (Data Constructor)NITTA.Frontends.XMILE.DocumentParser
    fNameNITTA.Frontends.Lua
    fOutNITTA.Frontends.Lua
    fractionalBitSizeNITTA.Intermediate.Value, NITTA.Intermediate.Types
    Fram 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    FramIONITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    FramPortsNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    framWithSizeNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    frDataFlowNITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    FromLibraryNITTA.Project.Types, NITTA.Project
    fromRawNITTA.Intermediate.Value, NITTA.Intermediate.Types
    fromTemplateNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    fromTextNITTA.Utils.Base, NITTA.Utils
    FrontendResult 
    1 (Type/Class)NITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    2 (Data Constructor)NITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    FrontendTypeNITTA.Frontends
    frPrettyLogNITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    frTraceNITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    fsToDataFlowGraphNITTA.Intermediate.DataFlow
    FullNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    funNITTA.Intermediate.Types
    FunctionNITTA.Intermediate.Types
    functionsNITTA.Intermediate.Types
    FunctionSimulationNITTA.Intermediate.Types
    functionTypeNITTA.Intermediate.Types
    funHistoryNITTA.Intermediate.Types
    fValuesNITTA.Frontends.Lua
    fvFunNITTA.Intermediate.Types, NITTA.UIBackend.ViewHelper
    fvHistoryNITTA.Intermediate.Types, NITTA.UIBackend.ViewHelper
    FView 
    1 (Type/Class)NITTA.Intermediate.Types, NITTA.UIBackend.ViewHelper
    2 (Data Constructor)NITTA.Intermediate.Types, NITTA.UIBackend.ViewHelper
    FX 
    1 (Type/Class)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    getCntxNITTA.Intermediate.Types
    getEndpointNITTA.Utils
    getEndpointsNITTA.Utils
    getFromTomlNITTA.Utils
    getFromTomlSectionNITTA.Utils
    getInstructionNITTA.Utils
    getIntermediateNITTA.Utils
    getIntermediatesNITTA.Utils
    getLuaBlockFromSourcesNITTA.Frontends.Lua
    getProcessSliceNITTA.Utils.ProcessDescription
    getTomlNITTA.Utils
    getTraceVarFormatNITTA.Frontends.Common, NITTA.Frontends
    getTreeInfoNITTA.Synthesis.Analysis
    getTreeIONITTA.Synthesis.Explore, NITTA.Synthesis
    getTreePathIONITTA.Synthesis.Explore, NITTA.Synthesis
    GraphEdge 
    1 (Type/Class)NITTA.UIBackend.VisJS
    2 (Data Constructor)NITTA.UIBackend.VisJS
    GraphNode 
    1 (Type/Class)NITTA.UIBackend.VisJS
    2 (Data Constructor)NITTA.UIBackend.VisJS
    GraphStructure 
    1 (Type/Class)NITTA.UIBackend.VisJS
    2 (Data Constructor)NITTA.UIBackend.VisJS
    GroupBindNITTA.Model.Problems.Bind, NITTA.Model.Problems
    GroupBindMetricsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    GroupBindViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    handlesNITTA.Synthesis.MlBackend.ServerInstance
    hardwareNITTA.Project.Types, NITTA.Project
    hardwareInstanceNITTA.Project.Types, NITTA.Project
    hdlValDumpNITTA.Utils
    hNextNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    HorizontalNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    hPrevNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    I 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    I2CNITTA.Model.ProcessorUnits.IO.I2C
    I2CMasterNITTA.Model.ProcessorUnits.IO.I2C
    I2CSlaveNITTA.Model.ProcessorUnits.IO.I2C
    i2cUnitNITTA.Model.ProcessorUnits.IO.I2C
    identifyFrontendTypeNITTA.Frontends
    ImmediateNITTA.Project.Types, NITTA.Project
    impFileNameNITTA.Project.Types, NITTA.Project
    ImplementationNITTA.Project.Types, NITTA.Project
    implementationContextNITTA.Project.Context
    impPathNITTA.Project.Types, NITTA.Project
    impTextNITTA.Project.Types, NITTA.Project
    initNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    inoutPortsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    InoutPortTag 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    inoutPortTagNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    inputPortsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    InputPortTag 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    inputPortTagNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    inputsNITTA.Intermediate.Types
    inputsLockOutputsNITTA.Intermediate.Types
    inputsPushedAtNITTA.Utils
    InstructionNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits, NITTA.Model.ProcessorUnits, NITTA.Model.Networks.Bus
    InstructionStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    IntermediateStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    IntervalView 
    1 (Type/Class)NITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    2 (Data Constructor)NITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    IntX 
    1 (Type/Class)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    intXNITTA.Intermediate.Value, NITTA.Intermediate.Types
    invalidNITTA.Intermediate.Value, NITTA.Intermediate.Types
    IOConnectedNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    IOPortsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits, NITTA.Model.ProcessorUnits, NITTA.Model.Networks.Bus
    ioPortsNITTA.Project.Types, NITTA.Project
    ioSyncNITTA.Model.Networks.Bus
    IOSynchronizationNITTA.Model.Networks.Types
    IOTestBenchNITTA.Project.TestBench, NITTA.Project
    isAllocationStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    isCompleteNITTA.Synthesis.Types, NITTA.Synthesis
    isConstNITTA.Intermediate.Functions
    isInstructionNITTA.Utils
    isIntermediateNITTA.Utils
    isInternalLockPossibleNITTA.Intermediate.Types
    isLeafNITTA.Synthesis.Types, NITTA.Synthesis
    isLoopNITTA.Intermediate.Functions
    isMultiBindNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    isObviousBindsNITTA.Model.Problems.Bind, NITTA.Model.Problems
    isObviousMultiBindNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    isPullNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    isPushNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    isRefactorNITTA.Synthesis.Steps, NITTA.Synthesis
    isRefactorStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    isSingleBindNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    isSourceNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    isSubroleOfNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    isSynthesisCompleteNITTA.Model.TargetSystem
    isTargetNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    isTemplateNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    LabelNITTA.Intermediate.Types
    labelNITTA.Intermediate.Types
    Lock 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    lockByNITTA.Intermediate.Types
    lockedNITTA.Intermediate.Types
    LocksNITTA.Intermediate.Types
    locksNITTA.Intermediate.Types
    log2csvNITTA.Intermediate.Types
    log2jsonNITTA.Intermediate.Types
    log2mdNITTA.Intermediate.Types
    Loop 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    loopNITTA.Intermediate.Functions
    LoopBegin 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    LoopEnd 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    loopINITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    loopONITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    loopXNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    LuaNITTA.Frontends
    LuaAlgBuilder 
    1 (Type/Class)NITTA.Frontends.Lua
    2 (Data Constructor)NITTA.Frontends.Lua
    LuaStatement 
    1 (Type/Class)NITTA.Frontends.Lua
    2 (Data Constructor)NITTA.Frontends.Lua
    LuaValueInstance 
    1 (Type/Class)NITTA.Frontends.Lua
    2 (Data Constructor)NITTA.Frontends.Lua
    lviAssignCountNITTA.Frontends.Lua
    lviIsConstantNITTA.Frontends.Lua
    lviNameNITTA.Frontends.Lua
    mAvgParallelsNITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    maxBufferStackNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    maximumOnNITTA.Utils.Base, NITTA.Utils
    mDataFlowGraphNITTA.Model.TargetSystem
    metricsNITTA.Synthesis.Types, NITTA.Synthesis
    MicroarchitectureDesc 
    1 (Type/Class)NITTA.Model.Microarchitecture.Types
    2 (Data Constructor)NITTA.Model.Microarchitecture.Types
    microarchitectureDescNITTA.Model.Microarchitecture.Types
    MicrocodeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits, NITTA.Model.ProcessorUnits
    microcodeAtNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    minimumOnNITTA.Utils.Base, NITTA.Utils
    minMaxRawNITTA.Intermediate.Value, NITTA.Intermediate.Types
    MinusNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    mkMicroarchitectureNITTA.Model.Microarchitecture.Config
    mkModelWithOneNetworkNITTA.Synthesis
    mlBackendGetterNITTA.UIBackend.Types, NITTA.UIBackend.REST
    MlBackendServer 
    1 (Type/Class)NITTA.Synthesis.MlBackend.ServerInstance
    2 (Data Constructor)NITTA.Synthesis.MlBackend.ServerInstance
    mlScoreKeyPrefixNITTA.Synthesis.Types, NITTA.Synthesis
    mMaxParallelsNITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    mMinPusForRemainsNITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    modeNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    modifyNetworkNITTA.Model.Networks.Bus
    moduleNameNITTA.Project.Types, NITTA.Project
    mParallelismNITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    mRelatedRemainsNITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    MulNITTA.Frontends.XMILE.MathParser
    MultiplierNITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    multiplierNITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    MultiplierIONITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    MultiplierPortsNITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    Multiply 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    multiplyNITTA.Intermediate.Functions
    mUnitNITTA.Model.TargetSystem
    Neg 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    negNITTA.Intermediate.Functions
    NestedStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    NetworkDesc 
    1 (Type/Class)NITTA.Model.Microarchitecture.Types
    2 (Data Constructor)NITTA.Model.Microarchitecture.Types
    networkTagNITTA.Model.Problems.Allocation, NITTA.Model.Problems
    newBufferNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    newCacheNITTA.Synthesis.MlBackend.FixedCache
    NextTickNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    nextTickNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    nextTick_NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    nextUidNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    nodesNITTA.Synthesis.MlBackend.Client
    nodeScoresNITTA.UIBackend.Types, NITTA.UIBackend.REST
    nodesFailedNITTA.Synthesis.Analysis
    nodesNotProcessedNITTA.Synthesis.Analysis
    nodesSuccessNITTA.Synthesis.Analysis
    nodesVisitedNITTA.Synthesis.Analysis
    NodeViewNITTA.UIBackend.ViewHelper
    NoneNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    noSynthesisNITTA.Synthesis.Method, NITTA.Synthesis
    nStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    nTitleNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    numberOfDataflowOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    numberOfProcessWavesNITTA.Synthesis.Types, NITTA.Synthesis
    O 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    obviousBindThreadIONITTA.Synthesis.Method, NITTA.Synthesis
    oeNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    OnBoardNITTA.Model.Networks.Types
    oneOfNITTA.Utils.Base, NITTA.Utils
    OptimizeAccum 
    1 (Type/Class)NITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    optimizeAccumDecisionNITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    OptimizeAccumMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.OptimizeAccum, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.OptimizeAccum, NITTA.Synthesis.Steps, NITTA.Synthesis
    optimizeAccumOptionsNITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    OptimizeAccumProblemNITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    OptimizeAccumViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    optionNITTA.Synthesis.Types, NITTA.Synthesis
    outputPathNITTA.UIBackend.Types, NITTA.UIBackend.REST
    outputPortsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    OutputPortTag 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    outputPortTagNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    outputsNITTA.Intermediate.Types
    pAbsNittaPathNITTA.Project.Types, NITTA.Project
    pAbsTargetProjectPathNITTA.Project.Types, NITTA.Project
    packFNITTA.Intermediate.Types
    pAllowDataFlowNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pAlternativeNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    ParallelismTypeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    parallelismTypeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    parametersNITTA.Synthesis.Types, NITTA.Synthesis
    parseDocumentNITTA.Frontends.XMILE.DocumentParser
    parseXmileEquationNITTA.Frontends.XMILE.MathParser
    PatchNITTA.Intermediate.Types
    patchNITTA.Intermediate.Types
    pAvgBindsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pAvgUnitWorkloadNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pBufferCountNITTA.Synthesis.Steps.ResolveDeadlock, NITTA.Synthesis.Steps, NITTA.Synthesis
    pCriticalNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pDescNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    pFirstWaveOfTargetUseNITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    pFunctionPercentInBindsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pIDNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    pInProjectNittaPathNITTA.Project.Types, NITTA.Project
    pIntervalNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    pIOPortsNITTA.Model.Networks.Types
    PipelineNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    pLibPathNITTA.Project.Types, NITTA.Project
    PlusNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    pNameNITTA.Project.Types, NITTA.Project
    pNotTransferableInputsNITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    pNumberOfBoundFunctionsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pNumberOfLockedVariablesNITTA.Synthesis.Steps.ResolveDeadlock, NITTA.Synthesis.Steps, NITTA.Synthesis
    pNumberOfTransferableVariablesNITTA.Synthesis.Steps.ResolveDeadlock, NITTA.Synthesis.Steps, NITTA.Synthesis
    pOnlyObviousBindsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    PortsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits.IO.SimpleIO, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits, NITTA.Model.ProcessorUnits, NITTA.Model.Networks.Bus
    positiveSubForestIONITTA.Synthesis.Explore, NITTA.Synthesis
    possibleDeadlockBindsNITTA.Synthesis.Types, NITTA.Synthesis
    pOutputNumberNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pPercentOfBoundInputsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pPossibleDeadlockNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pProtoNITTA.Model.Networks.Types
    predictScoresIONITTA.Synthesis.MlBackend.Client
    prepareJSAPINITTA.UIBackend
    pRestlessNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pRestrictedTimeNITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    prettyLogNITTA.Frontends.Common, NITTA.Frontends
    Process 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    processNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    processDurationNITTA.Model.TargetSystem
    ProcessIntegrityNITTA.Model.ProcessIntegrity
    ProcessorUnitNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    processStatementNITTA.Frontends.Lua
    ProcessStepIDNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    ProcessTimelines 
    1 (Type/Class)NITTA.UIBackend.Timeline
    2 (Data Constructor)NITTA.UIBackend.Timeline
    processTimelinesNITTA.UIBackend.Timeline
    processUnitTagNITTA.Model.Problems.Allocation, NITTA.Model.Problems
    ProcessWave 
    1 (Type/Class)NITTA.Intermediate.Analysis
    2 (Data Constructor)NITTA.Intermediate.Analysis
    processWavesNITTA.Synthesis.Types, NITTA.Synthesis
    Project 
    1 (Type/Class)NITTA.Project.Types, NITTA.Project
    2 (Data Constructor)NITTA.Project.Types, NITTA.Project
    projectContextNITTA.Project.Context, NITTA.Project.Template, NITTA.Project
    protocolDescriptionNITTA.Model.ProcessorUnits.IO.SimpleIO
    pTagNITTA.Model.Networks.Types
    pTargetProjectPathNITTA.Project.Types, NITTA.Project
    pTemplatesNITTA.Project.Types, NITTA.Project
    pTestCntxNITTA.Project.Types, NITTA.Project
    PU 
    1 (Type/Class)NITTA.Model.Networks.Types
    2 (Data Constructor)NITTA.Model.Networks.Types
    PUClassesNITTA.Model.Networks.Types
    puInOutPortsNITTA.Model.Networks.Types
    puInputPortsNITTA.Model.Networks.Types
    PullNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    pUnitNITTA.Project.Types, NITTA.Project
    pUnitEnvNITTA.Project.Types, NITTA.Project
    puOutputPortsNITTA.Model.Networks.Types
    PUPrototype 
    1 (Type/Class)NITTA.Model.Networks.Types
    2 (Data Constructor)NITTA.Model.Networks.Types
    PushNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    puSizeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    pVarianceBindsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pVarianceUnitWorkloadNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pWaitTimeNITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    pWaveNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pwFsNITTA.Intermediate.Analysis
    pwOutNITTA.Intermediate.Analysis
    rawAttrNITTA.Intermediate.Value, NITTA.Intermediate.Types
    rawDataNITTA.Intermediate.Value, NITTA.Intermediate.Types
    rawFXNITTA.Intermediate.Value, NITTA.Intermediate.Types
    readTextNITTA.Utils.Base, NITTA.Utils
    Receive 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    receiveNITTA.Intermediate.Functions
    receivedValuesNITTA.UIBackend.Types, NITTA.UIBackend.REST
    recLoopNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    recLoopInNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    recLoopOutNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    RefactorStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    refNewNITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    refOldNITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    relatedEndpointsNITTA.Utils.ProcessDescription, NITTA.Utils
    RelationNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    relationsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    reorderAlgorithmNITTA.Intermediate.Analysis
    ResolveDeadlock 
    1 (Type/Class)NITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    resolveDeadlockNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    resolveDeadlockDecisionNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ResolveDeadlockMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.ResolveDeadlock, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.ResolveDeadlock, NITTA.Synthesis.Steps, NITTA.Synthesis
    resolveDeadlockOptionsNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ResolveDeadlockProblemNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ResolveDeadlockViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    restDocsNITTA.UIBackend
    reverseDiffNITTA.Intermediate.Types
    RootNITTA.Synthesis.Types, NITTA.Synthesis
    rootNITTA.UIBackend.Types, NITTA.UIBackend.REST
    RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    runScheduleNITTA.Utils.ProcessDescription
    runTargetSynthesisNITTA.Synthesis
    runTestbenchNITTA.Project
    sAllocationOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    sBindOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    sBreakLoopOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    scalingFactorNITTA.Intermediate.Value, NITTA.Intermediate.Types
    scalingFactorPowerNITTA.Intermediate.Value, NITTA.Intermediate.Types
    scheduleAllocationNITTA.Utils.ProcessDescription
    scheduleEndpointNITTA.Utils.ProcessDescription
    scheduleEndpoint_NITTA.Utils.ProcessDescription
    scheduleFunctionNITTA.Utils.ProcessDescription
    scheduleFunctionBindNITTA.Utils.ProcessDescription
    scheduleFunctionFinishNITTA.Utils.ProcessDescription
    scheduleFunctionFinish_NITTA.Utils.ProcessDescription
    scheduleFunctionRevokeNITTA.Utils.ProcessDescription
    scheduleInstructionUnsafeNITTA.Utils.ProcessDescription
    scheduleInstructionUnsafe_NITTA.Utils.ProcessDescription
    scheduleNestedStepNITTA.Utils.ProcessDescription
    scheduleRefactoringNITTA.Utils.ProcessDescription
    scheduleStepNITTA.Utils.ProcessDescription
    sConstantFoldingOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    scoresNITTA.Synthesis.Types, NITTA.Synthesis
    ScoringInput 
    1 (Type/Class)NITTA.Synthesis.MlBackend.Client
    2 (Data Constructor)NITTA.Synthesis.MlBackend.Client
    ScoringTargetNITTA.Synthesis.MlBackend.Client
    scoringTargetNITTA.Synthesis.MlBackend.Client
    ScoringTargetAllNITTA.Synthesis.MlBackend.Client
    ScoringTargetSidNITTA.Synthesis.MlBackend.Client
    sDataflowOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    sDecisionNITTA.Synthesis.Types, NITTA.Synthesis
    Send 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    sendNITTA.Intermediate.Functions
    setAtNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    ShiftNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    shiftNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    shiftINITTA.Utils
    ShiftIONITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    ShiftLNITTA.Intermediate.Functions
    shiftLNITTA.Intermediate.Functions
    ShiftLRNITTA.Intermediate.Functions
    ShiftPortsNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    ShiftRNITTA.Intermediate.Functions
    shiftRNITTA.Intermediate.Functions
    ShortNodeViewNITTA.UIBackend.ViewHelper
    showTextNITTA.Utils.Base, NITTA.Utils
    Sid 
    1 (Type/Class)NITTA.Synthesis.Types, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Types, NITTA.Synthesis
    sIDNITTA.Synthesis.Types, NITTA.Synthesis
    sigClkNITTA.Project.Types, NITTA.Project
    sigCycleBeginNITTA.Project.Types, NITTA.Project
    sigCycleEndNITTA.Project.Types, NITTA.Project
    sigInCycleNITTA.Project.Types, NITTA.Project
    SignNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    SignalTag 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    signalTagNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    SignalValueNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    sigRstNITTA.Project.Types, NITTA.Project
    SimpleIO 
    1 (Type/Class)NITTA.Model.ProcessorUnits.IO.SimpleIO
    2 (Data Constructor)NITTA.Model.ProcessorUnits.IO.SimpleIO
    SimpleIOInterfaceNITTA.Model.ProcessorUnits.IO.SimpleIO
    SimpleIOPortsNITTA.Model.ProcessorUnits.IO.SimpleIO, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits
    simpleSynthesisIONITTA.Synthesis.Method, NITTA.Synthesis
    SimSpec 
    1 (Type/Class)NITTA.Frontends.XMILE.DocumentParser
    2 (Data Constructor)NITTA.Frontends.XMILE.DocumentParser
    simulateNITTA.Intermediate.Types
    simulateAlgNITTA.Intermediate.Simulation
    simulateDataFlowGraphNITTA.Intermediate.Simulation
    SingleBindNITTA.Model.Problems.Bind, NITTA.Model.Problems
    SingleBindMetricsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    SingleBindViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    smartBindSynthesisIONITTA.Synthesis.Method, NITTA.Synthesis
    snippetClkGenNITTA.Project.VerilogSnippets, NITTA.Project
    snippetDumpFileNITTA.Project.VerilogSnippets, NITTA.Project
    snippetTestBenchNITTA.Project.TestBench, NITTA.Project
    SnippetTestBenchConf 
    1 (Type/Class)NITTA.Project.TestBench, NITTA.Project
    2 (Data Constructor)NITTA.Project.TestBench, NITTA.Project
    softwareNITTA.Project.Types, NITTA.Project
    sOptimizeAccumOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    SourceNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    sParentNITTA.Synthesis.Types, NITTA.Synthesis
    SPINITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    spiMasterPortsNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    SPISlaveNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    spiSlavePortsNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    sResolveDeadlockOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    sStateNITTA.Synthesis.Types, NITTA.Synthesis
    sSubForestVarNITTA.Synthesis.Types, NITTA.Synthesis
    sTargetNITTA.Synthesis.Types, NITTA.Synthesis
    stateOfTheArtSynthesisIONITTA.Synthesis.Method, NITTA.Synthesis
    Step 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    stepNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    StepInfoNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    StepInfoView 
    1 (Type/Class)NITTA.UIBackend.ViewHelper
    2 (Data Constructor)NITTA.UIBackend.ViewHelper
    stepsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    stepsIntervalNITTA.Utils
    Stock 
    1 (Type/Class)NITTA.Frontends.XMILE.DocumentParser
    2 (Data Constructor)NITTA.Frontends.XMILE.DocumentParser
    Sub 
    1 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    2 (Type/Class)NITTA.Intermediate.Functions
    3 (Data Constructor)NITTA.Intermediate.Functions
    subNITTA.Intermediate.Functions
    subComponentsNITTA.Project.Types, NITTA.Project
    subForestIONITTA.Synthesis.Explore, NITTA.Synthesis
    SuffixNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    SyncNITTA.Model.Networks.Types
    SynthesisAPINITTA.UIBackend.REST
    SynthesisDecision 
    1 (Type/Class)NITTA.Synthesis.Types, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Types, NITTA.Synthesis
    SynthesisDecisionClsNITTA.Synthesis.Types, NITTA.Synthesis
    SynthesisMethodNITTA.Synthesis.Types, NITTA.Synthesis.Method, NITTA.Synthesis
    SynthesisMethodConstraintsNITTA.Synthesis.Types, NITTA.Synthesis.Method, NITTA.Synthesis
    synthesisServerNITTA.UIBackend.REST
    SynthesisState 
    1 (Type/Class)NITTA.Synthesis.Types, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Types, NITTA.Synthesis
    synthesisStepsForSuccessNITTA.Synthesis.Analysis
    synthesisTreeRootIONITTA.Synthesis.Explore, NITTA.Synthesis
    synthesizeTargetSystemNITTA.Synthesis
    TaggedTime 
    1 (Type/Class)NITTA.Model.Time, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.Time, NITTA.Model.ProcessorUnits
    takePortTagsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    TargetNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    targetDFGNITTA.Synthesis.Types, NITTA.Synthesis
    targetProcessDurationNITTA.Synthesis.Analysis
    TargetSynthesis 
    1 (Type/Class)NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis
    TargetSystem 
    1 (Type/Class)NITTA.Model.TargetSystem
    2 (Data Constructor)NITTA.Model.TargetSystem
    TargetSystemComponentNITTA.Project.Types, NITTA.Project
    targetUnitNITTA.Synthesis.Types, NITTA.Synthesis
    tbcMC2verilogLiteralNITTA.Project.TestBench, NITTA.Project
    tbCompilerDumpNITTA.Project.TestBench, NITTA.Project
    tbcPortsNITTA.Project.TestBench, NITTA.Project
    tbcSignalsNITTA.Project.TestBench, NITTA.Project
    tbFilesNITTA.Project.TestBench, NITTA.Project
    tbFunctionalSimulationLogNITTA.Project.TestBench, NITTA.Project
    tbFunctionsNITTA.Project.TestBench, NITTA.Project
    tbLogicalSimulationLogNITTA.Project.TestBench, NITTA.Project
    tbPathNITTA.Project.TestBench, NITTA.Project
    tbSimulationDumpNITTA.Project.TestBench, NITTA.Project
    tbStatusNITTA.Project.TestBench, NITTA.Project
    tbSynthesisStepsNITTA.Project.TestBench, NITTA.Project
    tcAvailableNITTA.Model.Time, NITTA.Model.ProcessorUnits
    tcDurationNITTA.Model.Time, NITTA.Model.ProcessorUnits
    tClockNITTA.Model.Time, NITTA.Model.ProcessorUnits
    tDFGNITTA.Synthesis
    teCntxNITTA.Project.TestBench, NITTA.Project
    teComputationDurationNITTA.Project.TestBench, NITTA.Project
    TestableNITTA.Project.TestBench, NITTA.Project
    testBenchImplementationNITTA.Project.TestBench, NITTA.Project
    TestbenchReport 
    1 (Type/Class)NITTA.Project.TestBench, NITTA.Project
    2 (Data Constructor)NITTA.Project.TestBench, NITTA.Project
    testBenchTopModuleNameNITTA.Project.TestBench, NITTA.Project
    TestEnvironment 
    1 (Type/Class)NITTA.Project.TestBench, NITTA.Project
    2 (Data Constructor)NITTA.Project.TestBench, NITTA.Project
    testEnvironmentNITTA.Project.TestBench, NITTA.Project
    testEnvironmentInitFlagNITTA.Project.TestBench, NITTA.Project
    TimeNITTA.Model.Time, NITTA.Model.ProcessorUnits
    TimeConstraint 
    1 (Type/Class)NITTA.Model.Time, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.Time, NITTA.Model.ProcessorUnits
    TimelinePointNITTA.UIBackend.Timeline
    TimelineWithViewPoint 
    1 (Type/Class)NITTA.UIBackend.Timeline
    2 (Data Constructor)NITTA.UIBackend.Timeline
    tLibPathNITTA.Synthesis
    tMicroArchNITTA.Synthesis
    tNameNITTA.Synthesis
    toModuleNameNITTA.Utils
    topDownByScoreSynthesisIONITTA.Synthesis.Method, NITTA.Synthesis
    toTextNITTA.Utils.Base, NITTA.Utils
    tPathNITTA.Synthesis
    TraceVar 
    1 (Type/Class)NITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    2 (Data Constructor)NITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    transferableVarsNITTA.Synthesis.Types, NITTA.Synthesis
    transferredNITTA.Utils
    translateNITTA.Frontends
    translateLuaNITTA.Frontends.Lua
    translateXMILENITTA.Frontends.XMILE.Frontend
    TransportNITTA.Model.Networks.Bus
    tReceivedValuesNITTA.Synthesis
    Tree 
    1 (Type/Class)NITTA.Synthesis.Types, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Types, NITTA.Synthesis
    TreeInfo 
    1 (Type/Class)NITTA.Synthesis.Analysis
    2 (Data Constructor)NITTA.Synthesis.Analysis
    TreeViewNITTA.UIBackend.ViewHelper
    tryBindNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    tSimulationCycleNNITTA.Synthesis
    tSourceCodeNITTA.Synthesis
    tSourceCodeTypeNITTA.Synthesis
    tSynthesisMethodNITTA.Synthesis
    tTagNITTA.Model.Time, NITTA.Model.ProcessorUnits
    tTemplatesNITTA.Synthesis
    tvFmtNITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    tvVarNITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    uEnvNITTA.Model.Networks.Types
    UnambiguouslyDecodeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    UndefNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    unionsMapNITTA.Utils.Base, NITTA.Utils
    unitNITTA.Model.Networks.Types
    UnitDesc 
    1 (Type/Class)NITTA.Model.Microarchitecture.Types
    2 (Data Constructor)NITTA.Model.Microarchitecture.Types
    UnitEndpoints 
    1 (Type/Class)NITTA.UIBackend.REST
    2 (Data Constructor)NITTA.UIBackend.REST
    UnitEnv 
    1 (Type/Class)NITTA.Project.Types, NITTA.Project
    2 (Data Constructor)NITTA.Project.Types, NITTA.Project
    UnitTagNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    unitTypeNITTA.Model.Networks.Types
    unitWorkloadInFunctionNITTA.Synthesis.Types, NITTA.Synthesis
    updAtNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    updateCntxNITTA.Intermediate.Types
    usedPortTagsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    Val 
    1 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    2 (Type/Class)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    valueNITTA.Intermediate.Value, NITTA.Intermediate.Types
    valueInNITTA.Project.Types, NITTA.Project
    valueOutNITTA.Project.Types, NITTA.Project
    values2dumpNITTA.Utils
    Var 
    1 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    2 (Type/Class)NITTA.Intermediate.Variable, NITTA.Intermediate.Types
    VariablesNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    variablesNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    VarValTimeNITTA.Model.Time, NITTA.Model.ProcessorUnits
    VarValTimeJSONNITTA.Model.Time, NITTA.Model.ProcessorUnits, NITTA.UIBackend.ViewHelper
    vDownNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    VerilogNITTA.Utils
    verilogAssertRENITTA.Intermediate.Value, NITTA.Intermediate.Types
    verilogHelperNITTA.Intermediate.Value, NITTA.Intermediate.Types
    verilogProjectFilesNITTA.Project.TestBench, NITTA.Project
    VerticalNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    viewNITTA.UIBackend.ViewHelperCls, NITTA.UIBackend.ViewHelper
    ViewableNITTA.UIBackend.ViewHelperCls, NITTA.UIBackend.ViewHelper
    viewNodeTreeNITTA.UIBackend.ViewHelper
    ViewPointIDNITTA.UIBackend.Timeline
    VisJSNITTA.UIBackend.VisJS
    vsToStringListNITTA.Utils.Base, NITTA.Utils
    vUpNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    whatsHappenNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    WithFunctionsNITTA.Intermediate.Types
    withLazyMlBackendServerNITTA.Synthesis.MlBackend.ServerInstance
    withShiftNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    workNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    writeProjectNITTA.Project
    writeRenderedTemplatesNITTA.Project.Template, NITTA.Project
    X 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    xaEquationNITTA.Frontends.XMILE.DocumentParser
    xaNameNITTA.Frontends.XMILE.DocumentParser
    xcAuxsNITTA.Frontends.XMILE.DocumentParser
    xcFlowsNITTA.Frontends.XMILE.DocumentParser
    xcSimSpecsNITTA.Frontends.XMILE.DocumentParser
    xcStocksNITTA.Frontends.XMILE.DocumentParser
    xfEquationNITTA.Frontends.XMILE.DocumentParser
    xfNameNITTA.Frontends.XMILE.DocumentParser
    XMDuopNITTA.Frontends.XMILE.MathParser
    xmeLexprNITTA.Frontends.XMILE.MathParser
    xmeOpNITTA.Frontends.XMILE.MathParser
    xmeRexprNITTA.Frontends.XMILE.MathParser
    XMExprNITTA.Frontends.XMILE.MathParser
    XMILENITTA.Frontends
    xsEquationNITTA.Frontends.XMILE.DocumentParser
    xsInflowNITTA.Frontends.XMILE.DocumentParser
    xsNameNITTA.Frontends.XMILE.DocumentParser
    xsOutflowNITTA.Frontends.XMILE.DocumentParser
    xssDtNITTA.Frontends.XMILE.DocumentParser
    xssStartNITTA.Frontends.XMILE.DocumentParser
    xssStopNITTA.Frontends.XMILE.DocumentParser
    zipSignalTagsAndValuesNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    \ No newline at end of file +nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors (Index)
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors

    Index

    $sel:actions:AccNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    $sel:addr:FramPortsNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:bindGroup:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:bounceFilter:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:brokeVerilog:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:bufferSize:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:changeset:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:cRefNew:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:cRefOld:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:currentWork:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:currentWorkEndpoints:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:denom:DivisionNITTA.Intermediate.Functions
    $sel:doneAt:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:edges:GraphStructureNITTA.UIBackend.VisJS
    $sel:edgeWidth:GraphEdgeNITTA.UIBackend.VisJS
    $sel:fontAllign:GraphEdgeNITTA.UIBackend.VisJS
    $sel:fontSize:GraphNodeNITTA.UIBackend.VisJS
    $sel:from:GraphEdgeNITTA.UIBackend.VisJS
    $sel:function:GraphNodeNITTA.UIBackend.VisJS
    $sel:function:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:history:GraphNodeNITTA.UIBackend.VisJS
    $sel:id:GraphNodeNITTA.UIBackend.VisJS
    $sel:input:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:ioSyncMode:MicroarchitectureDescNITTA.Model.Microarchitecture.Types
    $sel:isReceiveOver:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:jobs:DividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:label:GraphEdgeNITTA.UIBackend.VisJS
    $sel:label:GraphNodeNITTA.UIBackend.VisJS
    $sel:load:AccumPortsNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    $sel:lostEndpointInVerticalRelation:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:lostEndpointSource:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:lostEndpointTarget:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:lostFunctionInVerticalRelation:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:lostInstructionInVerticalRelation:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:masterSCL:I2CMasterNITTA.Model.ProcessorUnits.IO.I2C
    $sel:masterSDA:I2CMasterNITTA.Model.ProcessorUnits.IO.I2C
    $sel:master_cs:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:master_miso:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:master_mosi:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:master_sclk:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:memory:FramNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:mock:DividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:neg:AccumPortsNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    $sel:networks:MicroarchitectureDescNITTA.Model.Microarchitecture.Types
    $sel:networkTag:NetworkDescNITTA.Model.Microarchitecture.Types
    $sel:networkTag:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:new:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:newBuffer:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:nodeColor:GraphNodeNITTA.UIBackend.VisJS
    $sel:nodes:GraphStructureNITTA.UIBackend.VisJS
    $sel:nodeShape:GraphNodeNITTA.UIBackend.VisJS
    $sel:nodeSize:GraphNodeNITTA.UIBackend.VisJS
    $sel:numer:DivisionNITTA.Intermediate.Functions
    $sel:oe:AccumPortsNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    $sel:oe:BrokenPortsNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:oe:DividerPortsNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:oe:FramPortsNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:oe:MultiplierPortsNITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    $sel:oe:SimpleIOPortsNITTA.Model.ProcessorUnits.IO.SimpleIO, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits
    $sel:old:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:outputs:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:pipeline:DividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:processUnitTag:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:process_:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:process_:DividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:process_:FramNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:process_:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:pu:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:quotient:DivisionNITTA.Intermediate.Functions
    $sel:receiveN:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:receiveQueue:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:remain:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:remain:DivisionNITTA.Intermediate.Functions
    $sel:remainBuffers:FramNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:remains:DividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:resetAcc:AccumPortsNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    $sel:sel:DividerPortsNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:sendN:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:sendQueue:SimpleIONITTA.Model.ProcessorUnits.IO.SimpleIO
    $sel:slaveSCL:I2CMasterNITTA.Model.ProcessorUnits.IO.I2C
    $sel:slaveSDA:I2CMasterNITTA.Model.ProcessorUnits.IO.I2C
    $sel:slave_cs:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:slave_miso:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:slave_mosi:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:slave_sclk:SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    $sel:source:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:sources:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:stop:SimpleIOPortsNITTA.Model.ProcessorUnits.IO.SimpleIO, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits
    $sel:targets:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:targets:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:timelinePoints:TimelineWithViewPointNITTA.UIBackend.Timeline
    $sel:timelines:ProcessTimelinesNITTA.UIBackend.Timeline
    $sel:timelineViewpoint:TimelineWithViewPointNITTA.UIBackend.Timeline
    $sel:to:GraphEdgeNITTA.UIBackend.VisJS
    $sel:unitEndpoints:UnitEndpointsNITTA.UIBackend.REST
    $sel:units:NetworkDescNITTA.Model.Microarchitecture.Types
    $sel:unitTag:UnitDescNITTA.Model.Microarchitecture.Types
    $sel:unitTag:UnitEndpointsNITTA.UIBackend.REST
    $sel:unitType:UnitDescNITTA.Model.Microarchitecture.Types
    $sel:unknownDataOut:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:value:RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    $sel:valueType:NetworkDescNITTA.Model.Microarchitecture.Types
    $sel:verticalRelations:ProcessTimelinesNITTA.UIBackend.Timeline
    $sel:wr:BrokenPortsNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:wr:DividerPortsNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    $sel:wr:FramPortsNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    $sel:wr:MultiplierPortsNITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    $sel:wr:SimpleIOPortsNITTA.Model.ProcessorUnits.IO.SimpleIO, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits
    $sel:wrongAttr:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:wrongControlOnPull:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:wrongControlOnPush:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    $sel:wrongVerilogSimulationValue:BrokenNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    +++NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    <?>NITTA.Synthesis.Types, NITTA.Synthesis
    Acc 
    1 (Type/Class)NITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    accNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    accFromStrNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    AccumNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    AccumIONITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    AccumPortsNITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits
    ActionNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    Add 
    1 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    2 (Type/Class)NITTA.Intermediate.Functions
    3 (Data Constructor)NITTA.Intermediate.Functions
    add 
    1 (Function)NITTA.Intermediate.Functions
    2 (Function)NITTA.Model.Networks.Bus
    addCustomNITTA.Model.Networks.Bus
    addCustomPrototypeNITTA.Model.Networks.Bus
    addFuncToDataFlowGraphNITTA.Intermediate.DataFlow
    addPrototypeNITTA.Model.Networks.Bus
    AggregateNITTA.Project.Types, NITTA.Project
    algConstantsNITTA.Frontends.Lua
    algGraphNITTA.Frontends.Lua
    algLatestLuaValueInstanceNITTA.Frontends.Lua
    algStartupArgsNITTA.Frontends.Lua
    algToVizJSNITTA.UIBackend.VisJS
    algTraceFuncsNITTA.Frontends.Lua
    algVarCountersNITTA.Frontends.Lua
    algVarsNITTA.Frontends.Lua
    allBestThreadIONITTA.Synthesis.Method, NITTA.Synthesis
    allBindsAndRefsIONITTA.Synthesis.Method, NITTA.Synthesis
    Allocation 
    1 (Type/Class)NITTA.Model.Problems.Allocation, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Allocation, NITTA.Model.Problems
    allocationDecisionNITTA.Model.Problems.Allocation, NITTA.Model.Problems
    AllocationMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    allocationOptionsNITTA.Model.Problems.Allocation, NITTA.Model.Problems
    AllocationProblemNITTA.Model.Problems.Allocation, NITTA.Model.Problems
    AllocationStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    AllocationViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    allowToProcessNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    anySPINITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    apiPathNITTA.UIBackend
    ASyncNITTA.Model.Networks.Types
    Attr 
    1 (Type/Class)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    attrLiteralNITTA.Intermediate.Value, NITTA.Intermediate.Types
    attrWidthNITTA.Intermediate.Value, NITTA.Intermediate.Types
    Aux 
    1 (Type/Class)NITTA.Frontends.XMILE.DocumentParser
    2 (Data Constructor)NITTA.Frontends.XMILE.DocumentParser
    BackendCtx 
    1 (Type/Class)NITTA.UIBackend.Types, NITTA.UIBackend.REST
    2 (Data Constructor)NITTA.UIBackend.Types, NITTA.UIBackend.REST
    backendServerNITTA.UIBackend
    baseUrlNITTA.Synthesis.MlBackend.ServerInstance
    bestStepIONITTA.Synthesis.Method, NITTA.Synthesis
    BindNITTA.Model.Problems.Bind, NITTA.Model.Problems
    bindNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    bindDecisionNITTA.Model.Problems.Bind, NITTA.Model.Problems
    bindGroupNITTA.Model.Problems.Bind, NITTA.Model.Problems
    bindingAlternativeNITTA.Synthesis.Types, NITTA.Synthesis
    BindMetricsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    bindOptionsNITTA.Model.Problems.Bind, NITTA.Model.Problems
    BindProblemNITTA.Model.Problems.Bind, NITTA.Model.Problems
    binds2bindGroupNITTA.Model.Problems.Bind, NITTA.Model.Problems
    bindWavesNITTA.Synthesis.Types, NITTA.Synthesis
    bnBoundNITTA.Model.Networks.Bus
    bnEnvNITTA.Model.Networks.Bus
    bnNameNITTA.Model.Networks.Bus
    bnProcessNITTA.Model.Networks.Bus
    bnPUPrototypesNITTA.Model.Networks.Bus
    bnPusNITTA.Model.Networks.Bus
    bnRemainsNITTA.Model.Networks.Bus
    bnSignalBusWidthNITTA.Model.Networks.Bus
    BoolNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    bool2verilogNITTA.Utils
    boundFunctionsNITTA.Model.Networks.Bus
    BreakLoop 
    1 (Type/Class)NITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    breakLoopDecisionNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    BreakLoopMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.BreakLoop, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.BreakLoop, NITTA.Synthesis.Steps, NITTA.Synthesis
    breakLoopOptionsNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    BreakLoopProblemNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    BreakLoopViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    Broken 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    BrokenBuffer 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    brokenBufferNITTA.Intermediate.Functions
    BrokenIONITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    BrokenPortsNITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits
    BrokenSignalNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    Buffer 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    bufferNITTA.Intermediate.Functions
    bufferSuffixNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    buildProcessWavesNITTA.Intermediate.Analysis
    BusNetwork 
    1 (Type/Class)NITTA.Model.Networks.Bus
    2 (Data Constructor)NITTA.Model.Networks.Bus
    busNetworkNITTA.Model.Networks.Bus
    BusNetworkIONITTA.Model.Networks.Bus
    BusNetworkPortsNITTA.Model.Networks.Bus
    ByTimeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    Cache 
    1 (Type/Class)NITTA.Synthesis.MlBackend.FixedCache
    2 (Data Constructor)NITTA.Synthesis.MlBackend.FixedCache
    CADStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    calculateDefaultValueNITTA.Frontends.XMILE.MathParser
    castFNITTA.Intermediate.Types
    castInstructionNITTA.Utils.ProcessDescription
    catchToMaybeIONITTA.Utils.Base, NITTA.Utils
    changeINITTA.Intermediate.Types
    changeONITTA.Intermediate.Types
    Changeset 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    changesetNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    checkProcessIntegrityNITTA.Model.ProcessIntegrity
    Cntx 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    cntxCycleNumberNITTA.Intermediate.Types
    cntxProcessNITTA.Intermediate.Types
    cntxReceivedNITTA.Intermediate.Types
    cntxReceivedBySliceNITTA.Intermediate.Types
    collectNittaPathNITTA.Project.Template, NITTA.Project
    ConnectedNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    Constant 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    constantNITTA.Intermediate.Functions
    ConstantFolding 
    1 (Type/Class)NITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    constantFoldingDecisionNITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ConstantFoldingMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.ConstantFolding, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.ConstantFolding, NITTA.Synthesis.Steps, NITTA.Synthesis
    constantFoldingOptionsNITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ConstantFoldingProblemNITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ConstantFoldingViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    Content 
    1 (Type/Class)NITTA.Frontends.XMILE.DocumentParser
    2 (Data Constructor)NITTA.Frontends.XMILE.DocumentParser
    ControllableNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    controlSignalLiteralNITTA.Model.Networks.Bus
    countSuffixNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    cRefNewNITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    cRefOldNITTA.Model.Problems.Refactor.ConstantFolding, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ctrlPortsNITTA.Project.Types, NITTA.Project
    CycleCntx 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    cycleCntxNITTA.Intermediate.Types
    dataflowDecisionNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    DataflowDecisionViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    DataFlowGraphNITTA.Intermediate.DataFlow
    DataflowMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    dataflowOption2decisionNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    dataflowOptionsNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    DataflowProblemNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    DataflowSt 
    1 (Type/Class)NITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    dataLiteralNITTA.Intermediate.Value, NITTA.Intermediate.Types
    dataWidthNITTA.Intermediate.Value, NITTA.Intermediate.Types
    decisionNITTA.Synthesis.Types, NITTA.Synthesis
    decisionsNITTA.Synthesis.Types, NITTA.Synthesis
    DecisionViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    decodeInstructionNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    DefaultXNITTA.Intermediate.Value, NITTA.Intermediate.Types
    defineNetworkNITTA.Model.Networks.Bus
    defProjectTemplatesNITTA.Project.Types, NITTA.Project
    defScoreNITTA.Synthesis.Types, NITTA.Synthesis
    DefTreeNITTA.Synthesis.Types, NITTA.Synthesis.Method, NITTA.Synthesis
    defXNITTA.Intermediate.Value, NITTA.Intermediate.Types
    descentNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    DFClusterNITTA.Intermediate.DataFlow
    DFLeafNITTA.Intermediate.DataFlow
    dfSourceNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    dfTargetsNITTA.Model.Problems.Dataflow, NITTA.Model.Problems
    diffNITTA.Model.Networks.Types
    directionNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    DivNITTA.Frontends.XMILE.MathParser
    Divider 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    dividerNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    DividerIONITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    DividerPortsNITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits
    Division 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    divisionNITTA.Intermediate.Functions
    doc2textNITTA.Utils
    DuoNITTA.Frontends.XMILE.MathParser
    EmptyNITTA.Project.Types, NITTA.Project
    endpointAtNITTA.Utils
    endpointDecisionNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    endpointOptionsNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    endpointOptionToDecisionNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    EndpointProblemNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    EndpointRoleNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    EndpointRoleStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    EndpointSt 
    1 (Type/Class)NITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    envInOutPortsNITTA.Project.Types, NITTA.Project
    envInputPortsNITTA.Project.Types, NITTA.Project
    envOutputPortsNITTA.Project.Types, NITTA.Project
    epAtNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    epRoleNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    establishHorizontalRelationsNITTA.Utils.ProcessDescription
    establishVerticalRelationsNITTA.Utils.ProcessDescription
    estimateNITTA.Synthesis.Types, NITTA.Synthesis
    estimateVarWavesNITTA.Intermediate.Analysis
    execScheduleNITTA.Utils.ProcessDescription
    execScheduleWithProcessNITTA.Utils.ProcessDescription
    extInOutsNITTA.Model.Networks.Bus
    extInputsNITTA.Model.Networks.Bus
    extOutputsNITTA.Model.Networks.Bus
    extractInstructionAtNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    F 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    fetchNITTA.Synthesis.MlBackend.FixedCache
    fInNITTA.Frontends.Lua
    findStartupFunctionNITTA.Frontends.Lua
    fIntNITTA.Frontends.Lua
    FixedPointCompatibleNITTA.Intermediate.Value, NITTA.Intermediate.Types
    Flow 
    1 (Type/Class)NITTA.Frontends.XMILE.DocumentParser
    2 (Data Constructor)NITTA.Frontends.XMILE.DocumentParser
    fNameNITTA.Frontends.Lua
    fOutNITTA.Frontends.Lua
    fractionalBitSizeNITTA.Intermediate.Value, NITTA.Intermediate.Types
    Fram 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    FramIONITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    FramPortsNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    framWithSizeNITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits
    frDataFlowNITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    FromLibraryNITTA.Project.Types, NITTA.Project
    fromRawNITTA.Intermediate.Value, NITTA.Intermediate.Types
    fromTemplateNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    fromTextNITTA.Utils.Base, NITTA.Utils
    FrontendResult 
    1 (Type/Class)NITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    2 (Data Constructor)NITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    FrontendTypeNITTA.Frontends
    frPrettyLogNITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    frTraceNITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    fsToDataFlowGraphNITTA.Intermediate.DataFlow
    FullNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    funNITTA.Intermediate.Types
    FunctionNITTA.Intermediate.Types
    functionsNITTA.Intermediate.Types
    FunctionSimulationNITTA.Intermediate.Types
    functionTypeNITTA.Intermediate.Types
    funHistoryNITTA.Intermediate.Types
    fValuesNITTA.Frontends.Lua
    fvFunNITTA.Intermediate.Types, NITTA.UIBackend.ViewHelper
    fvHistoryNITTA.Intermediate.Types, NITTA.UIBackend.ViewHelper
    FView 
    1 (Type/Class)NITTA.Intermediate.Types, NITTA.UIBackend.ViewHelper
    2 (Data Constructor)NITTA.Intermediate.Types, NITTA.UIBackend.ViewHelper
    FX 
    1 (Type/Class)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    getCntxNITTA.Intermediate.Types
    getEndpointNITTA.Utils
    getEndpointsNITTA.Utils
    getFromTomlNITTA.Utils
    getFromTomlSectionNITTA.Utils
    getInstructionNITTA.Utils
    getIntermediateNITTA.Utils
    getIntermediatesNITTA.Utils
    getLuaBlockFromSourcesNITTA.Frontends.Lua
    getProcessSliceNITTA.Utils.ProcessDescription
    getTomlNITTA.Utils
    getTraceVarFormatNITTA.Frontends.Common, NITTA.Frontends
    getTreeInfoNITTA.Synthesis.Analysis
    getTreeIONITTA.Synthesis.Explore, NITTA.Synthesis
    getTreePathIONITTA.Synthesis.Explore, NITTA.Synthesis
    GraphEdge 
    1 (Type/Class)NITTA.UIBackend.VisJS
    2 (Data Constructor)NITTA.UIBackend.VisJS
    GraphNode 
    1 (Type/Class)NITTA.UIBackend.VisJS
    2 (Data Constructor)NITTA.UIBackend.VisJS
    GraphStructure 
    1 (Type/Class)NITTA.UIBackend.VisJS
    2 (Data Constructor)NITTA.UIBackend.VisJS
    GroupBindNITTA.Model.Problems.Bind, NITTA.Model.Problems
    GroupBindMetricsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    GroupBindViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    handlesNITTA.Synthesis.MlBackend.ServerInstance
    hardwareNITTA.Project.Types, NITTA.Project
    hardwareInstanceNITTA.Project.Types, NITTA.Project
    hdlValDumpNITTA.Utils
    hNextNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    HorizontalNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    hPrevNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    I 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    I2CNITTA.Model.ProcessorUnits.IO.I2C
    I2CMasterNITTA.Model.ProcessorUnits.IO.I2C
    I2CSlaveNITTA.Model.ProcessorUnits.IO.I2C
    i2cUnitNITTA.Model.ProcessorUnits.IO.I2C
    identifyFrontendTypeNITTA.Frontends
    ImmediateNITTA.Project.Types, NITTA.Project
    impFileNameNITTA.Project.Types, NITTA.Project
    ImplementationNITTA.Project.Types, NITTA.Project
    implementationContextNITTA.Project.Context
    impPathNITTA.Project.Types, NITTA.Project
    impTextNITTA.Project.Types, NITTA.Project
    initNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    inoutPortsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    InoutPortTag 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    inoutPortTagNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    inputPortsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    InputPortTag 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    inputPortTagNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    inputsNITTA.Intermediate.Types
    inputsLockOutputsNITTA.Intermediate.Types
    inputsPushedAtNITTA.Utils
    InstructionNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits, NITTA.Model.ProcessorUnits, NITTA.Model.Networks.Bus
    InstructionStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    IntermediateStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    IntervalView 
    1 (Type/Class)NITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    2 (Data Constructor)NITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    IntX 
    1 (Type/Class)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    intXNITTA.Intermediate.Value, NITTA.Intermediate.Types
    invalidNITTA.Intermediate.Value, NITTA.Intermediate.Types
    IOConnectedNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    IOPortsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits, NITTA.Model.ProcessorUnits, NITTA.Model.Networks.Bus
    ioPortsNITTA.Project.Types, NITTA.Project
    ioSyncNITTA.Model.Networks.Bus
    IOSynchronizationNITTA.Model.Networks.Types
    IOTestBenchNITTA.Project.TestBench, NITTA.Project
    isAllocationStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    isCompleteNITTA.Synthesis.Types, NITTA.Synthesis
    isConstNITTA.Intermediate.Functions
    isInstructionNITTA.Utils
    isIntermediateNITTA.Utils
    isInternalLockPossibleNITTA.Intermediate.Types
    isLeafNITTA.Synthesis.Types, NITTA.Synthesis
    isLoopNITTA.Intermediate.Functions
    isMultiBindNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    isObviousBindsNITTA.Model.Problems.Bind, NITTA.Model.Problems
    isObviousMultiBindNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    isPullNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    isPushNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    isRefactorNITTA.Synthesis.Steps, NITTA.Synthesis
    isRefactorStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    isSingleBindNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    isSourceNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    isSubroleOfNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    isSynthesisCompleteNITTA.Model.TargetSystem
    isTargetNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    isTemplateNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    LabelNITTA.Intermediate.Types
    labelNITTA.Intermediate.Types
    Lock 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    lockByNITTA.Intermediate.Types
    lockedNITTA.Intermediate.Types
    LocksNITTA.Intermediate.Types
    locksNITTA.Intermediate.Types
    log2csvNITTA.Intermediate.Types
    log2jsonNITTA.Intermediate.Types
    log2mdNITTA.Intermediate.Types
    Loop 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    loopNITTA.Intermediate.Functions
    LoopBegin 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    LoopEnd 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    loopINITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    loopONITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    loopXNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    LuaNITTA.Frontends
    LuaAlgBuilder 
    1 (Type/Class)NITTA.Frontends.Lua
    2 (Data Constructor)NITTA.Frontends.Lua
    LuaStatement 
    1 (Type/Class)NITTA.Frontends.Lua
    2 (Data Constructor)NITTA.Frontends.Lua
    LuaValueInstance 
    1 (Type/Class)NITTA.Frontends.Lua
    2 (Data Constructor)NITTA.Frontends.Lua
    lviAssignCountNITTA.Frontends.Lua
    lviIsConstantNITTA.Frontends.Lua
    lviNameNITTA.Frontends.Lua
    mAvgParallelsNITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    maxBufferStackNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    maximumOnNITTA.Utils.Base, NITTA.Utils
    mDataFlowGraphNITTA.Model.TargetSystem
    metricsNITTA.Synthesis.Types, NITTA.Synthesis
    MicroarchitectureDesc 
    1 (Type/Class)NITTA.Model.Microarchitecture.Types
    2 (Data Constructor)NITTA.Model.Microarchitecture.Types
    microarchitectureDescNITTA.Model.Microarchitecture.Types
    MicrocodeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits, NITTA.Model.ProcessorUnits
    microcodeAtNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    minimumOnNITTA.Utils.Base, NITTA.Utils
    minMaxRawNITTA.Intermediate.Value, NITTA.Intermediate.Types
    MinusNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    mkMicroarchitectureNITTA.Model.Microarchitecture.Config
    mkModelWithOneNetworkNITTA.Synthesis
    mlBackendGetterNITTA.UIBackend.Types, NITTA.UIBackend.REST
    MlBackendServer 
    1 (Type/Class)NITTA.Synthesis.MlBackend.ServerInstance
    2 (Data Constructor)NITTA.Synthesis.MlBackend.ServerInstance
    mlScoreKeyPrefixNITTA.Synthesis.Types, NITTA.Synthesis
    mMaxParallelsNITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    mMinPusForRemainsNITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    modeNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    modifyNetworkNITTA.Model.Networks.Bus
    moduleNameNITTA.Project.Types, NITTA.Project
    mParallelismNITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    mRelatedRemainsNITTA.Synthesis.Steps.Allocation, NITTA.Synthesis.Steps, NITTA.Synthesis
    MulNITTA.Frontends.XMILE.MathParser
    MultiplierNITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    multiplierNITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    MultiplierIONITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    MultiplierPortsNITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits
    Multiply 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    multiplyNITTA.Intermediate.Functions
    mUnitNITTA.Model.TargetSystem
    Neg 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    negNITTA.Intermediate.Functions
    NestedStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    NetworkDesc 
    1 (Type/Class)NITTA.Model.Microarchitecture.Types
    2 (Data Constructor)NITTA.Model.Microarchitecture.Types
    networkTagNITTA.Model.Problems.Allocation, NITTA.Model.Problems
    newBufferNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    newCacheNITTA.Synthesis.MlBackend.FixedCache
    NextTickNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    nextTickNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    nextTick_NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    nextUidNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    nodesNITTA.Synthesis.MlBackend.Client
    nodeScoresNITTA.UIBackend.Types, NITTA.UIBackend.REST
    nodesFailedNITTA.Synthesis.Analysis
    nodesNotProcessedNITTA.Synthesis.Analysis
    nodesSuccessNITTA.Synthesis.Analysis
    nodesVisitedNITTA.Synthesis.Analysis
    NodeViewNITTA.UIBackend.ViewHelper
    NoneNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    noSynthesisNITTA.Synthesis.Method, NITTA.Synthesis
    nStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    nTitleNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    numberOfDataflowOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    numberOfProcessWavesNITTA.Synthesis.Types, NITTA.Synthesis
    O 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    obviousBindThreadIONITTA.Synthesis.Method, NITTA.Synthesis
    oeNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    OnBoardNITTA.Model.Networks.Types
    oneOfNITTA.Utils.Base, NITTA.Utils
    OptimizeAccum 
    1 (Type/Class)NITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    optimizeAccumDecisionNITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    OptimizeAccumMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.OptimizeAccum, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.OptimizeAccum, NITTA.Synthesis.Steps, NITTA.Synthesis
    optimizeAccumOptionsNITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    OptimizeAccumProblemNITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    OptimizeAccumViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    optionNITTA.Synthesis.Types, NITTA.Synthesis
    outputPathNITTA.UIBackend.Types, NITTA.UIBackend.REST
    outputPortsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    OutputPortTag 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    outputPortTagNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    outputsNITTA.Intermediate.Types
    pAbsNittaPathNITTA.Project.Types, NITTA.Project
    pAbsTargetProjectPathNITTA.Project.Types, NITTA.Project
    packFNITTA.Intermediate.Types
    pAllowDataFlowNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pAlternativeNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    ParallelismTypeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    parallelismTypeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    parametersNITTA.Synthesis.Types, NITTA.Synthesis
    parseDocumentNITTA.Frontends.XMILE.DocumentParser
    parseXmileEquationNITTA.Frontends.XMILE.MathParser
    PatchNITTA.Intermediate.Types
    patchNITTA.Intermediate.Types
    pAvgBindsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pAvgUnitWorkloadNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pBufferCountNITTA.Synthesis.Steps.ResolveDeadlock, NITTA.Synthesis.Steps, NITTA.Synthesis
    pCriticalNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pDescNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    pFirstWaveOfTargetUseNITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    pFunctionPercentInBindsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pIDNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    pInProjectNittaPathNITTA.Project.Types, NITTA.Project
    pIntervalNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    pIOPortsNITTA.Model.Networks.Types
    PipelineNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    pLibPathNITTA.Project.Types, NITTA.Project
    PlusNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    pNameNITTA.Project.Types, NITTA.Project
    pNotTransferableInputsNITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    pNumberOfBoundFunctionsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pNumberOfLockedVariablesNITTA.Synthesis.Steps.ResolveDeadlock, NITTA.Synthesis.Steps, NITTA.Synthesis
    pNumberOfTransferableVariablesNITTA.Synthesis.Steps.ResolveDeadlock, NITTA.Synthesis.Steps, NITTA.Synthesis
    pOnlyObviousBindsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    PortsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits.Multiplier, NITTA.Model.ProcessorUnits.IO.SimpleIO, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits.Fram, NITTA.Model.ProcessorUnits.Divider, NITTA.Model.ProcessorUnits.Broken, NITTA.Model.ProcessorUnits.Accum, NITTA.Model.ProcessorUnits, NITTA.Model.ProcessorUnits, NITTA.Model.Networks.Bus
    positiveSubForestIONITTA.Synthesis.Explore, NITTA.Synthesis
    possibleDeadlockBindsNITTA.Synthesis.Types, NITTA.Synthesis
    pOutputNumberNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pPercentOfBoundInputsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pPossibleDeadlockNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pProtoNITTA.Model.Networks.Types
    predictScoresIONITTA.Synthesis.MlBackend.Client
    prepareJSAPINITTA.UIBackend
    pRestlessNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pRestrictedTimeNITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    prettyLogNITTA.Frontends.Common, NITTA.Frontends
    Process 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    processNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    processDurationNITTA.Model.TargetSystem
    ProcessIntegrityNITTA.Model.ProcessIntegrity
    ProcessorUnitNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    processStatementNITTA.Frontends.Lua
    ProcessStepIDNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    ProcessTimelines 
    1 (Type/Class)NITTA.UIBackend.Timeline
    2 (Data Constructor)NITTA.UIBackend.Timeline
    processTimelinesNITTA.UIBackend.Timeline
    processUnitTagNITTA.Model.Problems.Allocation, NITTA.Model.Problems
    ProcessWave 
    1 (Type/Class)NITTA.Intermediate.Analysis
    2 (Data Constructor)NITTA.Intermediate.Analysis
    processWavesNITTA.Synthesis.Types, NITTA.Synthesis
    Project 
    1 (Type/Class)NITTA.Project.Types, NITTA.Project
    2 (Data Constructor)NITTA.Project.Types, NITTA.Project
    projectContextNITTA.Project.Context, NITTA.Project.Template, NITTA.Project
    protocolDescriptionNITTA.Model.ProcessorUnits.IO.SimpleIO
    pTagNITTA.Model.Networks.Types
    pTargetProjectPathNITTA.Project.Types, NITTA.Project
    pTemplatesNITTA.Project.Types, NITTA.Project
    pTestCntxNITTA.Project.Types, NITTA.Project
    PU 
    1 (Type/Class)NITTA.Model.Networks.Types
    2 (Data Constructor)NITTA.Model.Networks.Types
    PUClassesNITTA.Model.Networks.Types
    puInOutPortsNITTA.Model.Networks.Types
    puInputPortsNITTA.Model.Networks.Types
    PullNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    pUnitNITTA.Project.Types, NITTA.Project
    pUnitEnvNITTA.Project.Types, NITTA.Project
    puOutputPortsNITTA.Model.Networks.Types
    PUPrototype 
    1 (Type/Class)NITTA.Model.Networks.Types
    2 (Data Constructor)NITTA.Model.Networks.Types
    PushNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    puSizeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    pVarianceBindsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pVarianceUnitWorkloadNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pWaitTimeNITTA.Synthesis.Steps.Dataflow, NITTA.Synthesis.Steps, NITTA.Synthesis
    pWaveNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    pwFsNITTA.Intermediate.Analysis
    pwOutNITTA.Intermediate.Analysis
    rawAttrNITTA.Intermediate.Value, NITTA.Intermediate.Types
    rawDataNITTA.Intermediate.Value, NITTA.Intermediate.Types
    rawFXNITTA.Intermediate.Value, NITTA.Intermediate.Types
    readTextNITTA.Utils.Base, NITTA.Utils
    Receive 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    receiveNITTA.Intermediate.Functions
    receivedValuesNITTA.UIBackend.Types, NITTA.UIBackend.REST
    recLoopNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    recLoopInNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    recLoopOutNITTA.Model.Problems.Refactor.BreakLoop, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    RefactorStepNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    refNewNITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    refOldNITTA.Model.Problems.Refactor.OptimizeAccum, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    relatedEndpointsNITTA.Utils.ProcessDescription, NITTA.Utils
    RelationNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    relationsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    reorderAlgorithmNITTA.Intermediate.Analysis
    ResolveDeadlock 
    1 (Type/Class)NITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    2 (Data Constructor)NITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    resolveDeadlockNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    resolveDeadlockDecisionNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ResolveDeadlockMetrics 
    1 (Type/Class)NITTA.Synthesis.Steps.ResolveDeadlock, NITTA.Synthesis.Steps, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Steps.ResolveDeadlock, NITTA.Synthesis.Steps, NITTA.Synthesis
    resolveDeadlockOptionsNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ResolveDeadlockProblemNITTA.Model.Problems.Refactor.ResolveDeadlock, NITTA.Model.Problems.Refactor, NITTA.Model.Problems
    ResolveDeadlockViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    restDocsNITTA.UIBackend
    reverseDiffNITTA.Intermediate.Types
    RootNITTA.Synthesis.Types, NITTA.Synthesis
    rootNITTA.UIBackend.Types, NITTA.UIBackend.REST
    RootViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    runScheduleNITTA.Utils.ProcessDescription
    runTargetSynthesisNITTA.Synthesis
    runTestbenchNITTA.Project
    sAllocationOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    sBindOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    sBreakLoopOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    scalingFactorNITTA.Intermediate.Value, NITTA.Intermediate.Types
    scalingFactorPowerNITTA.Intermediate.Value, NITTA.Intermediate.Types
    scheduleAllocationNITTA.Utils.ProcessDescription
    scheduleEndpointNITTA.Utils.ProcessDescription
    scheduleEndpoint_NITTA.Utils.ProcessDescription
    scheduleFunctionNITTA.Utils.ProcessDescription
    scheduleFunctionBindNITTA.Utils.ProcessDescription
    scheduleFunctionFinishNITTA.Utils.ProcessDescription
    scheduleFunctionFinish_NITTA.Utils.ProcessDescription
    scheduleFunctionRevokeNITTA.Utils.ProcessDescription
    scheduleInstructionUnsafeNITTA.Utils.ProcessDescription
    scheduleInstructionUnsafe_NITTA.Utils.ProcessDescription
    scheduleNestedStepNITTA.Utils.ProcessDescription
    scheduleRefactoringNITTA.Utils.ProcessDescription
    scheduleStepNITTA.Utils.ProcessDescription
    sConstantFoldingOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    scoresNITTA.Synthesis.Types, NITTA.Synthesis
    ScoringInput 
    1 (Type/Class)NITTA.Synthesis.MlBackend.Client
    2 (Data Constructor)NITTA.Synthesis.MlBackend.Client
    ScoringTargetNITTA.Synthesis.MlBackend.Client
    scoringTargetNITTA.Synthesis.MlBackend.Client
    ScoringTargetAllNITTA.Synthesis.MlBackend.Client
    ScoringTargetSidNITTA.Synthesis.MlBackend.Client
    sDataflowOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    sDecisionNITTA.Synthesis.Types, NITTA.Synthesis
    Send 
    1 (Type/Class)NITTA.Intermediate.Functions
    2 (Data Constructor)NITTA.Intermediate.Functions
    sendNITTA.Intermediate.Functions
    setAtNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    ShiftNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    shiftNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    shiftINITTA.Utils
    ShiftIONITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    ShiftLNITTA.Intermediate.Functions
    shiftLNITTA.Intermediate.Functions
    ShiftLRNITTA.Intermediate.Functions
    ShiftPortsNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    ShiftRNITTA.Intermediate.Functions
    shiftRNITTA.Intermediate.Functions
    ShortNodeViewNITTA.UIBackend.ViewHelper
    showTextNITTA.Utils.Base, NITTA.Utils
    Sid 
    1 (Type/Class)NITTA.Synthesis.Types, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Types, NITTA.Synthesis
    sIDNITTA.Synthesis.Types, NITTA.Synthesis
    sigClkNITTA.Project.Types, NITTA.Project
    sigCycleBeginNITTA.Project.Types, NITTA.Project
    sigCycleEndNITTA.Project.Types, NITTA.Project
    sigInCycleNITTA.Project.Types, NITTA.Project
    SignNITTA.Intermediate.Functions.Accum, NITTA.Intermediate.Functions
    SignalTag 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    signalTagNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    SignalValueNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    sigRstNITTA.Project.Types, NITTA.Project
    SimpleIO 
    1 (Type/Class)NITTA.Model.ProcessorUnits.IO.SimpleIO
    2 (Data Constructor)NITTA.Model.ProcessorUnits.IO.SimpleIO
    SimpleIOInterfaceNITTA.Model.ProcessorUnits.IO.SimpleIO
    SimpleIOPortsNITTA.Model.ProcessorUnits.IO.SimpleIO, NITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits.IO.I2C, NITTA.Model.ProcessorUnits
    simpleSynthesisIONITTA.Synthesis.Method, NITTA.Synthesis
    SimSpec 
    1 (Type/Class)NITTA.Frontends.XMILE.DocumentParser
    2 (Data Constructor)NITTA.Frontends.XMILE.DocumentParser
    simulateNITTA.Intermediate.Types
    simulateAlgNITTA.Intermediate.Simulation
    simulateDataFlowGraphNITTA.Intermediate.Simulation
    SingleBindNITTA.Model.Problems.Bind, NITTA.Model.Problems
    SingleBindMetricsNITTA.Synthesis.Steps.Bind, NITTA.Synthesis.Steps, NITTA.Synthesis
    SingleBindViewNITTA.Model.Problems.ViewHelper, NITTA.UIBackend.ViewHelper
    smartBindSynthesisIONITTA.Synthesis.Method, NITTA.Synthesis
    snippetClkGenNITTA.Project.VerilogSnippets, NITTA.Project
    snippetDumpFileNITTA.Project.VerilogSnippets, NITTA.Project
    snippetTestBenchNITTA.Project.TestBench, NITTA.Project
    SnippetTestBenchConf 
    1 (Type/Class)NITTA.Project.TestBench, NITTA.Project
    2 (Data Constructor)NITTA.Project.TestBench, NITTA.Project
    softwareNITTA.Project.Types, NITTA.Project
    sOptimizeAccumOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    SourceNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    sParentNITTA.Synthesis.Types, NITTA.Synthesis
    SPINITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    SPIMasterNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    spiMasterPortsNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    SPISlaveNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    spiSlavePortsNITTA.Model.ProcessorUnits.IO.SPI, NITTA.Model.ProcessorUnits
    sResolveDeadlockOptionsNITTA.Synthesis.Types, NITTA.Synthesis
    sStateNITTA.Synthesis.Types, NITTA.Synthesis
    sSubForestVarNITTA.Synthesis.Types, NITTA.Synthesis
    sTargetNITTA.Synthesis.Types, NITTA.Synthesis
    stateOfTheArtSynthesisIONITTA.Synthesis.Method, NITTA.Synthesis
    Step 
    1 (Type/Class)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    stepNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    StepInfoNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    StepInfoView 
    1 (Type/Class)NITTA.UIBackend.ViewHelper
    2 (Data Constructor)NITTA.UIBackend.ViewHelper
    stepsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    stepsIntervalNITTA.Utils
    Stock 
    1 (Type/Class)NITTA.Frontends.XMILE.DocumentParser
    2 (Data Constructor)NITTA.Frontends.XMILE.DocumentParser
    Sub 
    1 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    2 (Type/Class)NITTA.Intermediate.Functions
    3 (Data Constructor)NITTA.Intermediate.Functions
    subNITTA.Intermediate.Functions
    subComponentsNITTA.Project.Types, NITTA.Project
    subForestIONITTA.Synthesis.Explore, NITTA.Synthesis
    SuffixNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    SyncNITTA.Model.Networks.Types
    SynthesisAPINITTA.UIBackend.REST
    SynthesisDecision 
    1 (Type/Class)NITTA.Synthesis.Types, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Types, NITTA.Synthesis
    SynthesisDecisionClsNITTA.Synthesis.Types, NITTA.Synthesis
    SynthesisMethodNITTA.Synthesis.Types, NITTA.Synthesis.Method, NITTA.Synthesis
    SynthesisMethodConstraintsNITTA.Synthesis.Types, NITTA.Synthesis.Method, NITTA.Synthesis
    synthesisServerNITTA.UIBackend.REST
    SynthesisState 
    1 (Type/Class)NITTA.Synthesis.Types, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Types, NITTA.Synthesis
    synthesisStepsForSuccessNITTA.Synthesis.Analysis
    synthesisTreeRootIONITTA.Synthesis.Explore, NITTA.Synthesis
    synthesizeTargetSystemNITTA.Synthesis
    TaggedTime 
    1 (Type/Class)NITTA.Model.Time, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.Time, NITTA.Model.ProcessorUnits
    takePortTagsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    TargetNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    targetDFGNITTA.Synthesis.Types, NITTA.Synthesis
    targetProcessDurationNITTA.Synthesis.Analysis
    TargetSynthesis 
    1 (Type/Class)NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis
    TargetSystem 
    1 (Type/Class)NITTA.Model.TargetSystem
    2 (Data Constructor)NITTA.Model.TargetSystem
    TargetSystemComponentNITTA.Project.Types, NITTA.Project
    targetUnitNITTA.Synthesis.Types, NITTA.Synthesis
    tbcMC2verilogLiteralNITTA.Project.TestBench, NITTA.Project
    tbCompilerDumpNITTA.Project.TestBench, NITTA.Project
    tbcPortsNITTA.Project.TestBench, NITTA.Project
    tbcSignalsNITTA.Project.TestBench, NITTA.Project
    tbFilesNITTA.Project.TestBench, NITTA.Project
    tbFunctionalSimulationLogNITTA.Project.TestBench, NITTA.Project
    tbFunctionsNITTA.Project.TestBench, NITTA.Project
    tbLogicalSimulationLogNITTA.Project.TestBench, NITTA.Project
    tbPathNITTA.Project.TestBench, NITTA.Project
    tbSimulationDumpNITTA.Project.TestBench, NITTA.Project
    tbStatusNITTA.Project.TestBench, NITTA.Project
    tbSynthesisStepsNITTA.Project.TestBench, NITTA.Project
    tcAvailableNITTA.Model.Time, NITTA.Model.ProcessorUnits
    tcDurationNITTA.Model.Time, NITTA.Model.ProcessorUnits
    tClockNITTA.Model.Time, NITTA.Model.ProcessorUnits
    tDFGNITTA.Synthesis
    teCntxNITTA.Project.TestBench, NITTA.Project
    teComputationDurationNITTA.Project.TestBench, NITTA.Project
    TestableNITTA.Project.TestBench, NITTA.Project
    testBenchImplementationNITTA.Project.TestBench, NITTA.Project
    TestbenchReport 
    1 (Type/Class)NITTA.Project.TestBench, NITTA.Project
    2 (Data Constructor)NITTA.Project.TestBench, NITTA.Project
    testBenchTopModuleNameNITTA.Project.TestBench, NITTA.Project
    TestEnvironment 
    1 (Type/Class)NITTA.Project.TestBench, NITTA.Project
    2 (Data Constructor)NITTA.Project.TestBench, NITTA.Project
    testEnvironmentNITTA.Project.TestBench, NITTA.Project
    testEnvironmentInitFlagNITTA.Project.TestBench, NITTA.Project
    TimeNITTA.Model.Time, NITTA.Model.ProcessorUnits
    TimeConstraint 
    1 (Type/Class)NITTA.Model.Time, NITTA.Model.ProcessorUnits
    2 (Data Constructor)NITTA.Model.Time, NITTA.Model.ProcessorUnits
    TimelinePointNITTA.UIBackend.Timeline
    TimelineWithViewPoint 
    1 (Type/Class)NITTA.UIBackend.Timeline
    2 (Data Constructor)NITTA.UIBackend.Timeline
    tLibPathNITTA.Synthesis
    tMicroArchNITTA.Synthesis
    tNameNITTA.Synthesis
    toModuleNameNITTA.Utils
    topDownByScoreSynthesisIONITTA.Synthesis.Method, NITTA.Synthesis
    toTextNITTA.Utils.Base, NITTA.Utils
    tPathNITTA.Synthesis
    TraceVar 
    1 (Type/Class)NITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    2 (Data Constructor)NITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    transferableVarsNITTA.Synthesis.Types, NITTA.Synthesis
    transferredNITTA.Utils
    translateNITTA.Frontends
    translateLuaNITTA.Frontends.Lua
    translateXMILENITTA.Frontends.XMILE.Frontend
    TransportNITTA.Model.Networks.Bus
    tReceivedValuesNITTA.Synthesis
    Tree 
    1 (Type/Class)NITTA.Synthesis.Types, NITTA.Synthesis
    2 (Data Constructor)NITTA.Synthesis.Types, NITTA.Synthesis
    TreeInfo 
    1 (Type/Class)NITTA.Synthesis.Analysis
    2 (Data Constructor)NITTA.Synthesis.Analysis
    TreeViewNITTA.UIBackend.ViewHelper
    tryBindNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    tSimulationCycleNNITTA.Synthesis
    tSourceCodeNITTA.Synthesis
    tSourceCodeTypeNITTA.Synthesis
    tSynthesisMethodNITTA.Synthesis
    tTagNITTA.Model.Time, NITTA.Model.ProcessorUnits
    tTemplatesNITTA.Synthesis
    tvFmtNITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    tvVarNITTA.Frontends.Common, NITTA.Frontends.XMILE.Frontend, NITTA.Frontends.Lua, NITTA.Frontends
    uEnvNITTA.Model.Networks.Types
    UnambiguouslyDecodeNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    UndefNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    unionsMapNITTA.Utils.Base, NITTA.Utils
    unitNITTA.Model.Networks.Types
    UnitDesc 
    1 (Type/Class)NITTA.Model.Microarchitecture.Types
    2 (Data Constructor)NITTA.Model.Microarchitecture.Types
    UnitEndpoints 
    1 (Type/Class)NITTA.UIBackend.REST
    2 (Data Constructor)NITTA.UIBackend.REST
    UnitEnv 
    1 (Type/Class)NITTA.Project.Types, NITTA.Project
    2 (Data Constructor)NITTA.Project.Types, NITTA.Project
    UnitTagNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    unitTypeNITTA.Model.Networks.Types
    unitWorkloadInFunctionNITTA.Synthesis.Types, NITTA.Synthesis
    updAtNITTA.Model.Problems.Endpoint, NITTA.Model.Problems
    updateCntxNITTA.Intermediate.Types
    usedPortTagsNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    Val 
    1 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    2 (Type/Class)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    valueNITTA.Intermediate.Value, NITTA.Intermediate.Types
    valueInNITTA.Project.Types, NITTA.Project
    valueOutNITTA.Project.Types, NITTA.Project
    values2dumpNITTA.Utils
    Var 
    1 (Type/Class)NITTA.Intermediate.Variable, NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    VariablesNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    variablesNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    VarValTimeNITTA.Model.Time, NITTA.Model.ProcessorUnits
    VarValTimeJSONNITTA.Model.Time, NITTA.Model.ProcessorUnits, NITTA.UIBackend.ViewHelper
    vDownNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    VerilogNITTA.Utils
    verilogAssertRENITTA.Intermediate.Value, NITTA.Intermediate.Types
    verilogHelperNITTA.Intermediate.Value, NITTA.Intermediate.Types
    verilogProjectFilesNITTA.Project.TestBench, NITTA.Project
    VerticalNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    viewNITTA.UIBackend.ViewHelperCls, NITTA.UIBackend.ViewHelper
    ViewableNITTA.UIBackend.ViewHelperCls, NITTA.UIBackend.ViewHelper
    viewNodeTreeNITTA.UIBackend.ViewHelper
    ViewPointIDNITTA.UIBackend.Timeline
    VisJSNITTA.UIBackend.VisJS
    vsToStringListNITTA.Utils.Base, NITTA.Utils
    vUpNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    whatsHappenNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    WithFunctionsNITTA.Intermediate.Types
    withLazyMlBackendServerNITTA.Synthesis.MlBackend.ServerInstance
    withShiftNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    workNITTA.Model.ProcessorUnits.Shift, NITTA.Model.ProcessorUnits
    writeProjectNITTA.Project
    writeRenderedTemplatesNITTA.Project.Template, NITTA.Project
    X 
    1 (Type/Class)NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Intermediate.Types
    xaEquationNITTA.Frontends.XMILE.DocumentParser
    xaNameNITTA.Frontends.XMILE.DocumentParser
    xcAuxsNITTA.Frontends.XMILE.DocumentParser
    xcFlowsNITTA.Frontends.XMILE.DocumentParser
    xcSimSpecsNITTA.Frontends.XMILE.DocumentParser
    xcStocksNITTA.Frontends.XMILE.DocumentParser
    xfEquationNITTA.Frontends.XMILE.DocumentParser
    xfNameNITTA.Frontends.XMILE.DocumentParser
    XMDuopNITTA.Frontends.XMILE.MathParser
    xmeLexprNITTA.Frontends.XMILE.MathParser
    xmeOpNITTA.Frontends.XMILE.MathParser
    xmeRexprNITTA.Frontends.XMILE.MathParser
    XMExprNITTA.Frontends.XMILE.MathParser
    XMILENITTA.Frontends
    xsEquationNITTA.Frontends.XMILE.DocumentParser
    xsInflowNITTA.Frontends.XMILE.DocumentParser
    xsNameNITTA.Frontends.XMILE.DocumentParser
    xsOutflowNITTA.Frontends.XMILE.DocumentParser
    xssDtNITTA.Frontends.XMILE.DocumentParser
    xssStartNITTA.Frontends.XMILE.DocumentParser
    xssStopNITTA.Frontends.XMILE.DocumentParser
    zipSignalTagsAndValuesNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    \ No newline at end of file diff --git a/haddock/nitta/doc-index-V.html b/haddock/nitta/doc-index-V.html index 887d5461b..b387fb44f 100644 --- a/haddock/nitta/doc-index-V.html +++ b/haddock/nitta/doc-index-V.html @@ -1 +1 @@ -nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors (Index - V)
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors

    Index - V

    Val 
    1 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    2 (Type/Class)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    valueNITTA.Intermediate.Value, NITTA.Intermediate.Types
    valueInNITTA.Project.Types, NITTA.Project
    valueOutNITTA.Project.Types, NITTA.Project
    values2dumpNITTA.Utils
    Var 
    1 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    2 (Type/Class)NITTA.Intermediate.Variable, NITTA.Intermediate.Types
    VariablesNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    variablesNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    VarValTimeNITTA.Model.Time, NITTA.Model.ProcessorUnits
    VarValTimeJSONNITTA.Model.Time, NITTA.Model.ProcessorUnits, NITTA.UIBackend.ViewHelper
    vDownNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    VerilogNITTA.Utils
    verilogAssertRENITTA.Intermediate.Value, NITTA.Intermediate.Types
    verilogHelperNITTA.Intermediate.Value, NITTA.Intermediate.Types
    verilogProjectFilesNITTA.Project.TestBench, NITTA.Project
    VerticalNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    viewNITTA.UIBackend.ViewHelperCls, NITTA.UIBackend.ViewHelper
    ViewableNITTA.UIBackend.ViewHelperCls, NITTA.UIBackend.ViewHelper
    viewNodeTreeNITTA.UIBackend.ViewHelper
    ViewPointIDNITTA.UIBackend.Timeline
    VisJSNITTA.UIBackend.VisJS
    vsToStringListNITTA.Utils.Base, NITTA.Utils
    vUpNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    \ No newline at end of file +nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors (Index - V)
    nitta-0.0.0.1: Tool for Hard Real-Time CGRA Processors

    Index - V

    Val 
    1 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    2 (Type/Class)NITTA.Intermediate.Value, NITTA.Intermediate.Types
    valueNITTA.Intermediate.Value, NITTA.Intermediate.Types
    valueInNITTA.Project.Types, NITTA.Project
    valueOutNITTA.Project.Types, NITTA.Project
    values2dumpNITTA.Utils
    Var 
    1 (Type/Class)NITTA.Intermediate.Variable, NITTA.Intermediate.Types
    2 (Data Constructor)NITTA.Frontends.XMILE.MathParser
    VariablesNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    variablesNITTA.Intermediate.Variable, NITTA.Intermediate.Types
    VarValTimeNITTA.Model.Time, NITTA.Model.ProcessorUnits
    VarValTimeJSONNITTA.Model.Time, NITTA.Model.ProcessorUnits, NITTA.UIBackend.ViewHelper
    vDownNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    VerilogNITTA.Utils
    verilogAssertRENITTA.Intermediate.Value, NITTA.Intermediate.Types
    verilogHelperNITTA.Intermediate.Value, NITTA.Intermediate.Types
    verilogProjectFilesNITTA.Project.TestBench, NITTA.Project
    VerticalNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    viewNITTA.UIBackend.ViewHelperCls, NITTA.UIBackend.ViewHelper
    ViewableNITTA.UIBackend.ViewHelperCls, NITTA.UIBackend.ViewHelper
    viewNodeTreeNITTA.UIBackend.ViewHelper
    ViewPointIDNITTA.UIBackend.Timeline
    VisJSNITTA.UIBackend.VisJS
    vsToStringListNITTA.Utils.Base, NITTA.Utils
    vUpNITTA.Model.ProcessorUnits.Types, NITTA.Model.ProcessorUnits
    \ No newline at end of file diff --git a/haddock/nitta/doc-index.json b/haddock/nitta/doc-index.json index e78631070..9d609e63c 100644 --- a/haddock/nitta/doc-index.json +++ b/haddock/nitta/doc-index.json @@ -1 +1 @@ -[{"display_html":"parseXmileEquation :: String -> XMExpr","name":"parseXmileEquation","module":"NITTA.Frontends.XMILE.MathParser","link":"NITTA-Frontends-XMILE-MathParser.html#v:parseXmileEquation"},{"display_html":"calculateDefaultValue :: HashMap Text Double -> XMExpr -> Double","name":"calculateDefaultValue","module":"NITTA.Frontends.XMILE.MathParser","link":"NITTA-Frontends-XMILE-MathParser.html#v:calculateDefaultValue"},{"display_html":"data XMExpr","name":"XMExpr Var Val Duo xmeOp xmeLexpr xmeRexpr","module":"NITTA.Frontends.XMILE.MathParser","link":"NITTA-Frontends-XMILE-MathParser.html#t:XMExpr"},{"display_html":"data XMDuop","name":"XMDuop Div Sub Add Mul","module":"NITTA.Frontends.XMILE.MathParser","link":"NITTA-Frontends-XMILE-MathParser.html#t:XMDuop"},{"display_html":"parseDocument :: String -> Content","name":"parseDocument","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#v:parseDocument"},{"display_html":"data Content = Content {}","name":"Content Content xcSimSpecs xcFlows xcAuxs xcStocks","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#t:Content"},{"display_html":"data Stock = Stock {}","name":"Stock Stock xsName xsEquation xsInflow xsOutflow","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#t:Stock"},{"display_html":"data Aux = Aux {}","name":"Aux Aux xaName xaEquation","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#t:Aux"},{"display_html":"data Flow = Flow {}","name":"Flow Flow xfName xfEquation","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#t:Flow"},{"display_html":"data SimSpec = SimSpec {}","name":"SimSpec SimSpec xssStart xssStop xssDt","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#t:SimSpec"},{"display_html":"type Var v = (Typeable v, Ord v, IsString v, ToString v, Suffix v, Hashable v)","name":"Var","module":"NITTA.Intermediate.Variable","link":"NITTA-Intermediate-Variable.html#t:Var"},{"display_html":"class Variables a v | a -> v where","name":"Variables variables","module":"NITTA.Intermediate.Variable","link":"NITTA-Intermediate-Variable.html#t:Variables"},{"display_html":"class Suffix v where","name":"Suffix bufferSuffix countSuffix","module":"NITTA.Intermediate.Variable","link":"NITTA-Intermediate-Variable.html#t:Suffix"},{"display_html":"data Allocation tag = Allocation {}","name":"Allocation Allocation processUnitTag networkTag","module":"NITTA.Model.Problems.Allocation","link":"NITTA-Model-Problems-Allocation.html#t:Allocation"},{"display_html":"class AllocationProblem u tag | u -> tag where","name":"AllocationProblem allocationDecision allocationOptions","module":"NITTA.Model.Problems.Allocation","link":"NITTA-Model-Problems-Allocation.html#t:AllocationProblem"},{"display_html":"snippetClkGen :: Text","name":"snippetClkGen","module":"NITTA.Project.VerilogSnippets","link":"NITTA-Project-VerilogSnippets.html#v:snippetClkGen"},{"display_html":"snippetDumpFile :: Text -> Text","name":"snippetDumpFile","module":"NITTA.Project.VerilogSnippets","link":"NITTA-Project-VerilogSnippets.html#v:snippetDumpFile"},{"display_html":"newtype Cache a = Cache (MVar (Maybe a))","name":"Cache Cache","module":"NITTA.Synthesis.MlBackend.FixedCache","link":"NITTA-Synthesis-MlBackend-FixedCache.html#t:Cache"},{"display_html":"newCache :: IO (Cache a)","name":"newCache","module":"NITTA.Synthesis.MlBackend.FixedCache","link":"NITTA-Synthesis-MlBackend-FixedCache.html#v:newCache"},{"display_html":"fetch :: Cache a -> IO a -> IO a","name":"fetch","module":"NITTA.Synthesis.MlBackend.FixedCache","link":"NITTA-Synthesis-MlBackend-FixedCache.html#v:fetch"},{"display_html":"class Viewable t v | t -> v where","name":"Viewable view","module":"NITTA.UIBackend.ViewHelperCls","link":"NITTA-UIBackend-ViewHelperCls.html#t:Viewable"},{"display_html":"unionsMap :: Ord a => (a -> Set a) -> [a] -> Set a","name":"unionsMap","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:unionsMap"},{"display_html":"oneOf :: Set c -> c","name":"oneOf","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:oneOf"},{"display_html":"minimumOn :: (Foldable t, Ord a) => (t -> a) -> t t -> t","name":"minimumOn","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:minimumOn"},{"display_html":"maximumOn :: (Foldable t, Ord a) => (t -> a) -> t t -> t","name":"maximumOn","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:maximumOn"},{"display_html":"toText :: ToString a => a -> Text","name":"toText","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:toText"},{"display_html":"fromText :: IsString a => Text -> a","name":"fromText","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:fromText"},{"display_html":"showText :: Show a => a -> Text","name":"showText","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:showText"},{"display_html":"readText :: Read a => Text -> a","name":"readText","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:readText"},{"display_html":"vsToStringList :: ToString a => Set a -> [String]","name":"vsToStringList","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:vsToStringList"},{"display_html":"catchToMaybeIO :: IO a -> IO (Maybe a)","name":"catchToMaybeIO","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:catchToMaybeIO"},{"display_html":"data MlBackendServer = MlBackendServer {}","name":"MlBackendServer MlBackendServer baseUrl handles","module":"NITTA.Synthesis.MlBackend.ServerInstance","link":"NITTA-Synthesis-MlBackend-ServerInstance.html#t:MlBackendServer"},{"display_html":"withLazyMlBackendServer :: (IO MlBackendServer -> IO c) -> IO c","name":"withLazyMlBackendServer","module":"NITTA.Synthesis.MlBackend.ServerInstance","link":"NITTA-Synthesis-MlBackend-ServerInstance.html#v:withLazyMlBackendServer"},{"display_html":"class (Typeable x, Show x, Read x, PrintfArg x, Default x, Integral x, Enum x, Eq x, Num x, Bits x, Validity x, FixedPointCompatible x, ToJSON x) => Val x where","name":"Val dataWidth attrWidth rawData rawAttr fromRaw dataLiteral attrLiteral verilogHelper verilogAssertRE","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:Val"},{"display_html":"class Default x => DefaultX u x | u -> x where","name":"DefaultX defX","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:DefaultX"},{"display_html":"class FixedPointCompatible a where","name":"FixedPointCompatible scalingFactorPower fractionalBitSize","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:FixedPointCompatible"},{"display_html":"scalingFactor :: (Floating a, FixedPointCompatible a) => a -> a","name":"scalingFactor","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#v:scalingFactor"},{"display_html":"minMaxRaw :: (Num b, Val p) => p -> (b, b)","name":"minMaxRaw","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#v:minMaxRaw"},{"display_html":"data Attr x = Attr {}","name":"Attr Attr value invalid","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:Attr"},{"display_html":"newtype IntX (w :: Nat) = IntX {}","name":"IntX IntX intX","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:IntX"},{"display_html":"newtype FX (m :: Nat) (b :: Nat) = FX {}","name":"FX FX rawFX","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:FX"},{"display_html":"newtype I v = I v","name":"I I","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:I"},{"display_html":"newtype O v = O (Set v)","name":"O O","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:O"},{"display_html":"newtype X x = X x","name":"X X","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:X"},{"display_html":"data F v x where","name":"F F fun funHistory","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:F"},{"display_html":"data FView = FView {}","name":"FView FView fvFun fvHistory","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:FView"},{"display_html":"packF :: (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x","name":"packF","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:packF"},{"display_html":"castF :: (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x)","name":"castF","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:castF"},{"display_html":"functionType :: F v x -> TypeRep","name":"functionType","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:functionType"},{"display_html":"class Function f v | f -> v where","name":"Function inputs outputs isInternalLockPossible","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Function"},{"display_html":"data Lock v = Lock {}","name":"Lock Lock locked lockBy","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Lock"},{"display_html":"class Var v => Locks x v | x -> v where","name":"Locks locks","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Locks"},{"display_html":"inputsLockOutputs :: Function f v => f -> [Lock v]","name":"inputsLockOutputs","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:inputsLockOutputs"},{"display_html":"class WithFunctions a f | a -> f where","name":"WithFunctions functions","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:WithFunctions"},{"display_html":"class Label a where","name":"Label label","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Label"},{"display_html":"class FunctionSimulation f v x | f -> v x where","name":"FunctionSimulation simulate","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:FunctionSimulation"},{"display_html":"newtype CycleCntx v x = CycleCntx {}","name":"CycleCntx CycleCntx cycleCntx","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:CycleCntx"},{"display_html":"data Cntx v x = Cntx {}","name":"Cntx Cntx cntxProcess cntxReceived cntxCycleNumber","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Cntx"},{"display_html":"log2md :: ToString a => [HashMap a String] -> String","name":"log2md","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:log2md"},{"display_html":"log2json :: ToString a => [HashMap a String] -> ByteString","name":"log2json","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:log2json"},{"display_html":"log2csv :: ToString a => [HashMap a String] -> ByteString","name":"log2csv","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:log2csv"},{"display_html":"cntxReceivedBySlice :: Ord v => Cntx v x -> [Map v x]","name":"cntxReceivedBySlice","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:cntxReceivedBySlice"},{"display_html":"getCntx :: (Hashable a, ToString a) => CycleCntx a v -> a -> v","name":"getCntx","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:getCntx"},{"display_html":"updateCntx :: (Hashable v, ToString v) => CycleCntx v x -> [(v, x)] -> Either String (CycleCntx v x)","name":"updateCntx","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:updateCntx"},{"display_html":"class Patch f diff where","name":"Patch patch","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Patch"},{"display_html":"data Changeset v = Changeset {}","name":"Changeset Changeset changeI changeO","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Changeset"},{"display_html":"reverseDiff :: Ord t => Changeset t -> Changeset t","name":"reverseDiff","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:reverseDiff"},{"display_html":"module NITTA.Intermediate.Value","name":"","module":"NITTA.Intermediate.Types","link":""},{"display_html":"module NITTA.Intermediate.Variable","name":"","module":"NITTA.Intermediate.Types","link":""},{"display_html":"type VisJS = GraphStructure GraphEdge","name":"VisJS","module":"NITTA.UIBackend.VisJS","link":"NITTA-UIBackend-VisJS.html#t:VisJS"},{"display_html":"algToVizJS :: Label v => [F v x] -> GraphStructure GraphEdge","name":"algToVizJS","module":"NITTA.UIBackend.VisJS","link":"NITTA-UIBackend-VisJS.html#v:algToVizJS"},{"display_html":"data GraphStructure v = GraphStructure {}","name":"GraphStructure GraphStructure $sel:edges:GraphStructure $sel:nodes:GraphStructure","module":"NITTA.UIBackend.VisJS","link":"NITTA-UIBackend-VisJS.html#t:GraphStructure"},{"display_html":"data GraphNode = GraphNode {}","name":"GraphNode GraphNode $sel:id:GraphNode $sel:function:GraphNode $sel:label:GraphNode $sel:history:GraphNode $sel:nodeColor:GraphNode $sel:nodeShape:GraphNode $sel:fontSize:GraphNode $sel:nodeSize:GraphNode","module":"NITTA.UIBackend.VisJS","link":"NITTA-UIBackend-VisJS.html#t:GraphNode"},{"display_html":"data GraphEdge = GraphEdge {}","name":"GraphEdge GraphEdge $sel:label:GraphEdge $sel:from:GraphEdge $sel:to:GraphEdge $sel:edgeWidth:GraphEdge $sel:fontAllign:GraphEdge","module":"NITTA.UIBackend.VisJS","link":"NITTA-UIBackend-VisJS.html#t:GraphEdge"},{"display_html":"type VarValTime v x t = (Var v, Val x, Time t)","name":"VarValTime","module":"NITTA.Model.Time","link":"NITTA-Model-Time.html#t:VarValTime"},{"display_html":"type VarValTimeJSON v x t = (VarValTime v x t, ToJSONKey v, ToJSON v, ToJSON x, ToJSON t)","name":"VarValTimeJSON","module":"NITTA.Model.Time","link":"NITTA-Model-Time.html#t:VarValTimeJSON"},{"display_html":"type Time t = (Default t, Num t, Bounded t, Ord t, Show t, Typeable t, Enum t, Integral t)","name":"Time","module":"NITTA.Model.Time","link":"NITTA-Model-Time.html#t:Time"},{"display_html":"data TimeConstraint t = TimeConstraint {}","name":"TimeConstraint TimeConstraint tcAvailable tcDuration","module":"NITTA.Model.Time","link":"NITTA-Model-Time.html#t:TimeConstraint"},{"display_html":"data TaggedTime tag t = TaggedTime {}","name":"TaggedTime TaggedTime tTag tClock","module":"NITTA.Model.Time","link":"NITTA-Model-Time.html#t:TaggedTime"},{"display_html":"data EndpointSt v tp = EndpointSt {}","name":"EndpointSt EndpointSt epAt epRole","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#t:EndpointSt"},{"display_html":"class EndpointProblem u v t | u -> v t where","name":"EndpointProblem endpointOptions endpointDecision","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#t:EndpointProblem"},{"display_html":"data EndpointRole v","name":"EndpointRole Source Target","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#t:EndpointRole"},{"display_html":"endpointOptionToDecision :: (Num a, Ord a) => EndpointSt v (TimeConstraint a) -> EndpointSt v (Interval a)","name":"endpointOptionToDecision","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:endpointOptionToDecision"},{"display_html":"isSource :: EndpointSt v tp -> Bool","name":"isSource","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:isSource"},{"display_html":"isTarget :: EndpointSt v tp -> Bool","name":"isTarget","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:isTarget"},{"display_html":"isSubroleOf :: Ord a => EndpointRole a -> EndpointRole a -> Bool","name":"isSubroleOf","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:isSubroleOf"},{"display_html":"setAt :: tp -> EndpointSt v tp -> EndpointSt v tp","name":"setAt","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:setAt"},{"display_html":"updAt :: (t -> tp) -> EndpointSt v t -> EndpointSt v tp","name":"updAt","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:updAt"},{"display_html":"class (Typeable tag, Ord tag, ToString tag, IsString tag, Semigroup tag) => UnitTag tag where","name":"UnitTag isTemplate fromTemplate","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:UnitTag"},{"display_html":"class VarValTime v x t => ProcessorUnit u v x t | u -> v x t where","name":"ProcessorUnit process parallelismType tryBind puSize","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:ProcessorUnit"},{"display_html":"bind :: ProcessorUnit u v x t => F v x -> u -> u","name":"bind","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:bind"},{"display_html":"allowToProcess :: ProcessorUnit b v x t => F v x -> b -> Bool","name":"allowToProcess","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:allowToProcess"},{"display_html":"class NextTick u t | u -> t where","name":"NextTick nextTick","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:NextTick"},{"display_html":"data ParallelismType","name":"ParallelismType None Full Pipeline","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:ParallelismType"},{"display_html":"data Process t i = Process {}","name":"Process Process steps relations nextTick_ nextUid","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:Process"},{"display_html":"type ProcessStepID = Int","name":"ProcessStepID","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:ProcessStepID"},{"display_html":"data Step t i = Step {}","name":"Step Step pInterval pDesc pID","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:Step"},{"display_html":"data StepInfo v x t where","name":"StepInfo IntermediateStep CADStep RefactorStep EndpointRoleStep InstructionStep NestedStep AllocationStep nTitle nStep","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:StepInfo"},{"display_html":"data Relation","name":"Relation Vertical Horizontal vUp vDown hPrev hNext","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:Relation"},{"display_html":"descent :: StepInfo v x t -> StepInfo v x t","name":"descent","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:descent"},{"display_html":"whatsHappen :: Ord a => a -> Process a i -> [Step a i]","name":"whatsHappen","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:whatsHappen"},{"display_html":"extractInstructionAt :: (ProcessorUnit u v x t, Typeable u) => u -> t -> [Instruction u]","name":"extractInstructionAt","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:extractInstructionAt"},{"display_html":"withShift :: (Eq a, Num a) => a -> a -> a","name":"withShift","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:withShift"},{"display_html":"isRefactorStep :: StepInfo v x t -> Bool","name":"isRefactorStep","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:isRefactorStep"},{"display_html":"isAllocationStep :: StepInfo v x t -> Bool","name":"isAllocationStep","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:isAllocationStep"},{"display_html":"class Controllable pu where","name":"Controllable Instruction Microcode zipSignalTagsAndValues usedPortTags takePortTags","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:Controllable"},{"display_html":"newtype SignalTag = SignalTag {}","name":"SignalTag SignalTag signalTag","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:SignalTag"},{"display_html":"class UnambiguouslyDecode pu where","name":"UnambiguouslyDecode decodeInstruction","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:UnambiguouslyDecode"},{"display_html":"class Connected pu where","name":"Connected Ports","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:Connected"},{"display_html":"class ByTime pu t | pu -> t where","name":"ByTime microcodeAt","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:ByTime"},{"display_html":"data SignalValue","name":"SignalValue Bool Undef BrokenSignal","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:SignalValue"},{"display_html":"(+++) :: SignalValue -> SignalValue -> SignalValue","name":"+++","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:-43--43--43-"},{"display_html":"class IOConnected pu where","name":"IOConnected IOPorts inputPorts outputPorts inoutPorts","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:IOConnected"},{"display_html":"newtype InputPortTag = InputPortTag {}","name":"InputPortTag InputPortTag inputPortTag","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:InputPortTag"},{"display_html":"newtype OutputPortTag = OutputPortTag {}","name":"OutputPortTag OutputPortTag outputPortTag","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:OutputPortTag"},{"display_html":"newtype InoutPortTag = InoutPortTag {}","name":"InoutPortTag InoutPortTag inoutPortTag","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:InoutPortTag"},{"display_html":"data DataflowSt tag v tp = DataflowSt {}","name":"DataflowSt DataflowSt dfSource dfTargets","module":"NITTA.Model.Problems.Dataflow","link":"NITTA-Model-Problems-Dataflow.html#t:DataflowSt"},{"display_html":"class DataflowProblem u tag v t | u -> tag v t where","name":"DataflowProblem dataflowDecision dataflowOptions","module":"NITTA.Model.Problems.Dataflow","link":"NITTA-Model-Problems-Dataflow.html#t:DataflowProblem"},{"display_html":"dataflowOption2decision :: Time t => DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t)","name":"dataflowOption2decision","module":"NITTA.Model.Problems.Dataflow","link":"NITTA-Model-Problems-Dataflow.html#v:dataflowOption2decision"},{"display_html":"data Bind tag v x","name":"Bind SingleBind GroupBind isObviousBinds bindGroup","module":"NITTA.Model.Problems.Bind","link":"NITTA-Model-Problems-Bind.html#t:Bind"},{"display_html":"class BindProblem u tag v x | u -> tag v x where","name":"BindProblem bindOptions bindDecision","module":"NITTA.Model.Problems.Bind","link":"NITTA-Model-Problems-Bind.html#t:BindProblem"},{"display_html":"binds2bindGroup :: UnitTag tag => [(tag, F v x)] -> Map tag [F v x]","name":"binds2bindGroup","module":"NITTA.Model.Problems.Bind","link":"NITTA-Model-Problems-Bind.html#v:binds2bindGroup"},{"display_html":"newtype Acc v x = Acc {}","name":"Acc Acc $sel:actions:Acc","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#t:Acc"},{"display_html":"data Action v","name":"Action Push Pull","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#t:Action"},{"display_html":"data Sign","name":"Sign Minus Plus","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#t:Sign"},{"display_html":"acc :: (Hashable v, Suffix v, ToString v, IsString v, Ord v, Num x, Typeable v, Typeable x) => [Action v] -> F v x","name":"acc","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#v:acc"},{"display_html":"accFromStr :: (Num x, Typeable x) => String -> F Text x","name":"accFromStr","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#v:accFromStr"},{"display_html":"isPull :: Action v -> Bool","name":"isPull","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#v:isPull"},{"display_html":"isPush :: Action v -> Bool","name":"isPush","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#v:isPush"},{"display_html":"data Add v x = Add (I v) (I v) (O v)","name":"Add Add","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Add"},{"display_html":"add :: (Var v, Val x) => v -> v -> [v] -> F v x","name":"add","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:add"},{"display_html":"data Division v x = Division {}","name":"Division Division $sel:remain:Division $sel:denom:Division $sel:numer:Division $sel:quotient:Division","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Division"},{"display_html":"division :: (Var v, Val x) => v -> v -> [v] -> [v] -> F v x","name":"division","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:division"},{"display_html":"data Multiply v x = Multiply (I v) (I v) (O v)","name":"Multiply Multiply","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Multiply"},{"display_html":"multiply :: (Var v, Val x) => v -> v -> [v] -> F v x","name":"multiply","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:multiply"},{"display_html":"data ShiftLR v x","name":"ShiftLR ShiftL ShiftR","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:ShiftLR"},{"display_html":"shiftL :: (Var v, Val x) => Int -> v -> [v] -> F v x","name":"shiftL","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:shiftL"},{"display_html":"shiftR :: (Var v, Val x) => Int -> v -> [v] -> F v x","name":"shiftR","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:shiftR"},{"display_html":"data Sub v x = Sub (I v) (I v) (O v)","name":"Sub Sub","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Sub"},{"display_html":"sub :: (Var v, Val x) => v -> v -> [v] -> F v x","name":"sub","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:sub"},{"display_html":"data Neg v x = Neg (I v) (O v)","name":"Neg Neg","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Neg"},{"display_html":"neg :: (Var v, Val x) => v -> [v] -> F v x","name":"neg","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:neg"},{"display_html":"module NITTA.Intermediate.Functions.Accum","name":"","module":"NITTA.Intermediate.Functions","link":""},{"display_html":"data Constant v x = Constant (X x) (O v)","name":"Constant Constant","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Constant"},{"display_html":"constant :: (Var v, Val x) => x -> [v] -> F v x","name":"constant","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:constant"},{"display_html":"isConst :: (Typeable v, Typeable x) => F v x -> Bool","name":"isConst","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:isConst"},{"display_html":"data Loop v x = Loop (X x) (O v) (I v)","name":"Loop Loop","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Loop"},{"display_html":"loop :: (Var v, Val x) => x -> v -> [v] -> F v x","name":"loop","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:loop"},{"display_html":"isLoop :: (Typeable v, Typeable x) => F v x -> Bool","name":"isLoop","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:isLoop"},{"display_html":"data LoopEnd v x = LoopEnd (Loop v x) (I v)","name":"LoopEnd LoopEnd","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:LoopEnd"},{"display_html":"data LoopBegin v x = LoopBegin (Loop v x) (O v)","name":"LoopBegin LoopBegin","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:LoopBegin"},{"display_html":"data Buffer v x = Buffer (I v) (O v)","name":"Buffer Buffer","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Buffer"},{"display_html":"buffer :: (Var v, Val x) => v -> [v] -> F v x","name":"buffer","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:buffer"},{"display_html":"newtype Receive v x = Receive (O v)","name":"Receive Receive","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Receive"},{"display_html":"receive :: (Var v, Val x) => [v] -> F v x","name":"receive","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:receive"},{"display_html":"newtype Send v x = Send (I v)","name":"Send Send","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Send"},{"display_html":"send :: (Var v, Val x) => v -> F v x","name":"send","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:send"},{"display_html":"data BrokenBuffer v x = BrokenBuffer (I v) (O v)","name":"BrokenBuffer BrokenBuffer","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:BrokenBuffer"},{"display_html":"brokenBuffer :: (Var v, Val x) => v -> [v] -> F v x","name":"brokenBuffer","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:brokenBuffer"},{"display_html":"data ResolveDeadlock v x = ResolveDeadlock {}","name":"ResolveDeadlock ResolveDeadlock newBuffer changeset","module":"NITTA.Model.Problems.Refactor.ResolveDeadlock","link":"NITTA-Model-Problems-Refactor-ResolveDeadlock.html#t:ResolveDeadlock"},{"display_html":"class ResolveDeadlockProblem u v x | u -> v x where","name":"ResolveDeadlockProblem resolveDeadlockOptions resolveDeadlockDecision","module":"NITTA.Model.Problems.Refactor.ResolveDeadlock","link":"NITTA-Model-Problems-Refactor-ResolveDeadlock.html#t:ResolveDeadlockProblem"},{"display_html":"resolveDeadlock :: (Var v, Val x) => Set v -> ResolveDeadlock v x","name":"resolveDeadlock","module":"NITTA.Model.Problems.Refactor.ResolveDeadlock","link":"NITTA-Model-Problems-Refactor-ResolveDeadlock.html#v:resolveDeadlock"},{"display_html":"maxBufferStack :: Int","name":"maxBufferStack","module":"NITTA.Model.Problems.Refactor.ResolveDeadlock","link":"NITTA-Model-Problems-Refactor-ResolveDeadlock.html#v:maxBufferStack"},{"display_html":"data OptimizeAccum v x = OptimizeAccum {}","name":"OptimizeAccum OptimizeAccum refOld refNew","module":"NITTA.Model.Problems.Refactor.OptimizeAccum","link":"NITTA-Model-Problems-Refactor-OptimizeAccum.html#t:OptimizeAccum"},{"display_html":"class OptimizeAccumProblem u v x | u -> v x where","name":"OptimizeAccumProblem optimizeAccumOptions optimizeAccumDecision","module":"NITTA.Model.Problems.Refactor.OptimizeAccum","link":"NITTA-Model-Problems-Refactor-OptimizeAccum.html#t:OptimizeAccumProblem"},{"display_html":"data ConstantFolding v x = ConstantFolding {}","name":"ConstantFolding ConstantFolding cRefOld cRefNew","module":"NITTA.Model.Problems.Refactor.ConstantFolding","link":"NITTA-Model-Problems-Refactor-ConstantFolding.html#t:ConstantFolding"},{"display_html":"class ConstantFoldingProblem u v x | u -> v x where","name":"ConstantFoldingProblem constantFoldingOptions constantFoldingDecision","module":"NITTA.Model.Problems.Refactor.ConstantFolding","link":"NITTA-Model-Problems-Refactor-ConstantFolding.html#t:ConstantFoldingProblem"},{"display_html":"data BreakLoop v x = BreakLoop {}","name":"BreakLoop BreakLoop loopX loopO loopI","module":"NITTA.Model.Problems.Refactor.BreakLoop","link":"NITTA-Model-Problems-Refactor-BreakLoop.html#t:BreakLoop"},{"display_html":"class BreakLoopProblem u v x | u -> v x where","name":"BreakLoopProblem breakLoopOptions breakLoopDecision","module":"NITTA.Model.Problems.Refactor.BreakLoop","link":"NITTA-Model-Problems-Refactor-BreakLoop.html#t:BreakLoopProblem"},{"display_html":"recLoop :: (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x","name":"recLoop","module":"NITTA.Model.Problems.Refactor.BreakLoop","link":"NITTA-Model-Problems-Refactor-BreakLoop.html#v:recLoop"},{"display_html":"recLoopIn :: (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x","name":"recLoopIn","module":"NITTA.Model.Problems.Refactor.BreakLoop","link":"NITTA-Model-Problems-Refactor-BreakLoop.html#v:recLoopIn"},{"display_html":"recLoopOut :: (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x","name":"recLoopOut","module":"NITTA.Model.Problems.Refactor.BreakLoop","link":"NITTA-Model-Problems-Refactor-BreakLoop.html#v:recLoopOut"},{"display_html":"module NITTA.Model.Problems.Refactor.BreakLoop","name":"","module":"NITTA.Model.Problems.Refactor","link":""},{"display_html":"module NITTA.Model.Problems.Refactor.OptimizeAccum","name":"","module":"NITTA.Model.Problems.Refactor","link":""},{"display_html":"module NITTA.Model.Problems.Refactor.ResolveDeadlock","name":"","module":"NITTA.Model.Problems.Refactor","link":""},{"display_html":"module NITTA.Model.Problems.Refactor.ConstantFolding","name":"","module":"NITTA.Model.Problems.Refactor","link":""},{"display_html":"module NITTA.Model.Problems.Allocation","name":"","module":"NITTA.Model.Problems","link":""},{"display_html":"module NITTA.Model.Problems.Bind","name":"","module":"NITTA.Model.Problems","link":""},{"display_html":"module NITTA.Model.Problems.Dataflow","name":"","module":"NITTA.Model.Problems","link":""},{"display_html":"module NITTA.Model.Problems.Endpoint","name":"","module":"NITTA.Model.Problems","link":""},{"display_html":"module NITTA.Model.Problems.Refactor","name":"","module":"NITTA.Model.Problems","link":""},{"display_html":"data DataFlowGraph v x","name":"DataFlowGraph DFLeaf DFCluster","module":"NITTA.Intermediate.DataFlow","link":"NITTA-Intermediate-DataFlow.html#t:DataFlowGraph"},{"display_html":"fsToDataFlowGraph :: [F v x] -> DataFlowGraph v x","name":"fsToDataFlowGraph","module":"NITTA.Intermediate.DataFlow","link":"NITTA-Intermediate-DataFlow.html#v:fsToDataFlowGraph"},{"display_html":"addFuncToDataFlowGraph :: F v x -> DataFlowGraph v x -> DataFlowGraph v x","name":"addFuncToDataFlowGraph","module":"NITTA.Intermediate.DataFlow","link":"NITTA-Intermediate-DataFlow.html#v:addFuncToDataFlowGraph"},{"display_html":"data FrontendResult v x = FrontendResult {}","name":"FrontendResult FrontendResult frDataFlow frTrace frPrettyLog","module":"NITTA.Frontends.Common","link":"NITTA-Frontends-Common.html#t:FrontendResult"},{"display_html":"data TraceVar = TraceVar {}","name":"TraceVar TraceVar tvFmt tvVar","module":"NITTA.Frontends.Common","link":"NITTA-Frontends-Common.html#t:TraceVar"},{"display_html":"prettyLog :: (Real t, Show t, PrintfType v, PrintfArg t, ToString a) => [TraceVar] -> [HashMap a t] -> [HashMap String v]","name":"prettyLog","module":"NITTA.Frontends.Common","link":"NITTA-Frontends-Common.html#v:prettyLog"},{"display_html":"getTraceVarFormat :: Maybe Text -> Text","name":"getTraceVarFormat","module":"NITTA.Frontends.Common","link":"NITTA-Frontends-Common.html#v:getTraceVarFormat"},{"display_html":"data ProcessWave v x = ProcessWave {}","name":"ProcessWave ProcessWave pwFs pwOut","module":"NITTA.Intermediate.Analysis","link":"NITTA-Intermediate-Analysis.html#t:ProcessWave"},{"display_html":"buildProcessWaves :: (Var v, Val x) => [v] -> [F v x] -> [ProcessWave v x]","name":"buildProcessWaves","module":"NITTA.Intermediate.Analysis","link":"NITTA-Intermediate-Analysis.html#v:buildProcessWaves"},{"display_html":"reorderAlgorithm :: (Var v, Val x) => [F v x] -> [F v x]","name":"reorderAlgorithm","module":"NITTA.Intermediate.Analysis","link":"NITTA-Intermediate-Analysis.html#v:reorderAlgorithm"},{"display_html":"estimateVarWaves :: (Var v, Val x, Num a) => [v] -> [F v x] -> Map v a","name":"estimateVarWaves","module":"NITTA.Intermediate.Analysis","link":"NITTA-Intermediate-Analysis.html#v:estimateVarWaves"},{"display_html":"simulateDataFlowGraph :: (Var v, Val x, WithFunctions g (F v x)) => Int -> CycleCntx v x -> [(v, [x])] -> g -> Cntx v x","name":"simulateDataFlowGraph","module":"NITTA.Intermediate.Simulation","link":"NITTA-Intermediate-Simulation.html#v:simulateDataFlowGraph"},{"display_html":"simulateAlg :: (Var v, Val x) => Int -> CycleCntx v x -> [(v, [x])] -> [F v x] -> Cntx v x","name":"simulateAlg","module":"NITTA.Intermediate.Simulation","link":"NITTA-Intermediate-Simulation.html#v:simulateAlg"},{"display_html":"translateXMILE :: (Hashable v, Suffix v, ToString v, IsString v, Val x, Ord v, Typeable v) => Text -> FrontendResult v x","name":"translateXMILE","module":"NITTA.Frontends.XMILE.Frontend","link":"NITTA-Frontends-XMILE-Frontend.html#v:translateXMILE"},{"display_html":"data FrontendResult v x = FrontendResult {}","name":"FrontendResult FrontendResult frDataFlow frTrace frPrettyLog","module":"NITTA.Frontends.XMILE.Frontend","link":"NITTA-Frontends-XMILE-Frontend.html#t:FrontendResult"},{"display_html":"data TraceVar = TraceVar {}","name":"TraceVar TraceVar tvFmt tvVar","module":"NITTA.Frontends.XMILE.Frontend","link":"NITTA-Frontends-XMILE-Frontend.html#t:TraceVar"},{"display_html":"translateLua :: (Var v, Val x) => Text -> FrontendResult v x","name":"translateLua","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#v:translateLua"},{"display_html":"data FrontendResult v x = FrontendResult {}","name":"FrontendResult FrontendResult frDataFlow frTrace frPrettyLog","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#t:FrontendResult"},{"display_html":"data TraceVar = TraceVar {}","name":"TraceVar TraceVar tvFmt tvVar","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#t:TraceVar"},{"display_html":"data LuaAlgBuilder x = LuaAlgBuilder {}","name":"LuaAlgBuilder LuaAlgBuilder algGraph algLatestLuaValueInstance algVarCounters algVars algStartupArgs algConstants algTraceFuncs","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#t:LuaAlgBuilder"},{"display_html":"data LuaStatement x = LuaStatement {}","name":"LuaStatement LuaStatement fIn fOut fName fValues fInt","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#t:LuaStatement"},{"display_html":"data LuaValueInstance = LuaValueInstance {}","name":"LuaValueInstance LuaValueInstance lviName lviIsConstant lviAssignCount","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#t:LuaValueInstance"},{"display_html":"findStartupFunction :: Block -> (Text, Stat, Stat)","name":"findStartupFunction","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#v:findStartupFunction"},{"display_html":"getLuaBlockFromSources :: Text -> Block","name":"getLuaBlockFromSources","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#v:getLuaBlockFromSources"},{"display_html":"processStatement :: (MonadState (LuaAlgBuilder x) m, Read x, Show x) => Text -> Stat -> m ()","name":"processStatement","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#v:processStatement"},{"display_html":"data FrontendType","name":"FrontendType Lua XMILE","module":"NITTA.Frontends","link":"NITTA-Frontends.html#t:FrontendType"},{"display_html":"data FrontendResult v x = FrontendResult {}","name":"FrontendResult FrontendResult frDataFlow frTrace frPrettyLog","module":"NITTA.Frontends","link":"NITTA-Frontends.html#t:FrontendResult"},{"display_html":"data TraceVar = TraceVar {}","name":"TraceVar TraceVar tvFmt tvVar","module":"NITTA.Frontends","link":"NITTA-Frontends.html#t:TraceVar"},{"display_html":"prettyLog :: (Real t, Show t, PrintfType v, PrintfArg t, ToString a) => [TraceVar] -> [HashMap a t] -> [HashMap String v]","name":"prettyLog","module":"NITTA.Frontends","link":"NITTA-Frontends.html#v:prettyLog"},{"display_html":"getTraceVarFormat :: Maybe Text -> Text","name":"getTraceVarFormat","module":"NITTA.Frontends","link":"NITTA-Frontends.html#v:getTraceVarFormat"},{"display_html":"identifyFrontendType :: FilePath -> Maybe FrontendType -> FrontendType","name":"identifyFrontendType","module":"NITTA.Frontends","link":"NITTA-Frontends.html#v:identifyFrontendType"},{"display_html":"translate :: (IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => FrontendType -> Text -> FrontendResult v x","name":"translate","module":"NITTA.Frontends","link":"NITTA-Frontends.html#v:translate"},{"display_html":"runSchedule :: ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t))","name":"runSchedule","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:runSchedule"},{"display_html":"execSchedule :: ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t)","name":"execSchedule","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:execSchedule"},{"display_html":"execScheduleWithProcess :: pu -> Process t (StepInfo v x t) -> State (Schedule pu v x t) a -> Process t (StepInfo v x t)","name":"execScheduleWithProcess","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:execScheduleWithProcess"},{"display_html":"scheduleStep :: MonadState (Schedule pu v x t) m => Interval t -> StepInfo v x t -> m [ProcessStepID]","name":"scheduleStep","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleStep"},{"display_html":"scheduleEndpoint :: forall {m} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [ProcessStepID] -> m [ProcessStepID]","name":"scheduleEndpoint","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleEndpoint"},{"display_html":"scheduleEndpoint_ :: forall {f} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) f => EndpointSt v (Interval t) -> f [ProcessStepID] -> f ()","name":"scheduleEndpoint_","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleEndpoint_"},{"display_html":"scheduleFunctionBind :: (MonadState (Schedule pu v x t) m, Show a) => a -> m [ProcessStepID]","name":"scheduleFunctionBind","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleFunctionBind"},{"display_html":"scheduleFunctionRevoke :: (MonadState (Schedule pu v x t) m, Show a) => a -> m [ProcessStepID]","name":"scheduleFunctionRevoke","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleFunctionRevoke"},{"display_html":"scheduleFunction :: MonadState (Schedule pu v x t) m => Interval t -> F v x -> m [ProcessStepID]","name":"scheduleFunction","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleFunction"},{"display_html":"scheduleFunctionFinish :: (Ord v, Typeable v, IsString v, ToString v, Suffix v, Hashable v) => [ProcessStepID] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity [ProcessStepID]","name":"scheduleFunctionFinish","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleFunctionFinish"},{"display_html":"scheduleFunctionFinish_ :: (Ord v, Typeable v, IsString v, ToString v, Suffix v, Hashable v) => [ProcessStepID] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity ()","name":"scheduleFunctionFinish_","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleFunctionFinish_"},{"display_html":"scheduleRefactoring :: (MonadState (Schedule pu v x t) m, Typeable ref, Show ref, Eq ref) => Interval t -> ref -> m [ProcessStepID]","name":"scheduleRefactoring","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleRefactoring"},{"display_html":"scheduleInstructionUnsafe :: (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [ProcessStepID]","name":"scheduleInstructionUnsafe","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleInstructionUnsafe"},{"display_html":"scheduleInstructionUnsafe_ :: forall {f} {pu} {v} {x} {t}. (MonadState (Schedule pu v x t) f, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> f ()","name":"scheduleInstructionUnsafe_","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleInstructionUnsafe_"},{"display_html":"scheduleNestedStep :: forall {m} {pu} {v} {x} {t} {tag}. (MonadState (Schedule pu v x t) m, UnitTag tag) => tag -> Step t (StepInfo v x t) -> m ProcessStepID","name":"scheduleNestedStep","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleNestedStep"},{"display_html":"establishVerticalRelations :: forall {m} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [ProcessStepID] -> [ProcessStepID] -> m ()","name":"establishVerticalRelations","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:establishVerticalRelations"},{"display_html":"establishHorizontalRelations :: forall {m} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [ProcessStepID] -> [ProcessStepID] -> m ()","name":"establishHorizontalRelations","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:establishHorizontalRelations"},{"display_html":"getProcessSlice :: State (Schedule pu v x t) (Process t (StepInfo v x t))","name":"getProcessSlice","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:getProcessSlice"},{"display_html":"relatedEndpoints :: Ord a => Process t (StepInfo a x t) -> Set a -> [Step t (StepInfo a x t)]","name":"relatedEndpoints","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:relatedEndpoints"},{"display_html":"castInstruction :: (Typeable a, Typeable pu) => pu -> a -> Maybe (Instruction pu)","name":"castInstruction","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:castInstruction"},{"display_html":"scheduleAllocation :: (MonadState (Schedule pu v x t) m, Typeable a, Show a, Eq a) => a -> m [ProcessStepID]","name":"scheduleAllocation","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleAllocation"},{"display_html":"doc2text :: Verilog -> Text","name":"doc2text","module":"NITTA.Utils","link":"NITTA-Utils.html#v:doc2text"},{"display_html":"type Verilog = Doc ()","name":"Verilog","module":"NITTA.Utils","link":"NITTA-Utils.html#t:Verilog"},{"display_html":"shiftI :: (Num a, Ord a) => a -> Interval a -> Interval a","name":"shiftI","module":"NITTA.Utils","link":"NITTA-Utils.html#v:shiftI"},{"display_html":"bool2verilog :: Bool -> Text","name":"bool2verilog","module":"NITTA.Utils","link":"NITTA-Utils.html#v:bool2verilog"},{"display_html":"values2dump :: (Foldable t, Show a) => t a -> [Char]","name":"values2dump","module":"NITTA.Utils","link":"NITTA-Utils.html#v:values2dump"},{"display_html":"hdlValDump :: Val p => p -> Text","name":"hdlValDump","module":"NITTA.Utils","link":"NITTA-Utils.html#v:hdlValDump"},{"display_html":"toModuleName :: [Char] -> [Char]","name":"toModuleName","module":"NITTA.Utils","link":"NITTA-Utils.html#v:toModuleName"},{"display_html":"endpointAt :: (Ord a, Show a, ToString v) => a -> Process a (StepInfo v x t) -> Maybe (EndpointRole v)","name":"endpointAt","module":"NITTA.Utils","link":"NITTA-Utils.html#v:endpointAt"},{"display_html":"getEndpoint :: Step t (StepInfo v x t) -> Maybe (EndpointRole v)","name":"getEndpoint","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getEndpoint"},{"display_html":"getInstruction :: Step t (StepInfo v x t) -> Maybe (StepInfo v x t)","name":"getInstruction","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getInstruction"},{"display_html":"getEndpoints :: Ord b => Process b (StepInfo v x t) -> [EndpointRole v]","name":"getEndpoints","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getEndpoints"},{"display_html":"transferred :: ProcessorUnit u a1 x t => u -> Set a1","name":"transferred","module":"NITTA.Utils","link":"NITTA-Utils.html#v:transferred"},{"display_html":"inputsPushedAt :: (Ord a, Ord a, Function f a) => Process a (StepInfo a x t2) -> f -> a","name":"inputsPushedAt","module":"NITTA.Utils","link":"NITTA-Utils.html#v:inputsPushedAt"},{"display_html":"stepsInterval :: Ord a => [Step a i] -> Interval a","name":"stepsInterval","module":"NITTA.Utils","link":"NITTA-Utils.html#v:stepsInterval"},{"display_html":"relatedEndpoints :: Ord a => Process t1 (StepInfo a x t2) -> Set a -> [Step t1 (StepInfo a x t2)]","name":"relatedEndpoints","module":"NITTA.Utils","link":"NITTA-Utils.html#v:relatedEndpoints"},{"display_html":"isIntermediate :: Step t (StepInfo v x t) -> Bool","name":"isIntermediate","module":"NITTA.Utils","link":"NITTA-Utils.html#v:isIntermediate"},{"display_html":"getIntermediate :: Step t (StepInfo v x t) -> Maybe (F v x)","name":"getIntermediate","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getIntermediate"},{"display_html":"getIntermediates :: Ord b => Process b (StepInfo v x t) -> [F v x]","name":"getIntermediates","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getIntermediates"},{"display_html":"isInstruction :: Step t (StepInfo v x t) -> Bool","name":"isInstruction","module":"NITTA.Utils","link":"NITTA-Utils.html#v:isInstruction"},{"display_html":"module NITTA.Utils.Base","name":"","module":"NITTA.Utils","link":""},{"display_html":"getToml :: Text -> Table","name":"getToml","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getToml"},{"display_html":"getFromToml :: (FromJSON a, ToJSON a) => HashMap Text a -> a","name":"getFromToml","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getFromToml"},{"display_html":"getFromTomlSection :: (FromJSON a, ToJSON a) => Text -> HashMap Text a -> a","name":"getFromTomlSection","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getFromTomlSection"},{"display_html":"data Project m v x = Project {}","name":"Project Project pUnit pName pLibPath pTargetProjectPath pAbsTargetProjectPath pInProjectNittaPath pAbsNittaPath pUnitEnv pTestCntx pTemplates","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#t:Project"},{"display_html":"defProjectTemplates :: [FilePath]","name":"defProjectTemplates","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#v:defProjectTemplates"},{"display_html":"class TargetSystemComponent pu where","name":"TargetSystemComponent moduleName software hardware hardwareInstance","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#t:TargetSystemComponent"},{"display_html":"data Implementation","name":"Implementation Empty Immediate FromLibrary Aggregate impFileName impText impPath subComponents","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#t:Implementation"},{"display_html":"data UnitEnv m = UnitEnv {}","name":"UnitEnv UnitEnv sigClk sigRst sigCycleBegin sigInCycle sigCycleEnd ctrlPorts ioPorts valueIn valueOut","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#t:UnitEnv"},{"display_html":"envInputPorts :: IOConnected pu => UnitEnv pu -> Set InputPortTag","name":"envInputPorts","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#v:envInputPorts"},{"display_html":"envOutputPorts :: IOConnected pu => UnitEnv pu -> Set OutputPortTag","name":"envOutputPorts","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#v:envOutputPorts"},{"display_html":"envInOutPorts :: IOConnected pu => UnitEnv pu -> Set InoutPortTag","name":"envInOutPorts","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#v:envInOutPorts"},{"display_html":"class Testable m v x | m -> v x where","name":"Testable testBenchImplementation","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#t:Testable"},{"display_html":"class IOTestBench pu v x | pu -> v x where","name":"IOTestBench testEnvironmentInitFlag testEnvironment","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#t:IOTestBench"},{"display_html":"data TestEnvironment v x = TestEnvironment {}","name":"TestEnvironment TestEnvironment teCntx teComputationDuration","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#t:TestEnvironment"},{"display_html":"data TestbenchReport v x = TestbenchReport {}","name":"TestbenchReport TestbenchReport tbStatus tbPath tbFiles tbFunctions tbSynthesisSteps tbCompilerDump tbSimulationDump tbFunctionalSimulationLog tbLogicalSimulationLog","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#t:TestbenchReport"},{"display_html":"testBenchTopModuleName :: (TargetSystemComponent m, Testable m v x) => Project m v x -> FilePath","name":"testBenchTopModuleName","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#v:testBenchTopModuleName"},{"display_html":"verilogProjectFiles :: (TargetSystemComponent m, Testable m v x) => Project m v x -> [FilePath]","name":"verilogProjectFiles","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#v:verilogProjectFiles"},{"display_html":"data SnippetTestBenchConf m = SnippetTestBenchConf {}","name":"SnippetTestBenchConf SnippetTestBenchConf tbcSignals tbcPorts tbcMC2verilogLiteral","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#t:SnippetTestBenchConf"},{"display_html":"snippetTestBench :: forall m v x t. (WithFunctions m (F v x), ProcessorUnit m v x t, TargetSystemComponent m, UnambiguouslyDecode m, Typeable m, Show (Instruction m), Default (Microcode m)) => Project m v x -> SnippetTestBenchConf m -> Text","name":"snippetTestBench","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#v:snippetTestBench"},{"display_html":"data PU v x t where","name":"PU PU unit diff uEnv","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#t:PU"},{"display_html":"unitType :: PU v x t -> TypeRep","name":"unitType","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#v:unitType"},{"display_html":"type PUClasses pu v x t = (ByTime pu t, Connected pu, IOConnected pu, EndpointProblem pu v t, BreakLoopProblem pu v x, ConstantFoldingProblem pu v x, OptimizeAccumProblem pu v x, ResolveDeadlockProblem pu v x, ProcessorUnit pu v x t, Show (Instruction pu), Typeable pu, UnambiguouslyDecode pu, TargetSystemComponent pu, Controllable pu, IOTestBench pu v x, Locks pu v, Typeable pu)","name":"PUClasses","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#t:PUClasses"},{"display_html":"data IOSynchronization","name":"IOSynchronization Sync ASync OnBoard","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#t:IOSynchronization"},{"display_html":"data PUPrototype tag v x t where","name":"PUPrototype PUPrototype pTag pProto pIOPorts","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#t:PUPrototype"},{"display_html":"puInputPorts :: PU v x t -> Set InputPortTag","name":"puInputPorts","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#v:puInputPorts"},{"display_html":"puOutputPorts :: PU v x t -> Set OutputPortTag","name":"puOutputPorts","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#v:puOutputPorts"},{"display_html":"puInOutPorts :: PU v x t -> Set InoutPortTag","name":"puInOutPorts","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#v:puInOutPorts"},{"display_html":"projectContext :: (TargetSystemComponent m, Testable m v x) => Project m v x -> GingerContext p (Writer Text) Text","name":"projectContext","module":"NITTA.Project.Context","link":"NITTA-Project-Context.html#v:projectContext"},{"display_html":"implementationContext :: (TargetSystemComponent m, Testable m v x, ToGVal (Run p (Writer Text) Text) a) => Project m v x -> a -> GingerContext p (Writer Text) Text","name":"implementationContext","module":"NITTA.Project.Context","link":"NITTA-Project-Context.html#v:implementationContext"},{"display_html":"writeRenderedTemplates :: (TargetSystemComponent m, Testable m v x) => Project m v x -> IO ()","name":"writeRenderedTemplates","module":"NITTA.Project.Template","link":"NITTA-Project-Template.html#v:writeRenderedTemplates"},{"display_html":"collectNittaPath :: [FilePath] -> IO (Either Text FilePath)","name":"collectNittaPath","module":"NITTA.Project.Template","link":"NITTA-Project-Template.html#v:collectNittaPath"},{"display_html":"projectContext :: (TargetSystemComponent m, Testable m v x) => Project m v x -> GingerContext p (Writer Text) Text","name":"projectContext","module":"NITTA.Project.Template","link":"NITTA-Project-Template.html#v:projectContext"},{"display_html":"module NITTA.Project.Template","name":"","module":"NITTA.Project","link":""},{"display_html":"module NITTA.Project.TestBench","name":"","module":"NITTA.Project","link":""},{"display_html":"module NITTA.Project.Types","name":"","module":"NITTA.Project","link":""},{"display_html":"module NITTA.Project.VerilogSnippets","name":"","module":"NITTA.Project","link":""},{"display_html":"writeProject :: (TargetSystemComponent m, Testable m v x) => Project m v x -> IO ()","name":"writeProject","module":"NITTA.Project","link":"NITTA-Project.html#v:writeProject"},{"display_html":"runTestbench :: (WithFunctions u a, ProcessorUnit u v x t, Hashable v, IsString v, DefaultX u p, Val p, Show a, Read x, TargetSystemComponent u, Testable u v x) => Project u v x -> IO (TestbenchReport v x)","name":"runTestbench","module":"NITTA.Project","link":"NITTA-Project.html#v:runTestbench"},{"display_html":"data Shift v x t","name":"Shift","module":"NITTA.Model.ProcessorUnits.Shift","link":"NITTA-Model-ProcessorUnits-Shift.html#t:Shift"},{"display_html":"data family Ports pu :: Type","name":"Ports ShiftPorts init step mode oe work direction","module":"NITTA.Model.ProcessorUnits.Shift","link":"NITTA-Model-ProcessorUnits-Shift.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts ShiftIO","module":"NITTA.Model.ProcessorUnits.Shift","link":"NITTA-Model-ProcessorUnits-Shift.html#t:IOPorts"},{"display_html":"shift :: Default t => Bool -> Shift v x t","name":"shift","module":"NITTA.Model.ProcessorUnits.Shift","link":"NITTA-Model-ProcessorUnits-Shift.html#v:shift"},{"display_html":"multiplier :: Default t => Bool -> Multiplier v x t","name":"multiplier","module":"NITTA.Model.ProcessorUnits.Multiplier","link":"NITTA-Model-ProcessorUnits-Multiplier.html#v:multiplier"},{"display_html":"data Multiplier v x t","name":"Multiplier","module":"NITTA.Model.ProcessorUnits.Multiplier","link":"NITTA-Model-ProcessorUnits-Multiplier.html#t:Multiplier"},{"display_html":"data family Ports pu :: Type","name":"Ports MultiplierPorts $sel:wr:MultiplierPorts $sel:oe:MultiplierPorts","module":"NITTA.Model.ProcessorUnits.Multiplier","link":"NITTA-Model-ProcessorUnits-Multiplier.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts MultiplierIO","module":"NITTA.Model.ProcessorUnits.Multiplier","link":"NITTA-Model-ProcessorUnits-Multiplier.html#t:IOPorts"},{"display_html":"class Typeable i => SimpleIOInterface i","name":"SimpleIOInterface","module":"NITTA.Model.ProcessorUnits.IO.SimpleIO","link":"NITTA-Model-ProcessorUnits-IO-SimpleIO.html#t:SimpleIOInterface"},{"display_html":"data SimpleIO i v x t = SimpleIO {}","name":"SimpleIO SimpleIO $sel:bufferSize:SimpleIO $sel:receiveN:SimpleIO $sel:process_:SimpleIO $sel:bounceFilter:SimpleIO $sel:receiveQueue:SimpleIO $sel:isReceiveOver:SimpleIO $sel:sendQueue:SimpleIO $sel:sendN:SimpleIO","module":"NITTA.Model.ProcessorUnits.IO.SimpleIO","link":"NITTA-Model-ProcessorUnits-IO-SimpleIO.html#t:SimpleIO"},{"display_html":"data family Ports pu :: Type","name":"Ports SimpleIOPorts $sel:stop:SimpleIOPorts $sel:wr:SimpleIOPorts $sel:oe:SimpleIOPorts","module":"NITTA.Model.ProcessorUnits.IO.SimpleIO","link":"NITTA-Model-ProcessorUnits-IO-SimpleIO.html#t:Ports"},{"display_html":"protocolDescription :: forall i v x t. (VarValTime v x t, SimpleIOInterface i, ToJSON v) => Text -> SimpleIO i v x t -> Text -> Implementation","name":"protocolDescription","module":"NITTA.Model.ProcessorUnits.IO.SimpleIO","link":"NITTA-Model-ProcessorUnits-IO-SimpleIO.html#v:protocolDescription"},{"display_html":"type SPI v x t = SimpleIO SPIinterface v x t","name":"SPI","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#t:SPI"},{"display_html":"anySPI :: Time t => Int -> Maybe Int -> SPI v x t","name":"anySPI","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#v:anySPI"},{"display_html":"data family Ports pu :: Type","name":"Ports SimpleIOPorts $sel:stop:SimpleIOPorts $sel:wr:SimpleIOPorts $sel:oe:SimpleIOPorts","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts SPIMaster SPISlave $sel:master_mosi:SPIMaster $sel:master_miso:SPIMaster $sel:master_sclk:SPIMaster $sel:master_cs:SPIMaster $sel:slave_mosi:SPIMaster $sel:slave_miso:SPIMaster $sel:slave_sclk:SPIMaster $sel:slave_cs:SPIMaster","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#t:IOPorts"},{"display_html":"spiMasterPorts :: Text -> IOPorts (SPI v x t)","name":"spiMasterPorts","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#v:spiMasterPorts"},{"display_html":"spiSlavePorts :: Text -> IOPorts (SPI v x t)","name":"spiSlavePorts","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#v:spiSlavePorts"},{"display_html":"type I2C v x t = SimpleIO I2Cinterface v x t","name":"I2C","module":"NITTA.Model.ProcessorUnits.IO.I2C","link":"NITTA-Model-ProcessorUnits-IO-I2C.html#t:I2C"},{"display_html":"i2cUnit :: Time t => Int -> I2C v x t","name":"i2cUnit","module":"NITTA.Model.ProcessorUnits.IO.I2C","link":"NITTA-Model-ProcessorUnits-IO-I2C.html#v:i2cUnit"},{"display_html":"data family Ports pu :: Type","name":"Ports SimpleIOPorts $sel:stop:SimpleIOPorts $sel:wr:SimpleIOPorts $sel:oe:SimpleIOPorts","module":"NITTA.Model.ProcessorUnits.IO.I2C","link":"NITTA-Model-ProcessorUnits-IO-I2C.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts I2CMaster I2CSlave $sel:masterSDA:I2CMaster $sel:masterSCL:I2CMaster $sel:slaveSDA:I2CMaster $sel:slaveSCL:I2CMaster","module":"NITTA.Model.ProcessorUnits.IO.I2C","link":"NITTA-Model-ProcessorUnits-IO-I2C.html#t:IOPorts"},{"display_html":"data Fram v x t = Fram {}","name":"Fram Fram $sel:memory:Fram $sel:process_:Fram $sel:remainBuffers:Fram","module":"NITTA.Model.ProcessorUnits.Fram","link":"NITTA-Model-ProcessorUnits-Fram.html#t:Fram"},{"display_html":"data family Ports pu :: Type","name":"Ports FramPorts $sel:addr:FramPorts $sel:wr:FramPorts $sel:oe:FramPorts","module":"NITTA.Model.ProcessorUnits.Fram","link":"NITTA-Model-ProcessorUnits-Fram.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts FramIO","module":"NITTA.Model.ProcessorUnits.Fram","link":"NITTA-Model-ProcessorUnits-Fram.html#t:IOPorts"},{"display_html":"framWithSize :: (Default x, Default t) => Int -> Fram v x t","name":"framWithSize","module":"NITTA.Model.ProcessorUnits.Fram","link":"NITTA-Model-ProcessorUnits-Fram.html#v:framWithSize"},{"display_html":"data Divider v x t = Divider {}","name":"Divider Divider $sel:process_:Divider $sel:jobs:Divider $sel:remains:Divider $sel:pipeline:Divider $sel:mock:Divider","module":"NITTA.Model.ProcessorUnits.Divider","link":"NITTA-Model-ProcessorUnits-Divider.html#t:Divider"},{"display_html":"divider :: Default t => t -> Bool -> Divider v x t","name":"divider","module":"NITTA.Model.ProcessorUnits.Divider","link":"NITTA-Model-ProcessorUnits-Divider.html#v:divider"},{"display_html":"data family Ports pu :: Type","name":"Ports DividerPorts $sel:wr:DividerPorts $sel:oe:DividerPorts $sel:sel:DividerPorts","module":"NITTA.Model.ProcessorUnits.Divider","link":"NITTA-Model-ProcessorUnits-Divider.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts DividerIO","module":"NITTA.Model.ProcessorUnits.Divider","link":"NITTA-Model-ProcessorUnits-Divider.html#t:IOPorts"},{"display_html":"data Broken v x t = Broken {}","name":"Broken Broken $sel:remain:Broken $sel:process_:Broken $sel:sources:Broken $sel:targets:Broken $sel:doneAt:Broken $sel:currentWork:Broken $sel:currentWorkEndpoints:Broken $sel:brokeVerilog:Broken $sel:wrongVerilogSimulationValue:Broken $sel:wrongControlOnPush:Broken $sel:wrongControlOnPull:Broken $sel:lostEndpointTarget:Broken $sel:lostEndpointSource:Broken $sel:wrongAttr:Broken $sel:lostFunctionInVerticalRelation:Broken $sel:lostEndpointInVerticalRelation:Broken $sel:lostInstructionInVerticalRelation:Broken $sel:unknownDataOut:Broken","module":"NITTA.Model.ProcessorUnits.Broken","link":"NITTA-Model-ProcessorUnits-Broken.html#t:Broken"},{"display_html":"data family Ports pu :: Type","name":"Ports BrokenPorts $sel:wr:BrokenPorts $sel:oe:BrokenPorts","module":"NITTA.Model.ProcessorUnits.Broken","link":"NITTA-Model-ProcessorUnits-Broken.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts BrokenIO","module":"NITTA.Model.ProcessorUnits.Broken","link":"NITTA-Model-ProcessorUnits-Broken.html#t:IOPorts"},{"display_html":"data Accum v x t","name":"Accum","module":"NITTA.Model.ProcessorUnits.Accum","link":"NITTA-Model-ProcessorUnits-Accum.html#t:Accum"},{"display_html":"data family Ports pu :: Type","name":"Ports AccumPorts $sel:neg:AccumPorts $sel:oe:AccumPorts $sel:resetAcc:AccumPorts $sel:load:AccumPorts","module":"NITTA.Model.ProcessorUnits.Accum","link":"NITTA-Model-ProcessorUnits-Accum.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts AccumIO","module":"NITTA.Model.ProcessorUnits.Accum","link":"NITTA-Model-ProcessorUnits-Accum.html#t:IOPorts"},{"display_html":"module NITTA.Model.ProcessorUnits.Types","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.Time","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Accum","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Broken","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Divider","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Fram","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.IO.SPI","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Multiplier","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Shift","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"data ViewPointID","name":"ViewPointID","module":"NITTA.UIBackend.Timeline","link":"NITTA-UIBackend-Timeline.html#t:ViewPointID"},{"display_html":"data TimelinePoint t","name":"TimelinePoint","module":"NITTA.UIBackend.Timeline","link":"NITTA-UIBackend-Timeline.html#t:TimelinePoint"},{"display_html":"processTimelines :: (Num t, Typeable v, IsString v, ToString v, Suffix v, Hashable v, Show t, Ord t, Ord v, Enum t) => Process t (StepInfo v x t) -> ProcessTimelines t","name":"processTimelines","module":"NITTA.UIBackend.Timeline","link":"NITTA-UIBackend-Timeline.html#v:processTimelines"},{"display_html":"data ProcessTimelines t = ProcessTimelines {}","name":"ProcessTimelines ProcessTimelines $sel:timelines:ProcessTimelines $sel:verticalRelations:ProcessTimelines","module":"NITTA.UIBackend.Timeline","link":"NITTA-UIBackend-Timeline.html#t:ProcessTimelines"},{"display_html":"data TimelineWithViewPoint t = TimelineWithViewPoint {}","name":"TimelineWithViewPoint TimelineWithViewPoint $sel:timelineViewpoint:TimelineWithViewPoint $sel:timelinePoints:TimelineWithViewPoint","module":"NITTA.UIBackend.Timeline","link":"NITTA-UIBackend-Timeline.html#t:TimelineWithViewPoint"},{"display_html":"data TargetSystem u tag v x t = TargetSystem {}","name":"TargetSystem TargetSystem mUnit mDataFlowGraph","module":"NITTA.Model.TargetSystem","link":"NITTA-Model-TargetSystem.html#t:TargetSystem"},{"display_html":"processDuration :: (Num a, NextTick u a) => TargetSystem u tag v x t -> a","name":"processDuration","module":"NITTA.Model.TargetSystem","link":"NITTA-Model-TargetSystem.html#v:processDuration"},{"display_html":"isSynthesisComplete :: ProcessorUnit u v x t => TargetSystem u tag v x t -> Bool","name":"isSynthesisComplete","module":"NITTA.Model.TargetSystem","link":"NITTA-Model-TargetSystem.html#v:isSynthesisComplete"},{"display_html":"class ProcessIntegrity u where","name":"ProcessIntegrity checkProcessIntegrity","module":"NITTA.Model.ProcessIntegrity","link":"NITTA-Model-ProcessIntegrity.html#t:ProcessIntegrity"},{"display_html":"data DecisionView","name":"DecisionView RootView SingleBindView GroupBindView AllocationView DataflowDecisionView BreakLoopView ConstantFoldingView OptimizeAccumView ResolveDeadlockView $sel:function:RootView $sel:value:RootView $sel:new:RootView $sel:newBuffer:RootView $sel:input:RootView $sel:source:RootView $sel:processUnitTag:RootView $sel:networkTag:RootView $sel:old:RootView $sel:outputs:RootView $sel:pu:RootView $sel:changeset:RootView $sel:cRefOld:RootView $sel:cRefNew:RootView $sel:bindGroup:RootView $sel:targets:RootView","module":"NITTA.Model.Problems.ViewHelper","link":"NITTA-Model-Problems-ViewHelper.html#t:DecisionView"},{"display_html":"newtype IntervalView = IntervalView Text","name":"IntervalView IntervalView","module":"NITTA.Model.Problems.ViewHelper","link":"NITTA-Model-Problems-ViewHelper.html#t:IntervalView"},{"display_html":"data BusNetwork tag v x t = BusNetwork {}","name":"BusNetwork BusNetwork bnPUPrototypes bnPus bnRemains bnName bnBound bnProcess bnSignalBusWidth ioSync bnEnv","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#t:BusNetwork"},{"display_html":"data family Instruction pu :: Type","name":"Instruction Transport","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#t:Instruction"},{"display_html":"data family Ports pu :: Type","name":"Ports BusNetworkPorts","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts BusNetworkIO extInputs extOutputs extInOuts","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#t:IOPorts"},{"display_html":"boundFunctions :: Ord k => k -> BusNetwork k v x t -> [F v x]","name":"boundFunctions","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:boundFunctions"},{"display_html":"controlSignalLiteral :: (Builder (IsCustomSink dst) dst ~ Builder (IsCustomSink dst) dst, Interpolatable (IsCustomSink dst) src dst) => src -> dst","name":"controlSignalLiteral","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:controlSignalLiteral"},{"display_html":"busNetwork :: Default t => tag -> IOSynchronization -> BusNetwork tag v x t","name":"busNetwork","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:busNetwork"},{"display_html":"modifyNetwork :: BusNetwork k v x t -> State (BuilderSt k v x t) a -> BusNetwork k v x t","name":"modifyNetwork","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:modifyNetwork"},{"display_html":"defineNetwork :: Default t => k -> IOSynchronization -> State (BuilderSt k v x t) a -> BusNetwork k v x t","name":"defineNetwork","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:defineNetwork"},{"display_html":"addCustom :: forall tag v x t m pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => tag -> pu -> IOPorts pu -> m ()","name":"addCustom","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:addCustom"},{"display_html":"add :: (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, Default pu, UnitTag tag) => tag -> IOPorts pu -> m ()","name":"add","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:add"},{"display_html":"addPrototype :: (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, Default pu, UnitTag tag) => tag -> IOPorts pu -> m ()","name":"addPrototype","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:addPrototype"},{"display_html":"addCustomPrototype :: forall tag v x t m pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => tag -> pu -> IOPorts pu -> m ()","name":"addCustomPrototype","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:addCustomPrototype"},{"display_html":"class SynthesisDecisionCls ctx m o d p | ctx o -> m d p where","name":"SynthesisDecisionCls parameters decisions estimate","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:SynthesisDecisionCls"},{"display_html":"data Tree m tag v x t = Tree {}","name":"Tree Tree isLeaf sID sState sDecision sSubForestVar isComplete","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:Tree"},{"display_html":"data SynthesisDecision ctx m where","name":"SynthesisDecision SynthesisDecision Root option scores metrics decision","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:SynthesisDecision"},{"display_html":"data SynthesisState m tag v x t = SynthesisState {}","name":"SynthesisState SynthesisState numberOfProcessWaves processWaves sTarget numberOfDataflowOptions transferableVars sParent sAllocationOptions sBindOptions sResolveDeadlockOptions sOptimizeAccumOptions sConstantFoldingOptions sBreakLoopOptions sDataflowOptions bindingAlternative possibleDeadlockBinds bindWaves unitWorkloadInFunction","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:SynthesisState"},{"display_html":"type SynthesisMethodConstraints tag v x t = (VarValTimeJSON v x t, ToJSON tag, UnitTag tag)","name":"SynthesisMethodConstraints","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:SynthesisMethodConstraints"},{"display_html":"newtype Sid = Sid [Int]","name":"Sid Sid","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:Sid"},{"display_html":"type DefTree tag v x t = Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t","name":"DefTree","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:DefTree"},{"display_html":"type SynthesisMethod tag v x t = DefTree tag v x t -> IO (DefTree tag v x t)","name":"SynthesisMethod","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:SynthesisMethod"},{"display_html":"(<?>) :: Num p => Bool -> p -> p","name":"","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#v:-60--63--62-"},{"display_html":"targetUnit :: Tree (TargetSystem c tag v x t) tag v x t -> c","name":"targetUnit","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#v:targetUnit"},{"display_html":"targetDFG :: Tree (TargetSystem u tag v x t) tag v x t -> DataFlowGraph v x","name":"targetDFG","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#v:targetDFG"},{"display_html":"defScore :: SynthesisDecision ctx m -> Float","name":"defScore","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#v:defScore"},{"display_html":"mlScoreKeyPrefix :: IsString a => a","name":"mlScoreKeyPrefix","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#v:mlScoreKeyPrefix"},{"display_html":"data BackendCtx tag v x t = BackendCtx {}","name":"BackendCtx BackendCtx root receivedValues outputPath mlBackendGetter nodeScores","module":"NITTA.UIBackend.Types","link":"NITTA-UIBackend-Types.html#t:BackendCtx"},{"display_html":"getTreeInfo :: (VarValTime v x t, NextTick u t) => Tree (TargetSystem u tag v x t) tag v x t -> IO TreeInfo","name":"getTreeInfo","module":"NITTA.Synthesis.Analysis","link":"NITTA-Synthesis-Analysis.html#v:getTreeInfo"},{"display_html":"data TreeInfo = TreeInfo {}","name":"TreeInfo TreeInfo nodesVisited nodesSuccess nodesFailed nodesNotProcessed targetProcessDuration synthesisStepsForSuccess","module":"NITTA.Synthesis.Analysis","link":"NITTA-Synthesis-Analysis.html#t:TreeInfo"},{"display_html":"data ResolveDeadlockMetrics = ResolveDeadlockMetrics {}","name":"ResolveDeadlockMetrics ResolveDeadlockMetrics pNumberOfLockedVariables pBufferCount pNumberOfTransferableVariables","module":"NITTA.Synthesis.Steps.ResolveDeadlock","link":"NITTA-Synthesis-Steps-ResolveDeadlock.html#t:ResolveDeadlockMetrics"},{"display_html":"data OptimizeAccumMetrics = OptimizeAccumMetrics","name":"OptimizeAccumMetrics OptimizeAccumMetrics","module":"NITTA.Synthesis.Steps.OptimizeAccum","link":"NITTA-Synthesis-Steps-OptimizeAccum.html#t:OptimizeAccumMetrics"},{"display_html":"data DataflowMetrics = DataflowMetrics {}","name":"DataflowMetrics DataflowMetrics pWaitTime pRestrictedTime pNotTransferableInputs pFirstWaveOfTargetUse","module":"NITTA.Synthesis.Steps.Dataflow","link":"NITTA-Synthesis-Steps-Dataflow.html#t:DataflowMetrics"},{"display_html":"data ConstantFoldingMetrics = ConstantFoldingMetrics","name":"ConstantFoldingMetrics ConstantFoldingMetrics","module":"NITTA.Synthesis.Steps.ConstantFolding","link":"NITTA-Synthesis-Steps-ConstantFolding.html#t:ConstantFoldingMetrics"},{"display_html":"data BreakLoopMetrics = BreakLoopMetrics","name":"BreakLoopMetrics BreakLoopMetrics","module":"NITTA.Synthesis.Steps.BreakLoop","link":"NITTA-Synthesis-Steps-BreakLoop.html#t:BreakLoopMetrics"},{"display_html":"data BindMetrics","name":"BindMetrics SingleBindMetrics GroupBindMetrics pCritical pAlternative pRestless pOutputNumber pAllowDataFlow pPossibleDeadlock pNumberOfBoundFunctions pPercentOfBoundInputs pWave pOnlyObviousBinds pFunctionPercentInBinds pAvgBinds pVarianceBinds pAvgUnitWorkload pVarianceUnitWorkload","module":"NITTA.Synthesis.Steps.Bind","link":"NITTA-Synthesis-Steps-Bind.html#t:BindMetrics"},{"display_html":"isSingleBind :: SynthesisDecision ctx m -> Bool","name":"isSingleBind","module":"NITTA.Synthesis.Steps.Bind","link":"NITTA-Synthesis-Steps-Bind.html#v:isSingleBind"},{"display_html":"isMultiBind :: SynthesisDecision ctx m -> Bool","name":"isMultiBind","module":"NITTA.Synthesis.Steps.Bind","link":"NITTA-Synthesis-Steps-Bind.html#v:isMultiBind"},{"display_html":"isObviousMultiBind :: SynthesisDecision ctx m -> Bool","name":"isObviousMultiBind","module":"NITTA.Synthesis.Steps.Bind","link":"NITTA-Synthesis-Steps-Bind.html#v:isObviousMultiBind"},{"display_html":"data AllocationMetrics = AllocationMetrics {}","name":"AllocationMetrics AllocationMetrics mParallelism mRelatedRemains mMinPusForRemains mMaxParallels mAvgParallels","module":"NITTA.Synthesis.Steps.Allocation","link":"NITTA-Synthesis-Steps-Allocation.html#t:AllocationMetrics"},{"display_html":"module NITTA.Synthesis.Steps.Allocation","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.Bind","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.Dataflow","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.BreakLoop","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.OptimizeAccum","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.ResolveDeadlock","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.ConstantFolding","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"isRefactor :: SynthesisDecision ctx m -> Bool","name":"isRefactor","module":"NITTA.Synthesis.Steps","link":"NITTA-Synthesis-Steps.html#v:isRefactor"},{"display_html":"module NITTA.UIBackend.ViewHelperCls","name":"","module":"NITTA.UIBackend.ViewHelper","link":""},{"display_html":"module NITTA.Model.Problems.ViewHelper","name":"","module":"NITTA.UIBackend.ViewHelper","link":""},{"display_html":"data FView = FView {}","name":"FView FView fvFun fvHistory","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:FView"},{"display_html":"class Viewable t v | t -> v where","name":"Viewable view","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:Viewable"},{"display_html":"viewNodeTree :: (Enum b, Num b, NextTick u b) => Tree (TargetSystem u tag v x t) tag v x t -> IO (TreeView ShortNodeView)","name":"viewNodeTree","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#v:viewNodeTree"},{"display_html":"data TreeView a","name":"TreeView","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:TreeView"},{"display_html":"data ShortNodeView","name":"ShortNodeView","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:ShortNodeView"},{"display_html":"data NodeView tag v x t","name":"NodeView","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:NodeView"},{"display_html":"newtype StepInfoView = StepInfoView Text","name":"StepInfoView StepInfoView","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:StepInfoView"},{"display_html":"type VarValTimeJSON v x t = (VarValTime v x t, ToJSONKey v, ToJSON v, ToJSON x, ToJSON t)","name":"VarValTimeJSON","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:VarValTimeJSON"},{"display_html":"data ScoringInput tag v x t = ScoringInput {}","name":"ScoringInput ScoringInput nodes scoringTarget","module":"NITTA.Synthesis.MlBackend.Client","link":"NITTA-Synthesis-MlBackend-Client.html#t:ScoringInput"},{"display_html":"data ScoringTarget","name":"ScoringTarget ScoringTargetSid ScoringTargetAll","module":"NITTA.Synthesis.MlBackend.Client","link":"NITTA-Synthesis-MlBackend-Client.html#t:ScoringTarget"},{"display_html":"predictScoresIO :: forall {m} {v} {x} {t} {a} {tag}. (IsString v, Suffix v, Hashable v, Val x, Bounded t, ToJSONKey v, MonadThrow m, ToString v, ToString a, MonadIO m, Typeable v, Typeable t, Show t, Default t, Integral t, Ord v, ToJSON v, ToJSON t, ToJSON tag) => Text -> a -> [ScoringInput tag v x t] -> m [[Float]]","name":"predictScoresIO","module":"NITTA.Synthesis.MlBackend.Client","link":"NITTA-Synthesis-MlBackend-Client.html#v:predictScoresIO"},{"display_html":"synthesisTreeRootIO :: (UnitTag tag, Val x, Bounded t, Hashable v, Suffix v, Show t, Default t, Integral t, Typeable t, Typeable v, Ord v, ToString v, IsString v) => TargetSystem (BusNetwork tag v x t) tag v x t -> IO (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)","name":"synthesisTreeRootIO","module":"NITTA.Synthesis.Explore","link":"NITTA-Synthesis-Explore.html#v:synthesisTreeRootIO"},{"display_html":"getTreeIO :: (UnitTag tag, Hashable v, Suffix v, Val x, Bounded t, ToJSONKey v, Show t, Default t, Integral t, ToJSON v, ToJSON t, ToJSON tag, Typeable v, Typeable t, Ord v, ToString v, IsString v) => BackendCtx tag v x t -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Sid -> IO (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)","name":"getTreeIO","module":"NITTA.Synthesis.Explore","link":"NITTA-Synthesis-Explore.html#v:getTreeIO"},{"display_html":"getTreePathIO :: (UnitTag tag, Hashable v, Suffix v, Val x, Bounded t, ToJSONKey v, Show t, Default t, Integral t, ToJSON v, ToJSON t, ToJSON tag, Typeable v, Typeable t, Ord v, ToString v, IsString v) => BackendCtx tag v x t -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Sid -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t]","name":"getTreePathIO","module":"NITTA.Synthesis.Explore","link":"NITTA-Synthesis-Explore.html#v:getTreePathIO"},{"display_html":"subForestIO :: (UnitTag tag, Hashable v, Suffix v, Val x, Bounded t, ToJSONKey v, ToJSON v, ToJSON t, ToJSON tag, Show t, Default t, Integral t, Typeable v, Typeable t, Ord v, ToString v, IsString v) => BackendCtx tag v x t -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t]","name":"subForestIO","module":"NITTA.Synthesis.Explore","link":"NITTA-Synthesis-Explore.html#v:subForestIO"},{"display_html":"positiveSubForestIO :: (UnitTag tag, Hashable v, Suffix v, Val x, Bounded t, ToJSONKey v, Show t, Default t, Integral t, ToJSON v, ToJSON t, ToJSON tag, Typeable v, Typeable t, Ord v, ToString v, IsString v) => BackendCtx tag v x t -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t]","name":"positiveSubForestIO","module":"NITTA.Synthesis.Explore","link":"NITTA-Synthesis-Explore.html#v:positiveSubForestIO"},{"display_html":"type DefTree tag v x t = Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t","name":"DefTree","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#t:DefTree"},{"display_html":"type SynthesisMethod tag v x t = DefTree tag v x t -> IO (DefTree tag v x t)","name":"SynthesisMethod","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#t:SynthesisMethod"},{"display_html":"noSynthesis :: BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"noSynthesis","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:noSynthesis"},{"display_html":"simpleSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"simpleSynthesisIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:simpleSynthesisIO"},{"display_html":"smartBindSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"smartBindSynthesisIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:smartBindSynthesisIO"},{"display_html":"obviousBindThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"obviousBindThreadIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:obviousBindThreadIO"},{"display_html":"topDownByScoreSynthesisIO :: SynthesisMethodConstraints tag v x t => Float -> Int -> Maybe Text -> BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"topDownByScoreSynthesisIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:topDownByScoreSynthesisIO"},{"display_html":"allBestThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t","name":"allBestThreadIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:allBestThreadIO"},{"display_html":"stateOfTheArtSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"stateOfTheArtSynthesisIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:stateOfTheArtSynthesisIO"},{"display_html":"allBindsAndRefsIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"allBindsAndRefsIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:allBindsAndRefsIO"},{"display_html":"bestStepIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"bestStepIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:bestStepIO"},{"display_html":"type SynthesisMethodConstraints tag v x t = (VarValTimeJSON v x t, ToJSON tag, UnitTag tag)","name":"SynthesisMethodConstraints","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#t:SynthesisMethodConstraints"},{"display_html":"module NITTA.Synthesis.Explore","name":"","module":"NITTA.Synthesis","link":""},{"display_html":"module NITTA.Synthesis.Method","name":"","module":"NITTA.Synthesis","link":""},{"display_html":"module NITTA.Synthesis.Steps","name":"","module":"NITTA.Synthesis","link":""},{"display_html":"module NITTA.Synthesis.Types","name":"","module":"NITTA.Synthesis","link":""},{"display_html":"mkModelWithOneNetwork :: ProcessorUnit u v x t => u -> DataFlowGraph v x -> TargetSystem u tag v x t","name":"mkModelWithOneNetwork","module":"NITTA.Synthesis","link":"NITTA-Synthesis.html#v:mkModelWithOneNetwork"},{"display_html":"data TargetSynthesis tag v x t = TargetSynthesis {}","name":"TargetSynthesis TargetSynthesis tPath tName tMicroArch tSourceCode tDFG tReceivedValues tSynthesisMethod tLibPath tTemplates tSimulationCycleN tSourceCodeType","module":"NITTA.Synthesis","link":"NITTA-Synthesis.html#t:TargetSynthesis"},{"display_html":"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))","name":"runTargetSynthesis","module":"NITTA.Synthesis","link":"NITTA-Synthesis.html#v:runTargetSynthesis"},{"display_html":"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))","name":"synthesizeTargetSystem","module":"NITTA.Synthesis","link":"NITTA-Synthesis.html#v:synthesizeTargetSystem"},{"display_html":"data MicroarchitectureDesc tag = MicroarchitectureDesc {}","name":"MicroarchitectureDesc MicroarchitectureDesc $sel:networks:MicroarchitectureDesc $sel:ioSyncMode:MicroarchitectureDesc","module":"NITTA.Model.Microarchitecture.Types","link":"NITTA-Model-Microarchitecture-Types.html#t:MicroarchitectureDesc"},{"display_html":"data NetworkDesc tag = NetworkDesc {}","name":"NetworkDesc NetworkDesc $sel:networkTag:NetworkDesc $sel:valueType:NetworkDesc $sel:units:NetworkDesc","module":"NITTA.Model.Microarchitecture.Types","link":"NITTA-Model-Microarchitecture-Types.html#t:NetworkDesc"},{"display_html":"data UnitDesc tag = UnitDesc {}","name":"UnitDesc UnitDesc $sel:unitType:UnitDesc $sel:unitTag:UnitDesc","module":"NITTA.Model.Microarchitecture.Types","link":"NITTA-Model-Microarchitecture-Types.html#t:UnitDesc"},{"display_html":"microarchitectureDesc :: forall tag v x t. Typeable x => BusNetwork tag v x t -> MicroarchitectureDesc tag","name":"microarchitectureDesc","module":"NITTA.Model.Microarchitecture.Types","link":"NITTA-Model-Microarchitecture-Types.html#v:microarchitectureDesc"},{"display_html":"type SynthesisAPI tag v x t = (Description "Get whole synthesis tree" :> ("synthesisTree" :> Get '[JSON] (TreeView ShortNodeView))) :<|> ((Description "Get synthesis tree info" :> ("treeInfo" :> Get '[JSON] TreeInfo)) :<|> ("node" :> (Capture "sid" Sid :> (SynthesisTreeNavigationAPI tag v x t :<|> (NodeInspectionAPI tag v x t :<|> (TestBenchAPI v x :<|> (SynthesisMethodsAPI tag v x t :<|> SynthesisPracticesAPI tag v x t)))))))","name":"SynthesisAPI","module":"NITTA.UIBackend.REST","link":"NITTA-UIBackend-REST.html#t:SynthesisAPI"},{"display_html":"synthesisServer :: (UnitTag tag2, Bounded b, Hashable v, Suffix v, Val x, ToJSONKey v, Label v, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, Show b, Default b, Integral b, ToJSON v, ToJSON b, ToJSON tag2, Typeable b, Typeable v, Ord v, ToString v, IsString v) => BackendCtx tag2 v x b -> m (TreeView ShortNodeView) :<|> (m TreeInfo :<|> (Sid -> (m [NodeView tag2 v x b] :<|> (m (Maybe (NodeView tag2 v x b)) :<|> m [NodeView tag2 v x b])) :<|> ((m (NodeView tag2 v x b) :<|> (m (GraphStructure GraphEdge) :<|> (m (ProcessTimelines b) :<|> (m (Process b StepInfoView) :<|> ((tag2 -> m (Process b StepInfoView)) :<|> (m [UnitEndpoints tag2 v b] :<|> (m (MicroarchitectureDesc tag2) :<|> m (Debug tag2 v b)))))))) :<|> ((String -> Int -> m (TestbenchReport v x)) :<|> ((m Sid :<|> (m Sid :<|> m Sid)) :<|> (m Sid :<|> (m Sid :<|> (m Sid :<|> (Int -> m Sid)))))))))","name":"synthesisServer","module":"NITTA.UIBackend.REST","link":"NITTA-UIBackend-REST.html#v:synthesisServer"},{"display_html":"data BackendCtx tag v x t = BackendCtx {}","name":"BackendCtx BackendCtx root receivedValues outputPath mlBackendGetter nodeScores","module":"NITTA.UIBackend.REST","link":"NITTA-UIBackend-REST.html#t:BackendCtx"},{"display_html":"data UnitEndpoints tag v t = UnitEndpoints {}","name":"UnitEndpoints UnitEndpoints $sel:unitTag:UnitEndpoints $sel:unitEndpoints:UnitEndpoints","module":"NITTA.UIBackend.REST","link":"NITTA-UIBackend-REST.html#t:UnitEndpoints"},{"display_html":"backendServer :: (Suffix w, Hashable w, Val w, Bounded w, ToJSONKey w, FromHttpApiData w, UnitTag w, Label w, ToString w, IsString w, Typeable w, Typeable w, Show w, Default w, Integral w, Ord w, ToJSON w, ToJSON w, ToJSON w) => Int -> BackendCtx w w w w -> IO ()","name":"backendServer","module":"NITTA.UIBackend","link":"NITTA-UIBackend.html#v:backendServer"},{"display_html":"prepareJSAPI :: Interpolatable 'True p Text => p -> FilePath -> IO ()","name":"prepareJSAPI","module":"NITTA.UIBackend","link":"NITTA-UIBackend.html#v:prepareJSAPI"},{"display_html":"restDocs :: Show a => a -> String","name":"restDocs","module":"NITTA.UIBackend","link":"NITTA-UIBackend.html#v:restDocs"},{"display_html":"apiPath :: FilePath","name":"apiPath","module":"NITTA.UIBackend","link":"NITTA-UIBackend.html#v:apiPath"},{"display_html":"mkMicroarchitecture :: (Val v, Var x, ToJSON a, ToJSON x) => IOSynchronization -> HashMap Text a -> BusNetwork Text x v Int","name":"mkMicroarchitecture","module":"NITTA.Model.Microarchitecture.Config","link":"NITTA-Model-Microarchitecture-Config.html#v:mkMicroarchitecture"}] \ No newline at end of file +[{"display_html":"parseXmileEquation :: String -> XMExpr","name":"parseXmileEquation","module":"NITTA.Frontends.XMILE.MathParser","link":"NITTA-Frontends-XMILE-MathParser.html#v:parseXmileEquation"},{"display_html":"calculateDefaultValue :: HashMap Text Double -> XMExpr -> Double","name":"calculateDefaultValue","module":"NITTA.Frontends.XMILE.MathParser","link":"NITTA-Frontends-XMILE-MathParser.html#v:calculateDefaultValue"},{"display_html":"data XMExpr","name":"XMExpr Var Val Duo xmeOp xmeLexpr xmeRexpr","module":"NITTA.Frontends.XMILE.MathParser","link":"NITTA-Frontends-XMILE-MathParser.html#t:XMExpr"},{"display_html":"data XMDuop","name":"XMDuop Div Sub Add Mul","module":"NITTA.Frontends.XMILE.MathParser","link":"NITTA-Frontends-XMILE-MathParser.html#t:XMDuop"},{"display_html":"parseDocument :: String -> Content","name":"parseDocument","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#v:parseDocument"},{"display_html":"data Content = Content {}","name":"Content Content xcSimSpecs xcFlows xcAuxs xcStocks","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#t:Content"},{"display_html":"data Stock = Stock {}","name":"Stock Stock xsName xsEquation xsInflow xsOutflow","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#t:Stock"},{"display_html":"data Aux = Aux {}","name":"Aux Aux xaName xaEquation","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#t:Aux"},{"display_html":"data Flow = Flow {}","name":"Flow Flow xfName xfEquation","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#t:Flow"},{"display_html":"data SimSpec = SimSpec {}","name":"SimSpec SimSpec xssStart xssStop xssDt","module":"NITTA.Frontends.XMILE.DocumentParser","link":"NITTA-Frontends-XMILE-DocumentParser.html#t:SimSpec"},{"display_html":"type Var v = (Typeable v, Ord v, IsString v, ToString v, Suffix v, Hashable v)","name":"Var","module":"NITTA.Intermediate.Variable","link":"NITTA-Intermediate-Variable.html#t:Var"},{"display_html":"class Variables a v | a -> v where","name":"Variables variables","module":"NITTA.Intermediate.Variable","link":"NITTA-Intermediate-Variable.html#t:Variables"},{"display_html":"class Suffix v where","name":"Suffix bufferSuffix countSuffix","module":"NITTA.Intermediate.Variable","link":"NITTA-Intermediate-Variable.html#t:Suffix"},{"display_html":"data Allocation tag = Allocation {}","name":"Allocation Allocation processUnitTag networkTag","module":"NITTA.Model.Problems.Allocation","link":"NITTA-Model-Problems-Allocation.html#t:Allocation"},{"display_html":"class AllocationProblem u tag | u -> tag where","name":"AllocationProblem allocationDecision allocationOptions","module":"NITTA.Model.Problems.Allocation","link":"NITTA-Model-Problems-Allocation.html#t:AllocationProblem"},{"display_html":"snippetClkGen :: Text","name":"snippetClkGen","module":"NITTA.Project.VerilogSnippets","link":"NITTA-Project-VerilogSnippets.html#v:snippetClkGen"},{"display_html":"snippetDumpFile :: Text -> Text","name":"snippetDumpFile","module":"NITTA.Project.VerilogSnippets","link":"NITTA-Project-VerilogSnippets.html#v:snippetDumpFile"},{"display_html":"newtype Cache a = Cache (MVar (Maybe a))","name":"Cache Cache","module":"NITTA.Synthesis.MlBackend.FixedCache","link":"NITTA-Synthesis-MlBackend-FixedCache.html#t:Cache"},{"display_html":"newCache :: IO (Cache a)","name":"newCache","module":"NITTA.Synthesis.MlBackend.FixedCache","link":"NITTA-Synthesis-MlBackend-FixedCache.html#v:newCache"},{"display_html":"fetch :: Cache a -> IO a -> IO a","name":"fetch","module":"NITTA.Synthesis.MlBackend.FixedCache","link":"NITTA-Synthesis-MlBackend-FixedCache.html#v:fetch"},{"display_html":"class Viewable t v | t -> v where","name":"Viewable view","module":"NITTA.UIBackend.ViewHelperCls","link":"NITTA-UIBackend-ViewHelperCls.html#t:Viewable"},{"display_html":"unionsMap :: Ord a => (a -> Set a) -> [a] -> Set a","name":"unionsMap","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:unionsMap"},{"display_html":"oneOf :: Set c -> c","name":"oneOf","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:oneOf"},{"display_html":"minimumOn :: (Foldable t, Ord a) => (t -> a) -> t t -> t","name":"minimumOn","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:minimumOn"},{"display_html":"maximumOn :: (Foldable t, Ord a) => (t -> a) -> t t -> t","name":"maximumOn","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:maximumOn"},{"display_html":"toText :: ToString a => a -> Text","name":"toText","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:toText"},{"display_html":"fromText :: IsString a => Text -> a","name":"fromText","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:fromText"},{"display_html":"showText :: Show a => a -> Text","name":"showText","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:showText"},{"display_html":"readText :: Read a => Text -> a","name":"readText","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:readText"},{"display_html":"vsToStringList :: ToString a => Set a -> [String]","name":"vsToStringList","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:vsToStringList"},{"display_html":"catchToMaybeIO :: IO a -> IO (Maybe a)","name":"catchToMaybeIO","module":"NITTA.Utils.Base","link":"NITTA-Utils-Base.html#v:catchToMaybeIO"},{"display_html":"data MlBackendServer = MlBackendServer {}","name":"MlBackendServer MlBackendServer baseUrl handles","module":"NITTA.Synthesis.MlBackend.ServerInstance","link":"NITTA-Synthesis-MlBackend-ServerInstance.html#t:MlBackendServer"},{"display_html":"withLazyMlBackendServer :: (IO MlBackendServer -> IO c) -> IO c","name":"withLazyMlBackendServer","module":"NITTA.Synthesis.MlBackend.ServerInstance","link":"NITTA-Synthesis-MlBackend-ServerInstance.html#v:withLazyMlBackendServer"},{"display_html":"class (Typeable x, Show x, Read x, PrintfArg x, Default x, Integral x, Enum x, Eq x, Num x, Bits x, Validity x, FixedPointCompatible x, ToJSON x) => Val x where","name":"Val dataWidth attrWidth rawData rawAttr fromRaw dataLiteral attrLiteral verilogHelper verilogAssertRE","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:Val"},{"display_html":"class Default x => DefaultX u x | u -> x where","name":"DefaultX defX","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:DefaultX"},{"display_html":"class FixedPointCompatible a where","name":"FixedPointCompatible scalingFactorPower fractionalBitSize","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:FixedPointCompatible"},{"display_html":"scalingFactor :: (Floating a, FixedPointCompatible a) => a -> a","name":"scalingFactor","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#v:scalingFactor"},{"display_html":"minMaxRaw :: (Num b, Val p) => p -> (b, b)","name":"minMaxRaw","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#v:minMaxRaw"},{"display_html":"data Attr x = Attr {}","name":"Attr Attr value invalid","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:Attr"},{"display_html":"newtype IntX (w :: Nat) = IntX {}","name":"IntX IntX intX","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:IntX"},{"display_html":"newtype FX (m :: Nat) (b :: Nat) = FX {}","name":"FX FX rawFX","module":"NITTA.Intermediate.Value","link":"NITTA-Intermediate-Value.html#t:FX"},{"display_html":"newtype I v = I v","name":"I I","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:I"},{"display_html":"newtype O v = O (Set v)","name":"O O","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:O"},{"display_html":"newtype X x = X x","name":"X X","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:X"},{"display_html":"data F v x where","name":"F F fun funHistory","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:F"},{"display_html":"data FView = FView {}","name":"FView FView fvFun fvHistory","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:FView"},{"display_html":"packF :: (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x","name":"packF","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:packF"},{"display_html":"castF :: (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x)","name":"castF","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:castF"},{"display_html":"functionType :: F v x -> TypeRep","name":"functionType","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:functionType"},{"display_html":"class Function f v | f -> v where","name":"Function inputs outputs isInternalLockPossible","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Function"},{"display_html":"data Lock v = Lock {}","name":"Lock Lock locked lockBy","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Lock"},{"display_html":"class Var v => Locks x v | x -> v where","name":"Locks locks","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Locks"},{"display_html":"inputsLockOutputs :: Function f v => f -> [Lock v]","name":"inputsLockOutputs","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:inputsLockOutputs"},{"display_html":"class WithFunctions a f | a -> f where","name":"WithFunctions functions","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:WithFunctions"},{"display_html":"class Label a where","name":"Label label","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Label"},{"display_html":"class FunctionSimulation f v x | f -> v x where","name":"FunctionSimulation simulate","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:FunctionSimulation"},{"display_html":"newtype CycleCntx v x = CycleCntx {}","name":"CycleCntx CycleCntx cycleCntx","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:CycleCntx"},{"display_html":"data Cntx v x = Cntx {}","name":"Cntx Cntx cntxProcess cntxReceived cntxCycleNumber","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Cntx"},{"display_html":"log2md :: ToString a => [HashMap a String] -> String","name":"log2md","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:log2md"},{"display_html":"log2json :: ToString a => [HashMap a String] -> ByteString","name":"log2json","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:log2json"},{"display_html":"log2csv :: ToString a => [HashMap a String] -> ByteString","name":"log2csv","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:log2csv"},{"display_html":"cntxReceivedBySlice :: Ord v => Cntx v x -> [Map v x]","name":"cntxReceivedBySlice","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:cntxReceivedBySlice"},{"display_html":"getCntx :: (Hashable a, ToString a) => CycleCntx a v -> a -> v","name":"getCntx","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:getCntx"},{"display_html":"updateCntx :: (Hashable v, ToString v) => CycleCntx v x -> [(v, x)] -> Either String (CycleCntx v x)","name":"updateCntx","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:updateCntx"},{"display_html":"class Patch f diff where","name":"Patch patch","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Patch"},{"display_html":"data Changeset v = Changeset {}","name":"Changeset Changeset changeI changeO","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#t:Changeset"},{"display_html":"reverseDiff :: Ord t => Changeset t -> Changeset t","name":"reverseDiff","module":"NITTA.Intermediate.Types","link":"NITTA-Intermediate-Types.html#v:reverseDiff"},{"display_html":"module NITTA.Intermediate.Value","name":"","module":"NITTA.Intermediate.Types","link":""},{"display_html":"module NITTA.Intermediate.Variable","name":"","module":"NITTA.Intermediate.Types","link":""},{"display_html":"type VisJS = GraphStructure GraphEdge","name":"VisJS","module":"NITTA.UIBackend.VisJS","link":"NITTA-UIBackend-VisJS.html#t:VisJS"},{"display_html":"algToVizJS :: Label v => [F v x] -> GraphStructure GraphEdge","name":"algToVizJS","module":"NITTA.UIBackend.VisJS","link":"NITTA-UIBackend-VisJS.html#v:algToVizJS"},{"display_html":"data GraphStructure v = GraphStructure {}","name":"GraphStructure GraphStructure $sel:edges:GraphStructure $sel:nodes:GraphStructure","module":"NITTA.UIBackend.VisJS","link":"NITTA-UIBackend-VisJS.html#t:GraphStructure"},{"display_html":"data GraphNode = GraphNode {}","name":"GraphNode GraphNode $sel:id:GraphNode $sel:function:GraphNode $sel:label:GraphNode $sel:history:GraphNode $sel:nodeColor:GraphNode $sel:nodeShape:GraphNode $sel:fontSize:GraphNode $sel:nodeSize:GraphNode","module":"NITTA.UIBackend.VisJS","link":"NITTA-UIBackend-VisJS.html#t:GraphNode"},{"display_html":"data GraphEdge = GraphEdge {}","name":"GraphEdge GraphEdge $sel:label:GraphEdge $sel:from:GraphEdge $sel:to:GraphEdge $sel:edgeWidth:GraphEdge $sel:fontAllign:GraphEdge","module":"NITTA.UIBackend.VisJS","link":"NITTA-UIBackend-VisJS.html#t:GraphEdge"},{"display_html":"type VarValTime v x t = (Var v, Val x, Time t)","name":"VarValTime","module":"NITTA.Model.Time","link":"NITTA-Model-Time.html#t:VarValTime"},{"display_html":"type VarValTimeJSON v x t = (VarValTime v x t, ToJSONKey v, ToJSON v, ToJSON x, ToJSON t)","name":"VarValTimeJSON","module":"NITTA.Model.Time","link":"NITTA-Model-Time.html#t:VarValTimeJSON"},{"display_html":"type Time t = (Default t, Num t, Bounded t, Ord t, Show t, Typeable t, Enum t, Integral t)","name":"Time","module":"NITTA.Model.Time","link":"NITTA-Model-Time.html#t:Time"},{"display_html":"data TimeConstraint t = TimeConstraint {}","name":"TimeConstraint TimeConstraint tcAvailable tcDuration","module":"NITTA.Model.Time","link":"NITTA-Model-Time.html#t:TimeConstraint"},{"display_html":"data TaggedTime tag t = TaggedTime {}","name":"TaggedTime TaggedTime tTag tClock","module":"NITTA.Model.Time","link":"NITTA-Model-Time.html#t:TaggedTime"},{"display_html":"data EndpointSt v tp = EndpointSt {}","name":"EndpointSt EndpointSt epAt epRole","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#t:EndpointSt"},{"display_html":"class EndpointProblem u v t | u -> v t where","name":"EndpointProblem endpointOptions endpointDecision","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#t:EndpointProblem"},{"display_html":"data EndpointRole v","name":"EndpointRole Source Target","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#t:EndpointRole"},{"display_html":"endpointOptionToDecision :: (Num a, Ord a) => EndpointSt v (TimeConstraint a) -> EndpointSt v (Interval a)","name":"endpointOptionToDecision","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:endpointOptionToDecision"},{"display_html":"isSource :: EndpointSt v tp -> Bool","name":"isSource","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:isSource"},{"display_html":"isTarget :: EndpointSt v tp -> Bool","name":"isTarget","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:isTarget"},{"display_html":"isSubroleOf :: Ord a => EndpointRole a -> EndpointRole a -> Bool","name":"isSubroleOf","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:isSubroleOf"},{"display_html":"setAt :: tp -> EndpointSt v tp -> EndpointSt v tp","name":"setAt","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:setAt"},{"display_html":"updAt :: (t -> tp) -> EndpointSt v t -> EndpointSt v tp","name":"updAt","module":"NITTA.Model.Problems.Endpoint","link":"NITTA-Model-Problems-Endpoint.html#v:updAt"},{"display_html":"class (Typeable tag, Ord tag, ToString tag, IsString tag, Semigroup tag) => UnitTag tag where","name":"UnitTag isTemplate fromTemplate","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:UnitTag"},{"display_html":"class VarValTime v x t => ProcessorUnit u v x t | u -> v x t where","name":"ProcessorUnit process parallelismType tryBind puSize","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:ProcessorUnit"},{"display_html":"bind :: ProcessorUnit u v x t => F v x -> u -> u","name":"bind","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:bind"},{"display_html":"allowToProcess :: ProcessorUnit b v x t => F v x -> b -> Bool","name":"allowToProcess","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:allowToProcess"},{"display_html":"class NextTick u t | u -> t where","name":"NextTick nextTick","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:NextTick"},{"display_html":"data ParallelismType","name":"ParallelismType None Full Pipeline","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:ParallelismType"},{"display_html":"data Process t i = Process {}","name":"Process Process steps relations nextTick_ nextUid","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:Process"},{"display_html":"type ProcessStepID = Int","name":"ProcessStepID","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:ProcessStepID"},{"display_html":"data Step t i = Step {}","name":"Step Step pInterval pDesc pID","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:Step"},{"display_html":"data StepInfo v x t where","name":"StepInfo IntermediateStep CADStep RefactorStep EndpointRoleStep InstructionStep NestedStep AllocationStep nTitle nStep","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:StepInfo"},{"display_html":"data Relation","name":"Relation Vertical Horizontal vUp vDown hPrev hNext","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:Relation"},{"display_html":"descent :: StepInfo v x t -> StepInfo v x t","name":"descent","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:descent"},{"display_html":"whatsHappen :: Ord a => a -> Process a i -> [Step a i]","name":"whatsHappen","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:whatsHappen"},{"display_html":"extractInstructionAt :: (ProcessorUnit u v x t, Typeable u) => u -> t -> [Instruction u]","name":"extractInstructionAt","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:extractInstructionAt"},{"display_html":"withShift :: (Eq a, Num a) => a -> a -> a","name":"withShift","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:withShift"},{"display_html":"isRefactorStep :: StepInfo v x t -> Bool","name":"isRefactorStep","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:isRefactorStep"},{"display_html":"isAllocationStep :: StepInfo v x t -> Bool","name":"isAllocationStep","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:isAllocationStep"},{"display_html":"class Controllable pu where","name":"Controllable Instruction Microcode zipSignalTagsAndValues usedPortTags takePortTags","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:Controllable"},{"display_html":"newtype SignalTag = SignalTag {}","name":"SignalTag SignalTag signalTag","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:SignalTag"},{"display_html":"class UnambiguouslyDecode pu where","name":"UnambiguouslyDecode decodeInstruction","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:UnambiguouslyDecode"},{"display_html":"class Connected pu where","name":"Connected Ports","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:Connected"},{"display_html":"class ByTime pu t | pu -> t where","name":"ByTime microcodeAt","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:ByTime"},{"display_html":"data SignalValue","name":"SignalValue Bool Undef BrokenSignal","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:SignalValue"},{"display_html":"(+++) :: SignalValue -> SignalValue -> SignalValue","name":"+++","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#v:-43--43--43-"},{"display_html":"class IOConnected pu where","name":"IOConnected IOPorts inputPorts outputPorts inoutPorts","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:IOConnected"},{"display_html":"newtype InputPortTag = InputPortTag {}","name":"InputPortTag InputPortTag inputPortTag","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:InputPortTag"},{"display_html":"newtype OutputPortTag = OutputPortTag {}","name":"OutputPortTag OutputPortTag outputPortTag","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:OutputPortTag"},{"display_html":"newtype InoutPortTag = InoutPortTag {}","name":"InoutPortTag InoutPortTag inoutPortTag","module":"NITTA.Model.ProcessorUnits.Types","link":"NITTA-Model-ProcessorUnits-Types.html#t:InoutPortTag"},{"display_html":"data DataflowSt tag v tp = DataflowSt {}","name":"DataflowSt DataflowSt dfSource dfTargets","module":"NITTA.Model.Problems.Dataflow","link":"NITTA-Model-Problems-Dataflow.html#t:DataflowSt"},{"display_html":"class DataflowProblem u tag v t | u -> tag v t where","name":"DataflowProblem dataflowDecision dataflowOptions","module":"NITTA.Model.Problems.Dataflow","link":"NITTA-Model-Problems-Dataflow.html#t:DataflowProblem"},{"display_html":"dataflowOption2decision :: Time t => DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t)","name":"dataflowOption2decision","module":"NITTA.Model.Problems.Dataflow","link":"NITTA-Model-Problems-Dataflow.html#v:dataflowOption2decision"},{"display_html":"data Bind tag v x","name":"Bind SingleBind GroupBind isObviousBinds bindGroup","module":"NITTA.Model.Problems.Bind","link":"NITTA-Model-Problems-Bind.html#t:Bind"},{"display_html":"class BindProblem u tag v x | u -> tag v x where","name":"BindProblem bindOptions bindDecision","module":"NITTA.Model.Problems.Bind","link":"NITTA-Model-Problems-Bind.html#t:BindProblem"},{"display_html":"binds2bindGroup :: UnitTag tag => [(tag, F v x)] -> Map tag [F v x]","name":"binds2bindGroup","module":"NITTA.Model.Problems.Bind","link":"NITTA-Model-Problems-Bind.html#v:binds2bindGroup"},{"display_html":"newtype Acc v x = Acc {}","name":"Acc Acc $sel:actions:Acc","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#t:Acc"},{"display_html":"data Action v","name":"Action Push Pull","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#t:Action"},{"display_html":"data Sign","name":"Sign Minus Plus","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#t:Sign"},{"display_html":"acc :: (Hashable v, Suffix v, ToString v, IsString v, Ord v, Num x, Typeable v, Typeable x) => [Action v] -> F v x","name":"acc","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#v:acc"},{"display_html":"accFromStr :: (Num x, Typeable x) => String -> F Text x","name":"accFromStr","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#v:accFromStr"},{"display_html":"isPull :: Action v -> Bool","name":"isPull","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#v:isPull"},{"display_html":"isPush :: Action v -> Bool","name":"isPush","module":"NITTA.Intermediate.Functions.Accum","link":"NITTA-Intermediate-Functions-Accum.html#v:isPush"},{"display_html":"data Add v x = Add (I v) (I v) (O v)","name":"Add Add","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Add"},{"display_html":"add :: (Var v, Val x) => v -> v -> [v] -> F v x","name":"add","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:add"},{"display_html":"data Division v x = Division {}","name":"Division Division $sel:remain:Division $sel:denom:Division $sel:numer:Division $sel:quotient:Division","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Division"},{"display_html":"division :: (Var v, Val x) => v -> v -> [v] -> [v] -> F v x","name":"division","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:division"},{"display_html":"data Multiply v x = Multiply (I v) (I v) (O v)","name":"Multiply Multiply","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Multiply"},{"display_html":"multiply :: (Var v, Val x) => v -> v -> [v] -> F v x","name":"multiply","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:multiply"},{"display_html":"data ShiftLR v x","name":"ShiftLR ShiftL ShiftR","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:ShiftLR"},{"display_html":"shiftL :: (Var v, Val x) => Int -> v -> [v] -> F v x","name":"shiftL","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:shiftL"},{"display_html":"shiftR :: (Var v, Val x) => Int -> v -> [v] -> F v x","name":"shiftR","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:shiftR"},{"display_html":"data Sub v x = Sub (I v) (I v) (O v)","name":"Sub Sub","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Sub"},{"display_html":"sub :: (Var v, Val x) => v -> v -> [v] -> F v x","name":"sub","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:sub"},{"display_html":"data Neg v x = Neg (I v) (O v)","name":"Neg Neg","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Neg"},{"display_html":"neg :: (Var v, Val x) => v -> [v] -> F v x","name":"neg","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:neg"},{"display_html":"module NITTA.Intermediate.Functions.Accum","name":"","module":"NITTA.Intermediate.Functions","link":""},{"display_html":"data Constant v x = Constant (X x) (O v)","name":"Constant Constant","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Constant"},{"display_html":"constant :: (Var v, Val x) => x -> [v] -> F v x","name":"constant","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:constant"},{"display_html":"isConst :: (Typeable v, Typeable x) => F v x -> Bool","name":"isConst","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:isConst"},{"display_html":"data Loop v x = Loop (X x) (O v) (I v)","name":"Loop Loop","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Loop"},{"display_html":"loop :: (Var v, Val x) => x -> v -> [v] -> F v x","name":"loop","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:loop"},{"display_html":"isLoop :: (Typeable v, Typeable x) => F v x -> Bool","name":"isLoop","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:isLoop"},{"display_html":"data LoopEnd v x = LoopEnd (Loop v x) (I v)","name":"LoopEnd LoopEnd","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:LoopEnd"},{"display_html":"data LoopBegin v x = LoopBegin (Loop v x) (O v)","name":"LoopBegin LoopBegin","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:LoopBegin"},{"display_html":"data Buffer v x = Buffer (I v) (O v)","name":"Buffer Buffer","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Buffer"},{"display_html":"buffer :: (Var v, Val x) => v -> [v] -> F v x","name":"buffer","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:buffer"},{"display_html":"newtype Receive v x = Receive (O v)","name":"Receive Receive","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Receive"},{"display_html":"receive :: (Var v, Val x) => [v] -> F v x","name":"receive","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:receive"},{"display_html":"newtype Send v x = Send (I v)","name":"Send Send","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:Send"},{"display_html":"send :: (Var v, Val x) => v -> F v x","name":"send","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:send"},{"display_html":"data BrokenBuffer v x = BrokenBuffer (I v) (O v)","name":"BrokenBuffer BrokenBuffer","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#t:BrokenBuffer"},{"display_html":"brokenBuffer :: (Var v, Val x) => v -> [v] -> F v x","name":"brokenBuffer","module":"NITTA.Intermediate.Functions","link":"NITTA-Intermediate-Functions.html#v:brokenBuffer"},{"display_html":"data ResolveDeadlock v x = ResolveDeadlock {}","name":"ResolveDeadlock ResolveDeadlock newBuffer changeset","module":"NITTA.Model.Problems.Refactor.ResolveDeadlock","link":"NITTA-Model-Problems-Refactor-ResolveDeadlock.html#t:ResolveDeadlock"},{"display_html":"class ResolveDeadlockProblem u v x | u -> v x where","name":"ResolveDeadlockProblem resolveDeadlockOptions resolveDeadlockDecision","module":"NITTA.Model.Problems.Refactor.ResolveDeadlock","link":"NITTA-Model-Problems-Refactor-ResolveDeadlock.html#t:ResolveDeadlockProblem"},{"display_html":"resolveDeadlock :: (Var v, Val x) => Set v -> ResolveDeadlock v x","name":"resolveDeadlock","module":"NITTA.Model.Problems.Refactor.ResolveDeadlock","link":"NITTA-Model-Problems-Refactor-ResolveDeadlock.html#v:resolveDeadlock"},{"display_html":"maxBufferStack :: Int","name":"maxBufferStack","module":"NITTA.Model.Problems.Refactor.ResolveDeadlock","link":"NITTA-Model-Problems-Refactor-ResolveDeadlock.html#v:maxBufferStack"},{"display_html":"data OptimizeAccum v x = OptimizeAccum {}","name":"OptimizeAccum OptimizeAccum refOld refNew","module":"NITTA.Model.Problems.Refactor.OptimizeAccum","link":"NITTA-Model-Problems-Refactor-OptimizeAccum.html#t:OptimizeAccum"},{"display_html":"class OptimizeAccumProblem u v x | u -> v x where","name":"OptimizeAccumProblem optimizeAccumOptions optimizeAccumDecision","module":"NITTA.Model.Problems.Refactor.OptimizeAccum","link":"NITTA-Model-Problems-Refactor-OptimizeAccum.html#t:OptimizeAccumProblem"},{"display_html":"data ConstantFolding v x = ConstantFolding {}","name":"ConstantFolding ConstantFolding cRefOld cRefNew","module":"NITTA.Model.Problems.Refactor.ConstantFolding","link":"NITTA-Model-Problems-Refactor-ConstantFolding.html#t:ConstantFolding"},{"display_html":"class ConstantFoldingProblem u v x | u -> v x where","name":"ConstantFoldingProblem constantFoldingOptions constantFoldingDecision","module":"NITTA.Model.Problems.Refactor.ConstantFolding","link":"NITTA-Model-Problems-Refactor-ConstantFolding.html#t:ConstantFoldingProblem"},{"display_html":"data BreakLoop v x = BreakLoop {}","name":"BreakLoop BreakLoop loopX loopO loopI","module":"NITTA.Model.Problems.Refactor.BreakLoop","link":"NITTA-Model-Problems-Refactor-BreakLoop.html#t:BreakLoop"},{"display_html":"class BreakLoopProblem u v x | u -> v x where","name":"BreakLoopProblem breakLoopOptions breakLoopDecision","module":"NITTA.Model.Problems.Refactor.BreakLoop","link":"NITTA-Model-Problems-Refactor-BreakLoop.html#t:BreakLoopProblem"},{"display_html":"recLoop :: (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x","name":"recLoop","module":"NITTA.Model.Problems.Refactor.BreakLoop","link":"NITTA-Model-Problems-Refactor-BreakLoop.html#v:recLoop"},{"display_html":"recLoopIn :: (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x","name":"recLoopIn","module":"NITTA.Model.Problems.Refactor.BreakLoop","link":"NITTA-Model-Problems-Refactor-BreakLoop.html#v:recLoopIn"},{"display_html":"recLoopOut :: (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x","name":"recLoopOut","module":"NITTA.Model.Problems.Refactor.BreakLoop","link":"NITTA-Model-Problems-Refactor-BreakLoop.html#v:recLoopOut"},{"display_html":"module NITTA.Model.Problems.Refactor.BreakLoop","name":"","module":"NITTA.Model.Problems.Refactor","link":""},{"display_html":"module NITTA.Model.Problems.Refactor.OptimizeAccum","name":"","module":"NITTA.Model.Problems.Refactor","link":""},{"display_html":"module NITTA.Model.Problems.Refactor.ResolveDeadlock","name":"","module":"NITTA.Model.Problems.Refactor","link":""},{"display_html":"module NITTA.Model.Problems.Refactor.ConstantFolding","name":"","module":"NITTA.Model.Problems.Refactor","link":""},{"display_html":"module NITTA.Model.Problems.Allocation","name":"","module":"NITTA.Model.Problems","link":""},{"display_html":"module NITTA.Model.Problems.Bind","name":"","module":"NITTA.Model.Problems","link":""},{"display_html":"module NITTA.Model.Problems.Dataflow","name":"","module":"NITTA.Model.Problems","link":""},{"display_html":"module NITTA.Model.Problems.Endpoint","name":"","module":"NITTA.Model.Problems","link":""},{"display_html":"module NITTA.Model.Problems.Refactor","name":"","module":"NITTA.Model.Problems","link":""},{"display_html":"data DataFlowGraph v x","name":"DataFlowGraph DFLeaf DFCluster","module":"NITTA.Intermediate.DataFlow","link":"NITTA-Intermediate-DataFlow.html#t:DataFlowGraph"},{"display_html":"fsToDataFlowGraph :: [F v x] -> DataFlowGraph v x","name":"fsToDataFlowGraph","module":"NITTA.Intermediate.DataFlow","link":"NITTA-Intermediate-DataFlow.html#v:fsToDataFlowGraph"},{"display_html":"addFuncToDataFlowGraph :: F v x -> DataFlowGraph v x -> DataFlowGraph v x","name":"addFuncToDataFlowGraph","module":"NITTA.Intermediate.DataFlow","link":"NITTA-Intermediate-DataFlow.html#v:addFuncToDataFlowGraph"},{"display_html":"data FrontendResult v x = FrontendResult {}","name":"FrontendResult FrontendResult frDataFlow frTrace frPrettyLog","module":"NITTA.Frontends.Common","link":"NITTA-Frontends-Common.html#t:FrontendResult"},{"display_html":"data TraceVar = TraceVar {}","name":"TraceVar TraceVar tvFmt tvVar","module":"NITTA.Frontends.Common","link":"NITTA-Frontends-Common.html#t:TraceVar"},{"display_html":"prettyLog :: (Real t, Show t, PrintfType v, PrintfArg t, ToString a) => [TraceVar] -> [HashMap a t] -> [HashMap String v]","name":"prettyLog","module":"NITTA.Frontends.Common","link":"NITTA-Frontends-Common.html#v:prettyLog"},{"display_html":"getTraceVarFormat :: Maybe Text -> Text","name":"getTraceVarFormat","module":"NITTA.Frontends.Common","link":"NITTA-Frontends-Common.html#v:getTraceVarFormat"},{"display_html":"data ProcessWave v x = ProcessWave {}","name":"ProcessWave ProcessWave pwFs pwOut","module":"NITTA.Intermediate.Analysis","link":"NITTA-Intermediate-Analysis.html#t:ProcessWave"},{"display_html":"buildProcessWaves :: (Var v, Val x) => [v] -> [F v x] -> [ProcessWave v x]","name":"buildProcessWaves","module":"NITTA.Intermediate.Analysis","link":"NITTA-Intermediate-Analysis.html#v:buildProcessWaves"},{"display_html":"reorderAlgorithm :: (Var v, Val x) => [F v x] -> [F v x]","name":"reorderAlgorithm","module":"NITTA.Intermediate.Analysis","link":"NITTA-Intermediate-Analysis.html#v:reorderAlgorithm"},{"display_html":"estimateVarWaves :: (Var v, Val x, Num a) => [v] -> [F v x] -> Map v a","name":"estimateVarWaves","module":"NITTA.Intermediate.Analysis","link":"NITTA-Intermediate-Analysis.html#v:estimateVarWaves"},{"display_html":"simulateDataFlowGraph :: (Var v, Val x, WithFunctions g (F v x)) => Int -> CycleCntx v x -> [(v, [x])] -> g -> Cntx v x","name":"simulateDataFlowGraph","module":"NITTA.Intermediate.Simulation","link":"NITTA-Intermediate-Simulation.html#v:simulateDataFlowGraph"},{"display_html":"simulateAlg :: (Var v, Val x) => Int -> CycleCntx v x -> [(v, [x])] -> [F v x] -> Cntx v x","name":"simulateAlg","module":"NITTA.Intermediate.Simulation","link":"NITTA-Intermediate-Simulation.html#v:simulateAlg"},{"display_html":"translateXMILE :: (Hashable v, Suffix v, ToString v, IsString v, Val x, Ord v, Typeable v) => Text -> FrontendResult v x","name":"translateXMILE","module":"NITTA.Frontends.XMILE.Frontend","link":"NITTA-Frontends-XMILE-Frontend.html#v:translateXMILE"},{"display_html":"data FrontendResult v x = FrontendResult {}","name":"FrontendResult FrontendResult frDataFlow frTrace frPrettyLog","module":"NITTA.Frontends.XMILE.Frontend","link":"NITTA-Frontends-XMILE-Frontend.html#t:FrontendResult"},{"display_html":"data TraceVar = TraceVar {}","name":"TraceVar TraceVar tvFmt tvVar","module":"NITTA.Frontends.XMILE.Frontend","link":"NITTA-Frontends-XMILE-Frontend.html#t:TraceVar"},{"display_html":"translateLua :: (Var v, Val x) => Text -> FrontendResult v x","name":"translateLua","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#v:translateLua"},{"display_html":"data FrontendResult v x = FrontendResult {}","name":"FrontendResult FrontendResult frDataFlow frTrace frPrettyLog","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#t:FrontendResult"},{"display_html":"data TraceVar = TraceVar {}","name":"TraceVar TraceVar tvFmt tvVar","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#t:TraceVar"},{"display_html":"data LuaAlgBuilder x = LuaAlgBuilder {}","name":"LuaAlgBuilder LuaAlgBuilder algGraph algLatestLuaValueInstance algVarCounters algVars algStartupArgs algConstants algTraceFuncs","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#t:LuaAlgBuilder"},{"display_html":"data LuaStatement x = LuaStatement {}","name":"LuaStatement LuaStatement fIn fOut fName fValues fInt","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#t:LuaStatement"},{"display_html":"data LuaValueInstance = LuaValueInstance {}","name":"LuaValueInstance LuaValueInstance lviName lviIsConstant lviAssignCount","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#t:LuaValueInstance"},{"display_html":"findStartupFunction :: Block -> (Text, Stat, Stat)","name":"findStartupFunction","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#v:findStartupFunction"},{"display_html":"getLuaBlockFromSources :: Text -> Block","name":"getLuaBlockFromSources","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#v:getLuaBlockFromSources"},{"display_html":"processStatement :: (MonadState (LuaAlgBuilder x) m, Read x, Show x) => Text -> Stat -> m ()","name":"processStatement","module":"NITTA.Frontends.Lua","link":"NITTA-Frontends-Lua.html#v:processStatement"},{"display_html":"data FrontendType","name":"FrontendType Lua XMILE","module":"NITTA.Frontends","link":"NITTA-Frontends.html#t:FrontendType"},{"display_html":"data FrontendResult v x = FrontendResult {}","name":"FrontendResult FrontendResult frDataFlow frTrace frPrettyLog","module":"NITTA.Frontends","link":"NITTA-Frontends.html#t:FrontendResult"},{"display_html":"data TraceVar = TraceVar {}","name":"TraceVar TraceVar tvFmt tvVar","module":"NITTA.Frontends","link":"NITTA-Frontends.html#t:TraceVar"},{"display_html":"prettyLog :: (Real t, Show t, PrintfType v, PrintfArg t, ToString a) => [TraceVar] -> [HashMap a t] -> [HashMap String v]","name":"prettyLog","module":"NITTA.Frontends","link":"NITTA-Frontends.html#v:prettyLog"},{"display_html":"getTraceVarFormat :: Maybe Text -> Text","name":"getTraceVarFormat","module":"NITTA.Frontends","link":"NITTA-Frontends.html#v:getTraceVarFormat"},{"display_html":"identifyFrontendType :: FilePath -> Maybe FrontendType -> FrontendType","name":"identifyFrontendType","module":"NITTA.Frontends","link":"NITTA-Frontends.html#v:identifyFrontendType"},{"display_html":"translate :: (IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => FrontendType -> Text -> FrontendResult v x","name":"translate","module":"NITTA.Frontends","link":"NITTA-Frontends.html#v:translate"},{"display_html":"runSchedule :: ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t))","name":"runSchedule","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:runSchedule"},{"display_html":"execSchedule :: ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t)","name":"execSchedule","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:execSchedule"},{"display_html":"execScheduleWithProcess :: pu -> Process t (StepInfo v x t) -> State (Schedule pu v x t) a -> Process t (StepInfo v x t)","name":"execScheduleWithProcess","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:execScheduleWithProcess"},{"display_html":"scheduleStep :: MonadState (Schedule pu v x t) m => Interval t -> StepInfo v x t -> m [ProcessStepID]","name":"scheduleStep","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleStep"},{"display_html":"scheduleEndpoint :: forall {m} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [ProcessStepID] -> m [ProcessStepID]","name":"scheduleEndpoint","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleEndpoint"},{"display_html":"scheduleEndpoint_ :: forall {f} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) f => EndpointSt v (Interval t) -> f [ProcessStepID] -> f ()","name":"scheduleEndpoint_","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleEndpoint_"},{"display_html":"scheduleFunctionBind :: (MonadState (Schedule pu v x t) m, Show a) => a -> m [ProcessStepID]","name":"scheduleFunctionBind","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleFunctionBind"},{"display_html":"scheduleFunctionRevoke :: (MonadState (Schedule pu v x t) m, Show a) => a -> m [ProcessStepID]","name":"scheduleFunctionRevoke","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleFunctionRevoke"},{"display_html":"scheduleFunction :: MonadState (Schedule pu v x t) m => Interval t -> F v x -> m [ProcessStepID]","name":"scheduleFunction","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleFunction"},{"display_html":"scheduleFunctionFinish :: (Ord v, Typeable v, IsString v, ToString v, Suffix v, Hashable v) => [ProcessStepID] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity [ProcessStepID]","name":"scheduleFunctionFinish","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleFunctionFinish"},{"display_html":"scheduleFunctionFinish_ :: (Ord v, Typeable v, IsString v, ToString v, Suffix v, Hashable v) => [ProcessStepID] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity ()","name":"scheduleFunctionFinish_","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleFunctionFinish_"},{"display_html":"scheduleRefactoring :: (MonadState (Schedule pu v x t) m, Typeable ref, Show ref, Eq ref) => Interval t -> ref -> m [ProcessStepID]","name":"scheduleRefactoring","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleRefactoring"},{"display_html":"scheduleInstructionUnsafe :: (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [ProcessStepID]","name":"scheduleInstructionUnsafe","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleInstructionUnsafe"},{"display_html":"scheduleInstructionUnsafe_ :: forall {f} {pu} {v} {x} {t}. (MonadState (Schedule pu v x t) f, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> f ()","name":"scheduleInstructionUnsafe_","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleInstructionUnsafe_"},{"display_html":"scheduleNestedStep :: forall {m} {pu} {v} {x} {t} {tag}. (MonadState (Schedule pu v x t) m, UnitTag tag) => tag -> Step t (StepInfo v x t) -> m ProcessStepID","name":"scheduleNestedStep","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleNestedStep"},{"display_html":"establishVerticalRelations :: forall {m} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [ProcessStepID] -> [ProcessStepID] -> m ()","name":"establishVerticalRelations","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:establishVerticalRelations"},{"display_html":"establishHorizontalRelations :: forall {m} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [ProcessStepID] -> [ProcessStepID] -> m ()","name":"establishHorizontalRelations","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:establishHorizontalRelations"},{"display_html":"getProcessSlice :: State (Schedule pu v x t) (Process t (StepInfo v x t))","name":"getProcessSlice","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:getProcessSlice"},{"display_html":"relatedEndpoints :: Ord a => Process t (StepInfo a x t) -> Set a -> [Step t (StepInfo a x t)]","name":"relatedEndpoints","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:relatedEndpoints"},{"display_html":"castInstruction :: (Typeable a, Typeable pu) => pu -> a -> Maybe (Instruction pu)","name":"castInstruction","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:castInstruction"},{"display_html":"scheduleAllocation :: (MonadState (Schedule pu v x t) m, Typeable a, Show a, Eq a) => a -> m [ProcessStepID]","name":"scheduleAllocation","module":"NITTA.Utils.ProcessDescription","link":"NITTA-Utils-ProcessDescription.html#v:scheduleAllocation"},{"display_html":"doc2text :: Verilog -> Text","name":"doc2text","module":"NITTA.Utils","link":"NITTA-Utils.html#v:doc2text"},{"display_html":"type Verilog = Doc ()","name":"Verilog","module":"NITTA.Utils","link":"NITTA-Utils.html#t:Verilog"},{"display_html":"shiftI :: (Num a, Ord a) => a -> Interval a -> Interval a","name":"shiftI","module":"NITTA.Utils","link":"NITTA-Utils.html#v:shiftI"},{"display_html":"bool2verilog :: Bool -> Text","name":"bool2verilog","module":"NITTA.Utils","link":"NITTA-Utils.html#v:bool2verilog"},{"display_html":"values2dump :: (Foldable t, Show a) => t a -> [Char]","name":"values2dump","module":"NITTA.Utils","link":"NITTA-Utils.html#v:values2dump"},{"display_html":"hdlValDump :: Val p => p -> Text","name":"hdlValDump","module":"NITTA.Utils","link":"NITTA-Utils.html#v:hdlValDump"},{"display_html":"toModuleName :: [Char] -> [Char]","name":"toModuleName","module":"NITTA.Utils","link":"NITTA-Utils.html#v:toModuleName"},{"display_html":"endpointAt :: (Ord a, Show a, ToString v) => a -> Process a (StepInfo v x t) -> Maybe (EndpointRole v)","name":"endpointAt","module":"NITTA.Utils","link":"NITTA-Utils.html#v:endpointAt"},{"display_html":"getEndpoint :: Step t (StepInfo v x t) -> Maybe (EndpointRole v)","name":"getEndpoint","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getEndpoint"},{"display_html":"getInstruction :: Step t (StepInfo v x t) -> Maybe (StepInfo v x t)","name":"getInstruction","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getInstruction"},{"display_html":"getEndpoints :: Ord b => Process b (StepInfo v x t) -> [EndpointRole v]","name":"getEndpoints","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getEndpoints"},{"display_html":"transferred :: ProcessorUnit u a1 x t => u -> Set a1","name":"transferred","module":"NITTA.Utils","link":"NITTA-Utils.html#v:transferred"},{"display_html":"inputsPushedAt :: (Ord a, Ord a, Function f a) => Process a (StepInfo a x t2) -> f -> a","name":"inputsPushedAt","module":"NITTA.Utils","link":"NITTA-Utils.html#v:inputsPushedAt"},{"display_html":"stepsInterval :: Ord a => [Step a i] -> Interval a","name":"stepsInterval","module":"NITTA.Utils","link":"NITTA-Utils.html#v:stepsInterval"},{"display_html":"relatedEndpoints :: Ord a => Process t1 (StepInfo a x t2) -> Set a -> [Step t1 (StepInfo a x t2)]","name":"relatedEndpoints","module":"NITTA.Utils","link":"NITTA-Utils.html#v:relatedEndpoints"},{"display_html":"isIntermediate :: Step t (StepInfo v x t) -> Bool","name":"isIntermediate","module":"NITTA.Utils","link":"NITTA-Utils.html#v:isIntermediate"},{"display_html":"getIntermediate :: Step t (StepInfo v x t) -> Maybe (F v x)","name":"getIntermediate","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getIntermediate"},{"display_html":"getIntermediates :: Ord b => Process b (StepInfo v x t) -> [F v x]","name":"getIntermediates","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getIntermediates"},{"display_html":"isInstruction :: Step t (StepInfo v x t) -> Bool","name":"isInstruction","module":"NITTA.Utils","link":"NITTA-Utils.html#v:isInstruction"},{"display_html":"module NITTA.Utils.Base","name":"","module":"NITTA.Utils","link":""},{"display_html":"getToml :: Text -> Table","name":"getToml","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getToml"},{"display_html":"getFromToml :: (FromJSON a, ToJSON a) => HashMap Text a -> a","name":"getFromToml","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getFromToml"},{"display_html":"getFromTomlSection :: (FromJSON a, ToJSON a) => Text -> HashMap Text a -> a","name":"getFromTomlSection","module":"NITTA.Utils","link":"NITTA-Utils.html#v:getFromTomlSection"},{"display_html":"data Project m v x = Project {}","name":"Project Project pUnit pName pLibPath pTargetProjectPath pAbsTargetProjectPath pInProjectNittaPath pAbsNittaPath pUnitEnv pTestCntx pTemplates","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#t:Project"},{"display_html":"defProjectTemplates :: [FilePath]","name":"defProjectTemplates","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#v:defProjectTemplates"},{"display_html":"class TargetSystemComponent pu where","name":"TargetSystemComponent moduleName software hardware hardwareInstance","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#t:TargetSystemComponent"},{"display_html":"data Implementation","name":"Implementation Empty Immediate FromLibrary Aggregate impFileName impText impPath subComponents","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#t:Implementation"},{"display_html":"data UnitEnv m = UnitEnv {}","name":"UnitEnv UnitEnv sigClk sigRst sigCycleBegin sigInCycle sigCycleEnd ctrlPorts ioPorts valueIn valueOut","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#t:UnitEnv"},{"display_html":"envInputPorts :: IOConnected pu => UnitEnv pu -> Set InputPortTag","name":"envInputPorts","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#v:envInputPorts"},{"display_html":"envOutputPorts :: IOConnected pu => UnitEnv pu -> Set OutputPortTag","name":"envOutputPorts","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#v:envOutputPorts"},{"display_html":"envInOutPorts :: IOConnected pu => UnitEnv pu -> Set InoutPortTag","name":"envInOutPorts","module":"NITTA.Project.Types","link":"NITTA-Project-Types.html#v:envInOutPorts"},{"display_html":"class Testable m v x | m -> v x where","name":"Testable testBenchImplementation","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#t:Testable"},{"display_html":"class IOTestBench pu v x | pu -> v x where","name":"IOTestBench testEnvironmentInitFlag testEnvironment","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#t:IOTestBench"},{"display_html":"data TestEnvironment v x = TestEnvironment {}","name":"TestEnvironment TestEnvironment teCntx teComputationDuration","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#t:TestEnvironment"},{"display_html":"data TestbenchReport v x = TestbenchReport {}","name":"TestbenchReport TestbenchReport tbStatus tbPath tbFiles tbFunctions tbSynthesisSteps tbCompilerDump tbSimulationDump tbFunctionalSimulationLog tbLogicalSimulationLog","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#t:TestbenchReport"},{"display_html":"testBenchTopModuleName :: (TargetSystemComponent m, Testable m v x) => Project m v x -> FilePath","name":"testBenchTopModuleName","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#v:testBenchTopModuleName"},{"display_html":"verilogProjectFiles :: (TargetSystemComponent m, Testable m v x) => Project m v x -> [FilePath]","name":"verilogProjectFiles","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#v:verilogProjectFiles"},{"display_html":"data SnippetTestBenchConf m = SnippetTestBenchConf {}","name":"SnippetTestBenchConf SnippetTestBenchConf tbcSignals tbcPorts tbcMC2verilogLiteral","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#t:SnippetTestBenchConf"},{"display_html":"snippetTestBench :: forall m v x t. (WithFunctions m (F v x), ProcessorUnit m v x t, TargetSystemComponent m, UnambiguouslyDecode m, Typeable m, Show (Instruction m), Default (Microcode m)) => Project m v x -> SnippetTestBenchConf m -> Text","name":"snippetTestBench","module":"NITTA.Project.TestBench","link":"NITTA-Project-TestBench.html#v:snippetTestBench"},{"display_html":"data PU v x t where","name":"PU PU unit diff uEnv","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#t:PU"},{"display_html":"unitType :: PU v x t -> TypeRep","name":"unitType","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#v:unitType"},{"display_html":"type PUClasses pu v x t = (ByTime pu t, Connected pu, IOConnected pu, EndpointProblem pu v t, BreakLoopProblem pu v x, ConstantFoldingProblem pu v x, OptimizeAccumProblem pu v x, ResolveDeadlockProblem pu v x, ProcessorUnit pu v x t, Show (Instruction pu), Typeable pu, UnambiguouslyDecode pu, TargetSystemComponent pu, Controllable pu, IOTestBench pu v x, Locks pu v, Typeable pu)","name":"PUClasses","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#t:PUClasses"},{"display_html":"data IOSynchronization","name":"IOSynchronization Sync ASync OnBoard","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#t:IOSynchronization"},{"display_html":"data PUPrototype tag v x t where","name":"PUPrototype PUPrototype pTag pProto pIOPorts","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#t:PUPrototype"},{"display_html":"puInputPorts :: PU v x t -> Set InputPortTag","name":"puInputPorts","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#v:puInputPorts"},{"display_html":"puOutputPorts :: PU v x t -> Set OutputPortTag","name":"puOutputPorts","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#v:puOutputPorts"},{"display_html":"puInOutPorts :: PU v x t -> Set InoutPortTag","name":"puInOutPorts","module":"NITTA.Model.Networks.Types","link":"NITTA-Model-Networks-Types.html#v:puInOutPorts"},{"display_html":"projectContext :: (TargetSystemComponent m, Testable m v x) => Project m v x -> GingerContext p (Writer Text) Text","name":"projectContext","module":"NITTA.Project.Context","link":"NITTA-Project-Context.html#v:projectContext"},{"display_html":"implementationContext :: (TargetSystemComponent m, Testable m v x, ToGVal (Run p (Writer Text) Text) a) => Project m v x -> a -> GingerContext p (Writer Text) Text","name":"implementationContext","module":"NITTA.Project.Context","link":"NITTA-Project-Context.html#v:implementationContext"},{"display_html":"writeRenderedTemplates :: (TargetSystemComponent m, Testable m v x) => Project m v x -> IO ()","name":"writeRenderedTemplates","module":"NITTA.Project.Template","link":"NITTA-Project-Template.html#v:writeRenderedTemplates"},{"display_html":"collectNittaPath :: [FilePath] -> IO (Either Text FilePath)","name":"collectNittaPath","module":"NITTA.Project.Template","link":"NITTA-Project-Template.html#v:collectNittaPath"},{"display_html":"projectContext :: (TargetSystemComponent m, Testable m v x) => Project m v x -> GingerContext p (Writer Text) Text","name":"projectContext","module":"NITTA.Project.Template","link":"NITTA-Project-Template.html#v:projectContext"},{"display_html":"module NITTA.Project.Template","name":"","module":"NITTA.Project","link":""},{"display_html":"module NITTA.Project.TestBench","name":"","module":"NITTA.Project","link":""},{"display_html":"module NITTA.Project.Types","name":"","module":"NITTA.Project","link":""},{"display_html":"module NITTA.Project.VerilogSnippets","name":"","module":"NITTA.Project","link":""},{"display_html":"writeProject :: (TargetSystemComponent m, Testable m v x) => Project m v x -> IO ()","name":"writeProject","module":"NITTA.Project","link":"NITTA-Project.html#v:writeProject"},{"display_html":"runTestbench :: (WithFunctions u a, ProcessorUnit u v x t, Hashable v, IsString v, DefaultX u p, Val p, Show a, Read x, TargetSystemComponent u, Testable u v x) => Project u v x -> IO (TestbenchReport v x)","name":"runTestbench","module":"NITTA.Project","link":"NITTA-Project.html#v:runTestbench"},{"display_html":"data Shift v x t","name":"Shift","module":"NITTA.Model.ProcessorUnits.Shift","link":"NITTA-Model-ProcessorUnits-Shift.html#t:Shift"},{"display_html":"data family Ports pu :: Type","name":"Ports ShiftPorts init step mode oe work direction","module":"NITTA.Model.ProcessorUnits.Shift","link":"NITTA-Model-ProcessorUnits-Shift.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts ShiftIO","module":"NITTA.Model.ProcessorUnits.Shift","link":"NITTA-Model-ProcessorUnits-Shift.html#t:IOPorts"},{"display_html":"shift :: Default t => Bool -> Shift v x t","name":"shift","module":"NITTA.Model.ProcessorUnits.Shift","link":"NITTA-Model-ProcessorUnits-Shift.html#v:shift"},{"display_html":"multiplier :: Default t => Bool -> Multiplier v x t","name":"multiplier","module":"NITTA.Model.ProcessorUnits.Multiplier","link":"NITTA-Model-ProcessorUnits-Multiplier.html#v:multiplier"},{"display_html":"data Multiplier v x t","name":"Multiplier","module":"NITTA.Model.ProcessorUnits.Multiplier","link":"NITTA-Model-ProcessorUnits-Multiplier.html#t:Multiplier"},{"display_html":"data family Ports pu :: Type","name":"Ports MultiplierPorts $sel:wr:MultiplierPorts $sel:oe:MultiplierPorts","module":"NITTA.Model.ProcessorUnits.Multiplier","link":"NITTA-Model-ProcessorUnits-Multiplier.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts MultiplierIO","module":"NITTA.Model.ProcessorUnits.Multiplier","link":"NITTA-Model-ProcessorUnits-Multiplier.html#t:IOPorts"},{"display_html":"class Typeable i => SimpleIOInterface i","name":"SimpleIOInterface","module":"NITTA.Model.ProcessorUnits.IO.SimpleIO","link":"NITTA-Model-ProcessorUnits-IO-SimpleIO.html#t:SimpleIOInterface"},{"display_html":"data SimpleIO i v x t = SimpleIO {}","name":"SimpleIO SimpleIO $sel:bufferSize:SimpleIO $sel:receiveN:SimpleIO $sel:process_:SimpleIO $sel:bounceFilter:SimpleIO $sel:receiveQueue:SimpleIO $sel:isReceiveOver:SimpleIO $sel:sendQueue:SimpleIO $sel:sendN:SimpleIO","module":"NITTA.Model.ProcessorUnits.IO.SimpleIO","link":"NITTA-Model-ProcessorUnits-IO-SimpleIO.html#t:SimpleIO"},{"display_html":"data family Ports pu :: Type","name":"Ports SimpleIOPorts $sel:stop:SimpleIOPorts $sel:wr:SimpleIOPorts $sel:oe:SimpleIOPorts","module":"NITTA.Model.ProcessorUnits.IO.SimpleIO","link":"NITTA-Model-ProcessorUnits-IO-SimpleIO.html#t:Ports"},{"display_html":"protocolDescription :: forall i v x t. (VarValTime v x t, SimpleIOInterface i, ToJSON v) => Text -> SimpleIO i v x t -> Text -> Implementation","name":"protocolDescription","module":"NITTA.Model.ProcessorUnits.IO.SimpleIO","link":"NITTA-Model-ProcessorUnits-IO-SimpleIO.html#v:protocolDescription"},{"display_html":"type SPI v x t = SimpleIO SPIinterface v x t","name":"SPI","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#t:SPI"},{"display_html":"anySPI :: Time t => Int -> Maybe Int -> SPI v x t","name":"anySPI","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#v:anySPI"},{"display_html":"data family Ports pu :: Type","name":"Ports SimpleIOPorts $sel:stop:SimpleIOPorts $sel:wr:SimpleIOPorts $sel:oe:SimpleIOPorts","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts SPIMaster SPISlave $sel:master_mosi:SPIMaster $sel:master_miso:SPIMaster $sel:master_sclk:SPIMaster $sel:master_cs:SPIMaster $sel:slave_mosi:SPIMaster $sel:slave_miso:SPIMaster $sel:slave_sclk:SPIMaster $sel:slave_cs:SPIMaster","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#t:IOPorts"},{"display_html":"spiMasterPorts :: Text -> IOPorts (SPI v x t)","name":"spiMasterPorts","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#v:spiMasterPorts"},{"display_html":"spiSlavePorts :: Text -> IOPorts (SPI v x t)","name":"spiSlavePorts","module":"NITTA.Model.ProcessorUnits.IO.SPI","link":"NITTA-Model-ProcessorUnits-IO-SPI.html#v:spiSlavePorts"},{"display_html":"type I2C v x t = SimpleIO I2Cinterface v x t","name":"I2C","module":"NITTA.Model.ProcessorUnits.IO.I2C","link":"NITTA-Model-ProcessorUnits-IO-I2C.html#t:I2C"},{"display_html":"i2cUnit :: Time t => Int -> I2C v x t","name":"i2cUnit","module":"NITTA.Model.ProcessorUnits.IO.I2C","link":"NITTA-Model-ProcessorUnits-IO-I2C.html#v:i2cUnit"},{"display_html":"data family Ports pu :: Type","name":"Ports SimpleIOPorts $sel:stop:SimpleIOPorts $sel:wr:SimpleIOPorts $sel:oe:SimpleIOPorts","module":"NITTA.Model.ProcessorUnits.IO.I2C","link":"NITTA-Model-ProcessorUnits-IO-I2C.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts I2CMaster I2CSlave $sel:masterSDA:I2CMaster $sel:masterSCL:I2CMaster $sel:slaveSDA:I2CMaster $sel:slaveSCL:I2CMaster","module":"NITTA.Model.ProcessorUnits.IO.I2C","link":"NITTA-Model-ProcessorUnits-IO-I2C.html#t:IOPorts"},{"display_html":"data Fram v x t = Fram {}","name":"Fram Fram $sel:memory:Fram $sel:process_:Fram $sel:remainBuffers:Fram","module":"NITTA.Model.ProcessorUnits.Fram","link":"NITTA-Model-ProcessorUnits-Fram.html#t:Fram"},{"display_html":"data family Ports pu :: Type","name":"Ports FramPorts $sel:addr:FramPorts $sel:wr:FramPorts $sel:oe:FramPorts","module":"NITTA.Model.ProcessorUnits.Fram","link":"NITTA-Model-ProcessorUnits-Fram.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts FramIO","module":"NITTA.Model.ProcessorUnits.Fram","link":"NITTA-Model-ProcessorUnits-Fram.html#t:IOPorts"},{"display_html":"framWithSize :: (Default x, Default t) => Int -> Fram v x t","name":"framWithSize","module":"NITTA.Model.ProcessorUnits.Fram","link":"NITTA-Model-ProcessorUnits-Fram.html#v:framWithSize"},{"display_html":"data Divider v x t = Divider {}","name":"Divider Divider $sel:process_:Divider $sel:mock:Divider $sel:jobs:Divider $sel:remains:Divider $sel:pipeline:Divider","module":"NITTA.Model.ProcessorUnits.Divider","link":"NITTA-Model-ProcessorUnits-Divider.html#t:Divider"},{"display_html":"divider :: Default t => t -> Bool -> Divider v x t","name":"divider","module":"NITTA.Model.ProcessorUnits.Divider","link":"NITTA-Model-ProcessorUnits-Divider.html#v:divider"},{"display_html":"data family Ports pu :: Type","name":"Ports DividerPorts $sel:wr:DividerPorts $sel:oe:DividerPorts $sel:sel:DividerPorts","module":"NITTA.Model.ProcessorUnits.Divider","link":"NITTA-Model-ProcessorUnits-Divider.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts DividerIO","module":"NITTA.Model.ProcessorUnits.Divider","link":"NITTA-Model-ProcessorUnits-Divider.html#t:IOPorts"},{"display_html":"data Broken v x t = Broken {}","name":"Broken Broken $sel:remain:Broken $sel:process_:Broken $sel:sources:Broken $sel:currentWork:Broken $sel:targets:Broken $sel:doneAt:Broken $sel:currentWorkEndpoints:Broken $sel:brokeVerilog:Broken $sel:wrongVerilogSimulationValue:Broken $sel:wrongControlOnPush:Broken $sel:wrongControlOnPull:Broken $sel:lostEndpointTarget:Broken $sel:lostEndpointSource:Broken $sel:wrongAttr:Broken $sel:lostFunctionInVerticalRelation:Broken $sel:lostEndpointInVerticalRelation:Broken $sel:lostInstructionInVerticalRelation:Broken $sel:unknownDataOut:Broken","module":"NITTA.Model.ProcessorUnits.Broken","link":"NITTA-Model-ProcessorUnits-Broken.html#t:Broken"},{"display_html":"data family Ports pu :: Type","name":"Ports BrokenPorts $sel:wr:BrokenPorts $sel:oe:BrokenPorts","module":"NITTA.Model.ProcessorUnits.Broken","link":"NITTA-Model-ProcessorUnits-Broken.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts BrokenIO","module":"NITTA.Model.ProcessorUnits.Broken","link":"NITTA-Model-ProcessorUnits-Broken.html#t:IOPorts"},{"display_html":"data Accum v x t","name":"Accum","module":"NITTA.Model.ProcessorUnits.Accum","link":"NITTA-Model-ProcessorUnits-Accum.html#t:Accum"},{"display_html":"data family Ports pu :: Type","name":"Ports AccumPorts $sel:neg:AccumPorts $sel:oe:AccumPorts $sel:resetAcc:AccumPorts $sel:load:AccumPorts","module":"NITTA.Model.ProcessorUnits.Accum","link":"NITTA-Model-ProcessorUnits-Accum.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts AccumIO","module":"NITTA.Model.ProcessorUnits.Accum","link":"NITTA-Model-ProcessorUnits-Accum.html#t:IOPorts"},{"display_html":"module NITTA.Model.ProcessorUnits.Types","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.Time","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Accum","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Broken","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Divider","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Fram","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.IO.SPI","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Multiplier","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"module NITTA.Model.ProcessorUnits.Shift","name":"","module":"NITTA.Model.ProcessorUnits","link":""},{"display_html":"data ViewPointID","name":"ViewPointID","module":"NITTA.UIBackend.Timeline","link":"NITTA-UIBackend-Timeline.html#t:ViewPointID"},{"display_html":"data TimelinePoint t","name":"TimelinePoint","module":"NITTA.UIBackend.Timeline","link":"NITTA-UIBackend-Timeline.html#t:TimelinePoint"},{"display_html":"processTimelines :: (Num t, Typeable v, IsString v, ToString v, Suffix v, Hashable v, Show t, Ord t, Ord v, Enum t) => Process t (StepInfo v x t) -> ProcessTimelines t","name":"processTimelines","module":"NITTA.UIBackend.Timeline","link":"NITTA-UIBackend-Timeline.html#v:processTimelines"},{"display_html":"data ProcessTimelines t = ProcessTimelines {}","name":"ProcessTimelines ProcessTimelines $sel:timelines:ProcessTimelines $sel:verticalRelations:ProcessTimelines","module":"NITTA.UIBackend.Timeline","link":"NITTA-UIBackend-Timeline.html#t:ProcessTimelines"},{"display_html":"data TimelineWithViewPoint t = TimelineWithViewPoint {}","name":"TimelineWithViewPoint TimelineWithViewPoint $sel:timelineViewpoint:TimelineWithViewPoint $sel:timelinePoints:TimelineWithViewPoint","module":"NITTA.UIBackend.Timeline","link":"NITTA-UIBackend-Timeline.html#t:TimelineWithViewPoint"},{"display_html":"data TargetSystem u tag v x t = TargetSystem {}","name":"TargetSystem TargetSystem mUnit mDataFlowGraph","module":"NITTA.Model.TargetSystem","link":"NITTA-Model-TargetSystem.html#t:TargetSystem"},{"display_html":"processDuration :: (Num a, NextTick u a) => TargetSystem u tag v x t -> a","name":"processDuration","module":"NITTA.Model.TargetSystem","link":"NITTA-Model-TargetSystem.html#v:processDuration"},{"display_html":"isSynthesisComplete :: ProcessorUnit u v x t => TargetSystem u tag v x t -> Bool","name":"isSynthesisComplete","module":"NITTA.Model.TargetSystem","link":"NITTA-Model-TargetSystem.html#v:isSynthesisComplete"},{"display_html":"class ProcessIntegrity u where","name":"ProcessIntegrity checkProcessIntegrity","module":"NITTA.Model.ProcessIntegrity","link":"NITTA-Model-ProcessIntegrity.html#t:ProcessIntegrity"},{"display_html":"data DecisionView","name":"DecisionView RootView SingleBindView GroupBindView AllocationView DataflowDecisionView BreakLoopView ConstantFoldingView OptimizeAccumView ResolveDeadlockView $sel:function:RootView $sel:new:RootView $sel:newBuffer:RootView $sel:value:RootView $sel:input:RootView $sel:source:RootView $sel:processUnitTag:RootView $sel:networkTag:RootView $sel:old:RootView $sel:outputs:RootView $sel:pu:RootView $sel:changeset:RootView $sel:cRefOld:RootView $sel:cRefNew:RootView $sel:bindGroup:RootView $sel:targets:RootView","module":"NITTA.Model.Problems.ViewHelper","link":"NITTA-Model-Problems-ViewHelper.html#t:DecisionView"},{"display_html":"newtype IntervalView = IntervalView Text","name":"IntervalView IntervalView","module":"NITTA.Model.Problems.ViewHelper","link":"NITTA-Model-Problems-ViewHelper.html#t:IntervalView"},{"display_html":"data BusNetwork tag v x t = BusNetwork {}","name":"BusNetwork BusNetwork bnPUPrototypes bnPus bnRemains bnName bnBound bnProcess bnSignalBusWidth ioSync bnEnv","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#t:BusNetwork"},{"display_html":"data family Instruction pu :: Type","name":"Instruction Transport","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#t:Instruction"},{"display_html":"data family Ports pu :: Type","name":"Ports BusNetworkPorts","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#t:Ports"},{"display_html":"data family IOPorts pu :: Type","name":"IOPorts BusNetworkIO extInputs extOutputs extInOuts","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#t:IOPorts"},{"display_html":"boundFunctions :: Ord k => k -> BusNetwork k v x t -> [F v x]","name":"boundFunctions","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:boundFunctions"},{"display_html":"controlSignalLiteral :: (Builder (IsCustomSink dst) dst ~ Builder (IsCustomSink dst) dst, Interpolatable (IsCustomSink dst) src dst) => src -> dst","name":"controlSignalLiteral","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:controlSignalLiteral"},{"display_html":"busNetwork :: Default t => tag -> IOSynchronization -> BusNetwork tag v x t","name":"busNetwork","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:busNetwork"},{"display_html":"modifyNetwork :: BusNetwork k v x t -> State (BuilderSt k v x t) a -> BusNetwork k v x t","name":"modifyNetwork","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:modifyNetwork"},{"display_html":"defineNetwork :: Default t => k -> IOSynchronization -> State (BuilderSt k v x t) a -> BusNetwork k v x t","name":"defineNetwork","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:defineNetwork"},{"display_html":"addCustom :: forall tag v x t m pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => tag -> pu -> IOPorts pu -> m ()","name":"addCustom","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:addCustom"},{"display_html":"add :: (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, Default pu, UnitTag tag) => tag -> IOPorts pu -> m ()","name":"add","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:add"},{"display_html":"addPrototype :: (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, Default pu, UnitTag tag) => tag -> IOPorts pu -> m ()","name":"addPrototype","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:addPrototype"},{"display_html":"addCustomPrototype :: forall tag v x t m pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => tag -> pu -> IOPorts pu -> m ()","name":"addCustomPrototype","module":"NITTA.Model.Networks.Bus","link":"NITTA-Model-Networks-Bus.html#v:addCustomPrototype"},{"display_html":"class SynthesisDecisionCls ctx m o d p | ctx o -> m d p where","name":"SynthesisDecisionCls parameters decisions estimate","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:SynthesisDecisionCls"},{"display_html":"data Tree m tag v x t = Tree {}","name":"Tree Tree isLeaf sID sState sDecision sSubForestVar isComplete","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:Tree"},{"display_html":"data SynthesisDecision ctx m where","name":"SynthesisDecision SynthesisDecision Root option scores metrics decision","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:SynthesisDecision"},{"display_html":"data SynthesisState m tag v x t = SynthesisState {}","name":"SynthesisState SynthesisState numberOfProcessWaves processWaves sTarget numberOfDataflowOptions transferableVars sParent sAllocationOptions sBindOptions sResolveDeadlockOptions sOptimizeAccumOptions sConstantFoldingOptions sBreakLoopOptions sDataflowOptions bindingAlternative possibleDeadlockBinds bindWaves unitWorkloadInFunction","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:SynthesisState"},{"display_html":"type SynthesisMethodConstraints tag v x t = (VarValTimeJSON v x t, ToJSON tag, UnitTag tag)","name":"SynthesisMethodConstraints","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:SynthesisMethodConstraints"},{"display_html":"newtype Sid = Sid [Int]","name":"Sid Sid","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:Sid"},{"display_html":"type DefTree tag v x t = Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t","name":"DefTree","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:DefTree"},{"display_html":"type SynthesisMethod tag v x t = DefTree tag v x t -> IO (DefTree tag v x t)","name":"SynthesisMethod","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#t:SynthesisMethod"},{"display_html":"(<?>) :: Num p => Bool -> p -> p","name":"","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#v:-60--63--62-"},{"display_html":"targetUnit :: Tree (TargetSystem c tag v x t) tag v x t -> c","name":"targetUnit","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#v:targetUnit"},{"display_html":"targetDFG :: Tree (TargetSystem u tag v x t) tag v x t -> DataFlowGraph v x","name":"targetDFG","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#v:targetDFG"},{"display_html":"defScore :: SynthesisDecision ctx m -> Float","name":"defScore","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#v:defScore"},{"display_html":"mlScoreKeyPrefix :: IsString a => a","name":"mlScoreKeyPrefix","module":"NITTA.Synthesis.Types","link":"NITTA-Synthesis-Types.html#v:mlScoreKeyPrefix"},{"display_html":"data BackendCtx tag v x t = BackendCtx {}","name":"BackendCtx BackendCtx root receivedValues outputPath mlBackendGetter nodeScores","module":"NITTA.UIBackend.Types","link":"NITTA-UIBackend-Types.html#t:BackendCtx"},{"display_html":"getTreeInfo :: (VarValTime v x t, NextTick u t) => Tree (TargetSystem u tag v x t) tag v x t -> IO TreeInfo","name":"getTreeInfo","module":"NITTA.Synthesis.Analysis","link":"NITTA-Synthesis-Analysis.html#v:getTreeInfo"},{"display_html":"data TreeInfo = TreeInfo {}","name":"TreeInfo TreeInfo nodesVisited nodesSuccess nodesFailed nodesNotProcessed targetProcessDuration synthesisStepsForSuccess","module":"NITTA.Synthesis.Analysis","link":"NITTA-Synthesis-Analysis.html#t:TreeInfo"},{"display_html":"data ResolveDeadlockMetrics = ResolveDeadlockMetrics {}","name":"ResolveDeadlockMetrics ResolveDeadlockMetrics pNumberOfLockedVariables pBufferCount pNumberOfTransferableVariables","module":"NITTA.Synthesis.Steps.ResolveDeadlock","link":"NITTA-Synthesis-Steps-ResolveDeadlock.html#t:ResolveDeadlockMetrics"},{"display_html":"data OptimizeAccumMetrics = OptimizeAccumMetrics","name":"OptimizeAccumMetrics OptimizeAccumMetrics","module":"NITTA.Synthesis.Steps.OptimizeAccum","link":"NITTA-Synthesis-Steps-OptimizeAccum.html#t:OptimizeAccumMetrics"},{"display_html":"data DataflowMetrics = DataflowMetrics {}","name":"DataflowMetrics DataflowMetrics pWaitTime pRestrictedTime pNotTransferableInputs pFirstWaveOfTargetUse","module":"NITTA.Synthesis.Steps.Dataflow","link":"NITTA-Synthesis-Steps-Dataflow.html#t:DataflowMetrics"},{"display_html":"data ConstantFoldingMetrics = ConstantFoldingMetrics","name":"ConstantFoldingMetrics ConstantFoldingMetrics","module":"NITTA.Synthesis.Steps.ConstantFolding","link":"NITTA-Synthesis-Steps-ConstantFolding.html#t:ConstantFoldingMetrics"},{"display_html":"data BreakLoopMetrics = BreakLoopMetrics","name":"BreakLoopMetrics BreakLoopMetrics","module":"NITTA.Synthesis.Steps.BreakLoop","link":"NITTA-Synthesis-Steps-BreakLoop.html#t:BreakLoopMetrics"},{"display_html":"data BindMetrics","name":"BindMetrics SingleBindMetrics GroupBindMetrics pCritical pAlternative pRestless pOutputNumber pAllowDataFlow pPossibleDeadlock pNumberOfBoundFunctions pPercentOfBoundInputs pWave pOnlyObviousBinds pFunctionPercentInBinds pAvgBinds pVarianceBinds pAvgUnitWorkload pVarianceUnitWorkload","module":"NITTA.Synthesis.Steps.Bind","link":"NITTA-Synthesis-Steps-Bind.html#t:BindMetrics"},{"display_html":"isSingleBind :: SynthesisDecision ctx m -> Bool","name":"isSingleBind","module":"NITTA.Synthesis.Steps.Bind","link":"NITTA-Synthesis-Steps-Bind.html#v:isSingleBind"},{"display_html":"isMultiBind :: SynthesisDecision ctx m -> Bool","name":"isMultiBind","module":"NITTA.Synthesis.Steps.Bind","link":"NITTA-Synthesis-Steps-Bind.html#v:isMultiBind"},{"display_html":"isObviousMultiBind :: SynthesisDecision ctx m -> Bool","name":"isObviousMultiBind","module":"NITTA.Synthesis.Steps.Bind","link":"NITTA-Synthesis-Steps-Bind.html#v:isObviousMultiBind"},{"display_html":"data AllocationMetrics = AllocationMetrics {}","name":"AllocationMetrics AllocationMetrics mParallelism mRelatedRemains mMinPusForRemains mMaxParallels mAvgParallels","module":"NITTA.Synthesis.Steps.Allocation","link":"NITTA-Synthesis-Steps-Allocation.html#t:AllocationMetrics"},{"display_html":"module NITTA.Synthesis.Steps.Allocation","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.Bind","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.Dataflow","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.BreakLoop","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.OptimizeAccum","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.ResolveDeadlock","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"module NITTA.Synthesis.Steps.ConstantFolding","name":"","module":"NITTA.Synthesis.Steps","link":""},{"display_html":"isRefactor :: SynthesisDecision ctx m -> Bool","name":"isRefactor","module":"NITTA.Synthesis.Steps","link":"NITTA-Synthesis-Steps.html#v:isRefactor"},{"display_html":"module NITTA.UIBackend.ViewHelperCls","name":"","module":"NITTA.UIBackend.ViewHelper","link":""},{"display_html":"module NITTA.Model.Problems.ViewHelper","name":"","module":"NITTA.UIBackend.ViewHelper","link":""},{"display_html":"data FView = FView {}","name":"FView FView fvFun fvHistory","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:FView"},{"display_html":"class Viewable t v | t -> v where","name":"Viewable view","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:Viewable"},{"display_html":"viewNodeTree :: (Enum b, Num b, NextTick u b) => Tree (TargetSystem u tag v x t) tag v x t -> IO (TreeView ShortNodeView)","name":"viewNodeTree","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#v:viewNodeTree"},{"display_html":"data TreeView a","name":"TreeView","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:TreeView"},{"display_html":"data ShortNodeView","name":"ShortNodeView","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:ShortNodeView"},{"display_html":"data NodeView tag v x t","name":"NodeView","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:NodeView"},{"display_html":"newtype StepInfoView = StepInfoView Text","name":"StepInfoView StepInfoView","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:StepInfoView"},{"display_html":"type VarValTimeJSON v x t = (VarValTime v x t, ToJSONKey v, ToJSON v, ToJSON x, ToJSON t)","name":"VarValTimeJSON","module":"NITTA.UIBackend.ViewHelper","link":"NITTA-UIBackend-ViewHelper.html#t:VarValTimeJSON"},{"display_html":"data ScoringInput tag v x t = ScoringInput {}","name":"ScoringInput ScoringInput nodes scoringTarget","module":"NITTA.Synthesis.MlBackend.Client","link":"NITTA-Synthesis-MlBackend-Client.html#t:ScoringInput"},{"display_html":"data ScoringTarget","name":"ScoringTarget ScoringTargetSid ScoringTargetAll","module":"NITTA.Synthesis.MlBackend.Client","link":"NITTA-Synthesis-MlBackend-Client.html#t:ScoringTarget"},{"display_html":"predictScoresIO :: forall {m} {v} {x} {t} {a} {tag}. (IsString v, Suffix v, Hashable v, Val x, Bounded t, ToJSONKey v, MonadThrow m, ToString v, ToString a, MonadIO m, Typeable v, Typeable t, Show t, Default t, Integral t, Ord v, ToJSON v, ToJSON t, ToJSON tag) => Text -> a -> [ScoringInput tag v x t] -> m [[Float]]","name":"predictScoresIO","module":"NITTA.Synthesis.MlBackend.Client","link":"NITTA-Synthesis-MlBackend-Client.html#v:predictScoresIO"},{"display_html":"synthesisTreeRootIO :: (UnitTag tag, Val x, Bounded t, Hashable v, Suffix v, Show t, Default t, Integral t, Typeable t, Typeable v, Ord v, ToString v, IsString v) => TargetSystem (BusNetwork tag v x t) tag v x t -> IO (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)","name":"synthesisTreeRootIO","module":"NITTA.Synthesis.Explore","link":"NITTA-Synthesis-Explore.html#v:synthesisTreeRootIO"},{"display_html":"getTreeIO :: (UnitTag tag, Hashable v, Suffix v, Val x, Bounded t, ToJSONKey v, Show t, Default t, Integral t, ToJSON v, ToJSON t, ToJSON tag, Typeable v, Typeable t, Ord v, ToString v, IsString v) => BackendCtx tag v x t -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Sid -> IO (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)","name":"getTreeIO","module":"NITTA.Synthesis.Explore","link":"NITTA-Synthesis-Explore.html#v:getTreeIO"},{"display_html":"getTreePathIO :: (UnitTag tag, Hashable v, Suffix v, Val x, Bounded t, ToJSONKey v, Show t, Default t, Integral t, ToJSON v, ToJSON t, ToJSON tag, Typeable v, Typeable t, Ord v, ToString v, IsString v) => BackendCtx tag v x t -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Sid -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t]","name":"getTreePathIO","module":"NITTA.Synthesis.Explore","link":"NITTA-Synthesis-Explore.html#v:getTreePathIO"},{"display_html":"subForestIO :: (UnitTag tag, Hashable v, Suffix v, Val x, Bounded t, ToJSONKey v, ToJSON v, ToJSON t, ToJSON tag, Show t, Default t, Integral t, Typeable v, Typeable t, Ord v, ToString v, IsString v) => BackendCtx tag v x t -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t]","name":"subForestIO","module":"NITTA.Synthesis.Explore","link":"NITTA-Synthesis-Explore.html#v:subForestIO"},{"display_html":"positiveSubForestIO :: (UnitTag tag, Hashable v, Suffix v, Val x, Bounded t, ToJSONKey v, Show t, Default t, Integral t, ToJSON v, ToJSON t, ToJSON tag, Typeable v, Typeable t, Ord v, ToString v, IsString v) => BackendCtx tag v x t -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t]","name":"positiveSubForestIO","module":"NITTA.Synthesis.Explore","link":"NITTA-Synthesis-Explore.html#v:positiveSubForestIO"},{"display_html":"type DefTree tag v x t = Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t","name":"DefTree","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#t:DefTree"},{"display_html":"type SynthesisMethod tag v x t = DefTree tag v x t -> IO (DefTree tag v x t)","name":"SynthesisMethod","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#t:SynthesisMethod"},{"display_html":"noSynthesis :: BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"noSynthesis","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:noSynthesis"},{"display_html":"simpleSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"simpleSynthesisIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:simpleSynthesisIO"},{"display_html":"smartBindSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"smartBindSynthesisIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:smartBindSynthesisIO"},{"display_html":"obviousBindThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"obviousBindThreadIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:obviousBindThreadIO"},{"display_html":"topDownByScoreSynthesisIO :: SynthesisMethodConstraints tag v x t => Float -> Int -> Maybe Text -> BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"topDownByScoreSynthesisIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:topDownByScoreSynthesisIO"},{"display_html":"allBestThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t","name":"allBestThreadIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:allBestThreadIO"},{"display_html":"stateOfTheArtSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"stateOfTheArtSynthesisIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:stateOfTheArtSynthesisIO"},{"display_html":"allBindsAndRefsIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"allBindsAndRefsIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:allBindsAndRefsIO"},{"display_html":"bestStepIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t","name":"bestStepIO","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#v:bestStepIO"},{"display_html":"type SynthesisMethodConstraints tag v x t = (VarValTimeJSON v x t, ToJSON tag, UnitTag tag)","name":"SynthesisMethodConstraints","module":"NITTA.Synthesis.Method","link":"NITTA-Synthesis-Method.html#t:SynthesisMethodConstraints"},{"display_html":"module NITTA.Synthesis.Explore","name":"","module":"NITTA.Synthesis","link":""},{"display_html":"module NITTA.Synthesis.Method","name":"","module":"NITTA.Synthesis","link":""},{"display_html":"module NITTA.Synthesis.Steps","name":"","module":"NITTA.Synthesis","link":""},{"display_html":"module NITTA.Synthesis.Types","name":"","module":"NITTA.Synthesis","link":""},{"display_html":"mkModelWithOneNetwork :: ProcessorUnit u v x t => u -> DataFlowGraph v x -> TargetSystem u tag v x t","name":"mkModelWithOneNetwork","module":"NITTA.Synthesis","link":"NITTA-Synthesis.html#v:mkModelWithOneNetwork"},{"display_html":"data TargetSynthesis tag v x t = TargetSynthesis {}","name":"TargetSynthesis TargetSynthesis tPath tName tMicroArch tSourceCode tDFG tReceivedValues tSynthesisMethod tLibPath tTemplates tSimulationCycleN tSourceCodeType","module":"NITTA.Synthesis","link":"NITTA-Synthesis.html#t:TargetSynthesis"},{"display_html":"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))","name":"runTargetSynthesis","module":"NITTA.Synthesis","link":"NITTA-Synthesis.html#v:runTargetSynthesis"},{"display_html":"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))","name":"synthesizeTargetSystem","module":"NITTA.Synthesis","link":"NITTA-Synthesis.html#v:synthesizeTargetSystem"},{"display_html":"data MicroarchitectureDesc tag = MicroarchitectureDesc {}","name":"MicroarchitectureDesc MicroarchitectureDesc $sel:networks:MicroarchitectureDesc $sel:ioSyncMode:MicroarchitectureDesc","module":"NITTA.Model.Microarchitecture.Types","link":"NITTA-Model-Microarchitecture-Types.html#t:MicroarchitectureDesc"},{"display_html":"data NetworkDesc tag = NetworkDesc {}","name":"NetworkDesc NetworkDesc $sel:networkTag:NetworkDesc $sel:valueType:NetworkDesc $sel:units:NetworkDesc","module":"NITTA.Model.Microarchitecture.Types","link":"NITTA-Model-Microarchitecture-Types.html#t:NetworkDesc"},{"display_html":"data UnitDesc tag = UnitDesc {}","name":"UnitDesc UnitDesc $sel:unitType:UnitDesc $sel:unitTag:UnitDesc","module":"NITTA.Model.Microarchitecture.Types","link":"NITTA-Model-Microarchitecture-Types.html#t:UnitDesc"},{"display_html":"microarchitectureDesc :: forall tag v x t. Typeable x => BusNetwork tag v x t -> MicroarchitectureDesc tag","name":"microarchitectureDesc","module":"NITTA.Model.Microarchitecture.Types","link":"NITTA-Model-Microarchitecture-Types.html#v:microarchitectureDesc"},{"display_html":"type SynthesisAPI tag v x t = (Description "Get whole synthesis tree" :> ("synthesisTree" :> Get '[JSON] (TreeView ShortNodeView))) :<|> ((Description "Get synthesis tree info" :> ("treeInfo" :> Get '[JSON] TreeInfo)) :<|> ("node" :> (Capture "sid" Sid :> (SynthesisTreeNavigationAPI tag v x t :<|> (NodeInspectionAPI tag v x t :<|> (TestBenchAPI v x :<|> (SynthesisMethodsAPI tag v x t :<|> SynthesisPracticesAPI tag v x t)))))))","name":"SynthesisAPI","module":"NITTA.UIBackend.REST","link":"NITTA-UIBackend-REST.html#t:SynthesisAPI"},{"display_html":"synthesisServer :: (UnitTag tag2, Bounded b, Hashable v, Suffix v, Val x, ToJSONKey v, Label v, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, MonadIO m, Show b, Default b, Integral b, ToJSON v, ToJSON b, ToJSON tag2, Typeable b, Typeable v, Ord v, ToString v, IsString v) => BackendCtx tag2 v x b -> m (TreeView ShortNodeView) :<|> (m TreeInfo :<|> (Sid -> (m [NodeView tag2 v x b] :<|> (m (Maybe (NodeView tag2 v x b)) :<|> m [NodeView tag2 v x b])) :<|> ((m (NodeView tag2 v x b) :<|> (m (GraphStructure GraphEdge) :<|> (m (ProcessTimelines b) :<|> (m (Process b StepInfoView) :<|> ((tag2 -> m (Process b StepInfoView)) :<|> (m [UnitEndpoints tag2 v b] :<|> (m (MicroarchitectureDesc tag2) :<|> m (Debug tag2 v b)))))))) :<|> ((String -> Int -> m (TestbenchReport v x)) :<|> ((m Sid :<|> (m Sid :<|> m Sid)) :<|> (m Sid :<|> (m Sid :<|> (m Sid :<|> (Int -> m Sid)))))))))","name":"synthesisServer","module":"NITTA.UIBackend.REST","link":"NITTA-UIBackend-REST.html#v:synthesisServer"},{"display_html":"data BackendCtx tag v x t = BackendCtx {}","name":"BackendCtx BackendCtx root receivedValues outputPath mlBackendGetter nodeScores","module":"NITTA.UIBackend.REST","link":"NITTA-UIBackend-REST.html#t:BackendCtx"},{"display_html":"data UnitEndpoints tag v t = UnitEndpoints {}","name":"UnitEndpoints UnitEndpoints $sel:unitTag:UnitEndpoints $sel:unitEndpoints:UnitEndpoints","module":"NITTA.UIBackend.REST","link":"NITTA-UIBackend-REST.html#t:UnitEndpoints"},{"display_html":"backendServer :: (Suffix w, Hashable w, Val w, Bounded w, ToJSONKey w, FromHttpApiData w, UnitTag w, Label w, ToString w, IsString w, Typeable w, Typeable w, Show w, Default w, Integral w, Ord w, ToJSON w, ToJSON w, ToJSON w) => Int -> BackendCtx w w w w -> IO ()","name":"backendServer","module":"NITTA.UIBackend","link":"NITTA-UIBackend.html#v:backendServer"},{"display_html":"prepareJSAPI :: Interpolatable 'True p Text => p -> FilePath -> IO ()","name":"prepareJSAPI","module":"NITTA.UIBackend","link":"NITTA-UIBackend.html#v:prepareJSAPI"},{"display_html":"restDocs :: Show a => a -> String","name":"restDocs","module":"NITTA.UIBackend","link":"NITTA-UIBackend.html#v:restDocs"},{"display_html":"apiPath :: FilePath","name":"apiPath","module":"NITTA.UIBackend","link":"NITTA-UIBackend.html#v:apiPath"},{"display_html":"mkMicroarchitecture :: (Val v, Var x, ToJSON a, ToJSON x) => IOSynchronization -> HashMap Text a -> BusNetwork Text x v Int","name":"mkMicroarchitecture","module":"NITTA.Model.Microarchitecture.Config","link":"NITTA-Model-Microarchitecture-Config.html#v:mkMicroarchitecture"}] \ No newline at end of file diff --git a/haddock/nitta/nitta.haddock b/haddock/nitta/nitta.haddock index 01594413d..4364d143d 100644 Binary files a/haddock/nitta/nitta.haddock and b/haddock/nitta/nitta.haddock differ diff --git a/haddock/nitta/src/NITTA.Frontends.Common.html b/haddock/nitta/src/NITTA.Frontends.Common.html index ad77aa08f..8aa3cabed 100644 --- a/haddock/nitta/src/NITTA.Frontends.Common.html +++ b/haddock/nitta/src/NITTA.Frontends.Common.html @@ -21,20 +21,20 @@ import NITTA.Intermediate.DataFlow import Text.Printf -data FrontendResult v x = FrontendResult +data FrontendResult v x = FrontendResult { forall v x. FrontendResult v x -> DataFlowGraph v x -frDataFlow :: DataFlowGraph v x +frDataFlow :: DataFlowGraph v x , forall v x. FrontendResult v x -> [TraceVar] frTrace :: [TraceVar] , forall v x. FrontendResult v x -> [HashMap v x] -> [HashMap String String] -frPrettyLog :: [HM.HashMap v x] -> [HM.HashMap String String] +frPrettyLog :: [HM.HashMap v x] -> [HM.HashMap String String] } data TraceVar = TraceVar {TraceVar -> Maybe Text tvFmt :: Maybe T.Text, TraceVar -> Text tvVar :: T.Text} - deriving (Int -> TraceVar -> ShowS + deriving (Int -> TraceVar -> ShowS [TraceVar] -> ShowS TraceVar -> String forall a. @@ -53,103 +53,103 @@ "%.3f" prettyLog :: [TraceVar] -> [HashMap a t] -> [HashMap String v] -prettyLog [TraceVar] -traceVars [HashMap a t] -hms = forall a b. (a -> b) -> [a] -> [b] +prettyLog [TraceVar] +traceVars [HashMap a t] +hms = forall a b. (a -> b) -> [a] -> [b] map forall {t} {v} {a}. (Real t, Show t, PrintfType v, PrintfArg t, ToString a) => HashMap a t -> HashMap String v -prettyHM [HashMap a t] -hms +prettyHM [HashMap a t] +hms where - prettyHM :: HashMap a t -> HashMap String v -prettyHM HashMap a t -hm = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v + prettyHM :: HashMap a t -> HashMap String v +prettyHM HashMap a t +hm = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v HM.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe forall {t} {b} {a}. (Real t, Show t, PrintfType b, PrintfArg t, ToString a) => (a, t) -> Maybe (String, b) -prettyX forall a b. (a -> b) -> a -> b +prettyX forall a b. (a -> b) -> a -> b $ forall k v. HashMap k v -> [(k, v)] HM.toList HashMap a t -hm - prettyX :: (a, t) -> Maybe (String, b) -prettyX (a -v0, t -x) = do +hm + prettyX :: (a, t) -> Maybe (String, b) +prettyX (a +v0, t +x) = do -- variables names end on #0, #1..., so we trim this suffix - let v :: String -v = forall a. (a -> Bool) -> [a] -> [a] + let v :: String +v = forall a. (a -> Bool) -> [a] -> [a] takeWhile (forall a. Eq a => a -> a -> Bool /= Char '#') forall a b. (a -> b) -> a -> b $ forall a. ToString a => a -> String toString a -v0 - Maybe Text -fmt <- Map String (Maybe Text) -v2fmt forall k a. Ord k => Map k a -> k -> Maybe a +v0 + Maybe Text +fmt <- Map String (Maybe Text) +v2fmt forall k a. Ord k => Map k a -> k -> Maybe a M.!? String -v +v forall a. a -> Maybe a Just (forall a. ToString a => a -> String toString (forall a. (a -> Bool) -> [a] -> [a] takeWhile (forall a. Eq a => a -> a -> Bool /= Char '^') String -v), forall {t} {t}. +v), forall {t} {t}. (Real t, Show t, PrintfType t, PrintfArg t) => String -> t -> t -printx (Text -> String +printx (Text -> String T.unpack (Maybe Text -> Text getTraceVarFormat Maybe Text -fmt)) t -x) - v2fmt :: Map String (Maybe Text) -v2fmt = forall k a. Ord k => [(k, a)] -> Map k a +fmt)) t +x) + v2fmt :: Map String (Maybe Text) +v2fmt = forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\(TraceVar Maybe Text -fmt Text -v) -> (forall a. ToString a => a -> String +map (\(TraceVar Maybe Text +fmt Text +v) -> (forall a. ToString a => a -> String toString Text -v, Maybe Text -fmt)) [TraceVar] -traceVars - printx :: String -> t -> t -printx String -p t -x +v, Maybe Text +fmt)) [TraceVar] +traceVars + printx :: String -> t -> t +printx String +p t +x | Char 'f' forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` String -p = forall r. PrintfType r => String -> r +p = forall r. PrintfType r => String -> r printf String -p (forall a. Fractional a => Rational -> a +p (forall a. Fractional a => Rational -> a fromRational (forall a. Real a => a -> Rational toRational t -x) :: Double) +x) :: Double) | Char 's' forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` String -p = forall r. PrintfType r => String -> r +p = forall r. PrintfType r => String -> r printf String -p forall a b. (a -> b) -> a -> b +p forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> String show t -x +x | Bool otherwise = forall r. PrintfType r => String -> r printf String -p t -x +p t +x getTraceVarFormat :: Maybe Text -> Text getTraceVarFormat Maybe Text Nothing = Text defaultFmt -getTraceVarFormat (Just Text -fmt) = Text -fmt +getTraceVarFormat (Just Text +fmt) = Text +fmt \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Frontends.Lua.html b/haddock/nitta/src/NITTA.Frontends.Lua.html index f5a10bf7f..c73225198 100644 --- a/haddock/nitta/src/NITTA.Frontends.Lua.html +++ b/haddock/nitta/src/NITTA.Frontends.Lua.html @@ -106,50 +106,50 @@ import NITTA.Utils.Base getUniqueLuaVariableName :: LuaValueInstance -> a -> Text -getUniqueLuaVariableName LuaValueInstance{Text +getUniqueLuaVariableName LuaValueInstance{Text lviName :: LuaValueInstance -> Text lviName :: Text lviName, lviIsConstant :: LuaValueInstance -> Bool lviIsConstant = Bool -True} a -luaValueAccessCount = Text +True} a +luaValueAccessCount = Text "!" forall a. Semigroup a => a -> a -> a <> Text -lviName forall a. Semigroup a => a -> a -> a +lviName forall a. Semigroup a => a -> a -> a <> Text "#" forall a. Semigroup a => a -> a -> a <> forall {a}. Show a => a -> Text showText a -luaValueAccessCount -getUniqueLuaVariableName LuaValueInstance{Text +luaValueAccessCount +getUniqueLuaVariableName LuaValueInstance{Text lviName :: Text lviName :: LuaValueInstance -> Text -lviName, Int +lviName, Int lviAssignCount :: LuaValueInstance -> Int lviAssignCount :: Int -lviAssignCount} a -luaValueAccessCount +lviAssignCount} a +luaValueAccessCount | Text -> Char T.head Text -lviName forall a. Eq a => a -> a -> Bool +lviName forall a. Eq a => a -> a -> Bool == Char '_' = Text -lviName +lviName | Bool otherwise = Text -lviName forall a. Semigroup a => a -> a -> a +lviName forall a. Semigroup a => a -> a -> a <> Text "^" forall a. Semigroup a => a -> a -> a <> forall {a}. Show a => a -> Text showText Int -lviAssignCount forall a. Semigroup a => a -> a -> a +lviAssignCount forall a. Semigroup a => a -> a -> a <> Text "#" forall a. Semigroup a => a -> a -> a <> forall {a}. Show a => a -> Text showText a -luaValueAccessCount +luaValueAccessCount -data LuaStatement x = LuaStatement +data LuaStatement x = LuaStatement { forall x. LuaStatement x -> [Text] fIn :: [T.Text] , forall x. LuaStatement x -> [LuaValueInstance] @@ -157,11 +157,11 @@ , forall x. LuaStatement x -> Text fName :: T.Text , forall x. LuaStatement x -> [x] -fValues :: [x] +fValues :: [x] , forall x. LuaStatement x -> [Int] fInt :: [Int] } - deriving (Int -> LuaStatement x -> ShowS + deriving (Int -> LuaStatement x -> ShowS forall x. Show x => Int -> LuaStatement x -> ShowS forall x. Show x => [LuaStatement x] -> ShowS forall x. Show x => LuaStatement x -> String @@ -173,7 +173,7 @@ $cshow :: forall x. Show x => LuaStatement x -> String showsPrec :: Int -> LuaStatement x -> ShowS $cshowsPrec :: forall x. Show x => Int -> LuaStatement x -> ShowS -Show, LuaStatement x -> LuaStatement x -> Bool +Show, LuaStatement x -> LuaStatement x -> Bool forall x. Eq x => LuaStatement x -> LuaStatement x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: LuaStatement x -> LuaStatement x -> Bool @@ -191,7 +191,7 @@ , LuaValueInstance -> Bool lviIsConstant :: Bool } - deriving (Int -> LuaValueInstance -> ShowS + deriving (Int -> LuaValueInstance -> ShowS [LuaValueInstance] -> ShowS LuaValueInstance -> String forall a. @@ -202,7 +202,7 @@ $cshow :: LuaValueInstance -> String showsPrec :: Int -> LuaValueInstance -> ShowS $cshowsPrec :: Int -> LuaValueInstance -> ShowS -Show, LuaValueInstance -> LuaValueInstance -> Bool +Show, LuaValueInstance -> LuaValueInstance -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: LuaValueInstance -> LuaValueInstance -> Bool $c/= :: LuaValueInstance -> LuaValueInstance -> Bool @@ -210,30 +210,30 @@ $c== :: LuaValueInstance -> LuaValueInstance -> Bool Eq) -instance Hashable LuaValueInstance where - hashWithSalt :: Int -> LuaValueInstance -> Int -hashWithSalt Int -i LuaValueInstance{Text +instance Hashable LuaValueInstance where + hashWithSalt :: Int -> LuaValueInstance -> Int +hashWithSalt Int +i LuaValueInstance{Text lviName :: Text lviName :: LuaValueInstance -> Text -lviName, Int +lviName, Int lviAssignCount :: Int lviAssignCount :: LuaValueInstance -> Int -lviAssignCount, Bool +lviAssignCount, Bool lviIsConstant :: Bool lviIsConstant :: LuaValueInstance -> Bool -lviIsConstant} = +lviIsConstant} = ( (forall a. Hashable a => Int -> a -> Int hashWithSalt Int -i Text -lviName forall a. Num a => a -> a -> a +i Text +lviName forall a. Num a => a -> a -> a * Int 31) forall a. Num a => a -> a -> a + forall a. Hashable a => Int -> a -> Int hashWithSalt Int -i Int -lviAssignCount +i Int +lviAssignCount ) forall a. Num a => a -> a -> a * Int @@ -241,12 +241,12 @@ forall a. Num a => a -> a -> a + forall a. Hashable a => Int -> a -> Int hashWithSalt Int -i Bool -lviIsConstant +i Bool +lviIsConstant -data LuaAlgBuilder x = LuaAlgBuilder +data LuaAlgBuilder x = LuaAlgBuilder { forall x. LuaAlgBuilder x -> [LuaStatement x] -algGraph :: [LuaStatement x] +algGraph :: [LuaStatement x] -- ^ A list containing all expressions to be added to the final graph. , forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance algLatestLuaValueInstance :: HM.HashMap T.Text LuaValueInstance @@ -267,7 +267,7 @@ algTraceFuncs :: [([T.Text], Maybe T.Text)] -- ^ A list that stores debug information about monitored variables and their display formats. } - deriving (Int -> LuaAlgBuilder x -> ShowS + deriving (Int -> LuaAlgBuilder x -> ShowS forall x. Show x => Int -> LuaAlgBuilder x -> ShowS forall x. Show x => [LuaAlgBuilder x] -> ShowS forall x. Show x => LuaAlgBuilder x -> String @@ -283,367 +283,367 @@ -- left part of lua statement parseLeftExp :: Var -> Text -parseLeftExp (VarName (Name Text -v)) = Text -v -parseLeftExp Var -var = forall a. HasCallStack => String -> a +parseLeftExp (VarName (Name Text +v)) = Text +v +parseLeftExp Var +var = forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "unexpected lua variable declaration format : " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Var -var +var -- right part of lua statement parseRightExp :: [Text] -> Exp -> m () -parseRightExp [Text -fOut] (Binop Binop -ShiftL Exp -a (Number NumberType -IntNum Text -s)) = do - Text -varName <- Text -> Exp -> m Text +parseRightExp [Text +fOut] (Binop Binop +ShiftL Exp +a (Number NumberType +IntNum Text +s)) = do + Text +varName <- Text -> Exp -> m Text parseExpArg Text -fOut Exp -a +fOut Exp +a forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Show x) => [Text] -> [Text] -> [x] -> Text -> [Int] -> m () addVariable [Text -varName] [Text -fOut] [] Text +varName] [Text +fOut] [] Text "shiftL" [forall {a}. Read a => Text -> a readText Text -s] -parseRightExp [Text -fOut] (Binop Binop -ShiftR Exp -a (Number NumberType -IntNum Text -s)) = do - Text -varName <- Text -> Exp -> m Text +s] +parseRightExp [Text +fOut] (Binop Binop +ShiftR Exp +a (Number NumberType +IntNum Text +s)) = do + Text +varName <- Text -> Exp -> m Text parseExpArg Text -fOut Exp -a +fOut Exp +a forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Show x) => [Text] -> [Text] -> [x] -> Text -> [Int] -> m () addVariable [Text -varName] [Text -fOut] [] Text +varName] [Text +fOut] [] Text "shiftR" [forall {a}. Read a => Text -> a readText Text -s] -parseRightExp [Text -fOut] (Number NumberType -_ Text -valueString) = do +s] +parseRightExp [Text +fOut] (Number NumberType +_ Text +valueString) = do forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Show x) => [Text] -> [Text] -> [x] -> Text -> [Int] -> m () addVariable [] [Text -fOut] [forall {a}. Read a => Text -> a +fOut] [forall {a}. Read a => Text -> a readText Text -valueString] Text +valueString] Text "constant" [] -parseRightExp fOut :: [Text] -fOut@(Text -x : [Text] -_) (Binop Binop -op Exp -a Exp -b) = do - Text -varNameA <- Text -> Exp -> m Text +parseRightExp fOut :: [Text] +fOut@(Text +x : [Text] +_) (Binop Binop +op Exp +a Exp +b) = do + Text +varNameA <- Text -> Exp -> m Text parseExpArg Text -x Exp -a - Text -varNameB <- Text -> Exp -> m Text +x Exp +a + Text +varNameB <- Text -> Exp -> m Text parseExpArg Text -x Exp -b +x Exp +b forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Show x) => [Text] -> [Text] -> [x] -> Text -> [Int] -> m () addVariable [Text -varNameA, Text -varNameB] [Text] -fOut [] (forall {a}. IsString a => Binop -> a -getBinopFuncName Binop -op) [] +varNameA, Text +varNameB] [Text] +fOut [] (forall {a}. IsString a => Binop -> a +getBinopFuncName Binop +op) [] where - getBinopFuncName :: Binop -> a -getBinopFuncName Binop + getBinopFuncName :: Binop -> a +getBinopFuncName Binop Add = a "add" - getBinopFuncName Binop + getBinopFuncName Binop Sub = a "sub" - getBinopFuncName Binop + getBinopFuncName Binop Mul = a "multiply" - getBinopFuncName Binop + getBinopFuncName Binop Div = a "divide" - getBinopFuncName Binop -o = forall a. HasCallStack => String -> a + getBinopFuncName Binop +o = forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "unknown binop: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Binop -o -parseRightExp [Text] -fOut (PrefixExp (Paren Exp -e)) = [Text] -> Exp -> m () +o +parseRightExp [Text] +fOut (PrefixExp (Paren Exp +e)) = [Text] -> Exp -> m () parseRightExp [Text] -fOut Exp -e -parseRightExp [Text] -fOut (Unop Unop -Neg (Number NumberType -numType Text -name)) = [Text] -> Exp -> m () +fOut Exp +e +parseRightExp [Text] +fOut (Unop Unop +Neg (Number NumberType +numType Text +name)) = [Text] -> Exp -> m () parseRightExp [Text] -fOut (NumberType -> Text -> Exp +fOut (NumberType -> Text -> Exp Number NumberType -numType (Text +numType (Text "-" forall a. Semigroup a => a -> a -> a <> Text -name)) -parseRightExp [Text -fOut] (Unop Unop -Neg expr :: Exp -expr@(PrefixExp PrefixExp +name)) +parseRightExp [Text +fOut] (Unop Unop +Neg expr :: Exp +expr@(PrefixExp PrefixExp _)) = do - Text -varName <- Text -> Exp -> m Text + Text +varName <- Text -> Exp -> m Text parseExpArg Text -fOut Exp -expr +fOut Exp +expr forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Show x) => [Text] -> [Text] -> [x] -> Text -> [Int] -> m () addVariable [Text -varName] [Text -fOut] [] Text +varName] [Text +fOut] [] Text "neg" [] parseRightExp - [Text -fOut] + [Text +fOut] ( PrefixExp ( PEFunCall ( NormalFunCall - (PEVar (VarName (Name Text -fname))) - (Args [Exp] -args) + (PEVar (VarName (Name Text +fname))) + (Args [Exp] +args) ) ) ) = do - [Text] -fIn <- forall (t :: * -> *) (m :: * -> *) a b. + [Text] +fIn <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM (Text -> Exp -> m Text parseExpArg Text -fOut) [Exp] -args +fOut) [Exp] +args forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Show x) => Text -> [Text] -> [Text] -> m () addFunction Text -fname [Text] -fIn [Text -fOut] -parseRightExp [Text -fOut] (PrefixExp (PEVar (VarName (Name Text -name)))) = do +fname [Text] +fIn [Text +fOut] +parseRightExp [Text +fOut] (PrefixExp (PEVar (VarName (Name Text +name)))) = do forall {m :: * -> *} {x}. MonadState (LuaAlgBuilder x) m => Text -> Text -> m () addAlias Text -fOut Text -name +fOut Text +name parseRightExp [Text] -_ Exp -expr = forall a. HasCallStack => String -> a +_ Exp +expr = forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "unknown expression : " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Exp -expr +expr parseExpArg :: Text -> Exp -> m Text parseExpArg Text -_ n :: Exp -n@(Number NumberType +_ n :: Exp +n@(Number NumberType _ Text _) = do forall {m :: * -> *} {x}. (MonadState (LuaAlgBuilder x) m, Read x) => Exp -> m Text addConstant Exp -n -parseExpArg Text -fOut expr :: Exp -expr@(Unop Unop +n +parseExpArg Text +fOut expr :: Exp +expr@(Unop Unop Neg Exp _) = do - Text -name <- forall {m :: * -> *} {x}. + Text +name <- forall {m :: * -> *} {x}. MonadState (LuaAlgBuilder x) m => Text -> m Text getNextTmpVarName Text -fOut +fOut () _ <- [Text] -> Exp -> m () parseRightExp [Text -name] Exp -expr +name] Exp +expr forall {x} {m :: * -> *}. MonadState (LuaAlgBuilder x) m => Text -> m Text addVariableAccess Text -name +name parseExpArg Text -_ (PrefixExp (PEVar (VarName (Name Text -name)))) = do +_ (PrefixExp (PEVar (VarName (Name Text +name)))) = do forall {x} {m :: * -> *}. MonadState (LuaAlgBuilder x) m => Text -> m Text addVariableAccess Text -name -parseExpArg Text -fOut binop :: Exp -binop@Binop{} = do - Text -name <- forall {m :: * -> *} {x}. +name +parseExpArg Text +fOut binop :: Exp +binop@Binop{} = do + Text +name <- forall {m :: * -> *} {x}. MonadState (LuaAlgBuilder x) m => Text -> m Text getNextTmpVarName Text -fOut +fOut () _ <- [Text] -> Exp -> m () parseRightExp [Text -name] Exp -binop +name] Exp +binop forall {x} {m :: * -> *}. MonadState (LuaAlgBuilder x) m => Text -> m Text addVariableAccess Text -name -parseExpArg Text -fOut (PrefixExp (Paren Exp -arg)) = Text -> Exp -> m Text +name +parseExpArg Text +fOut (PrefixExp (Paren Exp +arg)) = Text -> Exp -> m Text parseExpArg Text -fOut Exp -arg -parseExpArg Text -fOut call :: Exp -call@(PrefixExp (PEFunCall FunCall +fOut Exp +arg +parseExpArg Text +fOut call :: Exp +call@(PrefixExp (PEFunCall FunCall _)) = do - Text -name <- forall {m :: * -> *} {x}. + Text +name <- forall {m :: * -> *} {x}. MonadState (LuaAlgBuilder x) m => Text -> m Text getNextTmpVarName Text -fOut +fOut () _ <- [Text] -> Exp -> m () parseRightExp [Text -name] Exp -call +name] Exp +call forall {x} {m :: * -> *}. MonadState (LuaAlgBuilder x) m => Text -> m Text addVariableAccess Text -name +name parseExpArg Text _ Exp _ = forall a. HasCallStack => a undefined getNextTmpVarName :: Text -> m Text -getNextTmpVarName Text -fOut +getNextTmpVarName Text +fOut | Text -> Text -> Bool T.isInfixOf Text "#" Text -fOut = Text -> m Text +fOut = Text -> m Text getNextTmpVarName (Text -> Text -> [Text] T.splitOn Text "#" Text -fOut forall a. [a] -> Int -> a +fOut forall a. [a] -> Int -> a !! Int 1) | Bool otherwise = do - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{HashMap Text Int + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{HashMap Text Int algVarCounters :: HashMap Text Int algVarCounters :: forall x. LuaAlgBuilder x -> HashMap Text Int -algVarCounters} <- forall s (m :: * -> *). MonadState s m => m s +algVarCounters} <- forall s (m :: * -> *). MonadState s m => m s get case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup Text -fOut HashMap Text Int -algVarCounters of - Just Int -value -> do +fOut HashMap Text Int +algVarCounters of + Just Int +value -> do forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algVarCounters :: HashMap Text Int +luaAlgBuilder{algVarCounters :: HashMap Text Int algVarCounters = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Text -fOut (Int -value forall a. Num a => a -> a -> a +fOut (Int +value forall a. Num a => a -> a -> a + Int 1) HashMap Text Int -algVarCounters} +algVarCounters} forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ Text "_" forall a. Semigroup a => a -> a -> a <> forall {a}. Show a => a -> Text showText Int -value forall a. Semigroup a => a -> a -> a +value forall a. Semigroup a => a -> a -> a <> Text "#" forall a. Semigroup a => a -> a -> a <> Text -fOut +fOut Maybe Int Nothing -> do forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algVarCounters :: HashMap Text Int +luaAlgBuilder{algVarCounters :: HashMap Text Int algVarCounters = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Text -fOut Int +fOut Int 1 HashMap Text Int -algVarCounters} +algVarCounters} forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ Text "_0#" forall a. Semigroup a => a -> a -> a <> Text -fOut +fOut addStartupFuncArgs :: Stat -> Stat -> m b addStartupFuncArgs (FunCall (NormalFunCall PrefixExp -_ (Args [Exp] -exps))) (FunAssign FunName -_ (FunBody [Name] -names Bool +_ (Args [Exp] +exps))) (FunAssign FunName +_ (FunBody [Name] +names Bool _ Block _)) = do forall (t :: * -> *) (m :: * -> *) a b. @@ -651,17 +651,17 @@ (a -> m b) -> t a -> m () mapM_ ( \case - (Name Text -name, Number NumberType -_ Text -valueString, Int -serialNumber) -> forall {m :: * -> *} {x}. + (Name Text +name, Number NumberType +_ Text +valueString, Int +serialNumber) -> forall {m :: * -> *} {x}. MonadState (LuaAlgBuilder x) m => Text -> Text -> Int -> m LuaValueInstance -addToBuffer Text -name Text -valueString Int -serialNumber +addToBuffer Text +name Text +valueString Int +serialNumber (Name, Exp, Int) _ -> forall a. HasCallStack => String -> a error String @@ -670,65 +670,65 @@ forall a b. (a -> b) -> a -> b $ forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] zip3 [Name] -names [Exp] -exps [Int +names [Exp] +exps [Int 0 ..] forall (m :: * -> *) a. Monad m => a -> m a return b "" where - addToBuffer :: Text -> Text -> Int -> m LuaValueInstance -addToBuffer Text -name Text -valueString Int -serialNumber = do - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{HashMap LuaValueInstance [Text] + addToBuffer :: Text -> Text -> Int -> m LuaValueInstance +addToBuffer Text +name Text +valueString Int +serialNumber = do + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{HashMap LuaValueInstance [Text] algVars :: HashMap LuaValueInstance [Text] algVars :: forall x. LuaAlgBuilder x -> HashMap LuaValueInstance [Text] -algVars, HashMap Text LuaValueInstance +algVars, HashMap Text LuaValueInstance algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance -algLatestLuaValueInstance, HashMap Int (Text, Text) +algLatestLuaValueInstance, HashMap Int (Text, Text) algStartupArgs :: HashMap Int (Text, Text) algStartupArgs :: forall x. LuaAlgBuilder x -> HashMap Int (Text, Text) -algStartupArgs} <- forall s (m :: * -> *). MonadState s m => m s +algStartupArgs} <- forall s (m :: * -> *). MonadState s m => m s get - let value :: LuaValueInstance -value = LuaValueInstance{lviName :: Text + let value :: LuaValueInstance +value = LuaValueInstance{lviName :: Text lviName = Text -name, lviAssignCount :: Int +name, lviAssignCount :: Int lviAssignCount = Int 0, lviIsConstant :: Bool lviIsConstant = Bool False} forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algLatestLuaValueInstance :: HashMap Text LuaValueInstance +luaAlgBuilder{algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Text -name LuaValueInstance -value HashMap Text LuaValueInstance -algLatestLuaValueInstance, algVars :: HashMap LuaValueInstance [Text] +name LuaValueInstance +value HashMap Text LuaValueInstance +algLatestLuaValueInstance, algVars :: HashMap LuaValueInstance [Text] algVars = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert LuaValueInstance -value [] HashMap LuaValueInstance [Text] -algVars, algStartupArgs :: HashMap Int (Text, Text) +value [] HashMap LuaValueInstance [Text] +algVars, algStartupArgs :: HashMap Int (Text, Text) algStartupArgs = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Int -serialNumber (Text -name, Text -valueString) HashMap Int (Text, Text) -algStartupArgs} +serialNumber (Text +name, Text +valueString) HashMap Int (Text, Text) +algStartupArgs} forall (m :: * -> *) a. Monad m => a -> m a return LuaValueInstance -value +value addStartupFuncArgs Stat _ Stat _ = forall a. HasCallStack => a @@ -738,79 +738,79 @@ -- LocalAssign processStatement :: Text -> Stat -> m () processStatement Text -_ (LocalAssign [Name] -_names Maybe [Exp] +_ (LocalAssign [Name] +_names Maybe [Exp] Nothing) = do forall (m :: * -> *) a. Monad m => a -> m a return () -processStatement Text -fn (LocalAssign [Name] -names (Just [Exp] -exps)) = +processStatement Text +fn (LocalAssign [Name] +names (Just [Exp] +exps)) = Text -> Stat -> m () processStatement Text -fn forall a b. (a -> b) -> a -> b +fn forall a b. (a -> b) -> a -> b $ [Var] -> [Exp] -> Stat Assign (forall a b. (a -> b) -> [a] -> [b] map Name -> Var VarName [Name] -names) [Exp] -exps +names) [Exp] +exps -- Assign -processStatement Text -fn (Assign lexps :: [Var] -lexps@[Var +processStatement Text +fn (Assign lexps :: [Var] +lexps@[Var _] [Unop Unop -Neg (Number NumberType -ntype Text -ntext)]) = +Neg (Number NumberType +ntype Text +ntext)]) = Text -> Stat -> m () processStatement Text -fn ([Var] -> [Exp] -> Stat +fn ([Var] -> [Exp] -> Stat Assign [Var] -lexps [NumberType -> Text -> Exp +lexps [NumberType -> Text -> Exp Number NumberType -ntype (Text +ntype (Text "-" forall a. Semigroup a => a -> a -> a <> Text -ntext)]) +ntext)]) processStatement Text -_ (Assign [Var] -lexp [Exp -rexp]) = do +_ (Assign [Var] +lexp [Exp +rexp]) = do forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Read x, Show x) => [Text] -> Exp -> m () parseRightExp (forall a b. (a -> b) -> [a] -> [b] map Var -> Text parseLeftExp [Var] -lexp) Exp -rexp -processStatement Text -startupFunctionName (Assign [Var] -vars [Exp] -exps) | forall (t :: * -> *) a. Foldable t => t a -> Int +lexp) Exp +rexp +processStatement Text +startupFunctionName (Assign [Var] +vars [Exp] +exps) | forall (t :: * -> *) a. Foldable t => t a -> Int length [Var] -vars forall a. Eq a => a -> a -> Bool +vars forall a. Eq a => a -> a -> Bool == forall (t :: * -> *) a. Foldable t => t a -> Int length [Exp] -exps = do +exps = do forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ ( \case - (VarName (Name Text -name), Exp -expr) -> Text -> Stat -> m () + (VarName (Name Text +name), Exp +expr) -> Text -> Stat -> m () processStatement Text -startupFunctionName ([Var] -> [Exp] -> Stat +startupFunctionName ([Var] -> [Exp] -> Stat Assign [Name -> Var VarName (Text -> Name Name (forall {a}. (Semigroup a, IsString a) => a -> a -getTempAlias Text -name))] [Exp -expr]) +getTempAlias Text +name))] [Exp +expr]) (Var, Exp) _ -> forall a. HasCallStack => String -> a error String @@ -819,121 +819,121 @@ forall a b. (a -> b) -> a -> b $ forall a b. [a] -> [b] -> [(a, b)] zip [Var] -vars [Exp] -exps +vars [Exp] +exps forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () -mapM_ (\(VarName (Name Text -name)) -> forall {m :: * -> *} {x}. +mapM_ (\(VarName (Name Text +name)) -> forall {m :: * -> *} {x}. MonadState (LuaAlgBuilder x) m => Text -> Text -> m () addAlias Text -name (forall {a}. (Semigroup a, IsString a) => a -> a -getTempAlias Text -name)) [Var] -vars +name (forall {a}. (Semigroup a, IsString a) => a -> a +getTempAlias Text +name)) [Var] +vars where - getTempAlias :: a -> a -getTempAlias a -name = a -name forall a. Semigroup a => a -> a -> a + getTempAlias :: a -> a +getTempAlias a +name = a +name forall a. Semigroup a => a -> a -> a <> a "&" -- startup function recursive call -processStatement Text -fn (FunCall (NormalFunCall (PEVar (VarName (Name Text -fName))) (Args [Exp] -args))) +processStatement Text +fn (FunCall (NormalFunCall (PEVar (VarName (Name Text +fName))) (Args [Exp] +args))) | Text -fn forall a. Eq a => a -> a -> Bool +fn forall a. Eq a => a -> a -> Bool == Text -fName = do - LuaAlgBuilder{HashMap Int (Text, Text) +fName = do + LuaAlgBuilder{HashMap Int (Text, Text) algStartupArgs :: HashMap Int (Text, Text) algStartupArgs :: forall x. LuaAlgBuilder x -> HashMap Int (Text, Text) -algStartupArgs} <- forall s (m :: * -> *). MonadState s m => m s +algStartupArgs} <- forall s (m :: * -> *). MonadState s m => m s get - let startupVarsNames :: [(Text, Text)] -startupVarsNames = forall a b. (a -> b) -> [a] -> [b] + let startupVarsNames :: [(Text, Text)] +startupVarsNames = forall a b. (a -> b) -> [a] -> [b] map (forall a. a -> Maybe a -> a fromMaybe (forall a. HasCallStack => String -> a error String "processStatement: internal error") forall b c a. (b -> c) -> (a -> b) -> a -> c . (forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v `HM.lookup` HashMap Int (Text, Text) -algStartupArgs)) [Int +algStartupArgs)) [Int 0 .. (forall k v. HashMap k v -> Int HM.size HashMap Int (Text, Text) -algStartupArgs)] - let startupVarsVersions :: [LuaValueInstance] -startupVarsVersions = forall a b. (a -> b) -> [a] -> [b] -map (\(Text, Text) -x -> LuaValueInstance{lviName :: Text +algStartupArgs)] + let startupVarsVersions :: [LuaValueInstance] +startupVarsVersions = forall a b. (a -> b) -> [a] -> [b] +map (\(Text, Text) +x -> LuaValueInstance{lviName :: Text lviName = forall a b. (a, b) -> a fst (Text, Text) -x, lviAssignCount :: Int +x, lviAssignCount :: Int lviAssignCount = Int 0, lviIsConstant :: Bool lviIsConstant = Bool False}) [(Text, Text)] -startupVarsNames +startupVarsNames forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Read x, Show x) => (Exp, LuaValueInstance, x) -> m () -parseStartupArg forall a b. (a -> b) -> a -> b +parseStartupArg forall a b. (a -> b) -> a -> b $ forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] zip3 [Exp] -args [LuaValueInstance] -startupVarsVersions (forall a b. (a -> b) -> [a] -> [b] +args [LuaValueInstance] +startupVarsVersions (forall a b. (a -> b) -> [a] -> [b] map (forall {a}. Read a => Text -> a readText forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(Text, Text)] -startupVarsNames) +startupVarsNames) where - parseStartupArg :: (Exp, LuaValueInstance, x) -> m () -parseStartupArg (Exp -arg, LuaValueInstance -valueVersion, x -index) = do - Text -varName <- forall {x} {m :: * -> *}. + parseStartupArg :: (Exp, LuaValueInstance, x) -> m () +parseStartupArg (Exp +arg, LuaValueInstance +valueVersion, x +index) = do + Text +varName <- forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Read x, Show x) => Text -> Exp -> m Text parseExpArg Text "loop" Exp -arg - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{[LuaStatement x] +arg + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{[LuaStatement x] algGraph :: [LuaStatement x] algGraph :: forall x. LuaAlgBuilder x -> [LuaStatement x] -algGraph} <- forall s (m :: * -> *). MonadState s m => m s +algGraph} <- forall s (m :: * -> *). MonadState s m => m s get forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algGraph :: [LuaStatement x] +luaAlgBuilder{algGraph :: [LuaStatement x] algGraph = LuaStatement{fIn :: [Text] fIn = [Text -varName], fOut :: [LuaValueInstance] +varName], fOut :: [LuaValueInstance] fOut = [LuaValueInstance -valueVersion], fValues :: [x] +valueVersion], fValues :: [x] fValues = [x -index], fName :: Text +index], fName :: Text fName = Text "loop", fInt :: [Int] fInt = []} forall a. a -> [a] -> [a] : [LuaStatement x] -algGraph} +algGraph} processStatement Text -_ (FunCall (NormalFunCall (PEVar (VarName (Name Text -fName))) (Args [Exp] -args))) = do - [Text] -fIn <- forall (t :: * -> *) (m :: * -> *) a b. +_ (FunCall (NormalFunCall (PEVar (VarName (Name Text +fName))) (Args [Exp] +args))) = do + [Text] +fIn <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM (forall {x} {m :: * -> *}. @@ -941,54 +941,54 @@ Text -> Exp -> m Text parseExpArg Text "tmp") [Exp] -args +args forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Show x) => Text -> [Text] -> [Text] -> m () addFunction (forall {a}. IsString a => Text -> a fromText Text -fName) [Text] -fIn [forall a. IsString a => String -> a +fName) [Text] +fIn [forall a. IsString a => String -> a fromString String ""] -processStatement Text -_fn (FunCall (NormalFunCall (PEVar (SelectName (PEVar (VarName (Name Text -"debug"))) (Name Text -fName))) (Args [Exp] -args))) = do - let fIn :: [Text] -fIn = forall a b. (a -> b) -> [a] -> [b] +processStatement Text +_fn (FunCall (NormalFunCall (PEVar (SelectName (PEVar (VarName (Name Text +"debug"))) (Name Text +fName))) (Args [Exp] +args))) = do + let fIn :: [Text] +fIn = forall a b. (a -> b) -> [a] -> [b] map Exp -> Text -parseTraceArg [Exp] -args - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{[([Text], Maybe Text)] +parseTraceArg [Exp] +args + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{[([Text], Maybe Text)] algTraceFuncs :: [([Text], Maybe Text)] algTraceFuncs :: forall x. LuaAlgBuilder x -> [([Text], Maybe Text)] -algTraceFuncs, HashMap Text LuaValueInstance +algTraceFuncs, HashMap Text LuaValueInstance algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance -algLatestLuaValueInstance} <- forall s (m :: * -> *). MonadState s m => m s +algLatestLuaValueInstance} <- forall s (m :: * -> *). MonadState s m => m s get case (Text -fName, [Text] -fIn) of +fName, [Text] +fIn) of (Text -"trace", Text -tFmt : [Text] -vs) +"trace", Text +tFmt : [Text] +vs) | Text -> Text -> Bool T.isPrefixOf Text "\"" Text -tFmt Bool -> Bool -> Bool +tFmt Bool -> Bool -> Bool && Text -> Text -> Bool T.isPrefixOf Text "\"" Text -tFmt -> do - let vars :: [Text] -vars = forall a b. (a -> b) -> [a] -> [b] -map (\Text -x -> String -> Text +tFmt -> do + let vars :: [Text] +vars = forall a b. (a -> b) -> [a] -> [b] +map (\Text +x -> String -> Text T.pack forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] takeWhile (forall a. Eq a => a -> a -> Bool @@ -1002,30 +1002,30 @@ undefined forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup Text -x HashMap Text LuaValueInstance -algLatestLuaValueInstance) Integer +x HashMap Text LuaValueInstance +algLatestLuaValueInstance) Integer 0) [Text] -vs +vs forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algTraceFuncs :: [([Text], Maybe Text)] +luaAlgBuilder{algTraceFuncs :: [([Text], Maybe Text)] algTraceFuncs = ([Text] -vars, forall a. a -> Maybe a +vars, forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ Text -> Text -> Text -> Text T.replace Text "\"" Text "" Text -tFmt) forall a. a -> [a] -> [a] +tFmt) forall a. a -> [a] -> [a] : [([Text], Maybe Text)] -algTraceFuncs} +algTraceFuncs} (Text -"trace", [Text] -vs) -> do - let vars :: [Text] -vars = forall a b. (a -> b) -> [a] -> [b] -map (\Text -x -> String -> Text +"trace", [Text] +vs) -> do + let vars :: [Text] +vars = forall a b. (a -> b) -> [a] -> [b] +map (\Text +x -> String -> Text T.pack forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] takeWhile (forall a. Eq a => a -> a -> Bool @@ -1039,18 +1039,18 @@ undefined forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup Text -x HashMap Text LuaValueInstance -algLatestLuaValueInstance) Integer +x HashMap Text LuaValueInstance +algLatestLuaValueInstance) Integer 0) [Text] -vs +vs forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algTraceFuncs :: [([Text], Maybe Text)] +luaAlgBuilder{algTraceFuncs :: [([Text], Maybe Text)] algTraceFuncs = ([Text] -vars, forall a. Maybe a +vars, forall a. Maybe a Nothing) forall a. a -> [a] -> [a] : [([Text], Maybe Text)] -algTraceFuncs} +algTraceFuncs} (Text, [Text]) _ -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b @@ -1058,107 +1058,107 @@ "unknown debug method: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Text -fName forall a. Semigroup a => a -> a -> a +fName forall a. Semigroup a => a -> a -> a <> String " " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show [Exp] -args +args where - parseTraceArg :: Exp -> Text -parseTraceArg (String Text -s) = Text -s - parseTraceArg (PrefixExp (PEVar (VarName (Name Text -name)))) = Text -name - parseTraceArg Exp + parseTraceArg :: Exp -> Text +parseTraceArg (String Text +s) = Text +s + parseTraceArg (PrefixExp (PEVar (VarName (Name Text +name)))) = Text +name + parseTraceArg Exp _ = forall a. HasCallStack => a undefined processStatement Text -_ Stat -_stat = forall a. HasCallStack => String -> a +_ Stat +_stat = forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "unknown statement: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Stat -_stat +_stat addFunction :: Text -> [Text] -> [Text] -> m () -addFunction Text -funcName [Text -i] [Text] -fOut | forall a. ToString a => a -> String +addFunction Text +funcName [Text +i] [Text] +fOut | forall a. ToString a => a -> String toString Text -funcName forall a. Eq a => a -> a -> Bool +funcName forall a. Eq a => a -> a -> Bool == String "buffer" = do forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Show x) => [Text] -> [Text] -> [x] -> Text -> [Int] -> m () addVariable [Text -i] [Text] -fOut [] Text +i] [Text] +fOut [] Text "buffer" [] -addFunction Text -funcName [Text -i] [Text] -fOut | forall a. ToString a => a -> String +addFunction Text +funcName [Text +i] [Text] +fOut | forall a. ToString a => a -> String toString Text -funcName forall a. Eq a => a -> a -> Bool +funcName forall a. Eq a => a -> a -> Bool == String "brokenBuffer" = do forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Show x) => [Text] -> [Text] -> [x] -> Text -> [Int] -> m () addVariable [Text -i] [Text] -fOut [] Text +i] [Text] +fOut [] Text "brokenBuffer" [] -addFunction Text -funcName [Text -i] [Text] +addFunction Text +funcName [Text +i] [Text] _ | forall a. ToString a => a -> String toString Text -funcName forall a. Eq a => a -> a -> Bool +funcName forall a. Eq a => a -> a -> Bool == String "send" = do - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{[LuaStatement x] + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{[LuaStatement x] algGraph :: [LuaStatement x] algGraph :: forall x. LuaAlgBuilder x -> [LuaStatement x] -algGraph} <- forall s (m :: * -> *). MonadState s m => m s +algGraph} <- forall s (m :: * -> *). MonadState s m => m s get forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algGraph :: [LuaStatement x] +luaAlgBuilder{algGraph :: [LuaStatement x] algGraph = LuaStatement{fIn :: [Text] fIn = [Text -i], fOut :: [LuaValueInstance] +i], fOut :: [LuaValueInstance] fOut = [], fValues :: [x] fValues = [], fName :: Text fName = Text "send", fInt :: [Int] fInt = []} forall a. a -> [a] -> [a] : [LuaStatement x] -algGraph} -addFunction Text -funcName [Text] -_ [Text] -fOut | forall a. ToString a => a -> String +algGraph} +addFunction Text +funcName [Text] +_ [Text] +fOut | forall a. ToString a => a -> String toString Text -funcName forall a. Eq a => a -> a -> Bool +funcName forall a. Eq a => a -> a -> Bool == String "receive" = do forall {x} {m :: * -> *}. (MonadState (LuaAlgBuilder x) m, Show x) => [Text] -> [Text] -> [x] -> Text -> [Int] -> m () addVariable [] [Text] -fOut [] Text +fOut [] Text "receive" [] -addFunction Text -fName [Text] +addFunction Text +fName [Text] _ [Text] _ = forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b @@ -1166,153 +1166,153 @@ "unknown function" forall a. Semigroup a => a -> a -> a <> Text -> String T.unpack Text -fName +fName addConstant :: Exp -> m Text -addConstant (Number NumberType -_valueType Text -valueString) = do - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{[LuaStatement x] +addConstant (Number NumberType +_valueType Text +valueString) = do + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{[LuaStatement x] algGraph :: [LuaStatement x] algGraph :: forall x. LuaAlgBuilder x -> [LuaStatement x] -algGraph, HashMap LuaValueInstance [Text] +algGraph, HashMap LuaValueInstance [Text] algVars :: HashMap LuaValueInstance [Text] algVars :: forall x. LuaAlgBuilder x -> HashMap LuaValueInstance [Text] -algVars, HashMap Text LuaValueInstance +algVars, HashMap Text LuaValueInstance algConstants :: HashMap Text LuaValueInstance algConstants :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance -algConstants} <- forall s (m :: * -> *). MonadState s m => m s +algConstants} <- forall s (m :: * -> *). MonadState s m => m s get - let lvv :: LuaValueInstance -lvv = LuaValueInstance{lviName :: Text + let lvv :: LuaValueInstance +lvv = LuaValueInstance{lviName :: Text lviName = Text -valueString, lviAssignCount :: Int +valueString, lviAssignCount :: Int lviAssignCount = Int 0, lviIsConstant :: Bool lviIsConstant = Bool True} case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup Text -valueString HashMap Text LuaValueInstance -algConstants of - Just LuaValueInstance -value -> do - let names :: [Text] -names = forall a. a -> Maybe a -> a +valueString HashMap Text LuaValueInstance +algConstants of + Just LuaValueInstance +value -> do + let names :: [Text] +names = forall a. a -> Maybe a -> a fromMaybe (forall a. HasCallStack => String -> a error String "lua constants parsing error") forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup LuaValueInstance -value HashMap LuaValueInstance [Text] -algVars - let resultName :: Text -resultName = forall {a}. Show a => LuaValueInstance -> a -> Text +value HashMap LuaValueInstance [Text] +algVars + let resultName :: Text +resultName = forall {a}. Show a => LuaValueInstance -> a -> Text getUniqueLuaVariableName LuaValueInstance -lvv forall a b. (a -> b) -> a -> b +lvv forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Int length [Text] -names +names forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algVars :: HashMap LuaValueInstance [Text] +luaAlgBuilder{algVars :: HashMap LuaValueInstance [Text] algVars = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert LuaValueInstance -value (Text -resultName forall a. a -> [a] -> [a] +value (Text +resultName forall a. a -> [a] -> [a] : [Text] -names) HashMap LuaValueInstance [Text] -algVars} +names) HashMap LuaValueInstance [Text] +algVars} forall (m :: * -> *) a. Monad m => a -> m a return Text -resultName +resultName Maybe LuaValueInstance Nothing -> do - let resultName :: Text -resultName = forall {a}. Show a => LuaValueInstance -> a -> Text + let resultName :: Text +resultName = forall {a}. Show a => LuaValueInstance -> a -> Text getUniqueLuaVariableName LuaValueInstance -lvv Integer +lvv Integer 0 forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder +luaAlgBuilder { algGraph :: [LuaStatement x] algGraph = LuaStatement{fIn :: [Text] fIn = [], fOut :: [LuaValueInstance] fOut = [LuaValueInstance -lvv], fValues :: [x] +lvv], fValues :: [x] fValues = [forall {a}. Read a => Text -> a readText Text -valueString], fName :: Text +valueString], fName :: Text fName = Text "constant", fInt :: [Int] fInt = []} forall a. a -> [a] -> [a] : [LuaStatement x] -algGraph +algGraph , algVars :: HashMap LuaValueInstance [Text] algVars = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert LuaValueInstance -lvv [Text -resultName] HashMap LuaValueInstance [Text] -algVars +lvv [Text +resultName] HashMap LuaValueInstance [Text] +algVars , algConstants :: HashMap Text LuaValueInstance algConstants = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Text -valueString LuaValueInstance -lvv HashMap Text LuaValueInstance -algConstants +valueString LuaValueInstance +lvv HashMap Text LuaValueInstance +algConstants } forall (m :: * -> *) a. Monad m => a -> m a return Text -resultName +resultName addConstant Exp _ = forall a. HasCallStack => a undefined addVariable :: [Text] -> [Text] -> [x] -> Text -> [Int] -> m () -addVariable [Text] -fIn [Text] -fOut [x] -fValues Text -fName [Int] -fInt = do - LuaAlgBuilder{HashMap Text LuaValueInstance +addVariable [Text] +fIn [Text] +fOut [x] +fValues Text +fName [Int] +fInt = do + LuaAlgBuilder{HashMap Text LuaValueInstance algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance -algLatestLuaValueInstance} <- forall s (m :: * -> *). MonadState s m => m s +algLatestLuaValueInstance} <- forall s (m :: * -> *). MonadState s m => m s get - let luaValueInstances :: [LuaValueInstance] -luaValueInstances = forall a b. (a -> b) -> [a] -> [b] -map (\Text -x -> HashMap Text LuaValueInstance -> Text -> LuaValueInstance -nameToLuaValueInstance HashMap Text LuaValueInstance -algLatestLuaValueInstance Text -x) [Text] -fOut - let func :: LuaStatement x -func = LuaStatement{[Text] + let luaValueInstances :: [LuaValueInstance] +luaValueInstances = forall a b. (a -> b) -> [a] -> [b] +map (\Text +x -> HashMap Text LuaValueInstance -> Text -> LuaValueInstance +nameToLuaValueInstance HashMap Text LuaValueInstance +algLatestLuaValueInstance Text +x) [Text] +fOut + let func :: LuaStatement x +func = LuaStatement{[Text] fIn :: [Text] fIn :: [Text] -fIn, [x] +fIn, [x] fValues :: [x] fValues :: [x] -fValues, Text +fValues, Text fName :: Text fName :: Text -fName, [Int] +fName, [Int] fInt :: [Int] fInt :: [Int] -fInt, fOut :: [LuaValueInstance] +fInt, fOut :: [LuaValueInstance] fOut = [LuaValueInstance] -luaValueInstances} +luaValueInstances} forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () @@ -1320,32 +1320,32 @@ uncurry forall {m :: * -> *} {x}. MonadState (LuaAlgBuilder x) m => Text -> LuaValueInstance -> m () -addItemToBuffer) forall a b. (a -> b) -> a -> b +addItemToBuffer) forall a b. (a -> b) -> a -> b $ forall a b. [a] -> [b] -> [(a, b)] zip [Text] -fOut [LuaValueInstance] -luaValueInstances +fOut [LuaValueInstance] +luaValueInstances forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ forall {m :: * -> *} {x}. MonadState (LuaAlgBuilder x) m => LuaValueInstance -> m () -addItemToVars [LuaValueInstance] -luaValueInstances - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{[LuaStatement x] +addItemToVars [LuaValueInstance] +luaValueInstances + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{[LuaStatement x] algGraph :: [LuaStatement x] algGraph :: forall x. LuaAlgBuilder x -> [LuaStatement x] -algGraph, HashMap Text LuaValueInstance +algGraph, HashMap Text LuaValueInstance algConstants :: HashMap Text LuaValueInstance algConstants :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance -algConstants, algLatestLuaValueInstance :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance -algLatestLuaValueInstance = HashMap Text LuaValueInstance -algLatestLuaValueInstance'} <- forall s (m :: * -> *). MonadState s m => m s +algConstants, algLatestLuaValueInstance :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance +algLatestLuaValueInstance = HashMap Text LuaValueInstance +algLatestLuaValueInstance'} <- forall s (m :: * -> *). MonadState s m => m s get case Text -fName of +fName of Text "constant" -> do case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v @@ -1353,30 +1353,30 @@ showText forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [x] -fValues) HashMap Text LuaValueInstance -algConstants of - Just LuaValueInstance -lvv -> do +fValues) HashMap Text LuaValueInstance +algConstants of + Just LuaValueInstance +lvv -> do forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algLatestLuaValueInstance :: HashMap Text LuaValueInstance +luaAlgBuilder{algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert (forall a. [a] -> a head [Text] -fOut) LuaValueInstance -lvv HashMap Text LuaValueInstance -algLatestLuaValueInstance'} +fOut) LuaValueInstance +lvv HashMap Text LuaValueInstance +algLatestLuaValueInstance'} Maybe LuaValueInstance Nothing -> do forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algGraph :: [LuaStatement x] +luaAlgBuilder{algGraph :: [LuaStatement x] algGraph = LuaStatement x -func forall a. a -> [a] -> [a] +func forall a. a -> [a] -> [a] : [LuaStatement x] -algGraph, algConstants :: HashMap Text LuaValueInstance +algGraph, algConstants :: HashMap Text LuaValueInstance algConstants = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v @@ -1384,130 +1384,130 @@ showText forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [x] -fValues) (forall a. [a] -> a +fValues) (forall a. [a] -> a head [LuaValueInstance] -luaValueInstances) HashMap Text LuaValueInstance -algConstants} +luaValueInstances) HashMap Text LuaValueInstance +algConstants} Text _ -> do forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algGraph :: [LuaStatement x] +luaAlgBuilder{algGraph :: [LuaStatement x] algGraph = LuaStatement x -func forall a. a -> [a] -> [a] +func forall a. a -> [a] -> [a] : [LuaStatement x] -algGraph} +algGraph} where - nameToLuaValueInstance :: HashMap Text LuaValueInstance -> Text -> LuaValueInstance -nameToLuaValueInstance HashMap Text LuaValueInstance -algLatestLuaValueInstance Text -name = + nameToLuaValueInstance :: HashMap Text LuaValueInstance -> Text -> LuaValueInstance +nameToLuaValueInstance HashMap Text LuaValueInstance +algLatestLuaValueInstance Text +name = case forall {k} {v}. Hashable k => k -> HashMap k v -> Maybe v getLuaValueByName Text -name HashMap Text LuaValueInstance -algLatestLuaValueInstance of - Just lvv :: LuaValueInstance -lvv@LuaValueInstance{Int +name HashMap Text LuaValueInstance +algLatestLuaValueInstance of + Just lvv :: LuaValueInstance +lvv@LuaValueInstance{Int lviAssignCount :: Int lviAssignCount :: LuaValueInstance -> Int -lviAssignCount} -> LuaValueInstance -lvv{lviAssignCount :: Int +lviAssignCount} -> LuaValueInstance +lvv{lviAssignCount :: Int lviAssignCount = Int -lviAssignCount forall a. Num a => a -> a -> a +lviAssignCount forall a. Num a => a -> a -> a + Int 1} Maybe LuaValueInstance Nothing -> LuaValueInstance{lviName :: Text lviName = Text -name, lviAssignCount :: Int +name, lviAssignCount :: Int lviAssignCount = Int 0, lviIsConstant :: Bool lviIsConstant = Bool False} - addItemToBuffer :: Text -> LuaValueInstance -> m () -addItemToBuffer Text -name LuaValueInstance -lvv = do - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{HashMap Text LuaValueInstance + addItemToBuffer :: Text -> LuaValueInstance -> m () +addItemToBuffer Text +name LuaValueInstance +lvv = do + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{HashMap Text LuaValueInstance algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance -algLatestLuaValueInstance} <- forall s (m :: * -> *). MonadState s m => m s +algLatestLuaValueInstance} <- forall s (m :: * -> *). MonadState s m => m s get forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algLatestLuaValueInstance :: HashMap Text LuaValueInstance +luaAlgBuilder{algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Text -name LuaValueInstance -lvv HashMap Text LuaValueInstance -algLatestLuaValueInstance} - addItemToVars :: LuaValueInstance -> m () -addItemToVars LuaValueInstance -name = do - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{HashMap LuaValueInstance [Text] +name LuaValueInstance +lvv HashMap Text LuaValueInstance +algLatestLuaValueInstance} + addItemToVars :: LuaValueInstance -> m () +addItemToVars LuaValueInstance +name = do + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{HashMap LuaValueInstance [Text] algVars :: HashMap LuaValueInstance [Text] algVars :: forall x. LuaAlgBuilder x -> HashMap LuaValueInstance [Text] -algVars} <- forall s (m :: * -> *). MonadState s m => m s +algVars} <- forall s (m :: * -> *). MonadState s m => m s get forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algVars :: HashMap LuaValueInstance [Text] +luaAlgBuilder{algVars :: HashMap LuaValueInstance [Text] algVars = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert LuaValueInstance -name [] HashMap LuaValueInstance [Text] -algVars} +name [] HashMap LuaValueInstance [Text] +algVars} addVariableAccess :: Text -> m Text -addVariableAccess Text -name = do - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{HashMap LuaValueInstance [Text] +addVariableAccess Text +name = do + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{HashMap LuaValueInstance [Text] algVars :: HashMap LuaValueInstance [Text] algVars :: forall x. LuaAlgBuilder x -> HashMap LuaValueInstance [Text] -algVars} <- forall s (m :: * -> *). MonadState s m => m s +algVars} <- forall s (m :: * -> *). MonadState s m => m s get - LuaValueInstance -luaValueInstance <- forall {m :: * -> *} {x}. + LuaValueInstance +luaValueInstance <- forall {m :: * -> *} {x}. MonadState (LuaAlgBuilder x) m => Text -> m LuaValueInstance getLatestLuaValueInstanceByName Text -name +name case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup LuaValueInstance -luaValueInstance HashMap LuaValueInstance [Text] -algVars of - Just [Text] -value -> do - let len :: Int -len = forall (t :: * -> *) a. Foldable t => t a -> Int +luaValueInstance HashMap LuaValueInstance [Text] +algVars of + Just [Text] +value -> do + let len :: Int +len = forall (t :: * -> *) a. Foldable t => t a -> Int length [Text] -value - let resultName :: Text -resultName = forall {a}. Show a => LuaValueInstance -> a -> Text +value + let resultName :: Text +resultName = forall {a}. Show a => LuaValueInstance -> a -> Text getUniqueLuaVariableName LuaValueInstance -luaValueInstance Int -len +luaValueInstance Int +len forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algVars :: HashMap LuaValueInstance [Text] +luaAlgBuilder{algVars :: HashMap LuaValueInstance [Text] algVars = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert LuaValueInstance -luaValueInstance (Text -resultName forall a. a -> [a] -> [a] +luaValueInstance (Text +resultName forall a. a -> [a] -> [a] : [Text] -value) HashMap LuaValueInstance [Text] -algVars} +value) HashMap LuaValueInstance [Text] +algVars} forall (m :: * -> *) a. Monad m => a -> m a return Text -resultName +resultName Maybe [Text] Nothing -> forall a. HasCallStack => String -> a error (String @@ -1515,29 +1515,29 @@ <> forall a. Show a => a -> String show (LuaValueInstance -> Text lviName LuaValueInstance -luaValueInstance) forall a. Semigroup a => a -> a -> a +luaValueInstance) forall a. Semigroup a => a -> a -> a <> String " not found. Constants list : " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show HashMap LuaValueInstance [Text] -algVars) +algVars) getLatestLuaValueInstanceByName :: Text -> m LuaValueInstance -getLatestLuaValueInstanceByName Text -name = do - LuaAlgBuilder{HashMap Text LuaValueInstance +getLatestLuaValueInstanceByName Text +name = do + LuaAlgBuilder{HashMap Text LuaValueInstance algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance -algLatestLuaValueInstance} <- forall s (m :: * -> *). MonadState s m => m s +algLatestLuaValueInstance} <- forall s (m :: * -> *). MonadState s m => m s get case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup Text -name HashMap Text LuaValueInstance -algLatestLuaValueInstance of - Just LuaValueInstance -value -> forall (m :: * -> *) a. Monad m => a -> m a +name HashMap Text LuaValueInstance +algLatestLuaValueInstance of + Just LuaValueInstance +value -> forall (m :: * -> *) a. Monad m => a -> m a return LuaValueInstance -value +value Maybe LuaValueInstance Nothing -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b @@ -1545,82 +1545,82 @@ "variable not found : '" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Text -name forall a. Semigroup a => a -> a -> a +name forall a. Semigroup a => a -> a -> a <> String "'." addAlias :: Text -> Text -> m () -addAlias Text -from Text -to = do - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder@LuaAlgBuilder{HashMap Text LuaValueInstance +addAlias Text +from Text +to = do + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder@LuaAlgBuilder{HashMap Text LuaValueInstance algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance -algLatestLuaValueInstance} <- forall s (m :: * -> *). MonadState s m => m s +algLatestLuaValueInstance} <- forall s (m :: * -> *). MonadState s m => m s get case forall {k} {v}. Hashable k => k -> HashMap k v -> Maybe v getLuaValueByName Text -to HashMap Text LuaValueInstance -algLatestLuaValueInstance of - Just LuaValueInstance -value -> do +to HashMap Text LuaValueInstance +algLatestLuaValueInstance of + Just LuaValueInstance +value -> do forall s (m :: * -> *). MonadState s m => s -> m () put LuaAlgBuilder x -luaAlgBuilder{algLatestLuaValueInstance :: HashMap Text LuaValueInstance +luaAlgBuilder{algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Text -from LuaValueInstance -value HashMap Text LuaValueInstance -algLatestLuaValueInstance} +from LuaValueInstance +value HashMap Text LuaValueInstance +algLatestLuaValueInstance} Maybe LuaValueInstance Nothing -> forall a. HasCallStack => String -> a error (String "variable '" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Text -to forall a. Semigroup a => a -> a -> a +to forall a. Semigroup a => a -> a -> a <> String " not found. Constants list : " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show HashMap Text LuaValueInstance -algLatestLuaValueInstance) +algLatestLuaValueInstance) getLuaValueByName :: k -> HashMap k v -> Maybe v -getLuaValueByName k -name HashMap k v -buffer = forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v +getLuaValueByName k +name HashMap k v +buffer = forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup k -name HashMap k v -buffer +name HashMap k v +buffer buildAlg :: Block -> LuaAlgBuilder x -buildAlg Block -syntaxTree = +buildAlg Block +syntaxTree = forall a b c. (a -> b -> c) -> b -> a -> c flip forall s a. State s a -> s -> s execState forall {x}. LuaAlgBuilder x -emptyLuaAlgBuilder forall a b. (a -> b) -> a -> b +emptyLuaAlgBuilder forall a b. (a -> b) -> a -> b $ do - let (Text -startupFunctionName, Stat -startupFunctionCall, Stat -startupFunctionDef) = Block -> (Text, Stat, Stat) + let (Text +startupFunctionName, Stat +startupFunctionCall, Stat +startupFunctionDef) = Block -> (Text, Stat, Stat) findStartupFunction Block -syntaxTree - statements :: [Stat] -statements = Stat -> [Stat] -funAssignStatements Stat -startupFunctionDef +syntaxTree + statements :: [Stat] +statements = Stat -> [Stat] +funAssignStatements Stat +startupFunctionDef String _ <- forall {m :: * -> *} {x} {b}. (MonadState (LuaAlgBuilder x) m, IsString b) => Stat -> Stat -> m b addStartupFuncArgs Stat -startupFunctionCall Stat -startupFunctionDef +startupFunctionCall Stat +startupFunctionDef forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () @@ -1628,11 +1628,11 @@ (MonadState (LuaAlgBuilder x) m, Read x, Show x) => Text -> Stat -> m () processStatement Text -startupFunctionName) [Stat] -statements +startupFunctionName) [Stat] +statements where - emptyLuaAlgBuilder :: LuaAlgBuilder x -emptyLuaAlgBuilder = + emptyLuaAlgBuilder :: LuaAlgBuilder x +emptyLuaAlgBuilder = LuaAlgBuilder { algGraph :: [LuaStatement x] algGraph = [] @@ -1654,88 +1654,88 @@ , algTraceFuncs :: [([Text], Maybe Text)] algTraceFuncs = [] } - funAssignStatements :: Stat -> [Stat] -funAssignStatements (FunAssign FunName + funAssignStatements :: Stat -> [Stat] +funAssignStatements (FunAssign FunName _ (FunBody [Name] _ Bool -_ (Block [Stat] -statements Maybe [Exp] +_ (Block [Stat] +statements Maybe [Exp] _))) = [Stat] -statements - funAssignStatements Stat +statements + funAssignStatements Stat _ = forall a. HasCallStack => String -> a error String "funAssignStatements : not a function assignment" findStartupFunction :: Block -> (Text, Stat, Stat) -findStartupFunction (Block [Stat] -statements Maybe [Exp] +findStartupFunction (Block [Stat] +statements Maybe [Exp] Nothing) - | [Stat -call] <- forall a. (a -> Bool) -> [a] -> [a] + | [Stat +call] <- forall a. (a -> Bool) -> [a] -> [a] filter (\case FunCall{} -> Bool True; Stat _ -> Bool False) [Stat] -statements - , [Stat -funAssign] <- forall a. (a -> Bool) -> [a] -> [a] +statements + , [Stat +funAssign] <- forall a. (a -> Bool) -> [a] -> [a] filter (\case FunAssign{} -> Bool True; Stat _ -> Bool False) [Stat] -statements - , (FunCall (NormalFunCall (PEVar (VarName (Name Text -fnCall))) FunArg +statements + , (FunCall (NormalFunCall (PEVar (VarName (Name Text +fnCall))) FunArg _)) <- Stat -call - , (FunAssign (FunName (Name Text -fnAssign) [Name] +call + , (FunAssign (FunName (Name Text +fnAssign) [Name] _ Maybe Name _) FunBody _) <- Stat -funAssign +funAssign , Text -fnCall forall a. Eq a => a -> a -> Bool +fnCall forall a. Eq a => a -> a -> Bool == Text -fnAssign = +fnAssign = (Text -fnCall, Stat -call, Stat -funAssign) +fnCall, Stat +call, Stat +funAssign) findStartupFunction Block _ = forall a. HasCallStack => String -> a error String "can't find startup function in lua source code" getLuaBlockFromSources :: Text -> Block -getLuaBlockFromSources Text -src = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c -either (\(SourceRange, String) -e -> forall a. HasCallStack => String -> a +getLuaBlockFromSources Text +src = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c +either (\(SourceRange, String) +e -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "Exception while parsing Lua sources: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show (SourceRange, String) -e) forall a. a -> a +e) forall a. a -> a id forall a b. (a -> b) -> a -> b $ forall a. Parser a -> Text -> Either (SourceRange, String) a parseText Parser Block chunk Text -src +src alg2graph :: LuaAlgBuilder x -> DataFlowGraph v x -alg2graph LuaAlgBuilder{[LuaStatement x] +alg2graph LuaAlgBuilder{[LuaStatement x] algGraph :: [LuaStatement x] algGraph :: forall x. LuaAlgBuilder x -> [LuaStatement x] -algGraph, HashMap Text LuaValueInstance +algGraph, HashMap Text LuaValueInstance algLatestLuaValueInstance :: HashMap Text LuaValueInstance algLatestLuaValueInstance :: forall x. LuaAlgBuilder x -> HashMap Text LuaValueInstance -algLatestLuaValueInstance, HashMap LuaValueInstance [Text] +algLatestLuaValueInstance, HashMap LuaValueInstance [Text] algVars :: HashMap LuaValueInstance [Text] algVars :: forall x. LuaAlgBuilder x -> HashMap LuaValueInstance [Text] -algVars} = forall a b c. (a -> b -> c) -> b -> a -> c +algVars} = forall a b c. (a -> b -> c) -> b -> a -> c flip forall s a. State s a -> s -> s execState (forall v x. [DataFlowGraph v x] -> DataFlowGraph v x DFCluster []) forall a b. (a -> b) -> a -> b @@ -1747,14 +1747,14 @@ (MonadState (DataFlowGraph v x) m, ToString v, Suffix v, Hashable v, Val x, IsString v, IsString b, Typeable v, Ord v) => LuaStatement x -> m b -addToGraph [LuaStatement x] -algGraph +addToGraph [LuaStatement x] +algGraph where - addToGraph :: LuaStatement x -> m b -addToGraph LuaStatement x -item = do - DataFlowGraph v x -graph <- forall s (m :: * -> *). MonadState s m => m s + addToGraph :: LuaStatement x -> m b +addToGraph LuaStatement x +item = do + DataFlowGraph v x +graph <- forall s (m :: * -> *). MonadState s m => m s get forall s (m :: * -> *). MonadState s m => s -> m () put (forall {v} {x}. F v x -> DataFlowGraph v x -> DataFlowGraph v x @@ -1762,259 +1762,259 @@ (IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => LuaStatement x -> F v x -function2nitta LuaStatement x -item) DataFlowGraph v x -graph) +function2nitta LuaStatement x +item) DataFlowGraph v x +graph) forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a. IsString a => String -> a fromString String "" - function2nitta :: LuaStatement x -> F v x -function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text + function2nitta :: LuaStatement x -> F v x +function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "buffer", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -i], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -o], fValues :: forall x. LuaStatement x -> [x] +fIn = [Text +i], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +o], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => v -> [v] -> F v x F.buffer (forall {a}. IsString a => Text -> a fromText Text -i) forall a b. (a -> b) -> a -> b +i) forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -o - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +output LuaValueInstance +o + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "brokenBuffer", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -i], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -o], fValues :: forall x. LuaStatement x -> [x] +fIn = [Text +i], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +o], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => v -> [v] -> F v x F.brokenBuffer (forall {a}. IsString a => Text -> a fromText Text -i) forall a b. (a -> b) -> a -> b +i) forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -o - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +output LuaValueInstance +o + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "constant", fIn :: forall x. LuaStatement x -> [Text] fIn = [], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -o], fValues :: forall x. LuaStatement x -> [x] -fValues = [x -x], fInt :: forall x. LuaStatement x -> [Int] +fOut = [LuaValueInstance +o], fValues :: forall x. LuaStatement x -> [x] +fValues = [x +x], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => x -> [v] -> F v x F.constant x -x forall a b. (a -> b) -> a -> b +x forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -o - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +output LuaValueInstance +o + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "send", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -i], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fIn = [Text +i], fOut :: forall x. LuaStatement x -> [LuaValueInstance] fOut = [], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => v -> F v x F.send (forall {a}. IsString a => Text -> a fromText Text -i) - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +i) + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "add", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -a, Text -b], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -c], fValues :: forall x. LuaStatement x -> [x] +fIn = [Text +a, Text +b], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +c], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.add (forall {a}. IsString a => Text -> a fromText Text -a) (forall {a}. IsString a => Text -> a +a) (forall {a}. IsString a => Text -> a fromText Text -b) forall a b. (a -> b) -> a -> b +b) forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -c - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +output LuaValueInstance +c + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "sub", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -a, Text -b], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -c], fValues :: forall x. LuaStatement x -> [x] +fIn = [Text +a, Text +b], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +c], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.sub (forall {a}. IsString a => Text -> a fromText Text -a) (forall {a}. IsString a => Text -> a +a) (forall {a}. IsString a => Text -> a fromText Text -b) forall a b. (a -> b) -> a -> b +b) forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -c - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +output LuaValueInstance +c + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "multiply", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -a, Text -b], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -c], fValues :: forall x. LuaStatement x -> [x] +fIn = [Text +a, Text +b], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +c], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.multiply (forall {a}. IsString a => Text -> a fromText Text -a) (forall {a}. IsString a => Text -> a +a) (forall {a}. IsString a => Text -> a fromText Text -b) forall a b. (a -> b) -> a -> b +b) forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -c - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +output LuaValueInstance +c + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "divide", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -d, Text -n], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -q], fValues :: forall x. LuaStatement x -> [x] +fIn = [Text +d, Text +n], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +q], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => v -> v -> [v] -> [v] -> F v x F.division (forall {a}. IsString a => Text -> a fromText Text -d) (forall {a}. IsString a => Text -> a +d) (forall {a}. IsString a => Text -> a fromText Text -n) (forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -q) [] - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +n) (forall {b}. IsString b => LuaValueInstance -> [b] +output LuaValueInstance +q) [] + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "divide", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -d, Text -n], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -q, LuaValueInstance -r], fValues :: forall x. LuaStatement x -> [x] +fIn = [Text +d, Text +n], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +q, LuaValueInstance +r], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => v -> v -> [v] -> [v] -> F v x F.division (forall {a}. IsString a => Text -> a fromText Text -d) (forall {a}. IsString a => Text -> a +d) (forall {a}. IsString a => Text -> a fromText Text -n) (forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -q) (forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -r) - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +n) (forall {b}. IsString b => LuaValueInstance -> [b] +output LuaValueInstance +q) (forall {b}. IsString b => LuaValueInstance -> [b] +output LuaValueInstance +r) + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "neg", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -i], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -o], fValues :: forall x. LuaStatement x -> [x] +fIn = [Text +i], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +o], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => v -> [v] -> F v x F.neg (forall {a}. IsString a => Text -> a fromText Text -i) forall a b. (a -> b) -> a -> b +i) forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -o - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +output LuaValueInstance +o + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "receive", fIn :: forall x. LuaStatement x -> [Text] fIn = [], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -o], fValues :: forall x. LuaStatement x -> [x] +fOut = [LuaValueInstance +o], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => [v] -> F v x F.receive forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -o - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +output LuaValueInstance +o + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "shiftL", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -a], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -c], fValues :: forall x. LuaStatement x -> [x] +fIn = [Text +a], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +c], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] -fInt = [Int -s]} = forall v x. (Var v, Val x) => Int -> v -> [v] -> F v x +fInt = [Int +s]} = forall v x. (Var v, Val x) => Int -> v -> [v] -> F v x F.shiftL Int -s (forall {a}. IsString a => Text -> a +s (forall {a}. IsString a => Text -> a fromText Text -a) forall a b. (a -> b) -> a -> b +a) forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -c - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +output LuaValueInstance +c + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "shiftR", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -a], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -c], fValues :: forall x. LuaStatement x -> [x] +fIn = [Text +a], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +c], fValues :: forall x. LuaStatement x -> [x] fValues = [], fInt :: forall x. LuaStatement x -> [Int] -fInt = [Int -s]} = forall v x. (Var v, Val x) => Int -> v -> [v] -> F v x +fInt = [Int +s]} = forall v x. (Var v, Val x) => Int -> v -> [v] -> F v x F.shiftR Int -s (forall {a}. IsString a => Text -> a +s (forall {a}. IsString a => Text -> a fromText Text -a) forall a b. (a -> b) -> a -> b +a) forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -c - function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text +output LuaValueInstance +c + function2nitta LuaStatement{fName :: forall x. LuaStatement x -> Text fName = Text "loop", fIn :: forall x. LuaStatement x -> [Text] -fIn = [Text -a], fOut :: forall x. LuaStatement x -> [LuaValueInstance] -fOut = [LuaValueInstance -c], fValues :: forall x. LuaStatement x -> [x] -fValues = [x -x], fInt :: forall x. LuaStatement x -> [Int] +fIn = [Text +a], fOut :: forall x. LuaStatement x -> [LuaValueInstance] +fOut = [LuaValueInstance +c], fValues :: forall x. LuaStatement x -> [x] +fValues = [x +x], fInt :: forall x. LuaStatement x -> [Int] fInt = []} = forall v x. (Var v, Val x) => x -> v -> [v] -> F v x F.loop x -x (forall {a}. IsString a => Text -> a +x (forall {a}. IsString a => Text -> a fromText Text -a) forall a b. (a -> b) -> a -> b +a) forall a b. (a -> b) -> a -> b $ forall {b}. IsString b => LuaValueInstance -> [b] -output LuaValueInstance -c - function2nitta LuaStatement x -f = forall a. HasCallStack => String -> a +output LuaValueInstance +c + function2nitta LuaStatement x +f = forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "function not found: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show LuaStatement x -f - output :: LuaValueInstance -> [b] -output LuaValueInstance -v = +f + output :: LuaValueInstance -> [b] +output LuaValueInstance +v = case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup LuaValueInstance -v HashMap LuaValueInstance [Text] -algVars of - Just [Text] -names -> forall a b. (a -> b) -> [a] -> [b] +v HashMap LuaValueInstance [Text] +algVars of + Just [Text] +names -> forall a b. (a -> b) -> [a] -> [b] map forall {a}. IsString a => Text -> a fromText [Text] -names +names Maybe [Text] _ -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b @@ -2022,38 +2022,38 @@ "variable not found : " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show LuaValueInstance -v forall a. Semigroup a => a -> a -> a +v forall a. Semigroup a => a -> a -> a <> String ", buffer : " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show HashMap Text LuaValueInstance -algLatestLuaValueInstance +algLatestLuaValueInstance -translateLua :: (Var v, Val x) => T.Text -> FrontendResult v x +translateLua :: (Var v, Val x) => T.Text -> FrontendResult v x translateLua :: forall v x. (Var v, Val x) => Text -> FrontendResult v x -translateLua Text -src = - let syntaxTree :: Block -syntaxTree = Text -> Block +translateLua Text +src = + let syntaxTree :: Block +syntaxTree = Text -> Block getLuaBlockFromSources Text -src - luaAlgBuilder :: LuaAlgBuilder x -luaAlgBuilder = forall {x}. (Read x, Show x) => Block -> LuaAlgBuilder x +src + luaAlgBuilder :: LuaAlgBuilder x +luaAlgBuilder = forall {x}. (Read x, Show x) => Block -> LuaAlgBuilder x buildAlg Block -syntaxTree - frTrace :: [TraceVar] -frTrace = [([Text], Maybe Text)] -> [TraceVar] +syntaxTree + frTrace :: [TraceVar] +frTrace = [([Text], Maybe Text)] -> [TraceVar] getFrTrace forall a b. (a -> b) -> a -> b $ forall x. LuaAlgBuilder x -> [([Text], Maybe Text)] -getAllTraceFuncs LuaAlgBuilder x -luaAlgBuilder +getAllTraceFuncs LuaAlgBuilder x +luaAlgBuilder in FrontendResult{frDataFlow :: DataFlowGraph v x frDataFlow = forall {v} {x}. (ToString v, Suffix v, Hashable v, Val x, IsString v, Typeable v, Ord v) => LuaAlgBuilder x -> DataFlowGraph v x alg2graph LuaAlgBuilder x -luaAlgBuilder, [TraceVar] +luaAlgBuilder, [TraceVar] frTrace :: [TraceVar] frTrace :: [TraceVar] frTrace, frPrettyLog :: [HashMap v x] -> [HashMap String String] @@ -2061,51 +2061,51 @@ (Real t, Show t, PrintfType v, PrintfArg t, ToString a) => [TraceVar] -> [HashMap a t] -> [HashMap String v] prettyLog [TraceVar] -frTrace} +frTrace} where - getAllTraceFuncs :: LuaAlgBuilder x -> [([Text], Maybe Text)] -getAllTraceFuncs LuaAlgBuilder x -algBuilder = - let traceFuncs :: [([Text], Maybe Text)] -traceFuncs = forall x. LuaAlgBuilder x -> [([Text], Maybe Text)] + getAllTraceFuncs :: LuaAlgBuilder x -> [([Text], Maybe Text)] +getAllTraceFuncs LuaAlgBuilder x +algBuilder = + let traceFuncs :: [([Text], Maybe Text)] +traceFuncs = forall x. LuaAlgBuilder x -> [([Text], Maybe Text)] algTraceFuncs LuaAlgBuilder x -algBuilder - startupArgNames :: [Text] -startupArgNames = +algBuilder + startupArgNames :: [Text] +startupArgNames = forall a b. (a -> b) -> [a] -> [b] map - (\(Int -_idx, (Text -varName, Text -_initValue)) -> Text -varName) + (\(Int +_idx, (Text +varName, Text +_initValue)) -> Text +varName) forall a b. (a -> b) -> a -> b $ forall k v. HashMap k v -> [(k, v)] HM.toList forall a b. (a -> b) -> a -> b $ forall x. LuaAlgBuilder x -> HashMap Int (Text, Text) algStartupArgs LuaAlgBuilder x -algBuilder +algBuilder in forall a b. (a -> b) -> [a] -> [b] -map (\Text -name -> ([Text -name forall a. Semigroup a => a -> a -> a +map (\Text +name -> ([Text +name forall a. Semigroup a => a -> a -> a <> Text "^0"], forall a. Maybe a Nothing)) [Text] -startupArgNames forall a. Semigroup a => a -> a -> a +startupArgNames forall a. Semigroup a => a -> a -> a <> [([Text], Maybe Text)] -traceFuncs +traceFuncs getFrTrace :: [([Text], Maybe Text)] -> [TraceVar] -getFrTrace [([Text], Maybe Text)] -traceFuncs = [Maybe Text -> Text -> TraceVar +getFrTrace [([Text], Maybe Text)] +traceFuncs = [Maybe Text -> Text -> TraceVar TraceVar Maybe Text -fmt Text -var | ([Text] -vars, Maybe Text -fmt) <- [([Text], Maybe Text)] -traceFuncs, Text -var <- [Text] -vars] +fmt Text +var | ([Text] +vars, Maybe Text +fmt) <- [([Text], Maybe Text)] +traceFuncs, Text +var <- [Text] +vars] \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Frontends.XMILE.DocumentParser.html b/haddock/nitta/src/NITTA.Frontends.XMILE.DocumentParser.html index beab6866b..7113a9c6b 100644 --- a/haddock/nitta/src/NITTA.Frontends.XMILE.DocumentParser.html +++ b/haddock/nitta/src/NITTA.Frontends.XMILE.DocumentParser.html @@ -36,7 +36,7 @@ , Content -> [Stock] xcStocks :: [Stock] } - deriving (Int -> Content -> ShowS + deriving (Int -> Content -> ShowS [Content] -> ShowS Content -> String forall a. @@ -47,7 +47,7 @@ $cshow :: Content -> String showsPrec :: Int -> Content -> ShowS $cshowsPrec :: Int -> Content -> ShowS -Show, Content -> Content -> Bool +Show, Content -> Content -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Content -> Content -> Bool $c/= :: Content -> Content -> Bool @@ -63,7 +63,7 @@ , SimSpec -> Double xssDt :: Double } - deriving (Int -> SimSpec -> ShowS + deriving (Int -> SimSpec -> ShowS [SimSpec] -> ShowS SimSpec -> String forall a. @@ -74,7 +74,7 @@ $cshow :: SimSpec -> String showsPrec :: Int -> SimSpec -> ShowS $cshowsPrec :: Int -> SimSpec -> ShowS -Show, SimSpec -> SimSpec -> Bool +Show, SimSpec -> SimSpec -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: SimSpec -> SimSpec -> Bool $c/= :: SimSpec -> SimSpec -> Bool @@ -85,7 +85,7 @@ newtype Model = Model {Model -> Variables xmVariables :: Variables} - deriving (Int -> Model -> ShowS + deriving (Int -> Model -> ShowS [Model] -> ShowS Model -> String forall a. @@ -96,7 +96,7 @@ $cshow :: Model -> String showsPrec :: Int -> Model -> ShowS $cshowsPrec :: Int -> Model -> ShowS -Show, Model -> Model -> Bool +Show, Model -> Model -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Model -> Model -> Bool $c/= :: Model -> Model -> Bool @@ -112,7 +112,7 @@ , Variables -> [Stock] xvStocks :: [Stock] } - deriving (Int -> Variables -> ShowS + deriving (Int -> Variables -> ShowS [Variables] -> ShowS Variables -> String forall a. @@ -123,7 +123,7 @@ $cshow :: Variables -> String showsPrec :: Int -> Variables -> ShowS $cshowsPrec :: Int -> Variables -> ShowS -Show, Variables -> Variables -> Bool +Show, Variables -> Variables -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Variables -> Variables -> Bool $c/= :: Variables -> Variables -> Bool @@ -137,7 +137,7 @@ , Flow -> XMExpr xfEquation :: XMExpr } - deriving (Int -> Flow -> ShowS + deriving (Int -> Flow -> ShowS [Flow] -> ShowS Flow -> String forall a. @@ -148,7 +148,7 @@ $cshow :: Flow -> String showsPrec :: Int -> Flow -> ShowS $cshowsPrec :: Int -> Flow -> ShowS -Show, Flow -> Flow -> Bool +Show, Flow -> Flow -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Flow -> Flow -> Bool $c/= :: Flow -> Flow -> Bool @@ -162,7 +162,7 @@ , Aux -> XMExpr xaEquation :: XMExpr } - deriving (Int -> Aux -> ShowS + deriving (Int -> Aux -> ShowS [Aux] -> ShowS Aux -> String forall a. @@ -173,7 +173,7 @@ $cshow :: Aux -> String showsPrec :: Int -> Aux -> ShowS $cshowsPrec :: Int -> Aux -> ShowS -Show, Aux -> Aux -> Bool +Show, Aux -> Aux -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Aux -> Aux -> Bool $c/= :: Aux -> Aux -> Bool @@ -191,7 +191,7 @@ , Stock -> Maybe Text xsOutflow :: Maybe T.Text } - deriving (Int -> Stock -> ShowS + deriving (Int -> Stock -> ShowS [Stock] -> ShowS Stock -> String forall a. @@ -202,7 +202,7 @@ $cshow :: Stock -> String showsPrec :: Int -> Stock -> ShowS $cshowsPrec :: Int -> Stock -> ShowS -Show, Stock -> Stock -> Bool +Show, Stock -> Stock -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Stock -> Stock -> Bool $c/= :: Stock -> Stock -> Bool @@ -210,13 +210,13 @@ $c== :: Stock -> Stock -> Bool Eq) -data AlgState v x = AlgState +data AlgState v x = AlgState { forall v x. AlgState v x -> SimSpec xasSimSpec :: SimSpec , forall v x. AlgState v x -> Model xasModel :: Model } - deriving (Int -> AlgState v x -> ShowS + deriving (Int -> AlgState v x -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x. Int -> AlgState v x -> ShowS @@ -228,7 +228,7 @@ $cshow :: forall v x. AlgState v x -> String showsPrec :: Int -> AlgState v x -> ShowS $cshowsPrec :: forall v x. Int -> AlgState v x -> ShowS -Show, AlgState v x -> AlgState v x -> Bool +Show, AlgState v x -> AlgState v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. AlgState v x -> AlgState v x -> Bool /= :: AlgState v x -> AlgState v x -> Bool @@ -238,8 +238,8 @@ Eq) parseDocument :: String -> Content -parseDocument String -src = +parseDocument String +src = forall a. [a] -> a head forall a b. (a -> b) -> a -> b $ @@ -255,41 +255,41 @@ forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c ->>> proc XmlTree -st -> do - SimSpec -xcSimSpecs <- LA XmlTree SimSpec +>>> proc XmlTree +st -> do + SimSpec +xcSimSpecs <- LA XmlTree SimSpec parseSimSpec -< XmlTree -st - [Flow] -xcFlows <- LA XmlTree [Flow] +st + [Flow] +xcFlows <- LA XmlTree [Flow] parseFlows -< XmlTree -st - [Aux] -xcAuxs <- LA XmlTree [Aux] +st + [Aux] +xcAuxs <- LA XmlTree [Aux] parseAuxs -< XmlTree -st - [Stock] -xcStocks <- LA XmlTree [Stock] +st + [Stock] +xcStocks <- LA XmlTree [Stock] parseStocks -< XmlTree -st +st forall (a :: * -> * -> *) b. Arrow a => a b b returnA -< Content{SimSpec xcSimSpecs :: SimSpec xcSimSpecs :: SimSpec -xcSimSpecs, [Flow] +xcSimSpecs, [Flow] xcFlows :: [Flow] xcFlows :: [Flow] -xcFlows, [Aux] +xcFlows, [Aux] xcAuxs :: [Aux] xcAuxs :: [Aux] -xcAuxs, [Stock] +xcAuxs, [Stock] xcStocks :: [Stock] xcStocks :: [Stock] -xcStocks} +xcStocks} ) String -src +src parseSimSpec :: LA XmlTree SimSpec parseSimSpec = @@ -301,10 +301,10 @@ forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c ->>> proc XmlTree -x -> do - String -stop <- LA XmlTree String +>>> proc XmlTree +x -> do + String +stop <- LA XmlTree String text forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c @@ -313,9 +313,9 @@ String -> a XmlTree XmlTree atTag String "stop" -< XmlTree -x - String -start <- LA XmlTree String +x + String +start <- LA XmlTree String text forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c @@ -324,9 +324,9 @@ String -> a XmlTree XmlTree atTag String "start" -< XmlTree -x - String -dt <- LA XmlTree String +x + String +dt <- LA XmlTree String text forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c @@ -335,18 +335,18 @@ String -> a XmlTree XmlTree atTag String "dt" -< XmlTree -x +x forall (a :: * -> * -> *) b. Arrow a => a b b returnA -< SimSpec{xssStart :: Double xssStart = forall a. Read a => String -> a read String -start, xssStop :: Double +start, xssStop :: Double xssStop = forall a. Read a => String -> a read String -stop, xssDt :: Double +stop, xssDt :: Double xssDt = forall a. Read a => String -> a read String -dt} +dt} parseFlows :: LA XmlTree [Flow] parseFlows = @@ -368,10 +368,10 @@ forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c ->>> proc XmlTree -flow -> do - String -eqn <- LA XmlTree String +>>> proc XmlTree +flow -> do + String +eqn <- LA XmlTree String text forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c @@ -380,22 +380,22 @@ String -> a XmlTree XmlTree atTag String "eqn" -< XmlTree -flow - String -name <- forall {a :: * -> * -> *}. ArrowXml a => String -> a XmlTree String +flow + String +name <- forall {a :: * -> * -> *}. ArrowXml a => String -> a XmlTree String atAttr String "name" -< XmlTree -flow +flow forall (a :: * -> * -> *) b. Arrow a => a b b returnA -< Flow{xfEquation :: XMExpr xfEquation = String -> XMExpr parseXmileEquation String -eqn, xfName :: Text +eqn, xfName :: Text xfName = Text -> Text replaceSpaces forall a b. (a -> b) -> a -> b $ String -> Text T.pack String -name} +name} ) parseAuxs :: LA XmlTree [Aux] @@ -418,10 +418,10 @@ forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c ->>> proc XmlTree -aux -> do - String -eqn <- LA XmlTree String +>>> proc XmlTree +aux -> do + String +eqn <- LA XmlTree String text forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c @@ -430,22 +430,22 @@ String -> a XmlTree XmlTree atTag String "eqn" -< XmlTree -aux - String -name <- forall {a :: * -> * -> *}. ArrowXml a => String -> a XmlTree String +aux + String +name <- forall {a :: * -> * -> *}. ArrowXml a => String -> a XmlTree String atAttr String "name" -< XmlTree -aux +aux forall (a :: * -> * -> *) b. Arrow a => a b b returnA -< Aux{xaEquation :: XMExpr xaEquation = String -> XMExpr parseXmileEquation String -eqn, xaName :: Text +eqn, xaName :: Text xaName = Text -> Text replaceSpaces forall a b. (a -> b) -> a -> b $ String -> Text T.pack String -name} +name} ) parseStocks :: LA XmlTree [Stock] @@ -468,10 +468,10 @@ forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c ->>> proc XmlTree -stock -> do - String -eqn <- LA XmlTree String +>>> proc XmlTree +stock -> do + String +eqn <- LA XmlTree String text forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c @@ -480,22 +480,22 @@ String -> a XmlTree XmlTree atTag String "eqn" -< XmlTree -stock - Maybe Text -outflow <- String -> LA XmlTree (Maybe Text) -getTagOrNothing String +stock + Maybe Text +outflow <- String -> LA XmlTree (Maybe Text) +getTagOrNothing String "outflow" -< XmlTree -stock - Maybe Text -inflow <- String -> LA XmlTree (Maybe Text) -getTagOrNothing String +stock + Maybe Text +inflow <- String -> LA XmlTree (Maybe Text) +getTagOrNothing String "inflow" -< XmlTree -stock - String -name <- forall {a :: * -> * -> *}. ArrowXml a => String -> a XmlTree String +stock + String +name <- forall {a :: * -> * -> *}. ArrowXml a => String -> a XmlTree String atAttr String "name" -< XmlTree -stock +stock forall (a :: * -> * -> *) b. Arrow a => a b b returnA -< @@ -503,34 +503,34 @@ { xsEquation :: XMExpr xsEquation = String -> XMExpr parseXmileEquation String -eqn +eqn , xsName :: Text xsName = Text -> Text replaceSpaces forall a b. (a -> b) -> a -> b $ String -> Text T.pack String -name +name , xsOutflow :: Maybe Text xsOutflow = Text -> Text replaceSpaces forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe Text -outflow +outflow , xsInflow :: Maybe Text xsInflow = Text -> Text replaceSpaces forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe Text -inflow +inflow } ) where - getTagOrNothing :: String -> LA XmlTree (Maybe Text) -getTagOrNothing String -name = + getTagOrNothing :: String -> LA XmlTree (Maybe Text) +getTagOrNothing String +name = (forall {a :: * -> * -> *}. ArrowXml a => String -> a XmlTree XmlTree atTag String -name forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). +name forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c >>> LA XmlTree String @@ -538,11 +538,11 @@ Category cat => cat a b -> cat b c -> cat a c >>> forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c -arr (\String -x -> forall a. a -> Maybe a +arr (\String +x -> forall a. a -> Maybe a Just (String -> Text T.pack String -x))) +x))) forall (a :: * -> * -> *) b c. ArrowIf a => a b c -> a b c -> a b c `orElse` forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c arr (forall a b. a -> b -> a @@ -550,8 +550,8 @@ Nothing) replaceSpaces :: Text -> Text -replaceSpaces Text -str = (Char -> Bool) -> Text -> Text +replaceSpaces Text +str = (Char -> Bool) -> Text -> Text T.filter (forall a. Eq a => a -> a -> Bool /= Char '"') forall a b. (a -> b) -> a -> b @@ -559,11 +559,11 @@ T.replace Text " " Text "_" Text -str +str atTag :: String -> a XmlTree XmlTree -atTag String -tag = forall (a :: * -> * -> *) (t :: * -> *) b c. +atTag String +tag = forall (a :: * -> * -> *) (t :: * -> *) b c. (ArrowTree a, Tree t) => a (t b) c -> a (t b) c deep (forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree @@ -574,10 +574,10 @@ ArrowXml a => String -> a XmlTree XmlTree hasName String -tag) +tag) atAttr :: String -> a XmlTree String -atAttr String -attrName = forall (a :: * -> * -> *) (t :: * -> *) b c. +atAttr String +attrName = forall (a :: * -> * -> *) (t :: * -> *) b c. (ArrowTree a, Tree t) => a (t b) c -> a (t b) c deep (forall (a :: * -> * -> *). ArrowXml a => a XmlTree XmlTree @@ -586,7 +586,7 @@ cat a b -> cat b c -> cat a c >>> forall {a :: * -> * -> *}. ArrowXml a => String -> a XmlTree String getAttrValue String -attrName) +attrName) text :: LA XmlTree String text = forall (a :: * -> * -> *) (t :: * -> *) b. (ArrowTree a, Tree t) => diff --git a/haddock/nitta/src/NITTA.Frontends.XMILE.Frontend.html b/haddock/nitta/src/NITTA.Frontends.XMILE.Frontend.html index a541bfac6..cfe5aa066 100644 --- a/haddock/nitta/src/NITTA.Frontends.XMILE.Frontend.html +++ b/haddock/nitta/src/NITTA.Frontends.XMILE.Frontend.html @@ -30,9 +30,9 @@ import NITTA.Intermediate.Functions qualified as F import NITTA.Utils.Base -data XMILEAlgBuilder v x = XMILEAlgBuilder +data XMILEAlgBuilder v x = XMILEAlgBuilder { forall v x. XMILEAlgBuilder v x -> DataFlowGraph v x -algDataFlowGraph :: DataFlowGraph v x +algDataFlowGraph :: DataFlowGraph v x , forall v x. XMILEAlgBuilder v x -> [TraceVar] algTraceVars :: [TraceVar] , forall v x. XMILEAlgBuilder v x -> HashMap Text Int @@ -44,7 +44,7 @@ , forall v x. XMILEAlgBuilder v x -> Int algNextArgIndex :: Int } - deriving (Int -> XMILEAlgBuilder v x -> ShowS + deriving (Int -> XMILEAlgBuilder v x -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x. Int -> XMILEAlgBuilder v x -> ShowS @@ -64,35 +64,35 @@ "time_delta" translateXMILE :: Text -> FrontendResult v x -translateXMILE Text -src = - let xmContent :: Content -xmContent = String -> Content +translateXMILE Text +src = + let xmContent :: Content +xmContent = String -> Content XMILE.parseDocument forall a b. (a -> b) -> a -> b $ Text -> String T.unpack Text -src - builder :: XMILEAlgBuilder v x -builder = forall {v} {x}. +src + builder :: XMILEAlgBuilder v x +builder = forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Val x, Typeable v, Ord v) => Content -> XMILEAlgBuilder v x processXMILEGraph Content -xmContent - frTrace :: [TraceVar] -frTrace = XMILEAlgBuilder Text Int -> [TraceVar] -algTraceVars' forall {v} {x}. +xmContent + frTrace :: [TraceVar] +frTrace = XMILEAlgBuilder Text Int -> [TraceVar] +algTraceVars' forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Val x, Typeable v, Ord v) => XMILEAlgBuilder v x -builder +builder in FrontendResult{frDataFlow :: DataFlowGraph v x frDataFlow = forall v x. XMILEAlgBuilder v x -> DataFlowGraph v x algDataFlowGraph forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Val x, Typeable v, Ord v) => XMILEAlgBuilder v x -builder, [TraceVar] +builder, [TraceVar] frTrace :: [TraceVar] frTrace :: [TraceVar] frTrace, frPrettyLog :: [HashMap v x] -> [HashMap String String] @@ -100,34 +100,34 @@ (Real t, Show t, PrintfType v, PrintfArg t, ToString a) => [TraceVar] -> [HashMap a t] -> [HashMap String v] prettyLog [TraceVar] -frTrace} +frTrace} where - algTraceVars' :: XMILEAlgBuilder T.Text Int -> [TraceVar] - algTraceVars' :: XMILEAlgBuilder Text Int -> [TraceVar] -algTraceVars' = forall v x. XMILEAlgBuilder v x -> [TraceVar] + algTraceVars' :: XMILEAlgBuilder T.Text Int -> [TraceVar] + algTraceVars' :: XMILEAlgBuilder Text Int -> [TraceVar] +algTraceVars' = forall v x. XMILEAlgBuilder v x -> [TraceVar] algTraceVars processXMILEGraph :: Content -> XMILEAlgBuilder v x -processXMILEGraph Content -xmContent = forall a b c. (a -> b -> c) -> b -> a -> c +processXMILEGraph Content +xmContent = forall a b c. (a -> b -> c) -> b -> a -> c flip forall s a. State s a -> s -> s execState forall {v} {x}. XMILEAlgBuilder v x -emptyBuilder forall a b. (a -> b) -> a -> b +emptyBuilder forall a b. (a -> b) -> a -> b $ do forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Content -> m () getDefaultValuesAndUsages Content -xmContent +xmContent forall {m :: * -> *} {v} {x}. (MonadState (XMILEAlgBuilder v x) m, Hashable v, Suffix v, ToString v, IsString v, Val x, Typeable v, Ord v) => Content -> m () createDataFlowGraph Content -xmContent +xmContent where - emptyBuilder :: XMILEAlgBuilder v x -emptyBuilder = + emptyBuilder :: XMILEAlgBuilder v x +emptyBuilder = XMILEAlgBuilder { algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph = forall v x. [DataFlowGraph v x] -> DataFlowGraph v x @@ -149,33 +149,33 @@ } createDataFlowGraph :: Content -> m () -createDataFlowGraph Content -xmContent = do +createDataFlowGraph Content +xmContent = do forall s (m :: * -> *). MonadState s m => (s -> s) -> m () modify - ( \st :: XMILEAlgBuilder v x -st@XMILEAlgBuilder{HashMap Text Int + ( \st :: XMILEAlgBuilder v x +st@XMILEAlgBuilder{HashMap Text Int algUsagesCount :: HashMap Text Int algUsagesCount :: forall v x. XMILEAlgBuilder v x -> HashMap Text Int -algUsagesCount} -> +algUsagesCount} -> XMILEAlgBuilder v x -st{algNextFreeNameIndex :: HashMap Text Int +st{algNextFreeNameIndex :: HashMap Text Int algNextFreeNameIndex = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b -foldl (\HashMap Text Int -hm Text -key -> forall k v. +foldl (\HashMap Text Int +hm Text +key -> forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Text -key Int +key Int 0 HashMap Text Int -hm) forall k v. HashMap k v +hm) forall k v. HashMap k v HM.empty forall a b. (a -> b) -> a -> b $ forall k v. HashMap k v -> [k] HM.keys HashMap Text Int -algUsagesCount} +algUsagesCount} ) forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => @@ -184,10 +184,10 @@ (MonadState (XMILEAlgBuilder v x) m, IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => Stock -> m () -processStock forall a b. (a -> b) -> a -> b +processStock forall a b. (a -> b) -> a -> b $ Content -> [Stock] xcStocks Content -xmContent +xmContent forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () @@ -195,10 +195,10 @@ (MonadState (XMILEAlgBuilder v x) m, IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => Aux -> m () -processAux forall a b. (a -> b) -> a -> b +processAux forall a b. (a -> b) -> a -> b $ Content -> [Aux] xcAuxs Content -xmContent +xmContent forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () @@ -206,27 +206,27 @@ (MonadState (XMILEAlgBuilder v x) f, IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => Flow -> f () -processFlow forall a b. (a -> b) -> a -> b +processFlow forall a b. (a -> b) -> a -> b $ Content -> [Flow] xcFlows Content -xmContent +xmContent forall {m :: * -> *} {v} {x}. (MonadState (XMILEAlgBuilder v x) m, IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => m () -addTimeIncrement +addTimeIncrement where - addTimeIncrement :: m () -addTimeIncrement = do + addTimeIncrement :: m () +addTimeIncrement = do forall s (m :: * -> *). MonadState s m => (s -> s) -> m () modify - ( \st :: XMILEAlgBuilder v x -st@XMILEAlgBuilder{HashMap Text Int + ( \st :: XMILEAlgBuilder v x +st@XMILEAlgBuilder{HashMap Text Int algUsagesCount :: HashMap Text Int algUsagesCount :: forall v x. XMILEAlgBuilder v x -> HashMap Text Int -algUsagesCount} -> +algUsagesCount} -> XMILEAlgBuilder v x -st +st { algUsagesCount :: HashMap Text Int algUsagesCount = forall k v. @@ -236,7 +236,7 @@ Text deltaTimeVarName ((HashMap Text Int -algUsagesCount forall k v. +algUsagesCount forall k v. (Eq k, Hashable k, HasCallStack) => HashMap k v -> k -> v HM.! Text @@ -244,40 +244,40 @@ + Int 1) HashMap Text Int -algUsagesCount +algUsagesCount } ) - Text -dtUniqueName <- forall {m :: * -> *} {v} {x}. + Text +dtUniqueName <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m Text -getUniqueName Text +getUniqueName Text deltaTimeVarName - [Text] -dtAllGraphNodes <- forall {m :: * -> *} {v} {x}. + [Text] +dtAllGraphNodes <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m [Text] -getAllOutGraphNodes Text +getAllOutGraphNodes Text deltaTimeVarName - XMILEAlgBuilder{DataFlowGraph v x + XMILEAlgBuilder{DataFlowGraph v x algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph :: forall v x. XMILEAlgBuilder v x -> DataFlowGraph v x -algDataFlowGraph} <- forall s (m :: * -> *). MonadState s m => m s +algDataFlowGraph} <- forall s (m :: * -> *). MonadState s m => m s get - let dt :: Double -dt = SimSpec -> Double + let dt :: Double +dt = SimSpec -> Double xssDt forall a b. (a -> b) -> a -> b $ Content -> SimSpec xcSimSpecs Content -xmContent - startTime :: Double -startTime = SimSpec -> Double +xmContent + startTime :: Double +startTime = SimSpec -> Double xssStart forall a b. (a -> b) -> a -> b $ Content -> SimSpec xcSimSpecs Content -xmContent - graph :: DataFlowGraph v x -graph = +xmContent + graph :: DataFlowGraph v x +graph = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b @@ -286,22 +286,22 @@ flip forall {v} {x}. F v x -> DataFlowGraph v x -> DataFlowGraph v x addFuncToDataFlowGraph) DataFlowGraph v x -algDataFlowGraph +algDataFlowGraph [ forall v x. (Var v, Val x) => x -> [v] -> F v x F.constant (forall a. Read a => String -> a read forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> String show Double -dt) (forall a b. (a -> b) -> [a] -> [b] +dt) (forall a b. (a -> b) -> [a] -> [b] map forall {a}. IsString a => Text -> a fromText [Text] -dtAllGraphNodes) +dtAllGraphNodes) , forall v x. (Var v, Val x) => x -> v -> [v] -> F v x F.loop (forall a. Read a => String -> a read forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> String show Double -startTime) (forall a. IsString a => String -> a +startTime) (forall a. IsString a => String -> a fromString String "time_inc") [forall a. IsString a => String -> a fromString String @@ -311,22 +311,22 @@ fromString String "time") (forall {a}. IsString a => Text -> a fromText Text -dtUniqueName) [forall a. IsString a => String -> a +dtUniqueName) [forall a. IsString a => String -> a fromString String "time_inc"] ] forall s (m :: * -> *). MonadState s m => (s -> s) -> m () modify - ( \st :: XMILEAlgBuilder v x -st@XMILEAlgBuilder{[TraceVar] + ( \st :: XMILEAlgBuilder v x +st@XMILEAlgBuilder{[TraceVar] algTraceVars :: [TraceVar] algTraceVars :: forall v x. XMILEAlgBuilder v x -> [TraceVar] -algTraceVars} -> +algTraceVars} -> XMILEAlgBuilder v x -st +st { algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph = DataFlowGraph v x -graph +graph , algTraceVars :: [TraceVar] algTraceVars = TraceVar{tvFmt :: Maybe Text tvFmt = forall a. Maybe a @@ -334,239 +334,239 @@ tvVar = Text "time"} forall a. a -> [a] -> [a] : [TraceVar] -algTraceVars +algTraceVars } ) - processStock :: Stock -> m () -processStock XMILE.Stock{Text + processStock :: Stock -> m () +processStock XMILE.Stock{Text xsName :: Stock -> Text xsName :: Text -xsName, Maybe Text +xsName, Maybe Text xsOutflow :: Stock -> Maybe Text xsOutflow :: Maybe Text -xsOutflow, Maybe Text +xsOutflow, Maybe Text xsInflow :: Stock -> Maybe Text xsInflow :: Maybe Text xsInflow} = do - [Text] -outputs <- forall {m :: * -> *} {v} {x}. + [Text] +outputs <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m [Text] -getAllOutGraphNodes Text -xsName +getAllOutGraphNodes Text +xsName case (Maybe Text -xsOutflow, Maybe Text -xsInflow) of +xsOutflow, Maybe Text +xsInflow) of (Maybe Text Nothing, Maybe Text Nothing) -> do - Text -input <- forall {m :: * -> *} {v} {x}. + Text +input <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m Text -getUniqueName Text -xsName +getUniqueName Text +xsName forall {m :: * -> *} {v} {x}. (MonadState (XMILEAlgBuilder v x) m, IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => Text -> [Text] -> m () -addStockLoop Text -input [Text] -outputs +addStockLoop Text +input [Text] +outputs (Maybe Text -Nothing, Just Text -inflow) -> do - Text -stockUniqueName <- forall {m :: * -> *} {v} {x}. +Nothing, Just Text +inflow) -> do + Text +stockUniqueName <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m Text -getUniqueName Text -xsName - Text -tmpName <- forall {m :: * -> *} {v} {x} {t} {t} {a}. +getUniqueName Text +xsName + Text +tmpName <- forall {m :: * -> *} {v} {x} {t} {t} {a}. (MonadState (XMILEAlgBuilder v x) m, Hashable v, Suffix v, ToString v, Val x, IsString v, IsString t, IsString t, IsString a, Typeable v, Ord v) => Text -> (t -> t -> [a] -> F v x) -> Text -> Text -> m Text -processStockFlow Text -inflow forall v x. (Var v, Val x) => v -> v -> [v] -> F v x +processStockFlow Text +inflow forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.add (forall a. IsString a => String -> a fromString String "In") Text -stockUniqueName +stockUniqueName forall {m :: * -> *} {v} {x}. (MonadState (XMILEAlgBuilder v x) m, IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => Text -> [Text] -> m () -addStockLoop Text -tmpName [Text] -outputs - (Just Text -outflow, Maybe Text +addStockLoop Text +tmpName [Text] +outputs + (Just Text +outflow, Maybe Text Nothing) -> do - Text -stockUniqueName <- forall {m :: * -> *} {v} {x}. + Text +stockUniqueName <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m Text -getUniqueName Text -xsName - Text -tmpName <- forall {m :: * -> *} {v} {x} {t} {t} {a}. +getUniqueName Text +xsName + Text +tmpName <- forall {m :: * -> *} {v} {x} {t} {t} {a}. (MonadState (XMILEAlgBuilder v x) m, Hashable v, Suffix v, ToString v, Val x, IsString v, IsString t, IsString t, IsString a, Typeable v, Ord v) => Text -> (t -> t -> [a] -> F v x) -> Text -> Text -> m Text -processStockFlow Text -outflow forall v x. (Var v, Val x) => v -> v -> [v] -> F v x +processStockFlow Text +outflow forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.sub (forall a. IsString a => String -> a fromString String "Out") Text -stockUniqueName +stockUniqueName forall {m :: * -> *} {v} {x}. (MonadState (XMILEAlgBuilder v x) m, IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => Text -> [Text] -> m () -addStockLoop Text -tmpName [Text] -outputs - (Just Text -outflow, Just Text -inflow) -> do - Text -stockUniqueName <- forall {m :: * -> *} {v} {x}. +addStockLoop Text +tmpName [Text] +outputs + (Just Text +outflow, Just Text +inflow) -> do + Text +stockUniqueName <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m Text -getUniqueName Text -xsName - Text -tmpNameOut <- forall {m :: * -> *} {v} {x} {t} {t} {a}. +getUniqueName Text +xsName + Text +tmpNameOut <- forall {m :: * -> *} {v} {x} {t} {t} {a}. (MonadState (XMILEAlgBuilder v x) m, Hashable v, Suffix v, ToString v, Val x, IsString v, IsString t, IsString t, IsString a, Typeable v, Ord v) => Text -> (t -> t -> [a] -> F v x) -> Text -> Text -> m Text -processStockFlow Text -outflow forall v x. (Var v, Val x) => v -> v -> [v] -> F v x +processStockFlow Text +outflow forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.sub (forall a. IsString a => String -> a fromString String "Out") Text -stockUniqueName - Text -tmpNameIn <- forall {m :: * -> *} {v} {x} {t} {t} {a}. +stockUniqueName + Text +tmpNameIn <- forall {m :: * -> *} {v} {x} {t} {t} {a}. (MonadState (XMILEAlgBuilder v x) m, Hashable v, Suffix v, ToString v, Val x, IsString v, IsString t, IsString t, IsString a, Typeable v, Ord v) => Text -> (t -> t -> [a] -> F v x) -> Text -> Text -> m Text -processStockFlow Text -inflow forall v x. (Var v, Val x) => v -> v -> [v] -> F v x +processStockFlow Text +inflow forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.add (forall a. IsString a => String -> a fromString String "In") Text -tmpNameOut +tmpNameOut forall {m :: * -> *} {v} {x}. (MonadState (XMILEAlgBuilder v x) m, IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => Text -> [Text] -> m () -addStockLoop Text -tmpNameIn [Text] -outputs +addStockLoop Text +tmpNameIn [Text] +outputs where - processStockFlow :: Text -> (t -> t -> [a] -> F v x) -> Text -> Text -> m Text -processStockFlow Text -flowName t -> t -> [a] -> F v x -func Text -ending Text -stockName = do - let tmpName :: Text -tmpName = Text -xsName forall a. Semigroup a => a -> a -> a + processStockFlow :: Text -> (t -> t -> [a] -> F v x) -> Text -> Text -> m Text +processStockFlow Text +flowName t -> t -> [a] -> F v x +func Text +ending Text +stockName = do + let tmpName :: Text +tmpName = Text +xsName forall a. Semigroup a => a -> a -> a <> Text "_" forall a. Semigroup a => a -> a -> a <> Text -ending - dt :: Double -dt = SimSpec -> Double +ending + dt :: Double +dt = SimSpec -> Double xssDt forall a b. (a -> b) -> a -> b $ Content -> SimSpec xcSimSpecs Content -xmContent - Text -flowUniqueName <- forall {m :: * -> *} {v} {x} {a}. +xmContent + Text +flowUniqueName <- forall {m :: * -> *} {v} {x} {a}. (MonadState (XMILEAlgBuilder v x) m, IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Num a, Ord v, Eq a) => a -> m Text -skaleToDeltaTime Double -dt +skaleToDeltaTime Double +dt forall s (m :: * -> *). MonadState s m => (s -> s) -> m () modify - ( \st :: XMILEAlgBuilder v x -st@XMILEAlgBuilder{DataFlowGraph v x + ( \st :: XMILEAlgBuilder v x +st@XMILEAlgBuilder{DataFlowGraph v x algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph :: forall v x. XMILEAlgBuilder v x -> DataFlowGraph v x -algDataFlowGraph} -> +algDataFlowGraph} -> XMILEAlgBuilder v x -st +st { algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph = forall {v} {x}. F v x -> DataFlowGraph v x -> DataFlowGraph v x addFuncToDataFlowGraph (t -> t -> [a] -> F v x -func (forall {a}. IsString a => Text -> a +func (forall {a}. IsString a => Text -> a fromText Text -stockName) (forall {a}. IsString a => Text -> a +stockName) (forall {a}. IsString a => Text -> a fromText Text -flowUniqueName) [forall {a}. IsString a => Text -> a +flowUniqueName) [forall {a}. IsString a => Text -> a fromText Text -tmpName]) +tmpName]) DataFlowGraph v x -algDataFlowGraph +algDataFlowGraph } ) forall (m :: * -> *) a. Monad m => a -> m a return Text -tmpName +tmpName where - skaleToDeltaTime :: a -> m Text -skaleToDeltaTime a + skaleToDeltaTime :: a -> m Text +skaleToDeltaTime a 1 = forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m Text -getUniqueName Text -flowName - skaleToDeltaTime a +getUniqueName Text +flowName + skaleToDeltaTime a _ = do - Text -flowUniqueName <- forall {m :: * -> *} {v} {x}. + Text +flowUniqueName <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m Text -getUniqueName Text -flowName - Text -dtUniqueName <- forall {m :: * -> *} {v} {x}. +getUniqueName Text +flowName + Text +dtUniqueName <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m Text -getUniqueName Text +getUniqueName Text deltaTimeVarName - let skaledFlowName :: Text -skaledFlowName = Text -stockName forall a. Semigroup a => a -> a -> a + let skaledFlowName :: Text +skaledFlowName = Text +stockName forall a. Semigroup a => a -> a -> a <> Text "_" forall a. Semigroup a => a -> a -> a <> Text -flowName forall a. Semigroup a => a -> a -> a +flowName forall a. Semigroup a => a -> a -> a <> Text "_" forall a. Semigroup a => a -> a -> a <> Text -ending +ending forall s (m :: * -> *). MonadState s m => (s -> s) -> m () modify - ( \st :: XMILEAlgBuilder v x -st@XMILEAlgBuilder{DataFlowGraph v x + ( \st :: XMILEAlgBuilder v x +st@XMILEAlgBuilder{DataFlowGraph v x algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph :: forall v x. XMILEAlgBuilder v x -> DataFlowGraph v x -algDataFlowGraph} -> +algDataFlowGraph} -> XMILEAlgBuilder v x -st +st { algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph = forall {v} {x}. F v x -> DataFlowGraph v x -> DataFlowGraph v x @@ -574,25 +574,25 @@ (forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.multiply (forall {a}. IsString a => Text -> a fromText Text -dtUniqueName) (forall {a}. IsString a => Text -> a +dtUniqueName) (forall {a}. IsString a => Text -> a fromText Text -flowUniqueName) [forall {a}. IsString a => Text -> a +flowUniqueName) [forall {a}. IsString a => Text -> a fromText Text -skaledFlowName]) +skaledFlowName]) DataFlowGraph v x -algDataFlowGraph +algDataFlowGraph } ) forall (m :: * -> *) a. Monad m => a -> m a return Text -skaledFlowName +skaledFlowName - addStockLoop :: Text -> [Text] -> m () -addStockLoop Text -stockName [Text] -outputs = do - let traceVarName :: TraceVar -traceVarName = TraceVar{tvFmt :: Maybe Text + addStockLoop :: Text -> [Text] -> m () +addStockLoop Text +stockName [Text] +outputs = do + let traceVarName :: TraceVar +traceVarName = TraceVar{tvFmt :: Maybe Text tvFmt = forall a. Maybe a Nothing, tvVar :: Text tvVar = (Char -> Bool) -> Text -> Text @@ -601,25 +601,25 @@ '#') forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [Text] -outputs} - Double -defaultValue <- forall {m :: * -> *} {v} {x}. +outputs} + Double +defaultValue <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m Double -getDefaultValue Text -xsName +getDefaultValue Text +xsName forall s (m :: * -> *). MonadState s m => (s -> s) -> m () modify - ( \st :: XMILEAlgBuilder v x -st@XMILEAlgBuilder{DataFlowGraph v x + ( \st :: XMILEAlgBuilder v x +st@XMILEAlgBuilder{DataFlowGraph v x algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph :: forall v x. XMILEAlgBuilder v x -> DataFlowGraph v x -algDataFlowGraph, [TraceVar] +algDataFlowGraph, [TraceVar] algTraceVars :: [TraceVar] algTraceVars :: forall v x. XMILEAlgBuilder v x -> [TraceVar] -algTraceVars} -> +algTraceVars} -> XMILEAlgBuilder v x -st +st { algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph = forall {v} {x}. F v x -> DataFlowGraph v x -> DataFlowGraph v x @@ -629,49 +629,49 @@ read forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> String show Double -defaultValue) (forall {a}. IsString a => Text -> a +defaultValue) (forall {a}. IsString a => Text -> a fromText Text -stockName) (forall a b. (a -> b) -> [a] -> [b] +stockName) (forall a b. (a -> b) -> [a] -> [b] map forall {a}. IsString a => Text -> a fromText [Text] -outputs)) +outputs)) DataFlowGraph v x -algDataFlowGraph +algDataFlowGraph , algTraceVars :: [TraceVar] algTraceVars = TraceVar -traceVarName forall a. a -> [a] -> [a] +traceVarName forall a. a -> [a] -> [a] : [TraceVar] -algTraceVars +algTraceVars } ) - processAux :: Aux -> m () -processAux XMILE.Aux{Text + processAux :: Aux -> m () +processAux XMILE.Aux{Text xaName :: Aux -> Text xaName :: Text -xaName, XMExpr +xaName, XMExpr xaEquation :: Aux -> XMExpr xaEquation :: XMExpr xaEquation} = case XMExpr -xaEquation of - (Val Double -value) -> do - [Text] -outputs <- forall {m :: * -> *} {v} {x}. +xaEquation of + (Val Double +value) -> do + [Text] +outputs <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m [Text] -getAllOutGraphNodes Text -xaName +getAllOutGraphNodes Text +xaName forall s (m :: * -> *). MonadState s m => (s -> s) -> m () modify - ( \st :: XMILEAlgBuilder v x -st@XMILEAlgBuilder{DataFlowGraph v x + ( \st :: XMILEAlgBuilder v x +st@XMILEAlgBuilder{DataFlowGraph v x algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph :: forall v x. XMILEAlgBuilder v x -> DataFlowGraph v x -algDataFlowGraph} -> +algDataFlowGraph} -> XMILEAlgBuilder v x -st +st { algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph = forall {v} {x}. F v x -> DataFlowGraph v x -> DataFlowGraph v x @@ -681,28 +681,28 @@ read forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> String show Double -value) (forall a b. (a -> b) -> [a] -> [b] +value) (forall a b. (a -> b) -> [a] -> [b] map forall {a}. IsString a => Text -> a fromText [Text] -outputs)) +outputs)) DataFlowGraph v x -algDataFlowGraph +algDataFlowGraph } ) - XMExpr -expr -> forall a. HasCallStack => String -> a + XMExpr +expr -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "non supported equation part: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show XMExpr -expr +expr - processFlow :: Flow -> f () -processFlow XMILE.Flow{Text + processFlow :: Flow -> f () +processFlow XMILE.Flow{Text xfName :: Flow -> Text xfName :: Text -xfName, XMExpr +xfName, XMExpr xfEquation :: Flow -> XMExpr xfEquation :: XMExpr xfEquation} = @@ -711,239 +711,239 @@ (MonadState (XMILEAlgBuilder v x) m, IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Show a, Num a, Ord v) => XMExpr -> a -> Bool -> m (Text, a) -processFlowEquation XMExpr -xfEquation (Int +processFlowEquation XMExpr +xfEquation (Int 0 :: Int) Bool True) where - processFlowEquation :: XMExpr -> a -> Bool -> m (Text, a) -processFlowEquation (Var String -name) a -index Bool + processFlowEquation :: XMExpr -> a -> Bool -> m (Text, a) +processFlowEquation (Var String +name) a +index Bool _ = do - Text -n <- forall {m :: * -> *} {v} {x}. + Text +n <- forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m Text -getUniqueName forall a b. (a -> b) -> a -> b +getUniqueName forall a b. (a -> b) -> a -> b $ String -> Text T.pack String -name +name forall (m :: * -> *) a. Monad m => a -> m a return (Text -n, a -index) - processFlowEquation (Duo XMDuop -op XMExpr -leftExpr XMExpr -rightExpr) a -tempNameIndex Bool -isTopLevel = do - (Text -leftNameText, a -tempNameIndex') <- XMExpr -> a -> Bool -> m (Text, a) -processFlowEquation XMExpr -leftExpr a -tempNameIndex Bool +n, a +index) + processFlowEquation (Duo XMDuop +op XMExpr +leftExpr XMExpr +rightExpr) a +tempNameIndex Bool +isTopLevel = do + (Text +leftNameText, a +tempNameIndex') <- XMExpr -> a -> Bool -> m (Text, a) +processFlowEquation XMExpr +leftExpr a +tempNameIndex Bool False - (Text -rightNameText, a -tempNameIndex'') <- XMExpr -> a -> Bool -> m (Text, a) -processFlowEquation XMExpr -rightExpr a -tempNameIndex' Bool + (Text +rightNameText, a +tempNameIndex'') <- XMExpr -> a -> Bool -> m (Text, a) +processFlowEquation XMExpr +rightExpr a +tempNameIndex' Bool False - [Text] -tmpNameText <- forall {v} {x} {m :: * -> *} {a}. + [Text] +tmpNameText <- forall {v} {x} {m :: * -> *} {a}. (MonadState (XMILEAlgBuilder v x) m, Show a) => a -> Text -> Bool -> m [Text] -getTempName a -tempNameIndex'' Text -xfName Bool -isTopLevel - let leftName :: a -leftName = forall {a}. IsString a => Text -> a +getTempName a +tempNameIndex'' Text +xfName Bool +isTopLevel + let leftName :: a +leftName = forall {a}. IsString a => Text -> a fromText Text -leftNameText - rightName :: a -rightName = forall {a}. IsString a => Text -> a +leftNameText + rightName :: a +rightName = forall {a}. IsString a => Text -> a fromText Text -rightNameText - tmpName :: [b] -tmpName = forall a b. (a -> b) -> [a] -> [b] +rightNameText + tmpName :: [b] +tmpName = forall a b. (a -> b) -> [a] -> [b] map forall {a}. IsString a => Text -> a fromText [Text] -tmpNameText +tmpNameText - st :: XMILEAlgBuilder v x -st@XMILEAlgBuilder{algDataFlowGraph :: forall v x. XMILEAlgBuilder v x -> DataFlowGraph v x -algDataFlowGraph = DataFlowGraph v x -graph} <- forall s (m :: * -> *). MonadState s m => m s + st :: XMILEAlgBuilder v x +st@XMILEAlgBuilder{algDataFlowGraph :: forall v x. XMILEAlgBuilder v x -> DataFlowGraph v x +algDataFlowGraph = DataFlowGraph v x +graph} <- forall s (m :: * -> *). MonadState s m => m s get case XMDuop -op of +op of XMDuop Add -> forall s (m :: * -> *). MonadState s m => s -> m () put XMILEAlgBuilder v x -st{algDataFlowGraph :: DataFlowGraph v x +st{algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph = forall {v} {x}. F v x -> DataFlowGraph v x -> DataFlowGraph v x addFuncToDataFlowGraph (forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.add forall {a}. IsString a => a -leftName forall {a}. IsString a => a -rightName forall {b}. IsString b => [b] -tmpName) DataFlowGraph v x -graph} +leftName forall {a}. IsString a => a +rightName forall {b}. IsString b => [b] +tmpName) DataFlowGraph v x +graph} XMDuop Sub -> forall s (m :: * -> *). MonadState s m => s -> m () put XMILEAlgBuilder v x -st{algDataFlowGraph :: DataFlowGraph v x +st{algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph = forall {v} {x}. F v x -> DataFlowGraph v x -> DataFlowGraph v x addFuncToDataFlowGraph (forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.sub forall {a}. IsString a => a -leftName forall {a}. IsString a => a -rightName forall {b}. IsString b => [b] -tmpName) DataFlowGraph v x -graph} +leftName forall {a}. IsString a => a +rightName forall {b}. IsString b => [b] +tmpName) DataFlowGraph v x +graph} XMDuop Mul -> forall s (m :: * -> *). MonadState s m => s -> m () put XMILEAlgBuilder v x -st{algDataFlowGraph :: DataFlowGraph v x +st{algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph = forall {v} {x}. F v x -> DataFlowGraph v x -> DataFlowGraph v x addFuncToDataFlowGraph (forall v x. (Var v, Val x) => v -> v -> [v] -> F v x F.multiply forall {a}. IsString a => a -leftName forall {a}. IsString a => a -rightName forall {b}. IsString b => [b] -tmpName) DataFlowGraph v x -graph} +leftName forall {a}. IsString a => a +rightName forall {b}. IsString b => [b] +tmpName) DataFlowGraph v x +graph} XMDuop Div -> forall s (m :: * -> *). MonadState s m => s -> m () put XMILEAlgBuilder v x -st{algDataFlowGraph :: DataFlowGraph v x +st{algDataFlowGraph :: DataFlowGraph v x algDataFlowGraph = forall {v} {x}. F v x -> DataFlowGraph v x -> DataFlowGraph v x addFuncToDataFlowGraph (forall v x. (Var v, Val x) => v -> v -> [v] -> [v] -> F v x F.division forall {a}. IsString a => a -leftName forall {a}. IsString a => a -rightName forall {b}. IsString b => [b] -tmpName []) DataFlowGraph v x -graph} +leftName forall {a}. IsString a => a +rightName forall {b}. IsString b => [b] +tmpName []) DataFlowGraph v x +graph} forall (m :: * -> *) a. Monad m => a -> m a return (forall a. [a] -> a head forall {b}. IsString b => [b] -tmpName, a -tempNameIndex'' forall a. Num a => a -> a -> a +tmpName, a +tempNameIndex'' forall a. Num a => a -> a -> a + a 1) where - getTempName :: a -> Text -> Bool -> m [Text] -getTempName a -_ Text -name Bool + getTempName :: a -> Text -> Bool -> m [Text] +getTempName a +_ Text +name Bool True = forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m [Text] -getAllOutGraphNodes Text -name - getTempName a -index Text -name Bool +getAllOutGraphNodes Text +name + getTempName a +index Text +name Bool _ = forall (m :: * -> *) a. Monad m => a -> m a return [String -> Text T.pack String "_" forall a. Semigroup a => a -> a -> a <> forall {a}. Show a => a -> Text showText a -index forall a. Semigroup a => a -> a -> a +index forall a. Semigroup a => a -> a -> a <> String -> Text T.pack String "#" forall a. Semigroup a => a -> a -> a <> Text -name] - processFlowEquation XMExpr +name] + processFlowEquation XMExpr _ a _ Bool _ = forall a. HasCallStack => a undefined - getUniqueName :: Text -> m Text -getUniqueName Text -name = do - XMILEAlgBuilder{HashMap Text Int + getUniqueName :: Text -> m Text +getUniqueName Text +name = do + XMILEAlgBuilder{HashMap Text Int algNextFreeNameIndex :: HashMap Text Int algNextFreeNameIndex :: forall v x. XMILEAlgBuilder v x -> HashMap Text Int -algNextFreeNameIndex} <- forall s (m :: * -> *). MonadState s m => m s +algNextFreeNameIndex} <- forall s (m :: * -> *). MonadState s m => m s get - let index :: Int -index = forall a. a -> Maybe a -> a + let index :: Int +index = forall a. a -> Maybe a -> a fromMaybe (forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "name not found : " forall a. Semigroup a => a -> a -> a <> Text -> String T.unpack Text -name) forall a b. (a -> b) -> a -> b +name) forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup Text -name HashMap Text Int -algNextFreeNameIndex +name HashMap Text Int +algNextFreeNameIndex forall s (m :: * -> *). MonadState s m => (s -> s) -> m () -modify (\XMILEAlgBuilder v x -st -> XMILEAlgBuilder v x -st{algNextFreeNameIndex :: HashMap Text Int +modify (\XMILEAlgBuilder v x +st -> XMILEAlgBuilder v x +st{algNextFreeNameIndex :: HashMap Text Int algNextFreeNameIndex = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Text -name (Int -index forall a. Num a => a -> a -> a +name (Int +index forall a. Num a => a -> a -> a + Int 1) HashMap Text Int -algNextFreeNameIndex}) +algNextFreeNameIndex}) forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall {a} {a}. (Semigroup a, IsString a, Show a) => a -> a -> a -getGraphName Text -name Int -index +getGraphName Text +name Int +index - getAllOutGraphNodes :: Text -> m [Text] -getAllOutGraphNodes Text -name = do - XMILEAlgBuilder{HashMap Text Int + getAllOutGraphNodes :: Text -> m [Text] +getAllOutGraphNodes Text +name = do + XMILEAlgBuilder{HashMap Text Int algUsagesCount :: HashMap Text Int algUsagesCount :: forall v x. XMILEAlgBuilder v x -> HashMap Text Int -algUsagesCount} <- forall s (m :: * -> *). MonadState s m => m s +algUsagesCount} <- forall s (m :: * -> *). MonadState s m => m s get - let usages :: Int -usages = forall a. a -> Maybe a -> a + let usages :: Int +usages = forall a. a -> Maybe a -> a fromMaybe (forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "name not found : " forall a. Semigroup a => a -> a -> a <> Text -> String T.unpack Text -name) forall a b. (a -> b) -> a -> b +name) forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup Text -name HashMap Text Int -algUsagesCount +name HashMap Text Int +algUsagesCount forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\Int -num -> forall {a} {a}. (Semigroup a, IsString a, Show a) => a -> a -> a -getGraphName Text -name Int -num) [Int +map (\Int +num -> forall {a} {a}. (Semigroup a, IsString a, Show a) => a -> a -> a +getGraphName Text +name Int +num) [Int 0 .. Int -usages] +usages] - getDefaultValue :: Text -> m Double -getDefaultValue Text -name = do - XMILEAlgBuilder{HashMap Text Double + getDefaultValue :: Text -> m Double +getDefaultValue Text +name = do + XMILEAlgBuilder{HashMap Text Double algDefaultValues :: HashMap Text Double algDefaultValues :: forall v x. XMILEAlgBuilder v x -> HashMap Text Double -algDefaultValues} <- forall s (m :: * -> *). MonadState s m => m s +algDefaultValues} <- forall s (m :: * -> *). MonadState s m => m s get forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b @@ -954,40 +954,40 @@ "name not found :" forall a. Semigroup a => a -> a -> a <> Text -> String T.unpack Text -name) forall a b. (a -> b) -> a -> b +name) forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup Text -name HashMap Text Double -algDefaultValues +name HashMap Text Double +algDefaultValues - getGraphName :: a -> a -> a -getGraphName a -name a -index = a -name forall a. Semigroup a => a -> a -> a + getGraphName :: a -> a -> a +getGraphName a +name a +index = a +name forall a. Semigroup a => a -> a -> a <> forall a. IsString a => String -> a fromString (String "#" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show a -index) +index) getDefaultValuesAndUsages :: Content -> m () -getDefaultValuesAndUsages Content -algBuilder = +getDefaultValuesAndUsages Content +algBuilder = forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Stock -> m () -processStock forall a b. (a -> b) -> a -> b +processStock forall a b. (a -> b) -> a -> b $ Content -> [Stock] xcStocks Content -algBuilder +algBuilder where - nameToEquationMap :: HashMap Text XMExpr -nameToEquationMap = forall a b c. (a -> b -> c) -> b -> a -> c + nameToEquationMap :: HashMap Text XMExpr +nameToEquationMap = forall a b c. (a -> b -> c) -> b -> a -> c flip forall s a. State s a -> s -> s execState forall k v. HashMap k v HM.empty forall a b. (a -> b) -> a -> b @@ -998,153 +998,153 @@ mapM_ (forall {k} {v} {m :: * -> *}. (MonadState (HashMap k v) m, Hashable k) => (k, v) -> m () -addToMap forall b c a. (b -> c) -> (a -> b) -> a -> c -. (\Aux -a -> (Aux -> Text +addToMap forall b c a. (b -> c) -> (a -> b) -> a -> c +. (\Aux +a -> (Aux -> Text xaName Aux -a, Aux -> XMExpr +a, Aux -> XMExpr xaEquation Aux -a))) (Content -> [Aux] +a))) (Content -> [Aux] xcAuxs Content -algBuilder) +algBuilder) forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ (forall {k} {v} {m :: * -> *}. (MonadState (HashMap k v) m, Hashable k) => (k, v) -> m () -addToMap forall b c a. (b -> c) -> (a -> b) -> a -> c -. (\Flow -a -> (Flow -> Text +addToMap forall b c a. (b -> c) -> (a -> b) -> a -> c +. (\Flow +a -> (Flow -> Text xfName Flow -a, Flow -> XMExpr +a, Flow -> XMExpr xfEquation Flow -a))) (Content -> [Flow] +a))) (Content -> [Flow] xcFlows Content -algBuilder) +algBuilder) forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ (forall {k} {v} {m :: * -> *}. (MonadState (HashMap k v) m, Hashable k) => (k, v) -> m () -addToMap forall b c a. (b -> c) -> (a -> b) -> a -> c -. (\Stock -a -> (Stock -> Text +addToMap forall b c a. (b -> c) -> (a -> b) -> a -> c +. (\Stock +a -> (Stock -> Text xsName Stock -a, Stock -> XMExpr +a, Stock -> XMExpr xsEquation Stock -a))) (Content -> [Stock] +a))) (Content -> [Stock] xcStocks Content -algBuilder) +algBuilder) where - addToMap :: (k, v) -> m () -addToMap (k -name, v -eqn) = forall s (m :: * -> *). MonadState s m => (s -> s) -> m () -modify (\HashMap k v -st -> forall k v. + addToMap :: (k, v) -> m () +addToMap (k +name, v +eqn) = forall s (m :: * -> *). MonadState s m => (s -> s) -> m () +modify (\HashMap k v +st -> forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert k -name v -eqn HashMap k v -st) - processStock :: Stock -> m () -processStock XMILE.Stock{XMExpr +name v +eqn HashMap k v +st) + processStock :: Stock -> m () +processStock XMILE.Stock{XMExpr xsEquation :: XMExpr xsEquation :: Stock -> XMExpr -xsEquation, Text +xsEquation, Text xsName :: Text xsName :: Stock -> Text -xsName, Maybe Text +xsName, Maybe Text xsInflow :: Maybe Text xsInflow :: Stock -> Maybe Text -xsInflow, Maybe Text +xsInflow, Maybe Text xsOutflow :: Maybe Text xsOutflow :: Stock -> Maybe Text -xsOutflow} = do - XMILEAlgBuilder{HashMap Text Double +xsOutflow} = do + XMILEAlgBuilder{HashMap Text Double algDefaultValues :: HashMap Text Double algDefaultValues :: forall v x. XMILEAlgBuilder v x -> HashMap Text Double -algDefaultValues} <- forall s (m :: * -> *). MonadState s m => m s +algDefaultValues} <- forall s (m :: * -> *). MonadState s m => m s get - let val :: Double -val = HashMap Text Double -> XMExpr -> Double + let val :: Double +val = HashMap Text Double -> XMExpr -> Double calculateDefaultValue HashMap Text Double -algDefaultValues XMExpr -xsEquation +algDefaultValues XMExpr +xsEquation forall s (m :: * -> *). MonadState s m => (s -> s) -> m () -modify (\XMILEAlgBuilder v x -st -> XMILEAlgBuilder v x -st{algDefaultValues :: HashMap Text Double +modify (\XMILEAlgBuilder v x +st -> XMILEAlgBuilder v x +st{algDefaultValues :: HashMap Text Double algDefaultValues = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Text -xsName Double -val HashMap Text Double -algDefaultValues}) +xsName Double +val HashMap Text Double +algDefaultValues}) forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Maybe Text -> m () -processFlow Maybe Text -xsInflow +processFlow Maybe Text +xsInflow forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Maybe Text -> m () -processFlow Maybe Text -xsOutflow +processFlow Maybe Text +xsOutflow where - processFlow :: Maybe Text -> m () -processFlow Maybe Text + processFlow :: Maybe Text -> m () +processFlow Maybe Text Nothing = forall (m :: * -> *) a. Monad m => a -> m a return () - processFlow (Just Text -name) = do + processFlow (Just Text +name) = do forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m () -addUsages Text -name +addUsages Text +name forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m () -addUsages Text -xsName +addUsages Text +xsName forall {a} {m :: * -> *} {v} {x}. (Eq a, Num a, MonadState (XMILEAlgBuilder v x) m) => a -> m () -addDtUsagesIfNeeded forall a b. (a -> b) -> a -> b +addDtUsagesIfNeeded forall a b. (a -> b) -> a -> b $ SimSpec -> Double xssDt forall a b. (a -> b) -> a -> b $ Content -> SimSpec xcSimSpecs Content -algBuilder +algBuilder forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => XMExpr -> m () -processEquation forall a b. (a -> b) -> a -> b +processEquation forall a b. (a -> b) -> a -> b $ Flow -> XMExpr xfEquation forall a b. (a -> b) -> a -> b $ Text -> Flow -findFlow Text -name +findFlow Text +name where - addDtUsagesIfNeeded :: a -> m () -addDtUsagesIfNeeded a + addDtUsagesIfNeeded :: a -> m () +addDtUsagesIfNeeded a 1 = forall (m :: * -> *) a. Monad m => a -> m a return () - addDtUsagesIfNeeded a + addDtUsagesIfNeeded a _ = forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m () -addUsages Text +addUsages Text deltaTimeVarName - findFlow :: Text -> Flow -findFlow Text -name = + findFlow :: Text -> Flow +findFlow Text +name = forall a. a -> Maybe a -> a fromMaybe (forall a. HasCallStack => String -> a @@ -1153,97 +1153,97 @@ "cannot find expected flow flow with name " forall a. Semigroup a => a -> a -> a <> Text -> String T.unpack Text -name forall a. Semigroup a => a -> a -> a +name forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show (Content -> [Flow] xcFlows Content -algBuilder)) +algBuilder)) (forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a -L.find (\XMILE.Flow{Text +L.find (\XMILE.Flow{Text xfName :: Text xfName :: Flow -> Text -xfName} -> Text -xfName forall a. Eq a => a -> a -> Bool +xfName} -> Text +xfName forall a. Eq a => a -> a -> Bool == Text -name) forall a b. (a -> b) -> a -> b +name) forall a b. (a -> b) -> a -> b $ Content -> [Flow] xcFlows Content -algBuilder) +algBuilder) - processEquation :: XMExpr -> m () -processEquation (Val Double + processEquation :: XMExpr -> m () +processEquation (Val Double _) = forall (m :: * -> *) a. Monad m => a -> m a return () - processEquation (Duo XMDuop -_ XMExpr -expr XMExpr -expl) = do + processEquation (Duo XMDuop +_ XMExpr +expr XMExpr +expl) = do XMExpr -> m () -processEquation XMExpr -expr +processEquation XMExpr +expr XMExpr -> m () -processEquation XMExpr -expl - processEquation (Var String -name) = do +processEquation XMExpr +expl + processEquation (Var String +name) = do forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => Text -> m () -addUsages forall a b. (a -> b) -> a -> b +addUsages forall a b. (a -> b) -> a -> b $ String -> Text T.pack String -name +name forall {m :: * -> *} {v} {x}. MonadState (XMILEAlgBuilder v x) m => String -> HashMap Text XMExpr -> m () addDefaultValueIfNeeded String -name HashMap Text XMExpr -nameToEquationMap +name HashMap Text XMExpr +nameToEquationMap - addUsages :: Text -> m () -addUsages Text -name = do - XMILEAlgBuilder{HashMap Text Int + addUsages :: Text -> m () +addUsages Text +name = do + XMILEAlgBuilder{HashMap Text Int algUsagesCount :: HashMap Text Int algUsagesCount :: forall v x. XMILEAlgBuilder v x -> HashMap Text Int -algUsagesCount} <- forall s (m :: * -> *). MonadState s m => m s +algUsagesCount} <- forall s (m :: * -> *). MonadState s m => m s get - let val :: Int -val = forall b a. b -> (a -> b) -> Maybe a -> b + let val :: Int +val = forall b a. b -> (a -> b) -> Maybe a -> b maybe Int 0 (forall a. Num a => a -> a -> a + Int 1) forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup Text -name HashMap Text Int -algUsagesCount +name HashMap Text Int +algUsagesCount forall s (m :: * -> *). MonadState s m => (s -> s) -> m () -modify (\XMILEAlgBuilder v x -st -> XMILEAlgBuilder v x -st{algUsagesCount :: HashMap Text Int +modify (\XMILEAlgBuilder v x +st -> XMILEAlgBuilder v x +st{algUsagesCount :: HashMap Text Int algUsagesCount = forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert Text -name Int -val HashMap Text Int -algUsagesCount}) +name Int +val HashMap Text Int +algUsagesCount}) addDefaultValueIfNeeded :: String -> HashMap Text XMExpr -> m () -addDefaultValueIfNeeded String -name HashMap Text XMExpr -nameToEquationMap = do - XMILEAlgBuilder{HashMap Text Double +addDefaultValueIfNeeded String +name HashMap Text XMExpr +nameToEquationMap = do + XMILEAlgBuilder{HashMap Text Double algDefaultValues :: HashMap Text Double algDefaultValues :: forall v x. XMILEAlgBuilder v x -> HashMap Text Double -algDefaultValues} <- forall s (m :: * -> *). MonadState s m => m s +algDefaultValues} <- forall s (m :: * -> *). MonadState s m => m s get case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup (String -> Text T.pack String -name) HashMap Text Double -algDefaultValues of +name) HashMap Text Double +algDefaultValues of Just Double _ -> forall (m :: * -> *) a. Monad m => a -> m a return () @@ -1252,16 +1252,16 @@ case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup (String -> Text T.pack String -name) HashMap Text XMExpr -nameToEquationMap of - Just XMExpr -val -> +name) HashMap Text XMExpr +nameToEquationMap of + Just XMExpr +val -> forall s (m :: * -> *). MonadState s m => (s -> s) -> m () modify - ( \XMILEAlgBuilder v x -st -> + ( \XMILEAlgBuilder v x +st -> XMILEAlgBuilder v x -st +st { algDefaultValues :: HashMap Text Double algDefaultValues = forall k v. @@ -1270,13 +1270,13 @@ HM.insert (String -> Text T.pack String -name) +name) (HashMap Text Double -> XMExpr -> Double calculateDefaultValue HashMap Text Double -algDefaultValues XMExpr -val) +algDefaultValues XMExpr +val) HashMap Text Double -algDefaultValues +algDefaultValues } ) Maybe XMExpr @@ -1285,7 +1285,7 @@ $ String "equation for name " forall a. Semigroup a => a -> a -> a <> String -name forall a. Semigroup a => a -> a -> a +name forall a. Semigroup a => a -> a -> a <> String " not found." \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Frontends.XMILE.MathParser.html b/haddock/nitta/src/NITTA.Frontends.XMILE.MathParser.html index 67f8ad72c..f37d18b04 100644 --- a/haddock/nitta/src/NITTA.Frontends.XMILE.MathParser.html +++ b/haddock/nitta/src/NITTA.Frontends.XMILE.MathParser.html @@ -27,7 +27,7 @@ xmeOp :: XMDuop, XMExpr -> XMExpr xmeLexpr, XMExpr -> XMExpr xmeRexpr :: XMExpr} - deriving (Int -> XMExpr -> ShowS + deriving (Int -> XMExpr -> ShowS [XMExpr] -> ShowS XMExpr -> String forall a. @@ -38,7 +38,7 @@ $cshow :: XMExpr -> String showsPrec :: Int -> XMExpr -> ShowS $cshowsPrec :: Int -> XMExpr -> ShowS -Show, XMExpr -> XMExpr -> Bool +Show, XMExpr -> XMExpr -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: XMExpr -> XMExpr -> Bool $c/= :: XMExpr -> XMExpr -> Bool @@ -46,7 +46,7 @@ $c== :: XMExpr -> XMExpr -> Bool Eq) -data XMDuop = Mul | Div | Add | Sub deriving (Int -> XMDuop -> ShowS +data XMDuop = Mul | Div | Add | Sub deriving (Int -> XMDuop -> ShowS [XMDuop] -> ShowS XMDuop -> String forall a. @@ -57,7 +57,7 @@ $cshow :: XMDuop -> String showsPrec :: Int -> XMDuop -> ShowS $cshowsPrec :: Int -> XMDuop -> ShowS -Show, XMDuop -> XMDuop -> Bool +Show, XMDuop -> XMDuop -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: XMDuop -> XMDuop -> Bool $c/= :: XMDuop -> XMDuop -> Bool @@ -145,25 +145,25 @@ languageDef parseXmileEquation :: String -> XMExpr -parseXmileEquation String -eqn = case forall s t a. +parseXmileEquation String +eqn = case forall s t a. Stream s Identity t => Parsec s () a -> String -> s -> Either ParseError a parse Parser XMExpr exprparser String "" String -eqn of - Right XMExpr -e -> XMExpr -> XMExpr +eqn of + Right XMExpr +e -> XMExpr -> XMExpr prepareTree XMExpr -e +e Left ParseError _ -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "error while parsing XMILE equation : " forall a. Semigroup a => a -> a -> a <> String -eqn +eqn exprparser :: Parser XMExpr exprparser :: Parser XMExpr @@ -249,117 +249,117 @@ m_identifier) trimString :: ShowS -trimString String -str = Text -> String +trimString String +str = Text -> String T.unpack forall a b. (a -> b) -> a -> b $ (Char -> Char) -> Text -> Text T.map Char -> Char -repl forall a b. (a -> b) -> a -> b +repl forall a b. (a -> b) -> a -> b $ Text -> Text T.strip forall a b. (a -> b) -> a -> b $ String -> Text T.pack String -str +str where - repl :: Char -> Char -repl Char + repl :: Char -> Char +repl Char ' ' = Char '_' - repl Char -c = Char -c + repl Char +c = Char +c prepareTree :: XMExpr -> XMExpr -prepareTree (Var String -str) = forall b a. b -> (a -> b) -> Maybe a -> b +prepareTree (Var String +str) = forall b a. b -> (a -> b) -> Maybe a -> b maybe (String -> XMExpr Var forall a b. (a -> b) -> a -> b $ ShowS trimString String -str) Double -> XMExpr +str) Double -> XMExpr Val forall a b. (a -> b) -> a -> b $ forall a. Read a => String -> Maybe a readMaybe String -str -prepareTree v :: XMExpr -v@(Val Double +str +prepareTree v :: XMExpr +v@(Val Double _) = XMExpr -v -prepareTree (Duo XMDuop -op XMExpr -a XMExpr -b) = XMDuop -> XMExpr -> XMExpr -> XMExpr +v +prepareTree (Duo XMDuop +op XMExpr +a XMExpr +b) = XMDuop -> XMExpr -> XMExpr -> XMExpr Duo XMDuop -op (XMExpr -> XMExpr +op (XMExpr -> XMExpr prepareTree XMExpr -a) (XMExpr -> XMExpr +a) (XMExpr -> XMExpr prepareTree XMExpr -b) +b) calculateDefaultValue :: HashMap Text Double -> XMExpr -> Double calculateDefaultValue HashMap Text Double -_ (Val Double -value) = Double -value -calculateDefaultValue HashMap Text Double -defaultValues (Var String -name) = forall a. a -> Maybe a -> a +_ (Val Double +value) = Double +value +calculateDefaultValue HashMap Text Double +defaultValues (Var String +name) = forall a. a -> Maybe a -> a fromMaybe Double 0 forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup (String -> Text T.pack String -name) HashMap Text Double -defaultValues -calculateDefaultValue HashMap Text Double -defaultValues e :: XMExpr -e@(Duo XMDuop -op XMExpr -expl XMExpr -expr) = - let leftValue :: Double -leftValue = HashMap Text Double -> XMExpr -> Double +name) HashMap Text Double +defaultValues +calculateDefaultValue HashMap Text Double +defaultValues e :: XMExpr +e@(Duo XMDuop +op XMExpr +expl XMExpr +expr) = + let leftValue :: Double +leftValue = HashMap Text Double -> XMExpr -> Double calculateDefaultValue HashMap Text Double -defaultValues XMExpr -expl - rightValue :: Double -rightValue = HashMap Text Double -> XMExpr -> Double +defaultValues XMExpr +expl + rightValue :: Double +rightValue = HashMap Text Double -> XMExpr -> Double calculateDefaultValue HashMap Text Double -defaultValues XMExpr -expr +defaultValues XMExpr +expr in case XMDuop -op of +op of XMDuop Mul -> Double -leftValue forall a. Num a => a -> a -> a +leftValue forall a. Num a => a -> a -> a * Double -rightValue +rightValue XMDuop Div | Double -rightValue forall a. Eq a => a -> a -> Bool +rightValue forall a. Eq a => a -> a -> Bool == Double 0 -> forall a. HasCallStack => String -> a error (String "division to zero in expression '" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show XMExpr -e forall a. Semigroup a => a -> a -> a +e forall a. Semigroup a => a -> a -> a <> String "'") | Bool otherwise -> Double -leftValue forall a. Fractional a => a -> a -> a +leftValue forall a. Fractional a => a -> a -> a / Double -rightValue +rightValue XMDuop Add -> Double -leftValue forall a. Num a => a -> a -> a +leftValue forall a. Num a => a -> a -> a + Double -rightValue +rightValue XMDuop Sub -> Double -leftValue forall a. Num a => a -> a -> a +leftValue forall a. Num a => a -> a -> a - Double -rightValue +rightValue \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Frontends.html b/haddock/nitta/src/NITTA.Frontends.html index 7105fe69e..43f527e6b 100644 --- a/haddock/nitta/src/NITTA.Frontends.html +++ b/haddock/nitta/src/NITTA.Frontends.html @@ -1,4 +1,4 @@ -
    {- |
    +
    {- |
     Module      : NITTA.Frontends.FrontendIdentifier
     Description : Chooses a frontend based on source file extension or format
     Copyright   : (c) Artur Gogiyan, 2022
    @@ -24,7 +24,7 @@
     import System.FilePath
     
     data FrontendType = Lua | XMILE
    -    deriving (Int -> FrontendType -> ShowS
    +    deriving (Int -> FrontendType -> ShowS
     [FrontendType] -> ShowS
     FrontendType -> String
     forall a.
    @@ -35,7 +35,7 @@
     $cshow :: FrontendType -> String
     showsPrec :: Int -> FrontendType -> ShowS
     $cshowsPrec :: Int -> FrontendType -> ShowS
    -Show, Typeable FrontendType
    +Show, Typeable FrontendType
     FrontendType -> DataType
     FrontendType -> Constr
     (forall b. Data b => b -> b) -> FrontendType -> FrontendType
    @@ -168,37 +168,37 @@
     Data)
     
     identifyFrontendType :: String -> Maybe FrontendType -> FrontendType
    -identifyFrontendType String
    -fileName Maybe FrontendType
    -frontendType = forall a. a -> Maybe a -> a
    +identifyFrontendType String
    +fileName Maybe FrontendType
    +frontendType = forall a. a -> Maybe a -> a
     fromMaybe FrontendType
    -identifyByExtension Maybe FrontendType
    -frontendType
    +identifyByExtension Maybe FrontendType
    +frontendType
         where
    -        identifyByExtension :: FrontendType
    -identifyByExtension =
    +        identifyByExtension :: FrontendType
    +identifyByExtension =
                 case forall a b. (a, b) -> b
     snd forall a b. (a -> b) -> a -> b
     $ String -> (String, String)
     splitExtension String
    -fileName of
    +fileName of
                     String
     ".lua" -> FrontendType
     Lua
                     String
     ".xmile" -> FrontendType
     XMILE
    -                String
    -ext -> forall a. HasCallStack => String -> a
    +                String
    +ext -> forall a. HasCallStack => String -> a
     error forall a b. (a -> b) -> a -> b
     $ String
     "unknown file extensions: " forall a. Semigroup a => a -> a -> a
     <> String
    -ext forall a. Semigroup a => a -> a -> a
    +ext forall a. Semigroup a => a -> a -> a
     <> String
     " for " forall a. Semigroup a => a -> a -> a
     <> String
    -fileName
    +fileName
     
     translate :: FrontendType -> Text -> FrontendResult v x
     translate FrontendType
    diff --git a/haddock/nitta/src/NITTA.Intermediate.Analysis.html b/haddock/nitta/src/NITTA.Intermediate.Analysis.html
    index d6ad319ed..ff00e2c44 100644
    --- a/haddock/nitta/src/NITTA.Intermediate.Analysis.html
    +++ b/haddock/nitta/src/NITTA.Intermediate.Analysis.html
    @@ -64,15 +64,15 @@
     import NITTA.Intermediate.Types
     import NITTA.Utils.Base
     
    -data ProcessWave v x = ProcessWave
    +data ProcessWave v x = ProcessWave
         { forall v x. ProcessWave v x -> [F v x]
    -pwFs :: [F v x]
    +pwFs :: [F v x]
         -- ^ Functions that can be executed at this wave
         , forall v x. ProcessWave v x -> Set v
    -pwOut :: S.Set v
    +pwOut :: S.Set v
         -- ^ Set of output variables related to the functions from this step
         }
    -    deriving (Int -> ProcessWave v x -> ShowS
    +    deriving (Int -> ProcessWave v x -> ShowS
     forall a.
     (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
     forall v x. Show v => Int -> ProcessWave v x -> ShowS
    @@ -92,21 +92,21 @@
     $cfrom :: forall v x x. ProcessWave v x -> Rep (ProcessWave v x) x
     Generic)
     
    -data Builder v x = Builder
    +data Builder v x = Builder
         { forall v x. Builder v x -> Set (F v x)
    -pwRemains :: S.Set (F v x)
    +pwRemains :: S.Set (F v x)
         -- ^ Functions that can be calculated due to lack of ready input values
         , forall v x. Builder v x -> Set v
    -pwIn :: S.Set v
    +pwIn :: S.Set v
         -- ^ Variables that defined at the beginning of the process
         , forall v x. Builder v x -> Set v
    -pwReadyIn :: S.Set v
    +pwReadyIn :: S.Set v
         -- ^ Variables that is ready to be used us inputs
         , forall v x. Builder v x -> [ProcessWave v x]
    -pwGraph :: [ProcessWave v x]
    +pwGraph :: [ProcessWave v x]
         -- ^ Resulting process flow
         }
    -    deriving (Int -> Builder v x -> ShowS
    +    deriving (Int -> Builder v x -> ShowS
     forall a.
     (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
     forall v x. Show v => Int -> Builder v x -> ShowS
    @@ -130,140 +130,140 @@
     Sort functions in order of execution.
     Note that some function could be executed in parallel, in this case we save order from the source list.
     -}
    -reorderAlgorithm :: (Var v, Val x) => [F v x] -> [F v x]
    +reorderAlgorithm :: (Var v, Val x) => [F v x] -> [F v x]
     reorderAlgorithm :: forall v x. (Var v, Val x) => [F v x] -> [F v x]
    -reorderAlgorithm [F v x]
    -alg = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
    +reorderAlgorithm [F v x]
    +alg = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
     concatMap forall v x. ProcessWave v x -> [F v x]
     pwFs forall a b. (a -> b) -> a -> b
     $ forall v x. (Var v, Val x) => [v] -> [F v x] -> [ProcessWave v x]
     buildProcessWaves [] [F v x]
    -alg
    +alg
     
     {- |
     Functions can be divided into waves of execution.
     For each output variable, we define the wave number on which the variable will be defined.
     -}
    -estimateVarWaves :: (Var v, Val x, Num a) => [v] -> [F v x] -> M.Map v a
    +estimateVarWaves :: (Var v, Val x, Num a) => [v] -> [F v x] -> M.Map v a
     estimateVarWaves :: forall v x a. (Var v, Val x, Num a) => [v] -> [F v x] -> Map v a
    -estimateVarWaves [v]
    -alreadyVars [F v x]
    -fs = forall k a. Ord k => [(k, a)] -> Map k a
    +estimateVarWaves [v]
    +alreadyVars [F v x]
    +fs = forall k a. Ord k => [(k, a)] -> Map k a
     M.fromList forall a b. (a -> b) -> a -> b
     $ forall {a} {b} {x}.
     (Ord a, Num b) =>
     b -> [ProcessWave a x] -> [(a, b)]
    -go a
    +go a
     0 forall a b. (a -> b) -> a -> b
     $ forall v x. (Var v, Val x) => [v] -> [F v x] -> [ProcessWave v x]
     buildProcessWaves [v]
    -alreadyVars [F v x]
    -fs
    +alreadyVars [F v x]
    +fs
         where
    -        go :: b -> [ProcessWave a x] -> [(a, b)]
    -go b
    -n (ProcessWave{[F a x]
    +        go :: b -> [ProcessWave a x] -> [(a, b)]
    +go b
    +n (ProcessWave{[F a x]
     pwFs :: [F a x]
     pwFs :: forall v x. ProcessWave v x -> [F v x]
    -pwFs} : [ProcessWave a x]
    -pss) = b -> [ProcessWave a x] -> [(a, b)]
    -go (b
    -n forall a. Num a => a -> a -> a
    +pwFs} : [ProcessWave a x]
    +pss) = b -> [ProcessWave a x] -> [(a, b)]
    +go (b
    +n forall a. Num a => a -> a -> a
     + b
     1) [ProcessWave a x]
    -pss forall a. Semigroup a => a -> a -> a
    +pss forall a. Semigroup a => a -> a -> a
     <> [(a
    -out, b
    -n) | a
    -out <- forall a. Set a -> [a]
    +out, b
    +n) | a
    +out <- forall a. Set a -> [a]
     S.toList forall a b. (a -> b) -> a -> b
     $ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1
     unionsMap forall f v. Function f v => f -> Set v
     outputs [F a x]
    -pwFs]
    -        go b
    +pwFs]
    +        go b
     _ [] = []
     
     -- | Divide function into execution waves.
    -buildProcessWaves :: (Var v, Val x) => [v] -> [F v x] -> [ProcessWave v x]
    +buildProcessWaves :: (Var v, Val x) => [v] -> [F v x] -> [ProcessWave v x]
     buildProcessWaves :: forall v x. (Var v, Val x) => [v] -> [F v x] -> [ProcessWave v x]
    -buildProcessWaves [v]
    -vars [F v x]
    -fs =
    -    let pwIn :: Set v
    -pwIn = forall a. Ord a => [a] -> Set a
    +buildProcessWaves [v]
    +vars [F v x]
    +fs =
    +    let pwIn :: Set v
    +pwIn = forall a. Ord a => [a] -> Set a
     S.fromList [v]
    -vars
    -        ([F v x]
    -loops, [F v x]
    -other) = forall a. (a -> Bool) -> [a] -> ([a], [a])
    +vars
    +        ([F v x]
    +loops, [F v x]
    +other) = forall a. (a -> Bool) -> [a] -> ([a], [a])
     L.partition forall {v} {x}. (Typeable v, Typeable x) => F v x -> Bool
     isLoop [F v x]
    -fs
    -        beginning :: [ProcessWave v x]
    -beginning =
    +fs
    +        beginning :: [ProcessWave v x]
    +beginning =
                 -- Place all loops at the beginning of the algorithm to avoid circular dependencies in functions.
                 [ ProcessWave
                     { pwFs :: [F v x]
     pwFs = [F v x]
    -loops
    +loops
                     , pwOut :: Set v
     pwOut = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1
     unionsMap forall f v. Function f v => f -> Set v
     outputs [F v x]
    -loops
    +loops
                     }
                 | Bool -> Bool
     not (forall (t :: * -> *) a. Foldable t => t a -> Bool
     null [F v x]
    -loops)
    +loops)
                 ]
    -        builder :: Builder v x
    -builder =
    +        builder :: Builder v x
    +builder =
                 Builder
                     { pwRemains :: Set (F v x)
     pwRemains = forall a. Ord a => [a] -> Set a
     S.fromList [F v x]
    -other
    +other
                     , pwGraph :: [ProcessWave v x]
     pwGraph = [ProcessWave v x]
    -beginning
    +beginning
                     , Set v
     pwIn :: Set v
     pwIn :: Set v
    -pwIn
    +pwIn
                     , pwReadyIn :: Set v
     pwReadyIn = Set v
    -pwIn forall a. Ord a => Set a -> Set a -> Set a
    +pwIn forall a. Ord a => Set a -> Set a -> Set a
     `S.union` forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1
     unionsMap forall v x. ProcessWave v x -> Set v
     pwOut [ProcessWave v x]
    -beginning
    +beginning
                     }
          in forall v x. Builder v x -> [ProcessWave v x]
     pwGraph forall a b. (a -> b) -> a -> b
     $ forall v x. Ord v => Builder v x -> Int -> Builder v x
     execBuilder Builder v x
    -builder Int
    +builder Int
     0
     
    -execBuilder :: Ord v => Builder v x -> Int -> Builder v x
    +execBuilder :: Ord v => Builder v x -> Int -> Builder v x
     execBuilder :: forall v x. Ord v => Builder v x -> Int -> Builder v x
    -execBuilder builder :: Builder v x
    -builder@Builder{Set (F v x)
    +execBuilder builder :: Builder v x
    +builder@Builder{Set (F v x)
     pwRemains :: Set (F v x)
     pwRemains :: forall v x. Builder v x -> Set (F v x)
    -pwRemains} Int
    -prev
    +pwRemains} Int
    +prev
         | forall a. Set a -> Bool
     S.null Set (F v x)
    -pwRemains = Builder v x
    -builder
    +pwRemains = Builder v x
    +builder
         | forall a. Set a -> Int
     S.size Set (F v x)
    -pwRemains forall a. Eq a => a -> a -> Bool
    +pwRemains forall a. Eq a => a -> a -> Bool
     == Int
    -prev = forall a. HasCallStack => String -> a
    +prev = forall a. HasCallStack => String -> a
     error String
     "Process waves construction stuck in a loop"
         | Bool
    @@ -273,131 +273,131 @@
     (b -> a -> b) -> b -> t a -> b
     foldl forall v x. Ord v => Builder v x -> F v x -> Builder v x
     applyRemaining Builder v x
    -builder Set (F v x)
    -pwRemains) forall a b. (a -> b) -> a -> b
    +builder Set (F v x)
    +pwRemains) forall a b. (a -> b) -> a -> b
     $ forall a. Set a -> Int
     S.size Set (F v x)
    -pwRemains
    +pwRemains
     
    -applyRemaining :: Ord v => Builder v x -> F v x -> Builder v x
    +applyRemaining :: Ord v => Builder v x -> F v x -> Builder v x
     applyRemaining :: forall v x. Ord v => Builder v x -> F v x -> Builder v x
    -applyRemaining builder :: Builder v x
    -builder@Builder{Set (F v x)
    +applyRemaining builder :: Builder v x
    +builder@Builder{Set (F v x)
     pwRemains :: Set (F v x)
     pwRemains :: forall v x. Builder v x -> Set (F v x)
    -pwRemains, [ProcessWave v x]
    +pwRemains, [ProcessWave v x]
     pwGraph :: [ProcessWave v x]
     pwGraph :: forall v x. Builder v x -> [ProcessWave v x]
    -pwGraph, Set v
    +pwGraph, Set v
     pwIn :: Set v
     pwIn :: forall v x. Builder v x -> Set v
    -pwIn, Set v
    +pwIn, Set v
     pwReadyIn :: Set v
     pwReadyIn :: forall v x. Builder v x -> Set v
    -pwReadyIn} F v x
    -func =
    -    let fIn :: Set v
    -fIn = forall f v. Function f v => f -> Set v
    +pwReadyIn} F v x
    +func =
    +    let fIn :: Set v
    +fIn = forall f v. Function f v => f -> Set v
     inputs F v x
    -func
    -        fOut :: Set v
    -fOut = forall f v. Function f v => f -> Set v
    +func
    +        fOut :: Set v
    +fOut = forall f v. Function f v => f -> Set v
     outputs F v x
    -func
    -        pendingIn :: Set v
    -pendingIn = forall a. Ord a => Set a -> Set a -> Set a
    +func
    +        pendingIn :: Set v
    +pendingIn = forall a. Ord a => Set a -> Set a -> Set a
     S.difference Set v
    -fIn Set v
    -pwReadyIn
    +fIn Set v
    +pwReadyIn
          in if Bool -> Bool
     not forall a b. (a -> b) -> a -> b
     $ forall (t :: * -> *) a. Foldable t => t a -> Bool
     null Set v
    -pendingIn
    +pendingIn
                 then Builder v x
    -builder
    +builder
                 else
                     Builder v x
    -builder
    +builder
                         { pwReadyIn :: Set v
     pwReadyIn = forall a. Ord a => Set a -> Set a -> Set a
     S.union Set v
    -fOut Set v
    -pwReadyIn
    +fOut Set v
    +pwReadyIn
                         , pwGraph :: [ProcessWave v x]
     pwGraph = forall v x.
     Ord v =>
     F v x -> Set v -> Set v -> [ProcessWave v x] -> [ProcessWave v x]
     insertF F v x
    -func (forall a. Ord a => Set a -> Set a -> Set a
    +func (forall a. Ord a => Set a -> Set a -> Set a
     S.difference Set v
    -fIn Set v
    -pwIn) Set v
    -fOut [ProcessWave v x]
    -pwGraph
    +fIn Set v
    +pwIn) Set v
    +fOut [ProcessWave v x]
    +pwGraph
                         , pwRemains :: Set (F v x)
     pwRemains = forall a. Ord a => a -> Set a -> Set a
     S.delete F v x
    -func Set (F v x)
    -pwRemains
    +func Set (F v x)
    +pwRemains
                         }
     
    -insertF :: Ord v => F v x -> S.Set v -> S.Set v -> [ProcessWave v x] -> [ProcessWave v x]
    +insertF :: Ord v => F v x -> S.Set v -> S.Set v -> [ProcessWave v x] -> [ProcessWave v x]
     insertF :: forall v x.
     Ord v =>
     F v x -> Set v -> Set v -> [ProcessWave v x] -> [ProcessWave v x]
    -insertF F v x
    -f Set v
    -fIn Set v
    -fOut []
    +insertF F v x
    +f Set v
    +fIn Set v
    +fOut []
         | forall (t :: * -> *) a. Foldable t => t a -> Bool
     null Set v
    -fIn = [ProcessWave{pwFs :: [F v x]
    +fIn = [ProcessWave{pwFs :: [F v x]
     pwFs = [F v x
    -f], pwOut :: Set v
    +f], pwOut :: Set v
     pwOut = Set v
    -fOut}]
    +fOut}]
         | Bool
     otherwise = forall a. HasCallStack => String -> a
     error String
     "Cannot calculate process wave for the function"
    -insertF F v x
    -f Set v
    -fIn Set v
    -fOut (ps :: ProcessWave v x
    -ps@ProcessWave{[F v x]
    +insertF F v x
    +f Set v
    +fIn Set v
    +fOut (ps :: ProcessWave v x
    +ps@ProcessWave{[F v x]
     pwFs :: [F v x]
     pwFs :: forall v x. ProcessWave v x -> [F v x]
    -pwFs, Set v
    +pwFs, Set v
     pwOut :: Set v
     pwOut :: forall v x. ProcessWave v x -> Set v
    -pwOut} : [ProcessWave v x]
    -pss)
    +pwOut} : [ProcessWave v x]
    +pss)
         | forall (t :: * -> *) a. Foldable t => t a -> Bool
     null Set v
    -fIn = ProcessWave v x
    -ps{pwFs :: [F v x]
    +fIn = ProcessWave v x
    +ps{pwFs :: [F v x]
     pwFs = F v x
    -f forall a. a -> [a] -> [a]
    +f forall a. a -> [a] -> [a]
     : [F v x]
    -pwFs, pwOut :: Set v
    +pwFs, pwOut :: Set v
     pwOut = forall a. Ord a => Set a -> Set a -> Set a
     S.union Set v
    -fOut Set v
    -pwOut} forall a. a -> [a] -> [a]
    +fOut Set v
    +pwOut} forall a. a -> [a] -> [a]
     : [ProcessWave v x]
    -pss
    +pss
         | Bool
     otherwise = ProcessWave v x
    -ps forall a. a -> [a] -> [a]
    +ps forall a. a -> [a] -> [a]
     : forall v x.
     Ord v =>
     F v x -> Set v -> Set v -> [ProcessWave v x] -> [ProcessWave v x]
     insertF F v x
    -f (forall a. Ord a => Set a -> Set a -> Set a
    +f (forall a. Ord a => Set a -> Set a -> Set a
     S.difference Set v
    -fIn Set v
    -pwOut) Set v
    -fOut [ProcessWave v x]
    -pss
    +fIn Set v
    +pwOut) Set v
    +fOut [ProcessWave v x]
    +pss
     
    \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Intermediate.DataFlow.html b/haddock/nitta/src/NITTA.Intermediate.DataFlow.html index 287a32adb..cc0297e48 100644 --- a/haddock/nitta/src/NITTA.Intermediate.DataFlow.html +++ b/haddock/nitta/src/NITTA.Intermediate.DataFlow.html @@ -27,10 +27,10 @@ Right now can be replaced by @[F v x]@, but for future features like conduction statement, we don't do that. -}
    -data DataFlowGraph v x - = DFLeaf (F v x) - | DFCluster [DataFlowGraph v x] - deriving (Int -> DataFlowGraph v x -> ShowS +data DataFlowGraph v x + = DFLeaf (F v x) + | DFCluster [DataFlowGraph v x] + deriving (Int -> DataFlowGraph v x -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x. Int -> DataFlowGraph v x -> ShowS @@ -50,76 +50,76 @@ $cfrom :: forall v x x. DataFlowGraph v x -> Rep (DataFlowGraph v x) x Generic) -instance Default (DataFlowGraph v x) where - def :: DataFlowGraph v x +instance Default (DataFlowGraph v x) where + def :: DataFlowGraph v x def = forall v x. [DataFlowGraph v x] -> DataFlowGraph v x DFCluster [] -instance Eq (DataFlowGraph v x) where +instance Eq (DataFlowGraph v x) where -- `show` used for avoid `Ord (DataFlowGraph v x)` - (DFCluster [DataFlowGraph v x] -c1) == :: DataFlowGraph v x -> DataFlowGraph v x -> Bool -== (DFCluster [DataFlowGraph v x] -c2) = forall a. Ord a => [a] -> Set a + (DFCluster [DataFlowGraph v x] +c1) == :: DataFlowGraph v x -> DataFlowGraph v x -> Bool +== (DFCluster [DataFlowGraph v x] +c2) = forall a. Ord a => [a] -> Set a S.fromList (forall a b. (a -> b) -> [a] -> [b] map forall a. Show a => a -> String show [DataFlowGraph v x] -c1) forall a. Eq a => a -> a -> Bool +c1) forall a. Eq a => a -> a -> Bool == forall a. Ord a => [a] -> Set a S.fromList (forall a b. (a -> b) -> [a] -> [b] map forall a. Show a => a -> String show [DataFlowGraph v x] -c2) - (DFLeaf F v x -f1) == (DFLeaf F v x -f2) = F v x -f1 forall a. Eq a => a -> a -> Bool +c2) + (DFLeaf F v x +f1) == (DFLeaf F v x +f2) = F v x +f1 forall a. Eq a => a -> a -> Bool == F v x -f2 +f2 DataFlowGraph v x _ == DataFlowGraph v x _ = Bool False -instance Var v => Variables (DataFlowGraph v x) v where - variables :: DataFlowGraph v x -> Set v -variables (DFLeaf F v x -fb) = forall a v. Variables a v => a -> Set v +instance Var v => Variables (DataFlowGraph v x) v where + variables :: DataFlowGraph v x -> Set v +variables (DFLeaf F v x +fb) = forall a v. Variables a v => a -> Set v variables F v x -fb - variables (DFCluster [DataFlowGraph v x] -g) = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 +fb + variables (DFCluster [DataFlowGraph v x] +g) = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables [DataFlowGraph v x] -g +g -instance WithFunctions (DataFlowGraph v x) (F v x) where - functions :: DataFlowGraph v x -> [F v x] -functions (DFLeaf F v x -f) = [F v x -f] - functions (DFCluster [DataFlowGraph v x] -g) = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +instance WithFunctions (DataFlowGraph v x) (F v x) where + functions :: DataFlowGraph v x -> [F v x] +functions (DFLeaf F v x +f) = [F v x +f] + functions (DFCluster [DataFlowGraph v x] +g) = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap forall a f. WithFunctions a f => a -> [f] functions [DataFlowGraph v x] -g +g -instance (Var v, Val x) => BreakLoopProblem (DataFlowGraph v x) v x where - breakLoopOptions :: DataFlowGraph v x -> [BreakLoop v x] -breakLoopOptions DataFlowGraph v x -_dfg = [] +instance (Var v, Val x) => BreakLoopProblem (DataFlowGraph v x) v x where + breakLoopOptions :: DataFlowGraph v x -> [BreakLoop v x] +breakLoopOptions DataFlowGraph v x +_dfg = [] - breakLoopDecision :: DataFlowGraph v x -> BreakLoop v x -> DataFlowGraph v x -breakLoopDecision DataFlowGraph v x -dfg BreakLoop v x -bl = - let origin :: F v x -origin = forall {v} {x}. + breakLoopDecision :: DataFlowGraph v x -> BreakLoop v x -> DataFlowGraph v x +breakLoopDecision DataFlowGraph v x +dfg BreakLoop v x +bl = + let origin :: F v x +origin = forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoop BreakLoop v x -bl +bl in forall {v} {x}. [F v x] -> DataFlowGraph v x fsToDataFlowGraph forall a b. (a -> b) -> a -> b $ @@ -128,34 +128,34 @@ Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoopIn BreakLoop v x -bl){funHistory :: [F v x] -funHistory = [F v x -origin]} +bl){funHistory :: [F v x] +funHistory = [F v x +origin]} forall a. a -> [a] -> [a] : (forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoopOut BreakLoop v x -bl){funHistory :: [F v x] -funHistory = [F v x -origin]} +bl){funHistory :: [F v x] +funHistory = [F v x +origin]} forall a. a -> [a] -> [a] : (forall a f. WithFunctions a f => a -> [f] functions DataFlowGraph v x -dfg forall a. Eq a => [a] -> [a] -> [a] +dfg forall a. Eq a => [a] -> [a] -> [a] L.\\ [F v x -origin]) +origin]) -instance (Var v, Val x) => ConstantFoldingProblem (DataFlowGraph v x) v x where - constantFoldingOptions :: DataFlowGraph v x -> [ConstantFolding v x] -constantFoldingOptions DataFlowGraph v x -_dfg = [] +instance (Var v, Val x) => ConstantFoldingProblem (DataFlowGraph v x) v x where + constantFoldingOptions :: DataFlowGraph v x -> [ConstantFolding v x] +constantFoldingOptions DataFlowGraph v x +_dfg = [] - constantFoldingDecision :: DataFlowGraph v x -> ConstantFolding v x -> DataFlowGraph v x -constantFoldingDecision DataFlowGraph v x -dfg ref :: ConstantFolding v x -ref@ConstantFolding{} = + constantFoldingDecision :: DataFlowGraph v x -> ConstantFolding v x -> DataFlowGraph v x +constantFoldingDecision DataFlowGraph v x +dfg ref :: ConstantFolding v x +ref@ConstantFolding{} = forall {v} {x}. [F v x] -> DataFlowGraph v x fsToDataFlowGraph forall a b. (a -> b) -> a -> b $ forall u v x. @@ -163,18 +163,18 @@ u -> ConstantFolding v x -> u constantFoldingDecision (forall a f. WithFunctions a f => a -> [f] functions DataFlowGraph v x -dfg) ConstantFolding v x -ref +dfg) ConstantFolding v x +ref -instance (Var v, Val x) => OptimizeAccumProblem (DataFlowGraph v x) v x where - optimizeAccumOptions :: DataFlowGraph v x -> [OptimizeAccum v x] -optimizeAccumOptions DataFlowGraph v x -_dfg = [] +instance (Var v, Val x) => OptimizeAccumProblem (DataFlowGraph v x) v x where + optimizeAccumOptions :: DataFlowGraph v x -> [OptimizeAccum v x] +optimizeAccumOptions DataFlowGraph v x +_dfg = [] - optimizeAccumDecision :: DataFlowGraph v x -> OptimizeAccum v x -> DataFlowGraph v x -optimizeAccumDecision DataFlowGraph v x -dfg ref :: OptimizeAccum v x -ref@OptimizeAccum{} = + optimizeAccumDecision :: DataFlowGraph v x -> OptimizeAccum v x -> DataFlowGraph v x +optimizeAccumDecision DataFlowGraph v x +dfg ref :: OptimizeAccum v x +ref@OptimizeAccum{} = forall {v} {x}. [F v x] -> DataFlowGraph v x fsToDataFlowGraph forall a b. (a -> b) -> a -> b $ forall u v x. @@ -182,57 +182,57 @@ u -> OptimizeAccum v x -> u optimizeAccumDecision (forall a f. WithFunctions a f => a -> [f] functions DataFlowGraph v x -dfg) OptimizeAccum v x -ref +dfg) OptimizeAccum v x +ref -instance Var v => ResolveDeadlockProblem (DataFlowGraph v x) v x where - resolveDeadlockOptions :: DataFlowGraph v x -> [ResolveDeadlock v x] -resolveDeadlockOptions DataFlowGraph v x -_dfg = [] +instance Var v => ResolveDeadlockProblem (DataFlowGraph v x) v x where + resolveDeadlockOptions :: DataFlowGraph v x -> [ResolveDeadlock v x] +resolveDeadlockOptions DataFlowGraph v x +_dfg = [] - resolveDeadlockDecision :: DataFlowGraph v x -> ResolveDeadlock v x -> DataFlowGraph v x -resolveDeadlockDecision DataFlowGraph v x -dfg ResolveDeadlock{F v x + resolveDeadlockDecision :: DataFlowGraph v x -> ResolveDeadlock v x -> DataFlowGraph v x +resolveDeadlockDecision DataFlowGraph v x +dfg ResolveDeadlock{F v x newBuffer :: forall v x. ResolveDeadlock v x -> F v x newBuffer :: F v x -newBuffer, Changeset v +newBuffer, Changeset v changeset :: forall v x. ResolveDeadlock v x -> Changeset v changeset :: Changeset v changeset} = forall {v} {x}. [F v x] -> DataFlowGraph v x fsToDataFlowGraph (F v x -newBuffer forall a. a -> [a] -> [a] +newBuffer forall a. a -> [a] -> [a] : forall a b. (a -> b) -> [a] -> [b] map (forall f diff. Patch f diff => diff -> f -> f patch Changeset v -changeset) (forall a f. WithFunctions a f => a -> [f] +changeset) (forall a f. WithFunctions a f => a -> [f] functions DataFlowGraph v x -dfg)) +dfg)) -- | Convert @[ F v x ]@ to 'DataFlowGraph'. fsToDataFlowGraph :: [F v x] -> DataFlowGraph v x -fsToDataFlowGraph [F v x] -fs = forall v x. [DataFlowGraph v x] -> DataFlowGraph v x +fsToDataFlowGraph [F v x] +fs = forall v x. [DataFlowGraph v x] -> DataFlowGraph v x DFCluster forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall v x. F v x -> DataFlowGraph v x DFLeaf [F v x] -fs +fs addFuncToDataFlowGraph :: F v x -> DataFlowGraph v x -> DataFlowGraph v x -addFuncToDataFlowGraph F v x -f (DFCluster [DataFlowGraph v x] -items) = forall v x. [DataFlowGraph v x] -> DataFlowGraph v x +addFuncToDataFlowGraph F v x +f (DFCluster [DataFlowGraph v x] +items) = forall v x. [DataFlowGraph v x] -> DataFlowGraph v x DFCluster (forall v x. F v x -> DataFlowGraph v x DFLeaf F v x -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] : [DataFlowGraph v x] -items) -addFuncToDataFlowGraph F v x -f DataFlowGraph v x -leaf = forall v x. [DataFlowGraph v x] -> DataFlowGraph v x +items) +addFuncToDataFlowGraph F v x +f DataFlowGraph v x +leaf = forall v x. [DataFlowGraph v x] -> DataFlowGraph v x DFCluster [forall v x. F v x -> DataFlowGraph v x DFLeaf F v x -f, DataFlowGraph v x -leaf] +f, DataFlowGraph v x +leaf]
    \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Intermediate.Functions.Accum.html b/haddock/nitta/src/NITTA.Intermediate.Functions.Accum.html index b527c45dc..563039193 100644 --- a/haddock/nitta/src/NITTA.Intermediate.Functions.Accum.html +++ b/haddock/nitta/src/NITTA.Intermediate.Functions.Accum.html @@ -35,7 +35,7 @@ import NITTA.Utils.Base import Text.Regex -data Sign = Plus | Minus deriving (Typeable, Sign -> Sign -> Bool +data Sign = Plus | Minus deriving (Typeable, Sign -> Sign -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Sign -> Sign -> Bool $c/= :: Sign -> Sign -> Bool @@ -43,8 +43,8 @@ $c== :: Sign -> Sign -> Bool Eq) -instance Show Sign where - show :: Sign -> String +instance Show Sign where + show :: Sign -> String show Sign Plus = String "+" @@ -52,7 +52,7 @@ Minus = String "-" -data Action v = Push Sign (I v) | Pull (O v) deriving (Typeable, Action v -> Action v -> Bool +data Action v = Push Sign (I v) | Pull (O v) deriving (Typeable, Action v -> Action v -> Bool forall v. Eq v => Action v -> Action v -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Action v -> Action v -> Bool @@ -61,18 +61,18 @@ $c== :: forall v. Eq v => Action v -> Action v -> Bool Eq) -instance Var v => Show (Action v) where - show :: Action v -> String -show (Push Sign -s (I v -v)) = forall a. Show a => a -> String +instance Var v => Show (Action v) where + show :: Action v -> String +show (Push Sign +s (I v +v)) = forall a. Show a => a -> String show Sign -s forall a. Semigroup a => a -> a -> a +s forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString v -v - show (Pull (O Set v -vs)) = forall a. [a] -> [[a]] -> [a] +v + show (Pull (O Set v +vs)) = forall a. [a] -> [[a]] -> [a] S.join String " " forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] @@ -81,22 +81,22 @@ <>) forall a b. (a -> b) -> a -> b $ forall {a}. ToString a => Set a -> [String] vsToStringList Set v -vs +vs -instance Variables (Action v) v where - variables :: Action v -> Set v -variables (Push Sign -_s I v -i) = forall a v. Variables a v => a -> Set v +instance Variables (Action v) v where + variables :: Action v -> Set v +variables (Push Sign +_s I v +i) = forall a v. Variables a v => a -> Set v variables I v -i - variables (Pull O v -o) = forall a v. Variables a v => a -> Set v +i + variables (Pull O v +o) = forall a v. Variables a v => a -> Set v variables O v -o +o -newtype Acc v x = Acc {forall v x. Acc v x -> [Action v] -actions :: [Action v]} deriving (Typeable, Acc v x -> Acc v x -> Bool +newtype Acc v x = Acc {forall v x. Acc v x -> [Action v] +actions :: [Action v]} deriving (Typeable, Acc v x -> Acc v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => Acc v x -> Acc v x -> Bool /= :: Acc v x -> Acc v x -> Bool @@ -105,34 +105,34 @@ $c== :: forall v x. Eq v => Acc v x -> Acc v x -> Bool Eq) -instance Var v => Show (Acc v x) where - show :: Acc v x -> String -show (Acc [Action v] -acts) = - let lastElement :: Action v -lastElement = forall a. [a] -> a +instance Var v => Show (Acc v x) where + show :: Acc v x -> String +show (Acc [Action v] +acts) = + let lastElement :: Action v +lastElement = forall a. [a] -> a last [Action v] -acts - initElements :: [Action v] -initElements = forall a. [a] -> [a] +acts + initElements :: [Action v] +initElements = forall a. [a] -> [a] init [Action v] -acts - showElement :: Action v -> String -showElement inp :: Action v -inp@(Push Sign +acts + showElement :: Action v -> String +showElement inp :: Action v +inp@(Push Sign _ I v _) = forall a. Show a => a -> String show Action v -inp - showElement out :: Action v -out@(Pull O v +inp + showElement out :: Action v +out@(Pull O v _) = forall a. Show a => a -> String show Action v -out forall a. Semigroup a => a -> a -> a +out forall a. Semigroup a => a -> a -> a <> String "," - elements :: String -elements = forall a. [a] -> [[a]] -> [a] + elements :: String +elements = forall a. [a] -> [[a]] -> [a] S.join String " " forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] @@ -140,38 +140,38 @@ (Typeable v, Ord v, IsString v, ToString v, Suffix v, Hashable v) => Action v -> String -showElement [Action v] -initElements forall a. Semigroup a => a -> a -> a +showElement [Action v] +initElements forall a. Semigroup a => a -> a -> a <> [forall a. Show a => a -> String show Action v -lastElement] +lastElement] in String "Acc(" forall a. Semigroup a => a -> a -> a <> String -elements forall a. Semigroup a => a -> a -> a +elements forall a. Semigroup a => a -> a -> a <> String ")" -instance Label (Acc v x) where label :: Acc v x -> String +instance Label (Acc v x) where label :: Acc v x -> String label Acc{} = String "Acc" -- | Create function with type F of Acc acc :: [Action v] -> F v x -acc [Action v] -lst = forall {f} {v} {x}. +acc [Action v] +lst = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x packF forall a b. (a -> b) -> a -> b $ forall v x. [Action v] -> Acc v x Acc [Action v] -lst +lst -- | Special function for generating Acc from string, examples in tests accFromStr :: String -> F Text x -accFromStr String -desc = forall {f} {v} {x}. +accFromStr String +desc = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -180,7 +180,7 @@ accGen forall a b. (a -> b) -> a -> b $ String -> [[String]] toBlocksSplit String -desc +desc isPull :: Action v -> Bool isPull Pull{} = Bool @@ -198,27 +198,27 @@ fromPush :: Action v -> v fromPush (Push Sign -_ (I v -v)) = v -v +_ (I v +v)) = v +v fromPush Action v _ = forall a. HasCallStack => String -> a error String "Error in fromPush function in acc" fromPull :: Action v -> Set v -fromPull (Pull (O Set v -vs)) = Set v -vs +fromPull (Pull (O Set v +vs)) = Set v +vs fromPull Action v _ = forall a. HasCallStack => String -> a error String "Error in fromPull function in acc" -instance Ord v => Function (Acc v x) v where - inputs :: Acc v x -> Set v -inputs (Acc [Action v] -lst) = forall a. Ord a => [a] -> Set a +instance Ord v => Function (Acc v x) v where + inputs :: Acc v x -> Set v +inputs (Acc [Action v] +lst) = forall a. Ord a => [a] -> Set a S.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall {v}. Action v -> v @@ -226,22 +226,22 @@ $ forall a. (a -> Bool) -> [a] -> [a] filter forall {v}. Action v -> Bool isPush [Action v] -lst - outputs :: Acc v x -> Set v -outputs (Acc [Action v] -lst) = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 +lst + outputs :: Acc v x -> Set v +outputs (Acc [Action v] +lst) = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall v. Action v -> Set v fromPull forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter forall {v}. Action v -> Bool isPull [Action v] -lst +lst -instance Ord v => Patch (Acc v x) (v, v) where - patch :: (v, v) -> Acc v x -> Acc v x -patch (v, v) -diff (Acc [Action v] -lst) = +instance Ord v => Patch (Acc v x) (v, v) where + patch :: (v, v) -> Acc v x -> Acc v x +patch (v, v) +diff (Acc [Action v] +lst) = forall v x. [Action v] -> Acc v x Acc forall a b. (a -> b) -> a -> b $ @@ -251,33 +251,33 @@ forall a b. (a -> b) -> [a] -> [b] map ( \case - Push Sign -s I v -v -> forall v. Sign -> I v -> Action v + Push Sign +s I v +v -> forall v. Sign -> I v -> Action v Push Sign -s (forall f diff. Patch f diff => diff -> f -> f +s (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -v) - Pull O v -vs -> forall v. O v -> Action v +diff I v +v) + Pull O v +vs -> forall v. O v -> Action v Pull (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -vs) +diff O v +vs) ) [Action v] -lst +lst exprPattern :: Regex exprPattern = String -> Regex mkRegex String "[+,=,-]*[a-zA-Z0-9]+|;" toBlocksSplit :: String -> [[String]] -toBlocksSplit String -exprInput = - let splitBySemicolon :: [String] -> [[String]] -splitBySemicolon = forall a. (a -> Bool) -> [a] -> [a] +toBlocksSplit String +exprInput = + let splitBySemicolon :: [String] -> [[String]] +splitBySemicolon = forall a. (a -> Bool) -> [a] -> [a] filter (Bool -> Bool not forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a. Foldable t => t a -> Bool @@ -286,99 +286,99 @@ splitWhen (forall a. Eq a => a -> a -> Bool == String ";") - matchAll :: Regex -> String -> t -> [String] -matchAll Regex -p String -inpS t -res = + matchAll :: Regex -> String -> t -> [String] +matchAll Regex +p String +inpS t +res = case Regex -> String -> Maybe (String, String, String, [String]) matchRegexAll Regex -p String -inpS of +p String +inpS of Just (String -_, String -x, String -xs, [String] +_, String +x, String +xs, [String] _) -> String -x forall a. a -> [a] -> [a] +x forall a. a -> [a] -> [a] : Regex -> String -> t -> [String] -matchAll Regex -p String -xs t -res +matchAll Regex +p String +xs t +res Maybe (String, String, String, [String]) Nothing -> [] - filtered :: String -filtered = Regex -> String -> ShowS + filtered :: String +filtered = Regex -> String -> ShowS subRegex (String -> Regex mkRegex String "[ ]+") String -exprInput String +exprInput String "" in [String] -> [[String]] -splitBySemicolon forall a b. (a -> b) -> a -> b +splitBySemicolon forall a b. (a -> b) -> a -> b $ forall {t}. Regex -> String -> t -> [String] -matchAll Regex +matchAll Regex exprPattern String -filtered [] +filtered [] accGen :: [[String]] -> Acc Text x -accGen [[String]] -blocks = - let partedExpr :: [[String]] -> [([String], [String])] -partedExpr = +accGen [[String]] +blocks = + let partedExpr :: [[String]] -> [([String], [String])] +partedExpr = forall a b. (a -> b) -> [a] -> [b] map ( forall a. (a -> Bool) -> [a] -> ([a], [a]) partition forall a b. (a -> b) -> a -> b $ \case - (Char -x : String + (Char +x : String _) -> Char -x forall a. Eq a => a -> a -> Bool +x forall a. Eq a => a -> a -> Bool /= Char '=' - String -x -> forall a. HasCallStack => String -> a + String +x -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "error in accGen: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show String -x +x ) - signPush :: String -> Action Text -signPush (Char -'+' : String -name) = forall v. Sign -> I v -> Action v + signPush :: String -> Action Text +signPush (Char +'+' : String +name) = forall v. Sign -> I v -> Action v Push Sign Plus (forall v. v -> I v I forall a b. (a -> b) -> a -> b $ String -> Text T.pack String -name) - signPush (Char -'-' : String -name) = forall v. Sign -> I v -> Action v +name) + signPush (Char +'-' : String +name) = forall v. Sign -> I v -> Action v Push Sign Minus (forall v. v -> I v I forall a b. (a -> b) -> a -> b $ String -> Text T.pack String -name) - signPush String +name) + signPush String _ = forall a. HasCallStack => String -> a error String "Error in matching + and -" - pushCreate :: [String] -> [Action Text] -pushCreate [String] -lst = forall a b. (a -> b) -> [a] -> [b] + pushCreate :: [String] -> [Action Text] +pushCreate [String] +lst = forall a b. (a -> b) -> [a] -> [b] map String -> Action Text -signPush [String] -lst - pullCreate :: t String -> Action Text -pullCreate t String -lst = +signPush [String] +lst + pullCreate :: t String -> Action Text +pullCreate t String +lst = forall v. O v -> Action v Pull forall a b. (a -> b) -> a -> b $ @@ -392,15 +392,15 @@ Foldable t => (b -> a -> b) -> b -> t a -> b foldl - ( \[Text] -buff -> \case + ( \[Text] +buff -> \case (Char -_ : String -name) -> String -> Text +_ : String +name) -> String -> Text T.pack String -name forall a. a -> [a] -> [a] +name forall a. a -> [a] -> [a] : [Text] -buff +buff String _ -> forall a. HasCallStack => String -> a error String @@ -408,104 +408,104 @@ ) [] t String -lst +lst in forall v x. [Action v] -> Acc v x Acc forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] -concatMap (\([String] -push, [String] -pull) -> [String] -> [Action Text] -pushCreate [String] -push forall a. [a] -> [a] -> [a] +concatMap (\([String] +push, [String] +pull) -> [String] -> [Action Text] +pushCreate [String] +push forall a. [a] -> [a] -> [a] ++ [forall {t :: * -> *}. Foldable t => t String -> Action Text -pullCreate [String] -pull]) forall a b. (a -> b) -> a -> b +pullCreate [String] +pull]) forall a b. (a -> b) -> a -> b $ [[String]] -> [([String], [String])] -partedExpr [[String]] -blocks +partedExpr [[String]] +blocks -instance Var v => Locks (Acc v x) v where - locks :: Acc v x -> [Lock v] -locks (Acc [Action v] -actions) = - let ([Action v] -lockByActions, [Action v] -lockedActions) = forall a. (a -> Bool) -> [a] -> ([a], [a]) +instance Var v => Locks (Acc v x) v where + locks :: Acc v x -> [Lock v] +locks (Acc [Action v] +actions) = + let ([Action v] +lockByActions, [Action v] +lockedActions) = forall a. (a -> Bool) -> [a] -> ([a], [a]) span forall {v}. Action v -> Bool isPush [Action v] -actions +actions in [ Lock{v locked :: v locked :: v -locked, v +locked, v lockBy :: v lockBy :: v -lockBy} - | v -locked <- forall a. Set a -> [a] +lockBy} + | v +locked <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables [Action v] -lockedActions - , v -lockBy <- forall a. Set a -> [a] +lockedActions + , v +lockBy <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables [Action v] -lockByActions +lockByActions ] -instance (Var v, Num x) => FunctionSimulation (Acc v x) v x where - simulate :: CycleCntx v x -> Acc v x -> [(v, x)] -simulate CycleCntx v x -cntx (Acc [Action v] -ops) = forall a b. (a, b) -> b +instance (Var v, Num x) => FunctionSimulation (Acc v x) v x where + simulate :: CycleCntx v x -> Acc v x -> [(v, x)] +simulate CycleCntx v x +cntx (Acc [Action v] +ops) = forall a b. (a, b) -> b snd forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl (x, [(v, x)]) -> Action v -> (x, [(v, x)]) -eval (x +eval (x 0, []) [Action v] -ops +ops where - eval :: (x, [(v, x)]) -> Action v -> (x, [(v, x)]) -eval (x -buf, [(v, x)] -changes) (Push Sign -sign (I v -v)) - | x -x <- forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v + eval :: (x, [(v, x)]) -> Action v -> (x, [(v, x)]) +eval (x +buf, [(v, x)] +changes) (Push Sign +sign (I v +v)) + | x +x <- forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v getCntx CycleCntx v x -cntx v -v = +cntx v +v = case Sign -sign of +sign of Sign Plus -> (x -buf forall a. Num a => a -> a -> a +buf forall a. Num a => a -> a -> a + x -x, [(v, x)] -changes) +x, [(v, x)] +changes) Sign Minus -> (x -buf forall a. Num a => a -> a -> a +buf forall a. Num a => a -> a -> a - x -x, [(v, x)] -changes) - eval (x -buf, [(v, x)] -changes) (Pull (O Set v -vs)) = (x -buf, [(v -v, x -buf) | v -v <- forall a. Set a -> [a] +x, [(v, x)] +changes) + eval (x +buf, [(v, x)] +changes) (Pull (O Set v +vs)) = (x +buf, [(v +v, x +buf) | v +v <- forall a. Set a -> [a] S.elems Set v -vs] forall a. [a] -> [a] -> [a] +vs] forall a. [a] -> [a] -> [a] ++ [(v, x)] -changes) +changes) \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Intermediate.Functions.html b/haddock/nitta/src/NITTA.Intermediate.Functions.html index 3bcee3b67..deee22e41 100644 --- a/haddock/nitta/src/NITTA.Intermediate.Functions.html +++ b/haddock/nitta/src/NITTA.Intermediate.Functions.html @@ -140,7 +140,7 @@ automatical refactor @BreakLoop@, which replace Loop by @LoopEnd@ and @LoopBegin@. -} -data Loop v x = Loop (X x) (O v) (I v) deriving (Typeable, Loop v x -> Loop v x -> Bool +data Loop v x = Loop (X x) (O v) (I v) deriving (Typeable, Loop v x -> Loop v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. (Eq x, Eq v) => Loop v x -> Loop v x -> Bool /= :: Loop v x -> Loop v x -> Bool @@ -149,36 +149,36 @@ $c== :: forall v x. (Eq x, Eq v) => Loop v x -> Loop v x -> Bool Eq) -instance (Var v, Show x) => Show (Loop v x) where show :: Loop v x -> String +instance (Var v, Show x) => Show (Loop v x) where show :: Loop v x -> String show = forall a. Label a => a -> String label -instance (Var v, Show x) => Label (Loop v x) where - label :: Loop v x -> String -label (Loop (X x -x) O v -os I v -i) = +instance (Var v, Show x) => Label (Loop v x) where + label :: Loop v x -> String +label (Loop (X x +x) O v +os I v +i) = String "loop(" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show x -x forall a. Semigroup a => a -> a -> a +x forall a. Semigroup a => a -> a -> a <> String ", " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -i forall a. Semigroup a => a -> a -> a +i forall a. Semigroup a => a -> a -> a <> String ") = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -os -loop :: (Var v, Val x) => x -> v -> [v] -> F v x +os +loop :: (Var v, Val x) => x -> v -> [v] -> F v x loop :: forall v x. (Var v, Val x) => x -> v -> [v] -> F v x -loop x -x v -a [v] -bs = forall {f} {v} {x}. +loop x +x v +a [v] +bs = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -186,101 +186,101 @@ $ forall v x. X x -> O v -> I v -> Loop v x Loop (forall x. x -> X x X x -x) (forall v. Set v -> O v +x) (forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -bs) forall a b. (a -> b) -> a -> b +bs) forall a b. (a -> b) -> a -> b $ forall v. v -> I v I v -a +a isLoop :: F v x -> Bool -isLoop F v x -f +isLoop F v x +f | Just Loop{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = Bool +f = Bool True | Bool otherwise = Bool False -instance Function (Loop v x) v where - isInternalLockPossible :: Loop v x -> Bool +instance Function (Loop v x) v where + isInternalLockPossible :: Loop v x -> Bool isInternalLockPossible Loop v x _ = Bool True - inputs :: Loop v x -> Set v + inputs :: Loop v x -> Set v inputs (Loop X x -_ O v -_a I v -b) = forall a v. Variables a v => a -> Set v +_ O v +_a I v +b) = forall a v. Variables a v => a -> Set v variables I v -b - outputs :: Loop v x -> Set v +b + outputs :: Loop v x -> Set v outputs (Loop X x -_ O v -a I v -_b) = forall a v. Variables a v => a -> Set v +_ O v +a I v +_b) = forall a v. Variables a v => a -> Set v variables O v -a -instance Var v => Patch (Loop v x) (v, v) where - patch :: (v, v) -> Loop v x -> Loop v x -patch (v, v) -diff (Loop X x -x O v -a I v -b) = forall v x. X x -> O v -> I v -> Loop v x +a +instance Var v => Patch (Loop v x) (v, v) where + patch :: (v, v) -> Loop v x -> Loop v x +patch (v, v) +diff (Loop X x +x O v +a I v +b) = forall v x. X x -> O v -> I v -> Loop v x Loop X x -x (forall f diff. Patch f diff => diff -> f -> f +x (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -a) (forall f diff. Patch f diff => diff -> f -> f +diff O v +a) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -b) -instance Var v => Locks (Loop v x) v where - locks :: Loop v x -> [Lock v] +diff I v +b) +instance Var v => Locks (Loop v x) v where + locks :: Loop v x -> [Lock v] locks (Loop X x -_ (O Set v -as) (I v -b)) = [Lock{locked :: v -locked = v -b, lockBy :: v -lockBy = v -a} | v -a <- forall a. Set a -> [a] +_ (O Set v +as) (I v +b)) = [Lock{locked :: v +locked = v +b, lockBy :: v +lockBy = v +a} | v +a <- forall a. Set a -> [a] elems Set v -as] -instance Var v => FunctionSimulation (Loop v x) v x where - simulate :: CycleCntx v x -> Loop v x -> [(v, x)] -simulate CycleCntx{HashMap v x +as] +instance Var v => FunctionSimulation (Loop v x) v x where + simulate :: CycleCntx v x -> Loop v x -> [(v, x)] +simulate CycleCntx{HashMap v x cycleCntx :: forall v x. CycleCntx v x -> HashMap v x cycleCntx :: HashMap v x -cycleCntx} (Loop (X x -x) (O Set v -vs) (I v +cycleCntx} (Loop (X x +x) (O Set v +vs) (I v _)) = case forall {c}. Set c -> c oneOf Set v -vs forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v +vs forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v `HM.lookup` HashMap v x -cycleCntx of +cycleCntx of -- if output variables are defined - nothing to do (values thrown on upper level) Just x _ -> [] -- if output variables are not defined - set initial value Maybe x Nothing -> [(v -v, x -x) | v -v <- forall a. Set a -> [a] +v, x +x) | v +v <- forall a. Set a -> [a] elems Set v -vs] +vs] -data LoopBegin v x = LoopBegin (Loop v x) (O v) deriving (Typeable, LoopBegin v x -> LoopBegin v x -> Bool +data LoopBegin v x = LoopBegin (Loop v x) (O v) deriving (Typeable, LoopBegin v x -> LoopBegin v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. (Eq x, Eq v) => LoopBegin v x -> LoopBegin v x -> Bool /= :: LoopBegin v x -> LoopBegin v x -> Bool @@ -288,60 +288,60 @@ == :: LoopBegin v x -> LoopBegin v x -> Bool $c== :: forall v x. (Eq x, Eq v) => LoopBegin v x -> LoopBegin v x -> Bool Eq) -instance (Var v, Show x) => Show (LoopBegin v x) where show :: LoopBegin v x -> String -show = forall a. Label a => a -> String +instance (Var v, Show x) => Show (LoopBegin v x) where show :: LoopBegin v x -> String +show = forall a. Label a => a -> String label -instance Var v => Label (LoopBegin v x) where - label :: LoopBegin v x -> String -label (LoopBegin Loop v x -_ O v -os) = String +instance Var v => Label (LoopBegin v x) where + label :: LoopBegin v x -> String +label (LoopBegin Loop v x +_ O v +os) = String "LoopBegin() = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -os -instance Var v => Function (LoopBegin v x) v where - outputs :: LoopBegin v x -> Set v -outputs (LoopBegin Loop v x -_ O v -o) = forall a v. Variables a v => a -> Set v +os +instance Var v => Function (LoopBegin v x) v where + outputs :: LoopBegin v x -> Set v +outputs (LoopBegin Loop v x +_ O v +o) = forall a v. Variables a v => a -> Set v variables O v -o - isInternalLockPossible :: LoopBegin v x -> Bool -isInternalLockPossible LoopBegin v x +o + isInternalLockPossible :: LoopBegin v x -> Bool +isInternalLockPossible LoopBegin v x _ = Bool True -instance Var v => Patch (LoopBegin v x) (v, v) where - patch :: (v, v) -> LoopBegin v x -> LoopBegin v x -patch (v, v) -diff (LoopBegin Loop v x -l O v -a) = forall v x. Loop v x -> O v -> LoopBegin v x +instance Var v => Patch (LoopBegin v x) (v, v) where + patch :: (v, v) -> LoopBegin v x -> LoopBegin v x +patch (v, v) +diff (LoopBegin Loop v x +l O v +a) = forall v x. Loop v x -> O v -> LoopBegin v x LoopBegin (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff Loop v x -l) forall a b. (a -> b) -> a -> b +diff Loop v x +l) forall a b. (a -> b) -> a -> b $ forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -a -instance Var v => Locks (LoopBegin v x) v where - locks :: LoopBegin v x -> [Lock v] -locks LoopBegin v x +diff O v +a +instance Var v => Locks (LoopBegin v x) v where + locks :: LoopBegin v x -> [Lock v] +locks LoopBegin v x _ = [] -instance Var v => FunctionSimulation (LoopBegin v x) v x where - simulate :: CycleCntx v x -> LoopBegin v x -> [(v, x)] -simulate CycleCntx v x -cntx (LoopBegin Loop v x -l O v +instance Var v => FunctionSimulation (LoopBegin v x) v x where + simulate :: CycleCntx v x -> LoopBegin v x -> [(v, x)] +simulate CycleCntx v x +cntx (LoopBegin Loop v x +l O v _) = forall f v x. FunctionSimulation f v x => CycleCntx v x -> f -> [(v, x)] simulate CycleCntx v x -cntx Loop v x -l +cntx Loop v x +l -data LoopEnd v x = LoopEnd (Loop v x) (I v) deriving (Typeable, LoopEnd v x -> LoopEnd v x -> Bool +data LoopEnd v x = LoopEnd (Loop v x) (I v) deriving (Typeable, LoopEnd v x -> LoopEnd v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. (Eq x, Eq v) => LoopEnd v x -> LoopEnd v x -> Bool /= :: LoopEnd v x -> LoopEnd v x -> Bool @@ -349,69 +349,69 @@ == :: LoopEnd v x -> LoopEnd v x -> Bool $c== :: forall v x. (Eq x, Eq v) => LoopEnd v x -> LoopEnd v x -> Bool Eq) -instance (Var v, Show x) => Show (LoopEnd v x) where show :: LoopEnd v x -> String -show = forall a. Label a => a -> String +instance (Var v, Show x) => Show (LoopEnd v x) where show :: LoopEnd v x -> String +show = forall a. Label a => a -> String label -instance Var v => Label (LoopEnd v x) where - label :: LoopEnd v x -> String -label (LoopEnd (Loop X x -_ O v -os I v -_) I v -i) = String +instance Var v => Label (LoopEnd v x) where + label :: LoopEnd v x -> String +label (LoopEnd (Loop X x +_ O v +os I v +_) I v +i) = String "LoopEnd(" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -i forall a. Semigroup a => a -> a -> a +i forall a. Semigroup a => a -> a -> a <> String ") pair out: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -os -instance Var v => Function (LoopEnd v x) v where - inputs :: LoopEnd v x -> Set v -inputs (LoopEnd Loop v x -_ I v -o) = forall a v. Variables a v => a -> Set v +os +instance Var v => Function (LoopEnd v x) v where + inputs :: LoopEnd v x -> Set v +inputs (LoopEnd Loop v x +_ I v +o) = forall a v. Variables a v => a -> Set v variables I v -o - isInternalLockPossible :: LoopEnd v x -> Bool -isInternalLockPossible LoopEnd v x +o + isInternalLockPossible :: LoopEnd v x -> Bool +isInternalLockPossible LoopEnd v x _ = Bool True -instance Var v => Patch (LoopEnd v x) (v, v) where - patch :: (v, v) -> LoopEnd v x -> LoopEnd v x -patch (v, v) -diff (LoopEnd Loop v x -l I v -a) = forall v x. Loop v x -> I v -> LoopEnd v x +instance Var v => Patch (LoopEnd v x) (v, v) where + patch :: (v, v) -> LoopEnd v x -> LoopEnd v x +patch (v, v) +diff (LoopEnd Loop v x +l I v +a) = forall v x. Loop v x -> I v -> LoopEnd v x LoopEnd (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff Loop v x -l) forall a b. (a -> b) -> a -> b +diff Loop v x +l) forall a b. (a -> b) -> a -> b $ forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -a -instance Var v => Locks (LoopEnd v x) v where locks :: LoopEnd v x -> [Lock v] -locks (LoopEnd Loop v x -l I v +diff I v +a +instance Var v => Locks (LoopEnd v x) v where locks :: LoopEnd v x -> [Lock v] +locks (LoopEnd Loop v x +l I v _) = forall x v. Locks x v => x -> [Lock v] locks Loop v x -l -instance Var v => FunctionSimulation (LoopEnd v x) v x where - simulate :: CycleCntx v x -> LoopEnd v x -> [(v, x)] -simulate CycleCntx v x -cntx (LoopEnd Loop v x -l I v +l +instance Var v => FunctionSimulation (LoopEnd v x) v x where + simulate :: CycleCntx v x -> LoopEnd v x -> [(v, x)] +simulate CycleCntx v x +cntx (LoopEnd Loop v x +l I v _) = forall f v x. FunctionSimulation f v x => CycleCntx v x -> f -> [(v, x)] simulate CycleCntx v x -cntx Loop v x -l +cntx Loop v x +l -data Buffer v x = Buffer (I v) (O v) deriving (Typeable, Buffer v x -> Buffer v x -> Bool +data Buffer v x = Buffer (I v) (O v) deriving (Typeable, Buffer v x -> Buffer v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => Buffer v x -> Buffer v x -> Bool /= :: Buffer v x -> Buffer v x -> Bool @@ -419,30 +419,30 @@ == :: Buffer v x -> Buffer v x -> Bool $c== :: forall v x. Eq v => Buffer v x -> Buffer v x -> Bool Eq) -instance Label (Buffer v x) where label :: Buffer v x -> String -label Buffer{} = String +instance Label (Buffer v x) where label :: Buffer v x -> String +label Buffer{} = String "buf" -instance Var v => Show (Buffer v x) where - show :: Buffer v x -> String -show (Buffer I v -i O v -os) = String +instance Var v => Show (Buffer v x) where + show :: Buffer v x -> String +show (Buffer I v +i O v +os) = String "buffer(" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -i forall a. Semigroup a => a -> a -> a +i forall a. Semigroup a => a -> a -> a <> String ")" forall a. Semigroup a => a -> a -> a <> String " = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -os -buffer :: (Var v, Val x) => v -> [v] -> F v x +os +buffer :: (Var v, Val x) => v -> [v] -> F v x buffer :: forall v x. (Var v, Val x) => v -> [v] -> F v x -buffer v -a [v] -b = forall {f} {v} {x}. +buffer v +a [v] +b = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -450,58 +450,58 @@ $ forall v x. I v -> O v -> Buffer v x Buffer (forall v. v -> I v I v -a) (forall v. Set v -> O v +a) (forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -b) +b) -instance Var v => Function (Buffer v x) v where - inputs :: Buffer v x -> Set v -inputs (Buffer I v -a O v -_b) = forall a v. Variables a v => a -> Set v +instance Var v => Function (Buffer v x) v where + inputs :: Buffer v x -> Set v +inputs (Buffer I v +a O v +_b) = forall a v. Variables a v => a -> Set v variables I v -a - outputs :: Buffer v x -> Set v -outputs (Buffer I v -_a O v -b) = forall a v. Variables a v => a -> Set v +a + outputs :: Buffer v x -> Set v +outputs (Buffer I v +_a O v +b) = forall a v. Variables a v => a -> Set v variables O v -b -instance Var v => Patch (Buffer v x) (v, v) where - patch :: (v, v) -> Buffer v x -> Buffer v x -patch (v, v) -diff (Buffer I v -a O v -b) = forall v x. I v -> O v -> Buffer v x +b +instance Var v => Patch (Buffer v x) (v, v) where + patch :: (v, v) -> Buffer v x -> Buffer v x +patch (v, v) +diff (Buffer I v +a O v +b) = forall v x. I v -> O v -> Buffer v x Buffer (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -a) (forall f diff. Patch f diff => diff -> f -> f +diff I v +a) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -b) -instance Var v => Locks (Buffer v x) v where - locks :: Buffer v x -> [Lock v] -locks = forall {f} {v}. Function f v => f -> [Lock v] +diff O v +b) +instance Var v => Locks (Buffer v x) v where + locks :: Buffer v x -> [Lock v] +locks = forall {f} {v}. Function f v => f -> [Lock v] inputsLockOutputs -instance Var v => FunctionSimulation (Buffer v x) v x where - simulate :: CycleCntx v x -> Buffer v x -> [(v, x)] -simulate CycleCntx v x -cntx (Buffer (I v -a) (O Set v -vs)) = +instance Var v => FunctionSimulation (Buffer v x) v x where + simulate :: CycleCntx v x -> Buffer v x -> [(v, x)] +simulate CycleCntx v x +cntx (Buffer (I v +a) (O Set v +vs)) = [(v -v, CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +v, CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -a) | v -v <- forall a. Set a -> [a] +a) | v +v <- forall a. Set a -> [a] elems Set v -vs] +vs] -data Add v x = Add (I v) (I v) (O v) deriving (Typeable, Add v x -> Add v x -> Bool +data Add v x = Add (I v) (I v) (O v) deriving (Typeable, Add v x -> Add v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => Add v x -> Add v x -> Bool /= :: Add v x -> Add v x -> Bool @@ -509,40 +509,40 @@ == :: Add v x -> Add v x -> Bool $c== :: forall v x. Eq v => Add v x -> Add v x -> Bool Eq) -instance Label (Add v x) where label :: Add v x -> String -label Add{} = String +instance Label (Add v x) where label :: Add v x -> String +label Add{} = String "+" -instance Var v => Show (Add v x) where - show :: Add v x -> String -show (Add I v -a I v -b O v -c) = - let lexp :: String -lexp = forall a. Show a => a -> String +instance Var v => Show (Add v x) where + show :: Add v x -> String +show (Add I v +a I v +b O v +c) = + let lexp :: String +lexp = forall a. Show a => a -> String show I v -a forall a. Semigroup a => a -> a -> a +a forall a. Semigroup a => a -> a -> a <> String " + " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -b - rexp :: String -rexp = forall a. Show a => a -> String +b + rexp :: String +rexp = forall a. Show a => a -> String show O v -c +c in String -lexp forall a. Semigroup a => a -> a -> a +lexp forall a. Semigroup a => a -> a -> a <> String " = " forall a. Semigroup a => a -> a -> a <> String -rexp -add :: (Var v, Val x) => v -> v -> [v] -> F v x +rexp +add :: (Var v, Val x) => v -> v -> [v] -> F v x add :: forall v x. (Var v, Val x) => v -> v -> [v] -> F v x -add v -a v -b [v] -c = forall {f} {v} {x}. +add v +a v +b [v] +c = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -550,84 +550,84 @@ $ forall v x. I v -> I v -> O v -> Add v x Add (forall v. v -> I v I v -a) (forall v. v -> I v +a) (forall v. v -> I v I v -b) forall a b. (a -> b) -> a -> b +b) forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -c +c -instance Var v => Function (Add v x) v where - inputs :: Add v x -> Set v -inputs (Add I v -a I v -b O v -_c) = forall a v. Variables a v => a -> Set v +instance Var v => Function (Add v x) v where + inputs :: Add v x -> Set v +inputs (Add I v +a I v +b O v +_c) = forall a v. Variables a v => a -> Set v variables I v -a forall a. Ord a => Set a -> Set a -> Set a +a forall a. Ord a => Set a -> Set a -> Set a `union` forall a v. Variables a v => a -> Set v variables I v -b - outputs :: Add v x -> Set v -outputs (Add I v -_a I v -_b O v -c) = forall a v. Variables a v => a -> Set v +b + outputs :: Add v x -> Set v +outputs (Add I v +_a I v +_b O v +c) = forall a v. Variables a v => a -> Set v variables O v -c -instance Var v => Patch (Add v x) (v, v) where - patch :: (v, v) -> Add v x -> Add v x -patch (v, v) -diff (Add I v -a I v -b O v -c) = forall v x. I v -> I v -> O v -> Add v x +c +instance Var v => Patch (Add v x) (v, v) where + patch :: (v, v) -> Add v x -> Add v x +patch (v, v) +diff (Add I v +a I v +b O v +c) = forall v x. I v -> I v -> O v -> Add v x Add (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -a) (forall f diff. Patch f diff => diff -> f -> f +diff I v +a) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -b) (forall f diff. Patch f diff => diff -> f -> f +diff I v +b) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -c) -instance Var v => Locks (Add v x) v where - locks :: Add v x -> [Lock v] -locks = forall {f} {v}. Function f v => f -> [Lock v] +diff O v +c) +instance Var v => Locks (Add v x) v where + locks :: Add v x -> [Lock v] +locks = forall {f} {v}. Function f v => f -> [Lock v] inputsLockOutputs -instance (Var v, Num x) => FunctionSimulation (Add v x) v x where - simulate :: CycleCntx v x -> Add v x -> [(v, x)] -simulate CycleCntx v x -cntx (Add (I v -v1) (I v -v2) (O Set v -vs)) = - let x1 :: x -x1 = CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +instance (Var v, Num x) => FunctionSimulation (Add v x) v x where + simulate :: CycleCntx v x -> Add v x -> [(v, x)] +simulate CycleCntx v x +cntx (Add (I v +v1) (I v +v2) (O Set v +vs)) = + let x1 :: x +x1 = CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -v1 - x2 :: x -x2 = CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +v1 + x2 :: x +x2 = CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -v2 - y :: x -y = x -x1 forall a. Num a => a -> a -> a +v2 + y :: x +y = x +x1 forall a. Num a => a -> a -> a + x -x2 +x2 in [(v -v, x -y) | v -v <- forall a. Set a -> [a] +v, x +y) | v +v <- forall a. Set a -> [a] elems Set v -vs] +vs] -data Sub v x = Sub (I v) (I v) (O v) deriving (Typeable, Sub v x -> Sub v x -> Bool +data Sub v x = Sub (I v) (I v) (O v) deriving (Typeable, Sub v x -> Sub v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => Sub v x -> Sub v x -> Bool /= :: Sub v x -> Sub v x -> Bool @@ -635,40 +635,40 @@ == :: Sub v x -> Sub v x -> Bool $c== :: forall v x. Eq v => Sub v x -> Sub v x -> Bool Eq) -instance Label (Sub v x) where label :: Sub v x -> String -label Sub{} = String +instance Label (Sub v x) where label :: Sub v x -> String +label Sub{} = String "-" -instance Var v => Show (Sub v x) where - show :: Sub v x -> String -show (Sub I v -a I v -b O v -c) = - let lexp :: String -lexp = forall a. Show a => a -> String +instance Var v => Show (Sub v x) where + show :: Sub v x -> String +show (Sub I v +a I v +b O v +c) = + let lexp :: String +lexp = forall a. Show a => a -> String show I v -a forall a. Semigroup a => a -> a -> a +a forall a. Semigroup a => a -> a -> a <> String " - " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -b - rexp :: String -rexp = forall a. Show a => a -> String +b + rexp :: String +rexp = forall a. Show a => a -> String show O v -c +c in String -lexp forall a. Semigroup a => a -> a -> a +lexp forall a. Semigroup a => a -> a -> a <> String " = " forall a. Semigroup a => a -> a -> a <> String -rexp -sub :: (Var v, Val x) => v -> v -> [v] -> F v x +rexp +sub :: (Var v, Val x) => v -> v -> [v] -> F v x sub :: forall v x. (Var v, Val x) => v -> v -> [v] -> F v x -sub v -a v -b [v] -c = forall {f} {v} {x}. +sub v +a v +b [v] +c = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -676,84 +676,84 @@ $ forall v x. I v -> I v -> O v -> Sub v x Sub (forall v. v -> I v I v -a) (forall v. v -> I v +a) (forall v. v -> I v I v -b) forall a b. (a -> b) -> a -> b +b) forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -c +c -instance Var v => Function (Sub v x) v where - inputs :: Sub v x -> Set v -inputs (Sub I v -a I v -b O v -_c) = forall a v. Variables a v => a -> Set v +instance Var v => Function (Sub v x) v where + inputs :: Sub v x -> Set v +inputs (Sub I v +a I v +b O v +_c) = forall a v. Variables a v => a -> Set v variables I v -a forall a. Ord a => Set a -> Set a -> Set a +a forall a. Ord a => Set a -> Set a -> Set a `union` forall a v. Variables a v => a -> Set v variables I v -b - outputs :: Sub v x -> Set v -outputs (Sub I v -_a I v -_b O v -c) = forall a v. Variables a v => a -> Set v +b + outputs :: Sub v x -> Set v +outputs (Sub I v +_a I v +_b O v +c) = forall a v. Variables a v => a -> Set v variables O v -c -instance Var v => Patch (Sub v x) (v, v) where - patch :: (v, v) -> Sub v x -> Sub v x -patch (v, v) -diff (Sub I v -a I v -b O v -c) = forall v x. I v -> I v -> O v -> Sub v x +c +instance Var v => Patch (Sub v x) (v, v) where + patch :: (v, v) -> Sub v x -> Sub v x +patch (v, v) +diff (Sub I v +a I v +b O v +c) = forall v x. I v -> I v -> O v -> Sub v x Sub (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -a) (forall f diff. Patch f diff => diff -> f -> f +diff I v +a) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -b) (forall f diff. Patch f diff => diff -> f -> f +diff I v +b) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -c) -instance Var v => Locks (Sub v x) v where - locks :: Sub v x -> [Lock v] -locks = forall {f} {v}. Function f v => f -> [Lock v] +diff O v +c) +instance Var v => Locks (Sub v x) v where + locks :: Sub v x -> [Lock v] +locks = forall {f} {v}. Function f v => f -> [Lock v] inputsLockOutputs -instance (Var v, Num x) => FunctionSimulation (Sub v x) v x where - simulate :: CycleCntx v x -> Sub v x -> [(v, x)] -simulate CycleCntx v x -cntx (Sub (I v -v1) (I v -v2) (O Set v -vs)) = - let x1 :: x -x1 = CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +instance (Var v, Num x) => FunctionSimulation (Sub v x) v x where + simulate :: CycleCntx v x -> Sub v x -> [(v, x)] +simulate CycleCntx v x +cntx (Sub (I v +v1) (I v +v2) (O Set v +vs)) = + let x1 :: x +x1 = CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -v1 - x2 :: x -x2 = CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +v1 + x2 :: x +x2 = CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -v2 - y :: x -y = x -x1 forall a. Num a => a -> a -> a +v2 + y :: x +y = x +x1 forall a. Num a => a -> a -> a - x -x2 +x2 in [(v -v, x -y) | v -v <- forall a. Set a -> [a] +v, x +y) | v +v <- forall a. Set a -> [a] elems Set v -vs] +vs] -data Multiply v x = Multiply (I v) (I v) (O v) deriving (Typeable, Multiply v x -> Multiply v x -> Bool +data Multiply v x = Multiply (I v) (I v) (O v) deriving (Typeable, Multiply v x -> Multiply v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => Multiply v x -> Multiply v x -> Bool /= :: Multiply v x -> Multiply v x -> Bool @@ -761,34 +761,34 @@ == :: Multiply v x -> Multiply v x -> Bool $c== :: forall v x. Eq v => Multiply v x -> Multiply v x -> Bool Eq) -instance Label (Multiply v x) where label :: Multiply v x -> String -label Multiply{} = String +instance Label (Multiply v x) where label :: Multiply v x -> String +label Multiply{} = String "*" -instance Var v => Show (Multiply v x) where - show :: Multiply v x -> String -show (Multiply I v -a I v -b O v -c) = +instance Var v => Show (Multiply v x) where + show :: Multiply v x -> String +show (Multiply I v +a I v +b O v +c) = forall a. Show a => a -> String show I v -a forall a. Semigroup a => a -> a -> a +a forall a. Semigroup a => a -> a -> a <> String " * " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -b forall a. Semigroup a => a -> a -> a +b forall a. Semigroup a => a -> a -> a <> String " = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -c -multiply :: (Var v, Val x) => v -> v -> [v] -> F v x +c +multiply :: (Var v, Val x) => v -> v -> [v] -> F v x multiply :: forall v x. (Var v, Val x) => v -> v -> [v] -> F v x -multiply v -a v -b [v] -c = forall {f} {v} {x}. +multiply v +a v +b [v] +c = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -796,92 +796,92 @@ $ forall v x. I v -> I v -> O v -> Multiply v x Multiply (forall v. v -> I v I v -a) (forall v. v -> I v +a) (forall v. v -> I v I v -b) forall a b. (a -> b) -> a -> b +b) forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -c +c -instance Var v => Function (Multiply v x) v where - inputs :: Multiply v x -> Set v -inputs (Multiply I v -a I v -b O v -_c) = forall a v. Variables a v => a -> Set v +instance Var v => Function (Multiply v x) v where + inputs :: Multiply v x -> Set v +inputs (Multiply I v +a I v +b O v +_c) = forall a v. Variables a v => a -> Set v variables I v -a forall a. Ord a => Set a -> Set a -> Set a +a forall a. Ord a => Set a -> Set a -> Set a `union` forall a v. Variables a v => a -> Set v variables I v -b - outputs :: Multiply v x -> Set v -outputs (Multiply I v -_a I v -_b O v -c) = forall a v. Variables a v => a -> Set v +b + outputs :: Multiply v x -> Set v +outputs (Multiply I v +_a I v +_b O v +c) = forall a v. Variables a v => a -> Set v variables O v -c -instance Var v => Patch (Multiply v x) (v, v) where - patch :: (v, v) -> Multiply v x -> Multiply v x -patch (v, v) -diff (Multiply I v -a I v -b O v -c) = forall v x. I v -> I v -> O v -> Multiply v x +c +instance Var v => Patch (Multiply v x) (v, v) where + patch :: (v, v) -> Multiply v x -> Multiply v x +patch (v, v) +diff (Multiply I v +a I v +b O v +c) = forall v x. I v -> I v -> O v -> Multiply v x Multiply (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -a) (forall f diff. Patch f diff => diff -> f -> f +diff I v +a) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -b) (forall f diff. Patch f diff => diff -> f -> f +diff I v +b) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -c) -instance Var v => Locks (Multiply v x) v where - locks :: Multiply v x -> [Lock v] -locks = forall {f} {v}. Function f v => f -> [Lock v] +diff O v +c) +instance Var v => Locks (Multiply v x) v where + locks :: Multiply v x -> [Lock v] +locks = forall {f} {v}. Function f v => f -> [Lock v] inputsLockOutputs -instance (Var v, Num x) => FunctionSimulation (Multiply v x) v x where - simulate :: CycleCntx v x -> Multiply v x -> [(v, x)] -simulate CycleCntx v x -cntx (Multiply (I v -v1) (I v -v2) (O Set v -vs)) = - let x1 :: x -x1 = CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +instance (Var v, Num x) => FunctionSimulation (Multiply v x) v x where + simulate :: CycleCntx v x -> Multiply v x -> [(v, x)] +simulate CycleCntx v x +cntx (Multiply (I v +v1) (I v +v2) (O Set v +vs)) = + let x1 :: x +x1 = CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -v1 - x2 :: x -x2 = CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +v1 + x2 :: x +x2 = CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -v2 - y :: x -y = x -x1 forall a. Num a => a -> a -> a +v2 + y :: x +y = x +x1 forall a. Num a => a -> a -> a * x -x2 +x2 in [(v -v, x -y) | v -v <- forall a. Set a -> [a] +v, x +y) | v +v <- forall a. Set a -> [a] elems Set v -vs] +vs] -data Division v x = Division +data Division v x = Division { forall v x. Division v x -> I v denom, forall v x. Division v x -> I v -numer :: I v +numer :: I v , forall v x. Division v x -> O v quotient, forall v x. Division v x -> O v -remain :: O v +remain :: O v } - deriving (Typeable, Division v x -> Division v x -> Bool + deriving (Typeable, Division v x -> Division v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => Division v x -> Division v x -> Bool /= :: Division v x -> Division v x -> Bool @@ -889,65 +889,65 @@ == :: Division v x -> Division v x -> Bool $c== :: forall v x. Eq v => Division v x -> Division v x -> Bool Eq) -instance Label (Division v x) where label :: Division v x -> String -label Division{} = String +instance Label (Division v x) where label :: Division v x -> String +label Division{} = String "/" -instance Var v => Show (Division v x) where - show :: Division v x -> String -show Division{I v +instance Var v => Show (Division v x) where + show :: Division v x -> String +show Division{I v denom :: I v $sel:denom:Division :: forall v x. Division v x -> I v -denom, I v +denom, I v numer :: I v $sel:numer:Division :: forall v x. Division v x -> I v -numer, O v +numer, O v quotient :: O v $sel:quotient:Division :: forall v x. Division v x -> O v -quotient, O v +quotient, O v remain :: O v $sel:remain:Division :: forall v x. Division v x -> O v -remain} = - let q :: String -q = forall a. Show a => a -> String +remain} = + let q :: String +q = forall a. Show a => a -> String show I v -numer forall a. Semigroup a => a -> a -> a +numer forall a. Semigroup a => a -> a -> a <> String " / " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -denom forall a. Semigroup a => a -> a -> a +denom forall a. Semigroup a => a -> a -> a <> String " = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -quotient - r :: String -r = forall a. Show a => a -> String +quotient + r :: String +r = forall a. Show a => a -> String show I v -numer forall a. Semigroup a => a -> a -> a +numer forall a. Semigroup a => a -> a -> a <> String " mod " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -denom forall a. Semigroup a => a -> a -> a +denom forall a. Semigroup a => a -> a -> a <> String " = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -remain +remain in String -q forall a. Semigroup a => a -> a -> a +q forall a. Semigroup a => a -> a -> a <> String "; " forall a. Semigroup a => a -> a -> a <> String -r -division :: (Var v, Val x) => v -> v -> [v] -> [v] -> F v x +r +division :: (Var v, Val x) => v -> v -> [v] -> [v] -> F v x division :: forall v x. (Var v, Val x) => v -> v -> [v] -> [v] -> F v x -division v -d v -n [v] -q [v] -r = +division v +d v +n [v] +q [v] +r = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => @@ -958,119 +958,119 @@ { $sel:denom:Division :: I v denom = forall v. v -> I v I v -d +d , $sel:numer:Division :: I v numer = forall v. v -> I v I v -n +n , $sel:quotient:Division :: O v quotient = forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -q +q , $sel:remain:Division :: O v remain = forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -r +r } -instance Var v => Function (Division v x) v where - inputs :: Division v x -> Set v -inputs Division{I v +instance Var v => Function (Division v x) v where + inputs :: Division v x -> Set v +inputs Division{I v denom :: I v $sel:denom:Division :: forall v x. Division v x -> I v -denom, I v +denom, I v numer :: I v $sel:numer:Division :: forall v x. Division v x -> I v -numer} = forall a v. Variables a v => a -> Set v +numer} = forall a v. Variables a v => a -> Set v variables I v -denom forall a. Ord a => Set a -> Set a -> Set a +denom forall a. Ord a => Set a -> Set a -> Set a `union` forall a v. Variables a v => a -> Set v variables I v -numer - outputs :: Division v x -> Set v -outputs Division{O v +numer + outputs :: Division v x -> Set v +outputs Division{O v quotient :: O v $sel:quotient:Division :: forall v x. Division v x -> O v -quotient, O v +quotient, O v remain :: O v $sel:remain:Division :: forall v x. Division v x -> O v -remain} = forall a v. Variables a v => a -> Set v +remain} = forall a v. Variables a v => a -> Set v variables O v -quotient forall a. Ord a => Set a -> Set a -> Set a +quotient forall a. Ord a => Set a -> Set a -> Set a `union` forall a v. Variables a v => a -> Set v variables O v -remain -instance Var v => Patch (Division v x) (v, v) where - patch :: (v, v) -> Division v x -> Division v x -patch (v, v) -diff (Division I v -a I v -b O v -c O v -d) = forall v x. I v -> I v -> O v -> O v -> Division v x +remain +instance Var v => Patch (Division v x) (v, v) where + patch :: (v, v) -> Division v x -> Division v x +patch (v, v) +diff (Division I v +a I v +b O v +c O v +d) = forall v x. I v -> I v -> O v -> O v -> Division v x Division (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -a) (forall f diff. Patch f diff => diff -> f -> f +diff I v +a) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -b) (forall f diff. Patch f diff => diff -> f -> f +diff I v +b) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -c) (forall f diff. Patch f diff => diff -> f -> f +diff O v +c) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -d) -instance Var v => Locks (Division v x) v where - locks :: Division v x -> [Lock v] -locks = forall {f} {v}. Function f v => f -> [Lock v] +diff O v +d) +instance Var v => Locks (Division v x) v where + locks :: Division v x -> [Lock v] +locks = forall {f} {v}. Function f v => f -> [Lock v] inputsLockOutputs -instance (Var v, Integral x) => FunctionSimulation (Division v x) v x where - simulate :: CycleCntx v x -> Division v x -> [(v, x)] -simulate CycleCntx v x -cntx Division{$sel:denom:Division :: forall v x. Division v x -> I v -denom = I v -d, $sel:numer:Division :: forall v x. Division v x -> I v -numer = I v -n, $sel:quotient:Division :: forall v x. Division v x -> O v -quotient = O Set v -qs, $sel:remain:Division :: forall v x. Division v x -> O v -remain = O Set v -rs} = - let dx :: x -dx = CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +instance (Var v, Integral x) => FunctionSimulation (Division v x) v x where + simulate :: CycleCntx v x -> Division v x -> [(v, x)] +simulate CycleCntx v x +cntx Division{$sel:denom:Division :: forall v x. Division v x -> I v +denom = I v +d, $sel:numer:Division :: forall v x. Division v x -> I v +numer = I v +n, $sel:quotient:Division :: forall v x. Division v x -> O v +quotient = O Set v +qs, $sel:remain:Division :: forall v x. Division v x -> O v +remain = O Set v +rs} = + let dx :: x +dx = CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -d - nx :: x -nx = CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +d + nx :: x +nx = CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -n - (x -qx, x -rx) = x -dx forall a. Integral a => a -> a -> (a, a) +n + (x +qx, x +rx) = x +dx forall a. Integral a => a -> a -> (a, a) `quotRem` x -nx +nx in [(v -v, x -qx) | v -v <- forall a. Set a -> [a] +v, x +qx) | v +v <- forall a. Set a -> [a] elems Set v -qs] forall a. [a] -> [a] -> [a] +qs] forall a. [a] -> [a] -> [a] ++ [(v -v, x -rx) | v -v <- forall a. Set a -> [a] +v, x +rx) | v +v <- forall a. Set a -> [a] elems Set v -rs] +rs] -data Neg v x = Neg (I v) (O v) deriving (Typeable, Neg v x -> Neg v x -> Bool +data Neg v x = Neg (I v) (O v) deriving (Typeable, Neg v x -> Neg v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => Neg v x -> Neg v x -> Bool /= :: Neg v x -> Neg v x -> Bool @@ -1078,29 +1078,29 @@ == :: Neg v x -> Neg v x -> Bool $c== :: forall v x. Eq v => Neg v x -> Neg v x -> Bool Eq) -instance Label (Neg v x) where label :: Neg v x -> String -label Neg{} = String +instance Label (Neg v x) where label :: Neg v x -> String +label Neg{} = String "neg" -instance Var v => Show (Neg v x) where - show :: Neg v x -> String -show (Neg I v -i O v -o) = String +instance Var v => Show (Neg v x) where + show :: Neg v x -> String +show (Neg I v +i O v +o) = String "-" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -i forall a. Semigroup a => a -> a -> a +i forall a. Semigroup a => a -> a -> a <> String " = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -o +o -neg :: (Var v, Val x) => v -> [v] -> F v x +neg :: (Var v, Val x) => v -> [v] -> F v x neg :: forall v x. (Var v, Val x) => v -> [v] -> F v x -neg v -i [v] -o = forall {f} {v} {x}. +neg v +i [v] +o = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -1108,65 +1108,65 @@ $ forall v x. I v -> O v -> Neg v x Neg (forall v. v -> I v I v -i) forall a b. (a -> b) -> a -> b +i) forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -o +o -instance Ord v => Function (Neg v x) v where - inputs :: Neg v x -> Set v -inputs (Neg I v -i O v +instance Ord v => Function (Neg v x) v where + inputs :: Neg v x -> Set v +inputs (Neg I v +i O v _) = forall a v. Variables a v => a -> Set v variables I v -i - outputs :: Neg v x -> Set v -outputs (Neg I v -_ O v -o) = forall a v. Variables a v => a -> Set v +i + outputs :: Neg v x -> Set v +outputs (Neg I v +_ O v +o) = forall a v. Variables a v => a -> Set v variables O v -o -instance Ord v => Patch (Neg v x) (v, v) where - patch :: (v, v) -> Neg v x -> Neg v x -patch (v, v) -diff (Neg I v -i O v -o) = forall v x. I v -> O v -> Neg v x +o +instance Ord v => Patch (Neg v x) (v, v) where + patch :: (v, v) -> Neg v x -> Neg v x +patch (v, v) +diff (Neg I v +i O v +o) = forall v x. I v -> O v -> Neg v x Neg (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -i) (forall f diff. Patch f diff => diff -> f -> f +diff I v +i) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -o) -instance Var v => Locks (Neg v x) v where - locks :: Neg v x -> [Lock v] -locks = forall {f} {v}. Function f v => f -> [Lock v] +diff O v +o) +instance Var v => Locks (Neg v x) v where + locks :: Neg v x -> [Lock v] +locks = forall {f} {v}. Function f v => f -> [Lock v] inputsLockOutputs -instance (Var v, Num x) => FunctionSimulation (Neg v x) v x where - simulate :: CycleCntx v x -> Neg v x -> [(v, x)] -simulate CycleCntx v x -cntx (Neg (I v -i) (O Set v -o)) = - let x1 :: x -x1 = CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +instance (Var v, Num x) => FunctionSimulation (Neg v x) v x where + simulate :: CycleCntx v x -> Neg v x -> [(v, x)] +simulate CycleCntx v x +cntx (Neg (I v +i) (O Set v +o)) = + let x1 :: x +x1 = CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -i - y :: x -y = -x -x1 +i + y :: x +y = -x +x1 in [(v -v, x -y) | v -v <- forall a. Set a -> [a] +v, x +y) | v +v <- forall a. Set a -> [a] elems Set v -o] +o] -data Constant v x = Constant (X x) (O v) deriving (Typeable, Constant v x -> Constant v x -> Bool +data Constant v x = Constant (X x) (O v) deriving (Typeable, Constant v x -> Constant v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. (Eq x, Eq v) => Constant v x -> Constant v x -> Bool /= :: Constant v x -> Constant v x -> Bool @@ -1174,31 +1174,31 @@ == :: Constant v x -> Constant v x -> Bool $c== :: forall v x. (Eq x, Eq v) => Constant v x -> Constant v x -> Bool Eq) -instance Show x => Label (Constant v x) where label :: Constant v x -> String -label (Constant (X x -x) O v +instance Show x => Label (Constant v x) where label :: Constant v x -> String +label (Constant (X x +x) O v _) = forall a. Show a => a -> String show x -x -instance (Var v, Show x) => Show (Constant v x) where - show :: Constant v x -> String -show (Constant (X x -x) O v -os) = String +x +instance (Var v, Show x) => Show (Constant v x) where + show :: Constant v x -> String +show (Constant (X x +x) O v +os) = String "const(" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show x -x forall a. Semigroup a => a -> a -> a +x forall a. Semigroup a => a -> a -> a <> String ") = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -os -constant :: (Var v, Val x) => x -> [v] -> F v x +os +constant :: (Var v, Val x) => x -> [v] -> F v x constant :: forall v x. (Var v, Val x) => x -> [v] -> F v x -constant x -x [v] -vs = forall {f} {v} {x}. +constant x +x [v] +vs = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -1206,65 +1206,65 @@ $ forall v x. X x -> O v -> Constant v x Constant (forall x. x -> X x X x -x) forall a b. (a -> b) -> a -> b +x) forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -vs +vs isConst :: F v x -> Bool -isConst F v x -f +isConst F v x +f | Just Constant{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = Bool +f = Bool True | Bool otherwise = Bool False -instance (Show x, Eq x, Typeable x) => Function (Constant v x) v where - outputs :: Constant v x -> Set v -outputs (Constant X x -_ O v -o) = forall a v. Variables a v => a -> Set v +instance (Show x, Eq x, Typeable x) => Function (Constant v x) v where + outputs :: Constant v x -> Set v +outputs (Constant X x +_ O v +o) = forall a v. Variables a v => a -> Set v variables O v -o -instance Var v => Patch (Constant v x) (v, v) where - patch :: (v, v) -> Constant v x -> Constant v x -patch (v, v) -diff (Constant X x -x O v -a) = forall v x. X x -> O v -> Constant v x +o +instance Var v => Patch (Constant v x) (v, v) where + patch :: (v, v) -> Constant v x -> Constant v x +patch (v, v) +diff (Constant X x +x O v +a) = forall v x. X x -> O v -> Constant v x Constant X x -x (forall f diff. Patch f diff => diff -> f -> f +x (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -a) -instance Var v => Locks (Constant v x) v where locks :: Constant v x -> [Lock v] -locks Constant v x +diff O v +a) +instance Var v => Locks (Constant v x) v where locks :: Constant v x -> [Lock v] +locks Constant v x _ = [] -instance FunctionSimulation (Constant v x) v x where - simulate :: CycleCntx v x -> Constant v x -> [(v, x)] -simulate CycleCntx v x -_cntx (Constant (X x -x) (O Set v -vs)) = [(v -v, x -x) | v -v <- forall a. Set a -> [a] +instance FunctionSimulation (Constant v x) v x where + simulate :: CycleCntx v x -> Constant v x -> [(v, x)] +simulate CycleCntx v x +_cntx (Constant (X x +x) (O Set v +vs)) = [(v +v, x +x) | v +v <- forall a. Set a -> [a] elems Set v -vs] +vs] -- TODO: separete into two different functions -- | Functional unit that implements logic shift operations -data ShiftLR v x - = ShiftL Int (I v) (O v) - | ShiftR Int (I v) (O v) - deriving (Typeable, ShiftLR v x -> ShiftLR v x -> Bool +data ShiftLR v x + = ShiftL Int (I v) (O v) + | ShiftR Int (I v) (O v) + deriving (Typeable, ShiftLR v x -> ShiftLR v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => ShiftLR v x -> ShiftLR v x -> Bool /= :: ShiftLR v x -> ShiftLR v x -> Bool @@ -1273,178 +1273,178 @@ $c== :: forall v x. Eq v => ShiftLR v x -> ShiftLR v x -> Bool Eq) -instance Var v => Show (ShiftLR v x) where - show :: ShiftLR v x -> String -show (ShiftL Int -s I v -i O v -os) = forall a. Show a => a -> String +instance Var v => Show (ShiftLR v x) where + show :: ShiftLR v x -> String +show (ShiftL Int +s I v +i O v +os) = forall a. Show a => a -> String show I v -i forall a. Semigroup a => a -> a -> a +i forall a. Semigroup a => a -> a -> a <> String " << " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Int -s forall a. Semigroup a => a -> a -> a +s forall a. Semigroup a => a -> a -> a <> String " = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -os - show (ShiftR Int -s I v -i O v -os) = forall a. Show a => a -> String +os + show (ShiftR Int +s I v +i O v +os) = forall a. Show a => a -> String show I v -i forall a. Semigroup a => a -> a -> a +i forall a. Semigroup a => a -> a -> a <> String " >> " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Int -s forall a. Semigroup a => a -> a -> a +s forall a. Semigroup a => a -> a -> a <> String " = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -os -instance Var v => Label (ShiftLR v x) where label :: ShiftLR v x -> String -label = forall a. Show a => a -> String +os +instance Var v => Label (ShiftLR v x) where label :: ShiftLR v x -> String +label = forall a. Show a => a -> String show -shiftL :: (Var v, Val x) => Int -> v -> [v] -> F v x +shiftL :: (Var v, Val x) => Int -> v -> [v] -> F v x shiftL :: forall v x. (Var v, Val x) => Int -> v -> [v] -> F v x -shiftL Int -s v -i [v] -o = forall {f} {v} {x}. +shiftL Int +s v +i [v] +o = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x packF forall a b. (a -> b) -> a -> b $ forall v x. Int -> I v -> O v -> ShiftLR v x ShiftL Int -s (forall v. v -> I v +s (forall v. v -> I v I v -i) forall a b. (a -> b) -> a -> b +i) forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -o -shiftR :: (Var v, Val x) => Int -> v -> [v] -> F v x +o +shiftR :: (Var v, Val x) => Int -> v -> [v] -> F v x shiftR :: forall v x. (Var v, Val x) => Int -> v -> [v] -> F v x -shiftR Int -s v -i [v] -o = forall {f} {v} {x}. +shiftR Int +s v +i [v] +o = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x packF forall a b. (a -> b) -> a -> b $ forall v x. Int -> I v -> O v -> ShiftLR v x ShiftR Int -s (forall v. v -> I v +s (forall v. v -> I v I v -i) forall a b. (a -> b) -> a -> b +i) forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -o +o -instance Var v => Function (ShiftLR v x) v where - inputs :: ShiftLR v x -> Set v -inputs (ShiftL Int -_ I v -i O v +instance Var v => Function (ShiftLR v x) v where + inputs :: ShiftLR v x -> Set v +inputs (ShiftL Int +_ I v +i O v _) = forall a v. Variables a v => a -> Set v variables I v -i +i inputs (ShiftR Int -_ I v -i O v +_ I v +i O v _) = forall a v. Variables a v => a -> Set v variables I v -i - outputs :: ShiftLR v x -> Set v -outputs (ShiftL Int +i + outputs :: ShiftLR v x -> Set v +outputs (ShiftL Int _ I v -_ O v -o) = forall a v. Variables a v => a -> Set v +_ O v +o) = forall a v. Variables a v => a -> Set v variables O v -o +o outputs (ShiftR Int _ I v -_ O v -o) = forall a v. Variables a v => a -> Set v +_ O v +o) = forall a v. Variables a v => a -> Set v variables O v -o -instance Var v => Patch (ShiftLR v x) (v, v) where - patch :: (v, v) -> ShiftLR v x -> ShiftLR v x -patch (v, v) -diff (ShiftL Int -s I v -i O v -o) = forall v x. Int -> I v -> O v -> ShiftLR v x +o +instance Var v => Patch (ShiftLR v x) (v, v) where + patch :: (v, v) -> ShiftLR v x -> ShiftLR v x +patch (v, v) +diff (ShiftL Int +s I v +i O v +o) = forall v x. Int -> I v -> O v -> ShiftLR v x ShiftL Int -s (forall f diff. Patch f diff => diff -> f -> f +s (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -i) (forall f diff. Patch f diff => diff -> f -> f +diff I v +i) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -o) - patch (v, v) -diff (ShiftR Int -s I v -i O v -o) = forall v x. Int -> I v -> O v -> ShiftLR v x +diff O v +o) + patch (v, v) +diff (ShiftR Int +s I v +i O v +o) = forall v x. Int -> I v -> O v -> ShiftLR v x ShiftR Int -s (forall f diff. Patch f diff => diff -> f -> f +s (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -i) (forall f diff. Patch f diff => diff -> f -> f +diff I v +i) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -o) -instance Var v => Locks (ShiftLR v x) v where - locks :: ShiftLR v x -> [Lock v] -locks = forall {f} {v}. Function f v => f -> [Lock v] +diff O v +o) +instance Var v => Locks (ShiftLR v x) v where + locks :: ShiftLR v x -> [Lock v] +locks = forall {f} {v}. Function f v => f -> [Lock v] inputsLockOutputs -instance (Var v, B.Bits x) => FunctionSimulation (ShiftLR v x) v x where - simulate :: CycleCntx v x -> ShiftLR v x -> [(v, x)] -simulate CycleCntx v x -cntx (ShiftL Int -s (I v -i) (O Set v -os)) = do +instance (Var v, B.Bits x) => FunctionSimulation (ShiftLR v x) v x where + simulate :: CycleCntx v x -> ShiftLR v x -> [(v, x)] +simulate CycleCntx v x +cntx (ShiftL Int +s (I v +i) (O Set v +os)) = do [(v -o, forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +o, forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v getCntx CycleCntx v x -cntx v -i forall a. Bits a => a -> Int -> a +cntx v +i forall a. Bits a => a -> Int -> a `B.shiftL` Int -s) | v -o <- forall a. Set a -> [a] +s) | v +o <- forall a. Set a -> [a] elems Set v -os] - simulate CycleCntx v x -cntx (ShiftR Int -s (I v -i) (O Set v -os)) = do +os] + simulate CycleCntx v x +cntx (ShiftR Int +s (I v +i) (O Set v +os)) = do [(v -o, forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +o, forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v getCntx CycleCntx v x -cntx v -i forall a. Bits a => a -> Int -> a +cntx v +i forall a. Bits a => a -> Int -> a `B.shiftR` Int -s) | v -o <- forall a. Set a -> [a] +s) | v +o <- forall a. Set a -> [a] elems Set v -os] +os] -newtype Send v x = Send (I v) deriving (Typeable, Send v x -> Send v x -> Bool +newtype Send v x = Send (I v) deriving (Typeable, Send v x -> Send v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => Send v x -> Send v x -> Bool /= :: Send v x -> Send v x -> Bool @@ -1452,23 +1452,23 @@ == :: Send v x -> Send v x -> Bool $c== :: forall v x. Eq v => Send v x -> Send v x -> Bool Eq) -instance Var v => Show (Send v x) where - show :: Send v x -> String -show (Send I v -i) = String +instance Var v => Show (Send v x) where + show :: Send v x -> String +show (Send I v +i) = String "send(" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -i forall a. Semigroup a => a -> a -> a +i forall a. Semigroup a => a -> a -> a <> String ")" -instance Label (Send v x) where label :: Send v x -> String -label Send{} = String +instance Label (Send v x) where label :: Send v x -> String +label Send{} = String "send" -send :: (Var v, Val x) => v -> F v x +send :: (Var v, Val x) => v -> F v x send :: forall v x. (Var v, Val x) => v -> F v x -send v -a = forall {f} {v} {x}. +send v +a = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -1477,31 +1477,31 @@ Send forall a b. (a -> b) -> a -> b $ forall v. v -> I v I v -a -instance Var v => Function (Send v x) v where - inputs :: Send v x -> Set v -inputs (Send I v -i) = forall a v. Variables a v => a -> Set v +a +instance Var v => Function (Send v x) v where + inputs :: Send v x -> Set v +inputs (Send I v +i) = forall a v. Variables a v => a -> Set v variables I v -i -instance Var v => Patch (Send v x) (v, v) where - patch :: (v, v) -> Send v x -> Send v x -patch (v, v) -diff (Send I v -a) = forall v x. I v -> Send v x +i +instance Var v => Patch (Send v x) (v, v) where + patch :: (v, v) -> Send v x -> Send v x +patch (v, v) +diff (Send I v +a) = forall v x. I v -> Send v x Send (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -a) -instance Var v => Locks (Send v x) v where locks :: Send v x -> [Lock v] -locks Send v x +diff I v +a) +instance Var v => Locks (Send v x) v where locks :: Send v x -> [Lock v] +locks Send v x _ = [] -instance FunctionSimulation (Send v x) v x where - simulate :: CycleCntx v x -> Send v x -> [(v, x)] -simulate CycleCntx v x -_cntx Send{} = [] +instance FunctionSimulation (Send v x) v x where + simulate :: CycleCntx v x -> Send v x -> [(v, x)] +simulate CycleCntx v x +_cntx Send{} = [] -newtype Receive v x = Receive (O v) deriving (Typeable, Receive v x -> Receive v x -> Bool +newtype Receive v x = Receive (O v) deriving (Typeable, Receive v x -> Receive v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => Receive v x -> Receive v x -> Bool /= :: Receive v x -> Receive v x -> Bool @@ -1509,21 +1509,21 @@ == :: Receive v x -> Receive v x -> Bool $c== :: forall v x. Eq v => Receive v x -> Receive v x -> Bool Eq) -instance Var v => Show (Receive v x) where - show :: Receive v x -> String -show (Receive O v -os) = String +instance Var v => Show (Receive v x) where + show :: Receive v x -> String +show (Receive O v +os) = String "receive() = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -os -instance Label (Receive v x) where label :: Receive v x -> String -label Receive{} = String +os +instance Label (Receive v x) where label :: Receive v x -> String +label Receive{} = String "receive" -receive :: (Var v, Val x) => [v] -> F v x +receive :: (Var v, Val x) => [v] -> F v x receive :: forall v x. (Var v, Val x) => [v] -> F v x -receive [v] -a = forall {f} {v} {x}. +receive [v] +a = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -1534,51 +1534,51 @@ O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -a -instance Var v => Function (Receive v x) v where - outputs :: Receive v x -> Set v -outputs (Receive O v -o) = forall a v. Variables a v => a -> Set v +a +instance Var v => Function (Receive v x) v where + outputs :: Receive v x -> Set v +outputs (Receive O v +o) = forall a v. Variables a v => a -> Set v variables O v -o -instance Var v => Patch (Receive v x) (v, v) where - patch :: (v, v) -> Receive v x -> Receive v x -patch (v, v) -diff (Receive O v -a) = forall v x. O v -> Receive v x +o +instance Var v => Patch (Receive v x) (v, v) where + patch :: (v, v) -> Receive v x -> Receive v x +patch (v, v) +diff (Receive O v +a) = forall v x. O v -> Receive v x Receive (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -a) -instance Var v => Locks (Receive v x) v where locks :: Receive v x -> [Lock v] -locks Receive v x +diff O v +a) +instance Var v => Locks (Receive v x) v where locks :: Receive v x -> [Lock v] +locks Receive v x _ = [] -instance (Var v, Val x) => FunctionSimulation (Receive v x) v x where - simulate :: CycleCntx v x -> Receive v x -> [(v, x)] -simulate CycleCntx{HashMap v x +instance (Var v, Val x) => FunctionSimulation (Receive v x) v x where + simulate :: CycleCntx v x -> Receive v x -> [(v, x)] +simulate CycleCntx{HashMap v x cycleCntx :: HashMap v x cycleCntx :: forall v x. CycleCntx v x -> HashMap v x -cycleCntx} (Receive (O Set v -vs)) = +cycleCntx} (Receive (O Set v +vs)) = case forall {c}. Set c -> c oneOf Set v -vs forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v +vs forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v `HM.lookup` HashMap v x -cycleCntx of +cycleCntx of -- if output variables are defined - nothing to do (values thrown on upper level) Just x _ -> [] -- if output variables are not defined - set initial value Maybe x Nothing -> [(v -v, forall a. Default a => a -def) | v -v <- forall a. Set a -> [a] +v, forall a. Default a => a +def) | v +v <- forall a. Set a -> [a] elems Set v -vs] +vs] -- | Special function for negative tests only. -data BrokenBuffer v x = BrokenBuffer (I v) (O v) deriving (Typeable, BrokenBuffer v x -> BrokenBuffer v x -> Bool +data BrokenBuffer v x = BrokenBuffer (I v) (O v) deriving (Typeable, BrokenBuffer v x -> BrokenBuffer v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => BrokenBuffer v x -> BrokenBuffer v x -> Bool /= :: BrokenBuffer v x -> BrokenBuffer v x -> Bool @@ -1587,30 +1587,30 @@ $c== :: forall v x. Eq v => BrokenBuffer v x -> BrokenBuffer v x -> Bool Eq) -instance Label (BrokenBuffer v x) where label :: BrokenBuffer v x -> String -label BrokenBuffer{} = String +instance Label (BrokenBuffer v x) where label :: BrokenBuffer v x -> String +label BrokenBuffer{} = String "broken" -instance Var v => Show (BrokenBuffer v x) where - show :: BrokenBuffer v x -> String -show (BrokenBuffer I v -i O v -os) = String +instance Var v => Show (BrokenBuffer v x) where + show :: BrokenBuffer v x -> String +show (BrokenBuffer I v +i O v +os) = String "brokenBuffer(" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show I v -i forall a. Semigroup a => a -> a -> a +i forall a. Semigroup a => a -> a -> a <> String ")" forall a. Semigroup a => a -> a -> a <> String " = " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show O v -os -brokenBuffer :: (Var v, Val x) => v -> [v] -> F v x +os +brokenBuffer :: (Var v, Val x) => v -> [v] -> F v x brokenBuffer :: forall v x. (Var v, Val x) => v -> [v] -> F v x -brokenBuffer v -a [v] -b = forall {f} {v} {x}. +brokenBuffer v +a [v] +b = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x @@ -1618,53 +1618,53 @@ $ forall v x. I v -> O v -> BrokenBuffer v x BrokenBuffer (forall v. v -> I v I v -a) (forall v. Set v -> O v +a) (forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -b) +b) -instance Var v => Function (BrokenBuffer v x) v where - inputs :: BrokenBuffer v x -> Set v -inputs (BrokenBuffer I v -a O v -_b) = forall a v. Variables a v => a -> Set v +instance Var v => Function (BrokenBuffer v x) v where + inputs :: BrokenBuffer v x -> Set v +inputs (BrokenBuffer I v +a O v +_b) = forall a v. Variables a v => a -> Set v variables I v -a - outputs :: BrokenBuffer v x -> Set v -outputs (BrokenBuffer I v -_a O v -b) = forall a v. Variables a v => a -> Set v +a + outputs :: BrokenBuffer v x -> Set v +outputs (BrokenBuffer I v +_a O v +b) = forall a v. Variables a v => a -> Set v variables O v -b -instance Var v => Patch (BrokenBuffer v x) (v, v) where - patch :: (v, v) -> BrokenBuffer v x -> BrokenBuffer v x -patch (v, v) -diff (BrokenBuffer I v -a O v -b) = forall v x. I v -> O v -> BrokenBuffer v x +b +instance Var v => Patch (BrokenBuffer v x) (v, v) where + patch :: (v, v) -> BrokenBuffer v x -> BrokenBuffer v x +patch (v, v) +diff (BrokenBuffer I v +a O v +b) = forall v x. I v -> O v -> BrokenBuffer v x BrokenBuffer (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff I v -a) (forall f diff. Patch f diff => diff -> f -> f +diff I v +a) (forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff O v -b) -instance Var v => Locks (BrokenBuffer v x) v where - locks :: BrokenBuffer v x -> [Lock v] -locks = forall {f} {v}. Function f v => f -> [Lock v] +diff O v +b) +instance Var v => Locks (BrokenBuffer v x) v where + locks :: BrokenBuffer v x -> [Lock v] +locks = forall {f} {v}. Function f v => f -> [Lock v] inputsLockOutputs -instance Var v => FunctionSimulation (BrokenBuffer v x) v x where - simulate :: CycleCntx v x -> BrokenBuffer v x -> [(v, x)] -simulate CycleCntx v x -cntx (BrokenBuffer (I v -a) (O Set v -vs)) = [(v -v, CycleCntx v x -cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +instance Var v => FunctionSimulation (BrokenBuffer v x) v x where + simulate :: CycleCntx v x -> BrokenBuffer v x -> [(v, x)] +simulate CycleCntx v x +cntx (BrokenBuffer (I v +a) (O Set v +vs)) = [(v +v, CycleCntx v x +cntx forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v `getCntx` v -a) | v -v <- forall a. Set a -> [a] +a) | v +v <- forall a. Set a -> [a] elems Set v -vs] +vs] \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Intermediate.Simulation.html b/haddock/nitta/src/NITTA.Intermediate.Simulation.html index 92d5e7b24..423625930 100644 --- a/haddock/nitta/src/NITTA.Intermediate.Simulation.html +++ b/haddock/nitta/src/NITTA.Intermediate.Simulation.html @@ -23,103 +23,103 @@ import NITTA.Intermediate.Types -- | Functional algorithm simulation -simulateDataFlowGraph :: - (Var v, Val x, WithFunctions g (F v x)) => +simulateDataFlowGraph :: + (Var v, Val x, WithFunctions g (F v x)) => Int -> - CycleCntx v x -> - [(v, [x])] -> - g -> - Cntx v x + CycleCntx v x -> + [(v, [x])] -> + g -> + Cntx v x simulateDataFlowGraph :: forall v x g. (Var v, Val x, WithFunctions g (F v x)) => Int -> CycleCntx v x -> [(v, [x])] -> g -> Cntx v x -simulateDataFlowGraph Int -cycleN CycleCntx v x -cycle0 [(v, [x])] -transmission g -dfg = +simulateDataFlowGraph Int +cycleN CycleCntx v x +cycle0 [(v, [x])] +transmission g +dfg = forall v x. (Var v, Val x) => Int -> CycleCntx v x -> [(v, [x])] -> [F v x] -> Cntx v x simulateAlg Int -cycleN CycleCntx v x -cycle0 [(v, [x])] -transmission forall a b. (a -> b) -> a -> b +cycleN CycleCntx v x +cycle0 [(v, [x])] +transmission forall a b. (a -> b) -> a -> b $ forall v x. (Var v, Val x) => [F v x] -> [F v x] reorderAlgorithm forall a b. (a -> b) -> a -> b $ forall a f. WithFunctions a f => a -> [f] functions g -dfg +dfg -simulateAlg :: - (Var v, Val x) => +simulateAlg :: + (Var v, Val x) => Int -> - CycleCntx v x -> - [(v, [x])] -> - [F v x] -> - Cntx v x + CycleCntx v x -> + [(v, [x])] -> + [F v x] -> + Cntx v x simulateAlg :: forall v x. (Var v, Val x) => Int -> CycleCntx v x -> [(v, [x])] -> [F v x] -> Cntx v x -simulateAlg Int -cycleN CycleCntx v x -cycle0 [(v, [x])] -transmission [F v x] -alg - | let cycleConnections :: [F v x] -> [(v, [v])] -cycleConnections [] = [] - cycleConnections (F v x -f : [F v x] -fs) +simulateAlg Int +cycleN CycleCntx v x +cycle0 [(v, [x])] +transmission [F v x] +alg + | let cycleConnections :: [F v x] -> [(v, [v])] +cycleConnections [] = [] + cycleConnections (F v x +f : [F v x] +fs) -- without refactoring | Just (Loop X x -_ (O Set v -ov) (I v -iv)) <- forall (f :: * -> * -> *) v x. +_ (O Set v +ov) (I v +iv)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = (v -iv, forall a. Set a -> [a] +f = (v +iv, forall a. Set a -> [a] elems Set v -ov) forall a. a -> [a] -> [a] +ov) forall a. a -> [a] -> [a] : [F v x] -> [(v, [v])] -cycleConnections [F v x] -fs +cycleConnections [F v x] +fs -- after refactoring (BreakLoopD) | Just (LoopBegin (Loop X x -_ (O Set v -ov) (I v -iv)) O v +_ (O Set v +ov) (I v +iv)) O v _) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = (v -iv, forall a. Set a -> [a] +f = (v +iv, forall a. Set a -> [a] elems Set v -ov) forall a. a -> [a] -> [a] +ov) forall a. a -> [a] -> [a] : [F v x] -> [(v, [v])] -cycleConnections [F v x] -fs +cycleConnections [F v x] +fs | Bool otherwise = [F v x] -> [(v, [v])] -cycleConnections [F v x] -fs +cycleConnections [F v x] +fs - fromPrevCycle :: [(v, [v])] -fromPrevCycle = forall {v} {x}. (Typeable v, Typeable x) => [F v x] -> [(v, [v])] -cycleConnections [F v x] -alg = + fromPrevCycle :: [(v, [v])] +fromPrevCycle = forall {v} {x}. (Typeable v, Typeable x) => [F v x] -> [(v, [v])] +cycleConnections [F v x] +alg = Cntx { cntxReceived :: Map v [x] cntxReceived = forall k a. Ord k => [(k, a)] -> Map k a M.fromList [(v, [x])] -transmission +transmission , cntxProcess :: [CycleCntx v x] cntxProcess = forall a. Int -> [a] -> [a] take Int -cycleN forall a b. (a -> b) -> a -> b +cycleN forall a b. (a -> b) -> a -> b $ forall {v} {t :: * -> *} {t :: * -> *} {src} {x}. (Hashable v, Foldable t, Foldable t, ToString v, FunctionSimulation src v x, Interpolatable 'False src [Char], @@ -127,56 +127,56 @@ t (v, [v]) -> CycleCntx v x -> [(v, [x])] -> t src -> [CycleCntx v x] simulateAlg' [(v, [v])] -fromPrevCycle CycleCntx v x -cycle0 [(v, [x])] -transmission [F v x] -alg +fromPrevCycle CycleCntx v x +cycle0 [(v, [x])] +transmission [F v x] +alg , cntxCycleNumber :: Int cntxCycleNumber = Int -cycleN +cycleN } simulateAlg' :: t (v, [v]) -> CycleCntx v x -> [(v, [x])] -> t src -> [CycleCntx v x] -simulateAlg' t (v, [v]) -fromPrevCycle CycleCntx v x -cycleCntx0 [(v, [x])] -transmission t src -alg = - let (CycleCntx v x -cycleCntx0', [(v, [x])] -transmission') = forall {a} {a}. +simulateAlg' t (v, [v]) +fromPrevCycle CycleCntx v x +cycleCntx0 [(v, [x])] +transmission t src +alg = + let (CycleCntx v x +cycleCntx0', [(v, [x])] +transmission') = forall {a} {a}. Hashable a => CycleCntx a a -> [(a, [a])] -> (CycleCntx a a, [(a, [a])]) -receive' CycleCntx v x -cycleCntx0 [(v, [x])] -transmission - cycleCntx :: CycleCntx v x -cycleCntx = forall {t :: * -> *} {v} {src} {x}. +receive' CycleCntx v x +cycleCntx0 [(v, [x])] +transmission + cycleCntx :: CycleCntx v x +cycleCntx = forall {t :: * -> *} {v} {src} {x}. (Foldable t, Hashable v, ToString v, FunctionSimulation src v x, Interpolatable 'False src [Char], Show x) => CycleCntx v x -> t src -> CycleCntx v x -simulateCycle CycleCntx v x -cycleCntx0' t src -alg +simulateCycle CycleCntx v x +cycleCntx0' t src +alg in CycleCntx v x -cycleCntx forall a. a -> [a] -> [a] +cycleCntx forall a. a -> [a] -> [a] : t (v, [v]) -> CycleCntx v x -> [(v, [x])] -> t src -> [CycleCntx v x] simulateAlg' t (v, [v]) -fromPrevCycle (CycleCntx v x -> CycleCntx v x -throwLoop CycleCntx v x -cycleCntx) [(v, [x])] -transmission' t src -alg +fromPrevCycle (CycleCntx v x -> CycleCntx v x +throwLoop CycleCntx v x +cycleCntx) [(v, [x])] +transmission' t src +alg where -- TODO: receive data for several IO processor unit. - receive' :: CycleCntx a a -> [(a, [a])] -> (CycleCntx a a, [(a, [a])]) -receive' CycleCntx{HashMap a a + receive' :: CycleCntx a a -> [(a, [a])] -> (CycleCntx a a, [(a, [a])]) +receive' CycleCntx{HashMap a a cycleCntx :: forall v x. CycleCntx v x -> HashMap v x cycleCntx :: HashMap a a -cycleCntx} [(a, [a])] -trans = +cycleCntx} [(a, [a])] +trans = ( forall v x. HashMap v x -> CycleCntx v x CycleCntx forall a b. (a -> b) -> a -> b $ @@ -184,52 +184,52 @@ Foldable t => (b -> a -> b) -> b -> t a -> b foldl - ( \HashMap a a -c (a -v, [a] -xs) -> + ( \HashMap a a +c (a +v, [a] +xs) -> case [a] -xs of - a -x : [a] +xs of + a +x : [a] _ -> forall k v. (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert a -v a -x HashMap a a -c +v a +x HashMap a a +c [a] _ -> HashMap a a -c +c ) HashMap a a -cycleCntx +cycleCntx [(a, [a])] -trans +trans , forall a b. (a -> b) -> [a] -> [b] map - ( \(a -v, [a] -xs) -> + ( \(a +v, [a] +xs) -> case [a] -xs of +xs of (a _ : [a] _) -> (a -v, forall a. [a] -> [a] +v, forall a. [a] -> [a] tail [a] -xs) +xs) [] -> (a -v, [a] -xs) +v, [a] +xs) ) [(a, [a])] -trans +trans ) - throwLoop :: CycleCntx v x -> CycleCntx v x -throwLoop (CycleCntx HashMap v x -cntx) = + throwLoop :: CycleCntx v x -> CycleCntx v x +throwLoop (CycleCntx HashMap v x +cntx) = forall v x. HashMap v x -> CycleCntx v x CycleCntx forall a b. (a -> b) -> a -> b $ @@ -240,56 +240,56 @@ Foldable t => (b -> a -> b) -> b -> t a -> b foldl - ( \[(v, x)] -st (v -thrown, [v] -vs) -> forall a b. (a -> b) -> [a] -> [b] -map (\v -v -> (v -v, HashMap v x -cntx forall k v. + ( \[(v, x)] +st (v +thrown, [v] +vs) -> forall a b. (a -> b) -> [a] -> [b] +map (\v +v -> (v +v, HashMap v x +cntx forall k v. (Eq k, Hashable k, HasCallStack) => HashMap k v -> k -> v HM.! v -thrown)) [v] -vs forall a. [a] -> [a] -> [a] +thrown)) [v] +vs forall a. [a] -> [a] -> [a] ++ [(v, x)] -st +st ) [] t (v, [v]) -fromPrevCycle - simulateCycle :: CycleCntx v x -> t src -> CycleCntx v x -simulateCycle CycleCntx v x -cntx00 t src -fs = +fromPrevCycle + simulateCycle :: CycleCntx v x -> t src -> CycleCntx v x +simulateCycle CycleCntx v x +cntx00 t src +fs = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl - ( \CycleCntx v x -cntx src -f -> + ( \CycleCntx v x +cntx src +f -> case forall {v} {x}. (Hashable v, ToString v) => CycleCntx v x -> [(v, x)] -> Either [Char] (CycleCntx v x) updateCntx CycleCntx v x -cntx forall a b. (a -> b) -> a -> b +cntx forall a b. (a -> b) -> a -> b $ forall f v x. FunctionSimulation f v x => CycleCntx v x -> f -> [(v, x)] simulate CycleCntx v x -cntx src -f of - Right CycleCntx v x -cntx' -> CycleCntx v x -cntx' - Left [Char] -e -> forall a. HasCallStack => [Char] -> a +cntx src +f of + Right CycleCntx v x +cntx' -> CycleCntx v x +cntx' + Left [Char] +e -> forall a. HasCallStack => [Char] -> a error [i|can't simulate #{f} in context #{cntx}: #{e}|] ) CycleCntx v x -cntx00 +cntx00 t src -fs +fs \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Intermediate.Types.html b/haddock/nitta/src/NITTA.Intermediate.Types.html index b7dc6e93e..00ede8181 100644 --- a/haddock/nitta/src/NITTA.Intermediate.Types.html +++ b/haddock/nitta/src/NITTA.Intermediate.Types.html @@ -80,15 +80,15 @@ import Text.PrettyPrint.Boxes hiding ((<>)) -- | Input variable. -newtype I v = I v - deriving (I v -> I v -> Bool +newtype I v = I v + deriving (I v -> I v -> Bool forall v. Eq v => I v -> I v -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: I v -> I v -> Bool $c/= :: forall v. Eq v => I v -> I v -> Bool == :: I v -> I v -> Bool $c== :: forall v. Eq v => I v -> I v -> Bool -Eq, I v -> I v -> Bool +Eq, I v -> I v -> Bool I v -> I v -> Ordering I v -> I v -> I v forall a. @@ -121,46 +121,46 @@ $ccompare :: forall v. Ord v => I v -> I v -> Ordering Ord) -instance ToString v => Show (I v) where show :: I v -> String -show (I v -v) = forall a. ToString a => a -> String +instance ToString v => Show (I v) where show :: I v -> String +show (I v +v) = forall a. ToString a => a -> String toString v -v +v -instance Eq v => Patch (I v) (v, v) where - patch :: (v, v) -> I v -> I v -patch (v -v, v -v') i :: I v -i@(I v -v0) +instance Eq v => Patch (I v) (v, v) where + patch :: (v, v) -> I v -> I v +patch (v +v, v +v') i :: I v +i@(I v +v0) | v -v0 forall a. Eq a => a -> a -> Bool +v0 forall a. Eq a => a -> a -> Bool == v -v = forall v. v -> I v +v = forall v. v -> I v I v -v' +v' | Bool otherwise = I v -i +i -instance Variables (I v) v where - variables :: I v -> Set v -variables (I v -v) = forall a. a -> Set a +instance Variables (I v) v where + variables :: I v -> Set v +variables (I v +v) = forall a. a -> Set a S.singleton v -v +v -- | Output variable set. -newtype O v = O (S.Set v) - deriving (O v -> O v -> Bool +newtype O v = O (S.Set v) + deriving (O v -> O v -> Bool forall v. Eq v => O v -> O v -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: O v -> O v -> Bool $c/= :: forall v. Eq v => O v -> O v -> Bool == :: O v -> O v -> Bool $c== :: forall v. Eq v => O v -> O v -> Bool -Eq, O v -> O v -> Bool +Eq, O v -> O v -> Bool O v -> O v -> Ordering O v -> O v -> O v forall a. @@ -193,34 +193,34 @@ $ccompare :: forall v. Ord v => O v -> O v -> Ordering Ord) -instance Ord v => Patch (O v) (v, v) where - patch :: (v, v) -> O v -> O v -patch (v -v, v -v') (O Set v -vs) = forall v. Set v -> O v +instance Ord v => Patch (O v) (v, v) where + patch :: (v, v) -> O v -> O v +patch (v +v, v +v') (O Set v +vs) = forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a S.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\v -e -> if v -e forall a. Eq a => a -> a -> Bool +map (\v +e -> if v +e forall a. Eq a => a -> a -> Bool == v -v then v -v' else v -e) forall a b. (a -> b) -> a -> b +v then v +v' else v +e) forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems Set v -vs +vs -instance ToString v => Show (O v) where - show :: O v -> String -show (O Set v -vs) +instance ToString v => Show (O v) where + show :: O v -> String +show (O Set v +vs) | forall a. Set a -> Bool S.null Set v -vs = String +vs = String "_" | Bool otherwise = forall a. [a] -> [[a]] -> [a] @@ -228,17 +228,17 @@ " = " forall a b. (a -> b) -> a -> b $ forall {a}. ToString a => Set a -> [String] vsToStringList Set v -vs +vs -instance Variables (O v) v where - variables :: O v -> Set v -variables (O Set v -vs) = Set v -vs +instance Variables (O v) v where + variables :: O v -> Set v +variables (O Set v +vs) = Set v +vs -- | Value of variable (constant or initial value). -newtype X x = X x - deriving (Int -> X x -> ShowS +newtype X x = X x + deriving (Int -> X x -> ShowS forall x. Show x => Int -> X x -> ShowS forall x. Show x => [X x] -> ShowS forall x. Show x => X x -> String @@ -250,7 +250,7 @@ $cshow :: forall x. Show x => X x -> String showsPrec :: Int -> X x -> ShowS $cshowsPrec :: forall x. Show x => Int -> X x -> ShowS -Show, X x -> X x -> Bool +Show, X x -> X x -> Bool forall x. Eq x => X x -> X x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: X x -> X x -> Bool @@ -267,24 +267,24 @@ > c := a + b > [ Lock{ locked=c, lockBy=a }, Lock{ locked=c, lockBy=b } ] -} -class Var v => Locks x v | x -> v where - locks :: x -> [Lock v] +class Var v => Locks x v | x -> v where + locks :: x -> [Lock v] -- | Variable casuality. -data Lock v = Lock +data Lock v = Lock { forall v. Lock v -> v -locked :: v +locked :: v , forall v. Lock v -> v -lockBy :: v +lockBy :: v } - deriving (Lock v -> Lock v -> Bool + deriving (Lock v -> Lock v -> Bool forall v. Eq v => Lock v -> Lock v -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Lock v -> Lock v -> Bool $c/= :: forall v. Eq v => Lock v -> Lock v -> Bool == :: Lock v -> Lock v -> Bool $c== :: forall v. Eq v => Lock v -> Lock v -> Bool -Eq, Lock v -> Lock v -> Bool +Eq, Lock v -> Lock v -> Bool Lock v -> Lock v -> Ordering forall a. Eq a @@ -322,269 +322,269 @@ $cfrom :: forall v x. Lock v -> Rep (Lock v) x Generic) -instance ToString v => Show (Lock v) where - show :: Lock v -> String -show Lock{v +instance ToString v => Show (Lock v) where + show :: Lock v -> String +show Lock{v locked :: v locked :: forall v. Lock v -> v -locked, v +locked, v lockBy :: v lockBy :: forall v. Lock v -> v -lockBy} = +lockBy} = String "Lock{locked=" forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString v -locked forall a. Semigroup a => a -> a -> a +locked forall a. Semigroup a => a -> a -> a <> String ", lockBy=" forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString v -lockBy forall a. Semigroup a => a -> a -> a +lockBy forall a. Semigroup a => a -> a -> a <> String "}" -instance ToJSON v => ToJSON (Lock v) +instance ToJSON v => ToJSON (Lock v) -- | All input variables locks all output variables. inputsLockOutputs :: f -> [Lock v] -inputsLockOutputs f -f = +inputsLockOutputs f +f = [ Lock{locked :: v locked = v -y, lockBy :: v +y, lockBy :: v lockBy = v -x} - | v -x <- forall a. Set a -> [a] +x} + | v +x <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v inputs f -f - , v -y <- forall a. Set a -> [a] +f + , v +y <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v outputs f -f +f ] ----------------------------------------------------------- -- | Type class for application algorithm functions. -class Function f v | f -> v where +class Function f v | f -> v where -- | Get all input variables. - inputs :: f -> S.Set v - inputs f + inputs :: f -> S.Set v + inputs f _ = forall a. Set a S.empty -- | Get all output variables. - outputs :: f -> S.Set v - outputs f + outputs :: f -> S.Set v + outputs f _ = forall a. Set a S.empty -- | Sometimes, one function can cause internal process unit lock for another function. -- TODO: remove or move, because its depends from PU type - isInternalLockPossible :: f -> Bool - isInternalLockPossible f + isInternalLockPossible :: f -> Bool + isInternalLockPossible f _ = Bool False -- | Type class for making fine label for Functions. -class Label a where - label :: a -> String +class Label a where + label :: a -> String instance Label String where - label :: ShowS -label String -s = String -s + label :: ShowS +label String +s = String +s instance Label T.Text where - label :: Text -> String -label = forall a. ToString a => a -> String + label :: Text -> String +label = forall a. ToString a => a -> String toString -- | Type class of something, which is related to functions. -class WithFunctions a f | a -> f where +class WithFunctions a f | a -> f where -- | Get a list of associated functions. - functions :: a -> [f] + functions :: a -> [f] -- | Box forall functions. -data F v x where - F :: - ( Function f v - , Patch f (v, v) - , Locks f v - , Show f - , Label f - , FunctionSimulation f v x - , Typeable f - , Eq f +data F v x where + F :: + ( Function f v + , Patch f (v, v) + , Locks f v + , Show f + , Label f + , FunctionSimulation f v x + , Typeable f + , Eq f ) => { () -fun :: f +fun :: f , forall v x. F v x -> [F v x] -funHistory :: [F v x] +funHistory :: [F v x] } -> - F v x + F v x packF :: f -> F v x -packF f -f = F{fun :: f +packF f +f = F{fun :: f fun = f -f, funHistory :: [F v x] +f, funHistory :: [F v x] funHistory = []} -functionType :: F v x -> TypeRep +functionType :: F v x -> TypeRep functionType :: forall v x. F v x -> TypeRep -functionType F{f +functionType F{f fun :: f fun :: () -fun} = forall a. Typeable a => a -> TypeRep +fun} = forall a. Typeable a => a -> TypeRep typeOf f -fun +fun -instance Eq (F v x) where +instance Eq (F v x) where F{fun :: () -fun = f -a} == :: F v x -> F v x -> Bool +fun = f +a} == :: F v x -> F v x -> Bool == F{fun :: () -fun = f -b} +fun = f +b} | forall a. Typeable a => a -> TypeRep typeOf f -a forall a. Eq a => a -> a -> Bool +a forall a. Eq a => a -> a -> Bool == forall a. Typeable a => a -> TypeRep typeOf f -b = f -a forall a. Eq a => a -> a -> Bool +b = f +a forall a. Eq a => a -> a -> Bool == forall a. HasCallStack => Maybe a -> a fromJust (forall a b. (Typeable a, Typeable b) => a -> Maybe b cast f -b) +b) | Bool otherwise = Bool False -instance Function (F v x) v where - isInternalLockPossible :: F v x -> Bool -isInternalLockPossible F{f +instance Function (F v x) v where + isInternalLockPossible :: F v x -> Bool +isInternalLockPossible F{f fun :: f fun :: () -fun} = forall f v. Function f v => f -> Bool +fun} = forall f v. Function f v => f -> Bool isInternalLockPossible f -fun - inputs :: F v x -> Set v -inputs F{f +fun + inputs :: F v x -> Set v +inputs F{f fun :: f fun :: () -fun} = forall f v. Function f v => f -> Set v +fun} = forall f v. Function f v => f -> Set v inputs f -fun - outputs :: F v x -> Set v -outputs F{f +fun + outputs :: F v x -> Set v +outputs F{f fun :: f fun :: () -fun} = forall f v. Function f v => f -> Set v +fun} = forall f v. Function f v => f -> Set v outputs f -fun +fun -instance FunctionSimulation (F v x) v x where - simulate :: CycleCntx v x -> F v x -> [(v, x)] -simulate CycleCntx v x -cntx F{f +instance FunctionSimulation (F v x) v x where + simulate :: CycleCntx v x -> F v x -> [(v, x)] +simulate CycleCntx v x +cntx F{f fun :: f fun :: () -fun} = forall f v x. +fun} = forall f v x. FunctionSimulation f v x => CycleCntx v x -> f -> [(v, x)] simulate CycleCntx v x -cntx f -fun +cntx f +fun -instance Label (F v x) where - label :: F v x -> String -label F{f +instance Label (F v x) where + label :: F v x -> String +label F{f fun :: f fun :: () -fun} = forall a. Label a => a -> String +fun} = forall a. Label a => a -> String label f -fun +fun -instance Var v => Locks (F v x) v where - locks :: F v x -> [Lock v] -locks F{f +instance Var v => Locks (F v x) v where + locks :: F v x -> [Lock v] +locks F{f fun :: f fun :: () -fun} = forall x v. Locks x v => x -> [Lock v] +fun} = forall x v. Locks x v => x -> [Lock v] locks f -fun +fun -instance Ord (F v x) where +instance Ord (F v x) where F{fun :: () -fun = f -a} compare :: F v x -> F v x -> Ordering +fun = f +a} compare :: F v x -> F v x -> Ordering `compare` F{fun :: () -fun = f -b} = forall a. Show a => a -> String +fun = f +b} = forall a. Show a => a -> String show f -a forall a. Ord a => a -> a -> Ordering +a forall a. Ord a => a -> a -> Ordering `compare` forall a. Show a => a -> String show f -b +b -instance Patch (F v x) (v, v) where - patch :: (v, v) -> F v x -> F v x -patch (v, v) -diff fun0 :: F v x -fun0@F{f +instance Patch (F v x) (v, v) where + patch :: (v, v) -> F v x -> F v x +patch (v, v) +diff fun0 :: F v x +fun0@F{f fun :: f fun :: () -fun, [F v x] +fun, [F v x] funHistory :: [F v x] funHistory :: forall v x. F v x -> [F v x] -funHistory} = +funHistory} = F { fun :: f fun = forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff f -fun +diff f +fun , funHistory :: [F v x] funHistory = F v x -fun0 forall a. a -> [a] -> [a] +fun0 forall a. a -> [a] -> [a] : [F v x] -funHistory +funHistory } -instance Ord v => Patch (F v x) (Changeset v) where - patch :: Changeset v -> F v x -> F v x -patch Changeset{Map v v +instance Ord v => Patch (F v x) (Changeset v) where + patch :: Changeset v -> F v x -> F v x +patch Changeset{Map v v changeI :: forall v. Changeset v -> Map v v changeI :: Map v v -changeI, Map v (Set v) +changeI, Map v (Set v) changeO :: forall v. Changeset v -> Map v (Set v) changeO :: Map v (Set v) -changeO} F v x -f0 = - let changeI' :: [(v, v)] -changeI' = +changeO} F v x +f0 = + let changeI' :: [(v, v)] +changeI' = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe - ( \v -v -> case Map v v -changeI forall k a. Ord k => Map k a -> k -> Maybe a + ( \v +v -> case Map v v +changeI forall k a. Ord k => Map k a -> k -> Maybe a M.!? v -v of - Just v -v' -> forall a. a -> Maybe a +v of + Just v +v' -> forall a. a -> Maybe a Just (v -v, v -v') +v, v +v') Maybe v Nothing -> forall a. Maybe a Nothing @@ -595,27 +595,27 @@ forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v inputs F v x -f0 - changeO' :: [(v, v)] -changeO' = +f0 + changeO' :: [(v, v)] +changeO' = forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat forall a b. (a -> b) -> a -> b $ forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe - ( \v -v -> case Map v (Set v) -changeO forall k a. Ord k => Map k a -> k -> Maybe a + ( \v +v -> case Map v (Set v) +changeO forall k a. Ord k => Map k a -> k -> Maybe a M.!? v -v of - Just Set v -vs -> forall a. a -> Maybe a +v of + Just Set v +vs -> forall a. a -> Maybe a Just [(v -v, v -v') | v -v' <- forall a. Set a -> [a] +v, v +v') | v +v' <- forall a. Set a -> [a] S.elems Set v -vs] +vs] Maybe (Set v) Nothing -> forall a. Maybe a Nothing @@ -626,67 +626,67 @@ forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v outputs F v x -f0 +f0 in forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b -foldl (\F v x -f (v, v) -diff -> forall f diff. Patch f diff => diff -> f -> f +foldl (\F v x +f (v, v) +diff -> forall f diff. Patch f diff => diff -> f -> f patch (v, v) -diff F v x -f) F v x -f0 forall a b. (a -> b) -> a -> b +diff F v x +f) F v x +f0 forall a b. (a -> b) -> a -> b $ [(v, v)] -changeI' forall a. [a] -> [a] -> [a] +changeI' forall a. [a] -> [a] -> [a] ++ [(v, v)] -changeO' +changeO' -instance Patch b v => Patch [b] v where - patch :: v -> [b] -> [b] -patch v -diff [b] -fs = forall a b. (a -> b) -> [a] -> [b] +instance Patch b v => Patch [b] v where + patch :: v -> [b] -> [b] +patch v +diff [b] +fs = forall a b. (a -> b) -> [a] -> [b] map (forall f diff. Patch f diff => diff -> f -> f patch v -diff) [b] -fs +diff) [b] +fs -instance Show (F v x) where - show :: F v x -> String -show F{f +instance Show (F v x) where + show :: F v x -> String +show F{f fun :: f fun :: () -fun} = forall a. Show a => a -> String +fun} = forall a. Show a => a -> String show f -fun +fun -instance Var v => Variables (F v x) v where - variables :: F v x -> Set v -variables F{f +instance Var v => Variables (F v x) v where + variables :: F v x -> Set v +variables F{f fun :: f fun :: () -fun} = forall f v. Function f v => f -> Set v +fun} = forall f v. Function f v => f -> Set v inputs f -fun forall a. Ord a => Set a -> Set a -> Set a +fun forall a. Ord a => Set a -> Set a -> Set a `S.union` forall f v. Function f v => f -> Set v outputs f -fun +fun -- | Helper for extraction function from existential container 'F'. -castF :: (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) +castF :: (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF :: forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) -castF F{f +castF F{f fun :: f fun :: () -fun} = forall a b. (Typeable a, Typeable b) => a -> Maybe b +fun} = forall a b. (Typeable a, Typeable b) => a -> Maybe b cast f -fun +fun -- | Helper for JSON serialization -data FView = FView +data FView = FView { FView -> Text fvFun :: T.Text , FView -> [Text] @@ -698,7 +698,7 @@ (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep FView x -> FView $cfrom :: forall x. FView -> Rep FView x -Generic, Int -> FView -> ShowS +Generic, Int -> FView -> ShowS [FView] -> ShowS FView -> String forall a. @@ -711,41 +711,41 @@ $cshowsPrec :: Int -> FView -> ShowS Show) -instance Viewable (F v x) FView where - view :: F v x -> FView -view F{f +instance Viewable (F v x) FView where + view :: F v x -> FView +view F{f fun :: f fun :: () -fun, [F v x] +fun, [F v x] funHistory :: [F v x] funHistory :: forall v x. F v x -> [F v x] -funHistory} = +funHistory} = FView { fvFun :: Text fvFun = forall {a}. Show a => a -> Text showText f -fun +fun , fvHistory :: [Text] fvHistory = forall a b. (a -> b) -> [a] -> [b] map forall {a}. Show a => a -> Text showText [F v x] -funHistory +funHistory } -instance ToJSON FView +instance ToJSON FView ----------------------------------------------------------- -- | The type class for function simulation. -class FunctionSimulation f v x | f -> v x where +class FunctionSimulation f v x | f -> v x where -- FIXME: CycleCntx - problem, because its prevent Receive simulation with -- data drop (how implement that?). -- | Receive a computational context and return changes (list of varible names and its new values). - simulate :: CycleCntx v x -> f -> [(v, x)] + simulate :: CycleCntx v x -> f -> [(v, x)] -newtype CycleCntx v x = CycleCntx {forall v x. CycleCntx v x -> HashMap v x -cycleCntx :: HM.HashMap v x} +newtype CycleCntx v x = CycleCntx {forall v x. CycleCntx v x -> HashMap v x +cycleCntx :: HM.HashMap v x} deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall v x x. Rep (CycleCntx v x) x -> CycleCntx v x @@ -754,56 +754,56 @@ $cfrom :: forall v x x. CycleCntx v x -> Rep (CycleCntx v x) x Generic) -instance (ToString v, Show x) => Show (CycleCntx v x) where - show :: CycleCntx v x -> String -show CycleCntx{HashMap v x +instance (ToString v, Show x) => Show (CycleCntx v x) where + show :: CycleCntx v x -> String +show CycleCntx{HashMap v x cycleCntx :: HashMap v x cycleCntx :: forall v x. CycleCntx v x -> HashMap v x -cycleCntx} = +cycleCntx} = String "{" forall a. Semigroup a => a -> a -> a <> forall a. [a] -> [[a]] -> [a] S.join String ", " (forall a b. (a -> b) -> [a] -> [b] -map (\(v -v, x -x) -> forall a. ToString a => a -> String +map (\(v +v, x +x) -> forall a. ToString a => a -> String toString v -v forall a. Semigroup a => a -> a -> a +v forall a. Semigroup a => a -> a -> a <> String ": " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show x -x) forall a b. (a -> b) -> a -> b +x) forall a b. (a -> b) -> a -> b $ forall k v. HashMap k v -> [(k, v)] HM.toList HashMap v x -cycleCntx) forall a. Semigroup a => a -> a -> a +cycleCntx) forall a. Semigroup a => a -> a -> a <> String "}" -instance Default (CycleCntx v x) where - def :: CycleCntx v x +instance Default (CycleCntx v x) where + def :: CycleCntx v x def = forall v x. HashMap v x -> CycleCntx v x CycleCntx forall k v. HashMap k v HM.empty -data Cntx v x = Cntx +data Cntx v x = Cntx { forall v x. Cntx v x -> [CycleCntx v x] -cntxProcess :: [CycleCntx v x] +cntxProcess :: [CycleCntx v x] -- ^ all variables on each process cycle , forall v x. Cntx v x -> Map v [x] -cntxReceived :: M.Map v [x] +cntxReceived :: M.Map v [x] -- ^ sequences of all received values, one value per process cycle , forall v x. Cntx v x -> Int cntxCycleNumber :: Int } -instance Show x => Show (Cntx String x) where - show :: Cntx String x -> String -show Cntx{[CycleCntx String x] +instance Show x => Show (Cntx String x) where + show :: Cntx String x -> String +show Cntx{[CycleCntx String x] cntxProcess :: [CycleCntx String x] cntxProcess :: forall v x. Cntx v x -> [CycleCntx v x] -cntxProcess} = forall {a}. ToString a => [HashMap a String] -> String +cntxProcess} = forall {a}. ToString a => [HashMap a String] -> String log2md forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall v1 v2 k. (v1 -> v2) -> HashMap k v1 -> HashMap k v2 @@ -811,13 +811,13 @@ show forall b c a. (b -> c) -> (a -> b) -> a -> c . forall v x. CycleCntx v x -> HashMap v x cycleCntx) [CycleCntx String x] -cntxProcess +cntxProcess log2list :: [HashMap a String] -> [[String]] -log2list [HashMap a String] -cntxProcess0 = - let cntxProcess :: [HashMap String String] -cntxProcess = forall a b. (a -> b) -> [a] -> [b] +log2list [HashMap a String] +cntxProcess0 = + let cntxProcess :: [HashMap String String] +cntxProcess = forall a b. (a -> b) -> [a] -> [b] map (forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v HM.fromList forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] @@ -828,43 +828,43 @@ toString) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall k v. HashMap k v -> [(k, v)] HM.toList) [HashMap a String] -cntxProcess0 - header :: [String] -header = forall a. Ord a => [a] -> [a] +cntxProcess0 + header :: [String] +header = forall a. Ord a => [a] -> [a] sort forall a b. (a -> b) -> a -> b $ forall k v. HashMap k v -> [k] HM.keys forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [HashMap String String] -cntxProcess - body :: [[String]] -body = forall a b. (a -> b) -> [a] -> [b] +cntxProcess + body :: [[String]] +body = forall a b. (a -> b) -> [a] -> [b] map HashMap String String -> [String] -row [HashMap String String] -cntxProcess - row :: HashMap String String -> [String] -row HashMap String String -cntx = forall a b. (a -> b) -> [a] -> [b] +row [HashMap String String] +cntxProcess + row :: HashMap String String -> [String] +row HashMap String String +cntx = forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> b snd forall a b. (a -> b) -> a -> b $ forall a b. [a] -> [b] -> [(a, b)] zip [String] -header forall a b. (a -> b) -> a -> b +header forall a b. (a -> b) -> a -> b $ forall {b} {b}. Ord b => HashMap b b -> [b] -sortedValues HashMap String String -cntx +sortedValues HashMap String String +cntx in forall a b. (a -> b) -> [a] -> [b] map (forall a b c. (a -> b -> c) -> (a, b) -> c uncurry (:)) forall a b. (a -> b) -> a -> b $ forall a b. [a] -> [b] -> [(a, b)] zip [String] -header (forall a. [[a]] -> [[a]] +header (forall a. [[a]] -> [[a]] transpose [[String]] -body) +body) where - sortedValues :: HashMap b b -> [b] -sortedValues HashMap b b -cntx = forall a b. (a -> b) -> [a] -> [b] + sortedValues :: HashMap b b -> [b] +sortedValues HashMap b b +cntx = forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> b snd forall a b. (a -> b) -> a -> b $ forall b a. Ord b => (a -> b) -> [a] -> [a] @@ -872,7 +872,7 @@ fst forall a b. (a -> b) -> a -> b $ forall k v. HashMap k v -> [(k, v)] HM.toList HashMap b b -cntx +cntx {- | >>> let records = map HM.fromList [[("x1"::String,"1.2"::String), ("x2","3.4")], [("x1","3.4"), ("x2","2.3")]] @@ -883,79 +883,79 @@ | 2 | 3.4 | 2.3 | -} log2md :: [HashMap a String] -> String -log2md [HashMap a String] -records = - let n :: Int -n = forall (t :: * -> *) a. Foldable t => t a -> Int +log2md [HashMap a String] +records = + let n :: Int +n = forall (t :: * -> *) a. Foldable t => t a -> Int length [HashMap a String] -records - cntx2listCycle :: [[String]] -cntx2listCycle = (String +records + cntx2listCycle :: [[String]] +cntx2listCycle = (String "Cycle" forall a. a -> [a] -> [a] : forall a b. (a -> b) -> [a] -> [b] map forall a. Show a => a -> String show [Int 1 .. Int -n]) forall a. a -> [a] -> [a] +n]) forall a. a -> [a] -> [a] : forall {a}. ToString a => [HashMap a String] -> [[String]] log2list [HashMap a String] -records - maxLength :: t (t a) -> Int -maxLength t (t a) -t = forall (t :: * -> *) a. Foldable t => t a -> Int +records + maxLength :: t (t a) -> Int +maxLength t (t a) +t = forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => (a -> a -> a) -> t a -> a -foldr1 (\t a -x t a -y -> if forall (t :: * -> *) a. Foldable t => t a -> Int +foldr1 (\t a +x t a +y -> if forall (t :: * -> *) a. Foldable t => t a -> Int length t a -x forall a. Ord a => a -> a -> Bool +x forall a. Ord a => a -> a -> Bool >= forall (t :: * -> *) a. Foldable t => t a -> Int length t a -y then t a -x else t a -y) t (t a) -t - formatCell :: [String] -> [String] -formatCell x :: [String] -x@(String -x1 : String -x2 : [String] -xs) = String -x1 forall a. a -> [a] -> [a] +y then t a +x else t a +y) t (t a) +t + formatCell :: [String] -> [String] +formatCell x :: [String] +x@(String +x1 : String +x2 : [String] +xs) = String +x1 forall a. a -> [a] -> [a] : (String "|:" forall a. [a] -> [a] -> [a] ++ forall a. Int -> a -> [a] replicate (forall {t :: * -> *} {t :: * -> *} {a}. (Foldable t, Foldable t) => t (t a) -> Int -maxLength [String] -x) Char +maxLength [String] +x) Char '-') forall a. a -> [a] -> [a] : String -x2 forall a. a -> [a] -> [a] +x2 forall a. a -> [a] -> [a] : [String] -xs - formatCell [String] -x = forall a. HasCallStack => String -> a +xs + formatCell [String] +x = forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "formatCell: unexpected sequence:" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show [String] -x - cycleFormattedTable :: [[String]] -cycleFormattedTable = forall a b. (a -> b) -> [a] -> [b] +x + cycleFormattedTable :: [[String]] +cycleFormattedTable = forall a b. (a -> b) -> [a] -> [b] map ([String] -> [String] -formatCell forall b c a. (b -> c) -> (a -> b) -> a -> c +formatCell forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] map (String "| " forall a. [a] -> [a] -> [a] ++)) [[String]] -cntx2listCycle forall a. [a] -> [a] -> [a] +cntx2listCycle forall a. [a] -> [a] -> [a] ++ [forall a. Int -> a -> [a] replicate (Int -n forall a. Num a => a -> a -> a +n forall a. Num a => a -> a -> a + Int 2) String "|"] @@ -975,7 +975,7 @@ . forall a b. (a -> b) -> [a] -> [b] map String -> Box text) [[String]] -cycleFormattedTable +cycleFormattedTable ) {- | @@ -994,42 +994,42 @@ ] -} log2json :: [HashMap a String] -> ByteString -log2json [HashMap a String] -records = - let listHashMap :: [[(String, Double)]] -listHashMap = forall a. [[a]] -> [[a]] +log2json [HashMap a String] +records = + let listHashMap :: [[(String, Double)]] +listHashMap = forall a. [[a]] -> [[a]] transpose forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map [String] -> [(String, Double)] -varAndValues forall a b. (a -> b) -> a -> b +varAndValues forall a b. (a -> b) -> a -> b $ forall {a}. ToString a => [HashMap a String] -> [[String]] log2list [HashMap a String] -records +records in forall a. ToJSON a => a -> ByteString encodePretty forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v HM.fromList [[(String, Double)]] -listHashMap +listHashMap where - varAndValues :: [String] -> [(String, Double)] -varAndValues (String -k : [String] -vs) = forall a b. (a -> b) -> [a] -> [b] -map (\String -v -> (String -k, forall a. Read a => String -> a + varAndValues :: [String] -> [(String, Double)] +varAndValues (String +k : [String] +vs) = forall a b. (a -> b) -> [a] -> [b] +map (\String +v -> (String +k, forall a. Read a => String -> a read String -v :: Double)) [String] -vs - varAndValues [String] -x = forall a. HasCallStack => String -> a +v :: Double)) [String] +vs + varAndValues [String] +x = forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "varAndValues: unexpected sequence:" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show [String] -x +x {- | >>> import qualified Data.ByteString.Lazy.Char8 as BS @@ -1040,18 +1040,18 @@ 3.4,2.3 -} log2csv :: [HashMap a String] -> ByteString -log2csv [HashMap a String] -records = forall a. ToRecord a => [a] -> ByteString +log2csv [HashMap a String] +records = forall a. ToRecord a => [a] -> ByteString Csv.encode forall a b. (a -> b) -> a -> b $ forall a. [[a]] -> [[a]] transpose forall a b. (a -> b) -> a -> b $ forall {a}. ToString a => [HashMap a String] -> [[String]] log2list [HashMap a String] -records +records -instance Default (Cntx v x) where - def :: Cntx v x -def = +instance Default (Cntx v x) where + def :: Cntx v x +def = Cntx { cntxProcess :: [CycleCntx v x] cntxProcess = forall a. Default a => a @@ -1065,20 +1065,20 @@ } -- | Make sequence of received values '[ Map v x ]' -cntxReceivedBySlice :: Ord v => Cntx v x -> [M.Map v x] +cntxReceivedBySlice :: Ord v => Cntx v x -> [M.Map v x] cntxReceivedBySlice :: forall v x. Ord v => Cntx v x -> [Map v x] -cntxReceivedBySlice Cntx{Map v [x] +cntxReceivedBySlice Cntx{Map v [x] cntxReceived :: Map v [x] cntxReceived :: forall v x. Cntx v x -> Map v [x] -cntxReceived} = forall {k} {a}. Ord k => [(k, [a])] -> [Map k a] +cntxReceived} = forall {k} {a}. Ord k => [(k, [a])] -> [Map k a] cntxReceivedBySlice' forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map v [x] -cntxReceived +cntxReceived cntxReceivedBySlice' :: [(k, [a])] -> [Map k a] -cntxReceivedBySlice' [(k, [a])] -received +cntxReceivedBySlice' [(k, [a])] +received | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool @@ -1086,44 +1086,44 @@ null forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(k, [a])] -received = - let slice :: Map k a -slice = forall k a. Ord k => [(k, a)] -> Map k a +received = + let slice :: Map k a +slice = forall k a. Ord k => [(k, a)] -> Map k a M.fromList [(k -v, a -x) | (k -v, a -x : [a] +v, a +x) | (k +v, a +x : [a] _) <- [(k, [a])] -received] - received' :: [(k, [a])] -received' = [(k -v, [a] -xs) | (k -v, a -_ : [a] -xs) <- [(k, [a])] -received] +received] + received' :: [(k, [a])] +received' = [(k +v, [a] +xs) | (k +v, a +_ : [a] +xs) <- [(k, [a])] +received] in Map k a -slice forall a. a -> [a] -> [a] +slice forall a. a -> [a] -> [a] : [(k, [a])] -> [Map k a] cntxReceivedBySlice' [(k, [a])] -received' +received' | Bool otherwise = forall a. a -> [a] repeat forall k a. Map k a M.empty getCntx :: CycleCntx a v -> a -> v -getCntx (CycleCntx HashMap a v -cntx) a -v = case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v +getCntx (CycleCntx HashMap a v +cntx) a +v = case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup a -v HashMap a v -cntx of - Just v -x -> v -x +v HashMap a v +cntx of + Just v +x -> v +x Maybe v Nothing -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b @@ -1131,28 +1131,28 @@ "variable not defined: " forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString a -v +v updateCntx :: CycleCntx v x -> [(v, x)] -> Either String (CycleCntx v x) -updateCntx CycleCntx v x -cycleCntx [] = forall a b. b -> Either a b +updateCntx CycleCntx v x +cycleCntx [] = forall a b. b -> Either a b Right CycleCntx v x -cycleCntx -updateCntx (CycleCntx HashMap v x -cntx) ((v -v, x -x) : [(v, x)] -vxs) +cycleCntx +updateCntx (CycleCntx HashMap v x +cntx) ((v +v, x +x) : [(v, x)] +vxs) | forall k a. (Eq k, Hashable k) => k -> HashMap k a -> Bool HM.member v -v HashMap v x -cntx = forall a b. a -> Either a b +v HashMap v x +cntx = forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b $ String "variable value already defined: " forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString v -v +v | Bool otherwise = CycleCntx v x -> [(v, x)] -> Either String (CycleCntx v x) updateCntx (forall v x. HashMap v x -> CycleCntx v x @@ -1161,34 +1161,34 @@ (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v HM.insert v -v x -x HashMap v x -cntx) [(v, x)] -vxs +v x +x HashMap v x +cntx) [(v, x)] +vxs ----------------------------------------------------------- -- | Patch class allows replacing one variable by another. Especially for algorithm refactor. -class Patch f diff where - patch :: diff -> f -> f +class Patch f diff where + patch :: diff -> f -> f {- | Change set for patch. >>> Changeset (M.fromList [("a", "b"), ("c", "d")]) (M.fromList [("e", S.fromList ["f", "g"])]) :: Changeset String Changeset{changeI=[(a, b), (c, d)], changeO=[(e, [f, g])]} -} -data Changeset v = Changeset +data Changeset v = Changeset { forall v. Changeset v -> Map v v -changeI :: M.Map v v +changeI :: M.Map v v -- ^ change set for input variables (one to one) , forall v. Changeset v -> Map v (Set v) -changeO :: M.Map v (S.Set v) +changeO :: M.Map v (S.Set v) -- ^ change set for output variables. Many to many relations: -- -- > fromList [(a, {x}), (b, {x})] -- several output variables to one -- > fromList [(c, {y, z})] -- one output variable to many } - deriving (Changeset v -> Changeset v -> Bool + deriving (Changeset v -> Changeset v -> Bool forall v. Eq v => Changeset v -> Changeset v -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Changeset v -> Changeset v -> Bool @@ -1197,88 +1197,88 @@ $c== :: forall v. Eq v => Changeset v -> Changeset v -> Bool Eq) -instance Var v => Show (Changeset v) where - show :: Changeset v -> String -show Changeset{Map v v +instance Var v => Show (Changeset v) where + show :: Changeset v -> String +show Changeset{Map v v changeI :: Map v v changeI :: forall v. Changeset v -> Map v v -changeI, Map v (Set v) +changeI, Map v (Set v) changeO :: Map v (Set v) changeO :: forall v. Changeset v -> Map v (Set v) -changeO} = - let changeI' :: String -changeI' = forall a. [a] -> [[a]] -> [a] +changeO} = + let changeI' :: String +changeI' = forall a. [a] -> [[a]] -> [a] S.join String ", " forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\(v -a, v -b) -> String +map (\(v +a, v +b) -> String "(" forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString v -a forall a. Semigroup a => a -> a -> a +a forall a. Semigroup a => a -> a -> a <> String ", " forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString v -b forall a. Semigroup a => a -> a -> a +b forall a. Semigroup a => a -> a -> a <> String ")") forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map v v -changeI - changeO' :: String -changeO' = forall a. [a] -> [[a]] -> [a] +changeI + changeO' :: String +changeO' = forall a. [a] -> [[a]] -> [a] S.join String ", " forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\(v -a, Set v -bs) -> String +map (\(v +a, Set v +bs) -> String "(" forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString v -a forall a. Semigroup a => a -> a -> a +a forall a. Semigroup a => a -> a -> a <> String ", [" forall a. Semigroup a => a -> a -> a <> forall a. [a] -> [[a]] -> [a] S.join String ", " (forall {a}. ToString a => Set a -> [String] vsToStringList Set v -bs) forall a. Semigroup a => a -> a -> a +bs) forall a. Semigroup a => a -> a -> a <> String "])") forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map v (Set v) -changeO +changeO in String "Changeset{changeI=[" forall a. Semigroup a => a -> a -> a <> String -changeI' forall a. Semigroup a => a -> a -> a +changeI' forall a. Semigroup a => a -> a -> a <> String "], changeO=[" forall a. Semigroup a => a -> a -> a <> String -changeO' forall a. Semigroup a => a -> a -> a +changeO' forall a. Semigroup a => a -> a -> a <> String "]}" -instance Default (Changeset v) where - def :: Changeset v -def = forall v. Map v v -> Map v (Set v) -> Changeset v +instance Default (Changeset v) where + def :: Changeset v +def = forall v. Map v v -> Map v (Set v) -> Changeset v Changeset forall a. Default a => a def forall a. Default a => a def -- | Reverse changeset for patch a process unit options / decision. reverseDiff :: Changeset t -> Changeset t -reverseDiff Changeset{Map t t +reverseDiff Changeset{Map t t changeI :: Map t t changeI :: forall v. Changeset v -> Map v v -changeI, Map t (Set t) +changeI, Map t (Set t) changeO :: Map t (Set t) changeO :: forall v. Changeset v -> Map v (Set v) -changeO} = +changeO} = Changeset { changeI :: Map t t changeI = forall k a. Ord k => [(k, a)] -> Map k a @@ -1288,52 +1288,52 @@ swap forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map t t -changeI +changeI , changeO :: Map t (Set t) changeO = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl - ( \Map t (Set t) -st (t -k, t -v) -> - let box' :: Set t -box' = case Map t (Set t) -st forall k a. Ord k => Map k a -> k -> Maybe a + ( \Map t (Set t) +st (t +k, t +v) -> + let box' :: Set t +box' = case Map t (Set t) +st forall k a. Ord k => Map k a -> k -> Maybe a M.!? t -k of - Just Set t -box -> Set t -box forall a. Ord a => Set a -> Set a -> Set a +k of + Just Set t +box -> Set t +box forall a. Ord a => Set a -> Set a -> Set a `S.union` forall a. a -> Set a S.singleton t -v +v Maybe (Set t) Nothing -> forall a. a -> Set a S.singleton t -v +v in forall k a. Ord k => k -> a -> Map k a -> Map k a M.insert t -k Set t -box' Map t (Set t) -st +k Set t +box' Map t (Set t) +st ) forall a. Default a => a def [ (t -b, t -a) - | (t -a, Set t -bs) <- forall k a. Map k a -> [(k, a)] +b, t +a) + | (t +a, Set t +bs) <- forall k a. Map k a -> [(k, a)] M.assocs Map t (Set t) -changeO - , t -b <- forall a. Set a -> [a] +changeO + , t +b <- forall a. Set a -> [a] S.elems Set t -bs +bs ] } \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Intermediate.Value.html b/haddock/nitta/src/NITTA.Intermediate.Value.html index 5ae8b0b16..4e817c62d 100644 --- a/haddock/nitta/src/NITTA.Intermediate.Value.html +++ b/haddock/nitta/src/NITTA.Intermediate.Value.html @@ -51,57 +51,57 @@ -- | Type class for representation of processing values. A value should include two parts: data and attribute. class - ( Typeable x - , Show x - , Read x - , PrintfArg x - , Default x - , Integral x - , Enum x - , Eq x - , Num x - , Bits x - , Validity x - , FixedPointCompatible x - , ToJSON x + ( Typeable x + , Show x + , Read x + , PrintfArg x + , Default x + , Integral x + , Enum x + , Eq x + , Num x + , Bits x + , Validity x + , FixedPointCompatible x + , ToJSON x ) => - Val x + Val x where -- | data bus width - dataWidth :: x -> Int + dataWidth :: x -> Int -- | attribute bus width - attrWidth :: x -> Int - attrWidth x + attrWidth :: x -> Int + attrWidth x _ = Int 4 -- | raw representation of data (@Integer@) - rawData :: x -> Integer + rawData :: x -> Integer -- | raw representation of attributes (@Integer@) - rawAttr :: x -> Integer + rawAttr :: x -> Integer -- | construct a value from raw data and attributes - fromRaw :: Integer -> Integer -> x + fromRaw :: Integer -> Integer -> x -- | convert a value to Verilog literal with data - dataLiteral :: x -> T.Text + dataLiteral :: x -> T.Text -- | convert a value to Verilog literal with attributes - attrLiteral :: x -> T.Text - attrLiteral x -x = forall {a}. Show a => a -> Text + attrLiteral :: x -> T.Text + attrLiteral x +x = forall {a}. Show a => a -> Text showText (forall x. Val x => x -> Int attrWidth x -x) forall a. Semigroup a => a -> a -> a +x) forall a. Semigroup a => a -> a -> a <> Text "'d0000" -- | helper functions to work with values in Verilog (trace and assert) - verilogHelper :: x -> T.Text - verilogHelper x -x = + verilogHelper :: x -> T.Text + verilogHelper x +x = [__i| task traceWithAttr; input integer cycle; @@ -137,8 +137,8 @@ |] -- | RE for extraction assertion data from a testbench log - verilogAssertRE :: x -> Regex - verilogAssertRE x + verilogAssertRE :: x -> Regex + verilogAssertRE x _ = String -> Regex mkRegex forall a b. (a -> b) -> a -> b @@ -157,76 +157,76 @@ -- | Minimal and maximal raw value. minMaxRaw :: p -> (b, b) -minMaxRaw p -x = - let n :: Int -n = forall x. Val x => x -> Int +minMaxRaw p +x = + let n :: Int +n = forall x. Val x => x -> Int dataWidth p -x +x in forall {p} {b}. (Integral p, Num b) => p -> (b, b) minMaxRaw' Int -n +n minMaxRaw' :: p -> (b, b) -minMaxRaw' p -n = - let maxRaw :: b -maxRaw = b +minMaxRaw' p +n = + let maxRaw :: b +maxRaw = b 2 forall a b. (Num a, Integral b) => a -> b -> a ^ (p -n forall a. Num a => a -> a -> a +n forall a. Num a => a -> a -> a - p 1) forall a. Num a => a -> a -> a - b 1 - minRaw :: b -minRaw = forall a. Num a => a -> a + minRaw :: b +minRaw = forall a. Num a => a -> a negate (b -maxRaw forall a. Num a => a -> a -> a +maxRaw forall a. Num a => a -> a -> a + b 1) in (b -minRaw, b -maxRaw) +minRaw, b +maxRaw) invalidRaw :: p -> a -invalidRaw p -x = forall a b. (a, b) -> b +invalidRaw p +x = forall a b. (a, b) -> b snd (forall {b} {p}. (Num b, Val p) => p -> (b, b) minMaxRaw p -x) forall a. Num a => a -> a -> a +x) forall a. Num a => a -> a -> a + a 1 crop :: a -> a -crop a -x +crop a +x | forall a. Num a => a -> a abs a -x forall a. Eq a => a -> a -> Bool +x forall a. Eq a => a -> a -> Bool == a -x = a -x forall a. Bits a => a -> a -> a +x = a +x forall a. Bits a => a -> a -> a .&. forall x. Val x => x -> x valueMask a -x +x | Bool otherwise = a -x forall a. Bits a => a -> a -> a +x forall a. Bits a => a -> a -> a .|. forall a. Bits a => a -> a complement (forall x. Val x => x -> x valueMask a -x) +x) -valueMask :: Val x => x -> x +valueMask :: Val x => x -> x valueMask :: forall x. Val x => x -> x -valueMask x -x = forall x. Val x => Integer -> Integer -> x +valueMask x +x = forall x. Val x => Integer -> Integer -> x fromRaw (forall a. Bits a => a -> Int -> a setBit (Integer 0 :: Integer) (forall x. Val x => x -> Int dataWidth x -x forall a. Num a => a -> a -> a +x forall a. Num a => a -> a -> a - Int 1) forall a. Num a => a -> a -> a - Integer @@ -234,39 +234,39 @@ 0 -- TODO: try to avoid this class -class Default x => DefaultX u x | u -> x where - defX :: u -> x - defX u +class Default x => DefaultX u x | u -> x where + defX :: u -> x + defX u _ = forall a. Default a => a def {- | Type class for values, which contain information about fractional part of value (for fixed point arithmetics). -} -class FixedPointCompatible a where - scalingFactorPower :: a -> Integer - fractionalBitSize :: a -> Int +class FixedPointCompatible a where + scalingFactorPower :: a -> Integer + fractionalBitSize :: a -> Int scalingFactor :: a -> a -scalingFactor a -x = a +scalingFactor a +x = a 2 forall a. Floating a => a -> a -> a ** forall a b. (Integral a, Num b) => a -> b fromIntegral (forall a. FixedPointCompatible a => a -> Integer scalingFactorPower a -x) +x) -- | All values with attributes. -data Attr x = Attr {forall x. Attr x -> x -value :: x, forall x. Attr x -> Bool -invalid :: Bool} deriving (Attr x -> Attr x -> Bool +data Attr x = Attr {forall x. Attr x -> x +value :: x, forall x. Attr x -> Bool +invalid :: Bool} deriving (Attr x -> Attr x -> Bool forall x. Eq x => Attr x -> Attr x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Attr x -> Attr x -> Bool $c/= :: forall x. Eq x => Attr x -> Attr x -> Bool == :: Attr x -> Attr x -> Bool $c== :: forall x. Eq x => Attr x -> Attr x -> Bool -Eq, Attr x -> Attr x -> Bool +Eq, Attr x -> Attr x -> Bool Attr x -> Attr x -> Ordering forall a. Eq a @@ -298,404 +298,404 @@ $ccompare :: forall x. Ord x => Attr x -> Attr x -> Ordering Ord) -instance Validity x => Validity (Attr x) where - validate :: Attr x -> Validation -validate Attr{x +instance Validity x => Validity (Attr x) where + validate :: Attr x -> Validation +validate Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. Validity a => a -> Validation +value} = forall a. Validity a => a -> Validation validate x -value +value setInvalidAttr :: Attr a -> Attr a -setInvalidAttr Attr{a +setInvalidAttr Attr{a value :: a value :: forall x. Attr x -> x -value, Bool +value, Bool invalid :: Bool invalid :: forall x. Attr x -> Bool -invalid} = Attr{a +invalid} = Attr{a value :: a value :: a -value, invalid :: Bool +value, invalid :: Bool invalid = Bool -invalid Bool -> Bool -> Bool +invalid Bool -> Bool -> Bool || forall a. Validity a => a -> Bool isInvalid a -value} +value} -instance Functor Attr where - fmap :: forall a b. (a -> b) -> Attr a -> Attr b -fmap a -> b -f Attr{a +instance Functor Attr where + fmap :: forall a b. (a -> b) -> Attr a -> Attr b +fmap a -> b +f Attr{a value :: a value :: forall x. Attr x -> x -value, Bool +value, Bool invalid :: Bool invalid :: forall x. Attr x -> Bool -invalid} = Attr{value :: b +invalid} = Attr{value :: b value = a -> b -f a -value, Bool +f a +value, Bool invalid :: Bool invalid :: Bool -invalid} +invalid} -instance Applicative Attr where - pure :: forall a. a -> Attr a -pure a -x = Attr{value :: a +instance Applicative Attr where + pure :: forall a. a -> Attr a +pure a +x = Attr{value :: a value = a -x, invalid :: Bool +x, invalid :: Bool invalid = Bool False} - liftA2 :: forall a b c. (a -> b -> c) -> Attr a -> Attr b -> Attr c -liftA2 a -> b -> c -f Attr{value :: forall x. Attr x -> x -value = a -x, invalid :: forall x. Attr x -> Bool -invalid = Bool -x'} Attr{value :: forall x. Attr x -> x -value = b -y, invalid :: forall x. Attr x -> Bool -invalid = Bool -y'} = - let value :: c -value = a -> b -> c -f a -x b -y + liftA2 :: forall a b c. (a -> b -> c) -> Attr a -> Attr b -> Attr c +liftA2 a -> b -> c +f Attr{value :: forall x. Attr x -> x +value = a +x, invalid :: forall x. Attr x -> Bool +invalid = Bool +x'} Attr{value :: forall x. Attr x -> x +value = b +y, invalid :: forall x. Attr x -> Bool +invalid = Bool +y'} = + let value :: c +value = a -> b -> c +f a +x b +y in Attr{c value :: c value :: c -value, invalid :: Bool +value, invalid :: Bool invalid = Bool -x' Bool -> Bool -> Bool +x' Bool -> Bool -> Bool || Bool -y'} +y'} -instance Show x => Show (Attr x) where - show :: Attr x -> String +instance Show x => Show (Attr x) where + show :: Attr x -> String show Attr{invalid :: forall x. Attr x -> Bool invalid = Bool True} = String "NaN" - show Attr{x + show Attr{x value :: x value :: forall x. Attr x -> x -value, invalid :: forall x. Attr x -> Bool +value, invalid :: forall x. Attr x -> Bool invalid = Bool False} = forall a. Show a => a -> String show x -value +value -instance Read x => Read (Attr x) where - readsPrec :: Int -> ReadS (Attr x) -readsPrec Int -d String -r = case forall a. Read a => Int -> ReadS a +instance Read x => Read (Attr x) where + readsPrec :: Int -> ReadS (Attr x) +readsPrec Int +d String +r = case forall a. Read a => Int -> ReadS a readsPrec Int -d String -r of - [(x -x, String -r')] -> [(forall (f :: * -> *) a. Applicative f => a -> f a +d String +r of + [(x +x, String +r')] -> [(forall (f :: * -> *) a. Applicative f => a -> f a pure x -x, String -r')] +x, String +r')] [(x, String)] _ -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "can not read IntX from: " forall a. [a] -> [a] -> [a] ++ String -r +r -instance PrintfArg x => PrintfArg (Attr x) where - formatArg :: Attr x -> FieldFormatter -formatArg Attr{x +instance PrintfArg x => PrintfArg (Attr x) where + formatArg :: Attr x -> FieldFormatter +formatArg Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. PrintfArg a => a -> FieldFormatter +value} = forall a. PrintfArg a => a -> FieldFormatter formatArg x -value +value -instance Default x => Default (Attr x) where - def :: Attr x -def = forall (f :: * -> *) a. Applicative f => a -> f a +instance Default x => Default (Attr x) where + def :: Attr x +def = forall (f :: * -> *) a. Applicative f => a -> f a pure forall a. Default a => a def -instance (Enum x, Validity x) => Enum (Attr x) where - toEnum :: Int -> Attr x +instance (Enum x, Validity x) => Enum (Attr x) where + toEnum :: Int -> Attr x toEnum = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (f :: * -> *) a. Applicative f => a -> f a pure forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Enum a => Int -> a toEnum - fromEnum :: Attr x -> Int -fromEnum Attr{x + fromEnum :: Attr x -> Int +fromEnum Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. Enum a => a -> Int +value} = forall a. Enum a => a -> Int fromEnum x -value +value -instance (Num x, Validity x) => Num (Attr x) where - Attr x -a + :: Attr x -> Attr x -> Attr x -+ Attr x -b = forall {a}. Validity a => Attr a -> Attr a +instance (Num x, Validity x) => Num (Attr x) where + Attr x +a + :: Attr x -> Attr x -> Attr x ++ Attr x +b = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a b c. Applicative f => (a -> b -> c) -> f a -> f b -> f c liftA2 forall a. Num a => a -> a -> a (+) Attr x -a Attr x -b - Attr x -a * :: Attr x -> Attr x -> Attr x -* Attr x -b = forall {a}. Validity a => Attr a -> Attr a +a Attr x +b + Attr x +a * :: Attr x -> Attr x -> Attr x +* Attr x +b = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a b c. Applicative f => (a -> b -> c) -> f a -> f b -> f c liftA2 forall a. Num a => a -> a -> a (*) Attr x -a Attr x -b - abs :: Attr x -> Attr x -abs = forall {a}. Validity a => Attr a -> Attr a +a Attr x +b + abs :: Attr x -> Attr x +abs = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap forall a. Num a => a -> a abs - signum :: Attr x -> Attr x + signum :: Attr x -> Attr x signum = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap forall a. Num a => a -> a signum - fromInteger :: Integer -> Attr x + fromInteger :: Integer -> Attr x fromInteger = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (f :: * -> *) a. Applicative f => a -> f a pure forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Num a => Integer -> a fromInteger - negate :: Attr x -> Attr x + negate :: Attr x -> Attr x negate = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap forall a. Num a => a -> a negate -instance (Real x, Validity x) => Real (Attr x) where - toRational :: Attr x -> Rational -toRational Attr{x +instance (Real x, Validity x) => Real (Attr x) where + toRational :: Attr x -> Rational +toRational Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. Real a => a -> Rational +value} = forall a. Real a => a -> Rational toRational x -value +value -instance Val x => Integral (Attr x) where - toInteger :: Attr x -> Integer -toInteger Attr{x +instance Val x => Integral (Attr x) where + toInteger :: Attr x -> Integer +toInteger Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. Integral a => a -> Integer +value} = forall a. Integral a => a -> Integer toInteger x -value +value Attr{value :: forall x. Attr x -> x -value = x -a} quotRem :: Attr x -> Attr x -> (Attr x, Attr x) +value = x +a} quotRem :: Attr x -> Attr x -> (Attr x, Attr x) `quotRem` Attr{value :: forall x. Attr x -> x -value = x -b} = - let (x -minB, x -maxB) = forall {p} {b}. (Integral p, Num b) => p -> (b, b) +value = x +b} = + let (x +minB, x +maxB) = forall {p} {b}. (Integral p, Num b) => p -> (b, b) minMaxRaw' (forall x. Val x => x -> Int dataWidth x -b forall a. Bits a => a -> Int -> a +b forall a. Bits a => a -> Int -> a `shiftR` Int 1) - (x -a', x -b') = + (x +a', x +b') = if x -b forall a. Eq a => a -> a -> Bool +b forall a. Eq a => a -> a -> Bool == x 0 Bool -> Bool -> Bool || x -b forall a. Ord a => a -> a -> Bool +b forall a. Ord a => a -> a -> Bool < x -minB Bool -> Bool -> Bool +minB Bool -> Bool -> Bool || x -maxB forall a. Ord a => a -> a -> Bool +maxB forall a. Ord a => a -> a -> Bool < x -b +b then (forall x. Val x => Integer -> Integer -> x fromRaw (forall {p} {a}. (Val p, Num a) => p -> a invalidRaw x -b) forall a. Default a => a +b) forall a. Default a => a def, forall x. Val x => Integer -> Integer -> x fromRaw (forall {p} {a}. (Val p, Num a) => p -> a invalidRaw x -b) forall a. Default a => a +b) forall a. Default a => a def) else x -a forall a. Integral a => a -> a -> (a, a) +a forall a. Integral a => a -> a -> (a, a) `quotRem` x -b +b in (forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a. Applicative f => a -> f a pure x -a', forall {a}. Validity a => Attr a -> Attr a +a', forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a. Applicative f => a -> f a pure x -b') +b') -instance (Bits x, Validity x) => Bits (Attr x) where - Attr x -a .&. :: Attr x -> Attr x -> Attr x -.&. Attr x -b = forall {a}. Validity a => Attr a -> Attr a +instance (Bits x, Validity x) => Bits (Attr x) where + Attr x +a .&. :: Attr x -> Attr x -> Attr x +.&. Attr x +b = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a b c. Applicative f => (a -> b -> c) -> f a -> f b -> f c liftA2 forall a. Bits a => a -> a -> a (.&.) Attr x -a Attr x -b - Attr x -a .|. :: Attr x -> Attr x -> Attr x -.|. Attr x -b = forall {a}. Validity a => Attr a -> Attr a +a Attr x +b + Attr x +a .|. :: Attr x -> Attr x -> Attr x +.|. Attr x +b = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a b c. Applicative f => (a -> b -> c) -> f a -> f b -> f c liftA2 forall a. Bits a => a -> a -> a (.|.) Attr x -a Attr x -b - xor :: Attr x -> Attr x -> Attr x -xor Attr x -a Attr x -b = forall {a}. Validity a => Attr a -> Attr a +a Attr x +b + xor :: Attr x -> Attr x -> Attr x +xor Attr x +a Attr x +b = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a b c. Applicative f => (a -> b -> c) -> f a -> f b -> f c liftA2 forall a. Bits a => a -> a -> a xor Attr x -a Attr x -b - complement :: Attr x -> Attr x -complement = forall {a}. Validity a => Attr a -> Attr a +a Attr x +b + complement :: Attr x -> Attr x +complement = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap forall a. Bits a => a -> a complement - shift :: Attr x -> Int -> Attr x -shift Attr{x + shift :: Attr x -> Int -> Attr x +shift Attr{x value :: x value :: forall x. Attr x -> x -value} Int -ix = forall {a}. Validity a => Attr a -> Attr a +value} Int +ix = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a. Applicative f => a -> f a pure forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> Int -> a shift x -value Int -ix - rotate :: Attr x -> Int -> Attr x -rotate Attr{x +value Int +ix + rotate :: Attr x -> Int -> Attr x +rotate Attr{x value :: x value :: forall x. Attr x -> x -value} Int -ix = forall {a}. Validity a => Attr a -> Attr a +value} Int +ix = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a. Applicative f => a -> f a pure forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> Int -> a rotate x -value Int -ix - bitSize :: Attr x -> Int -bitSize Attr{x +value Int +ix + bitSize :: Attr x -> Int +bitSize Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. a -> Maybe a -> a +value} = forall a. a -> Maybe a -> a fromMaybe forall a. HasCallStack => a undefined forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> Maybe Int bitSizeMaybe x -value - bitSizeMaybe :: Attr x -> Maybe Int -bitSizeMaybe Attr{x +value + bitSizeMaybe :: Attr x -> Maybe Int +bitSizeMaybe Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. Bits a => a -> Maybe Int +value} = forall a. Bits a => a -> Maybe Int bitSizeMaybe x -value - isSigned :: Attr x -> Bool -isSigned Attr{x +value + isSigned :: Attr x -> Bool +isSigned Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. Bits a => a -> Bool +value} = forall a. Bits a => a -> Bool isSigned x -value - testBit :: Attr x -> Int -> Bool -testBit Attr{x +value + testBit :: Attr x -> Int -> Bool +testBit Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. Bits a => a -> Int -> Bool +value} = forall a. Bits a => a -> Int -> Bool testBit x -value - bit :: Int -> Attr x -bit Int -ix = forall (f :: * -> *) a. Applicative f => a -> f a +value + bit :: Int -> Attr x +bit Int +ix = forall (f :: * -> *) a. Applicative f => a -> f a pure forall a b. (a -> b) -> a -> b $ forall a. Bits a => Int -> a bit Int -ix - popCount :: Attr x -> Int -popCount Attr{x +ix + popCount :: Attr x -> Int +popCount Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. Bits a => a -> Int +value} = forall a. Bits a => a -> Int popCount x -value +value -instance Val x => Val (Attr x) where - dataWidth :: Attr x -> Int -dataWidth Attr{x +instance Val x => Val (Attr x) where + dataWidth :: Attr x -> Int +dataWidth Attr{x value :: x value :: forall x. Attr x -> x -value} = forall x. Val x => x -> Int +value} = forall x. Val x => x -> Int dataWidth x -value +value - rawData :: Attr x -> Integer -rawData Attr{x + rawData :: Attr x -> Integer +rawData Attr{x value :: x value :: forall x. Attr x -> x -value} = forall x. Val x => x -> Integer +value} = forall x. Val x => x -> Integer rawData x -value - rawAttr :: Attr x -> Integer -rawAttr Attr{invalid :: forall x. Attr x -> Bool +value + rawAttr :: Attr x -> Integer +rawAttr Attr{invalid :: forall x. Attr x -> Bool invalid = Bool True} = Integer 1 @@ -704,136 +704,136 @@ False} = Integer 0 - fromRaw :: Integer -> Integer -> Attr x -fromRaw Integer -x Integer -a = forall {a}. Validity a => Attr a -> Attr a + fromRaw :: Integer -> Integer -> Attr x +fromRaw Integer +x Integer +a = forall {a}. Validity a => Attr a -> Attr a setInvalidAttr forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a. Applicative f => a -> f a pure forall a b. (a -> b) -> a -> b $ forall x. Val x => Integer -> Integer -> x fromRaw Integer -x Integer -a +x Integer +a - dataLiteral :: Attr x -> Text -dataLiteral Attr{x + dataLiteral :: Attr x -> Text +dataLiteral Attr{x value :: x value :: forall x. Attr x -> x -value, invalid :: forall x. Attr x -> Bool +value, invalid :: forall x. Attr x -> Bool invalid = Bool True} = forall {a}. Show a => a -> Text showText (forall x. Val x => x -> Int dataWidth x -value) forall a. Semigroup a => a -> a -> a +value) forall a. Semigroup a => a -> a -> a <> Text "'dx" - dataLiteral Attr{x + dataLiteral Attr{x value :: x value :: forall x. Attr x -> x -value} = forall x. Val x => x -> Text +value} = forall x. Val x => x -> Text dataLiteral x -value - attrLiteral :: Attr x -> Text -attrLiteral x :: Attr x -x@Attr{Bool +value + attrLiteral :: Attr x -> Text +attrLiteral x :: Attr x +x@Attr{Bool invalid :: Bool invalid :: forall x. Attr x -> Bool -invalid} = +invalid} = forall {a}. Show a => a -> Text showText (forall x. Val x => x -> Int attrWidth Attr x -x) forall a. Semigroup a => a -> a -> a +x) forall a. Semigroup a => a -> a -> a <> Text "'b000" forall a. Semigroup a => a -> a -> a <> if Bool -invalid then Text +invalid then Text "1" else Text "0" - verilogHelper :: Attr x -> Text -verilogHelper Attr{x + verilogHelper :: Attr x -> Text +verilogHelper Attr{x value :: x value :: forall x. Attr x -> x -value} = forall x. Val x => x -> Text +value} = forall x. Val x => x -> Text verilogHelper x -value - verilogAssertRE :: Attr x -> Regex -verilogAssertRE Attr{x +value + verilogAssertRE :: Attr x -> Regex +verilogAssertRE Attr{x value :: x value :: forall x. Attr x -> x -value} = forall x. Val x => x -> Regex +value} = forall x. Val x => x -> Regex verilogAssertRE x -value +value -instance FixedPointCompatible x => FixedPointCompatible (Attr x) where - scalingFactorPower :: Attr x -> Integer -scalingFactorPower Attr{x +instance FixedPointCompatible x => FixedPointCompatible (Attr x) where + scalingFactorPower :: Attr x -> Integer +scalingFactorPower Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. FixedPointCompatible a => a -> Integer +value} = forall a. FixedPointCompatible a => a -> Integer scalingFactorPower x -value - fractionalBitSize :: Attr x -> Int -fractionalBitSize Attr{x +value + fractionalBitSize :: Attr x -> Int +fractionalBitSize Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. FixedPointCompatible a => a -> Int +value} = forall a. FixedPointCompatible a => a -> Int fractionalBitSize x -value +value -instance ToJSON x => ToJSON (Attr x) where - toJSON :: Attr x -> Value -toJSON Attr{x +instance ToJSON x => ToJSON (Attr x) where + toJSON :: Attr x -> Value +toJSON Attr{x value :: x value :: forall x. Attr x -> x -value} = forall a. ToJSON a => a -> Value +value} = forall a. ToJSON a => a -> Value toJSON x -value +value -- * Integer instance FixedPointCompatible Int where - scalingFactorPower :: Int -> Integer -scalingFactorPower Int + scalingFactorPower :: Int -> Integer +scalingFactorPower Int _ = Integer 0 - fractionalBitSize :: Int -> Int -fractionalBitSize Int + fractionalBitSize :: Int -> Int +fractionalBitSize Int _ = Int 0 -instance Val Int where - dataWidth :: Int -> Int -dataWidth Int -x = forall b. FiniteBits b => b -> Int +instance Val Int where + dataWidth :: Int -> Int +dataWidth Int +x = forall b. FiniteBits b => b -> Int finiteBitSize Int -x +x - rawData :: Int -> Integer -rawData Int -x = forall a b. (Integral a, Num b) => a -> b + rawData :: Int -> Integer +rawData Int +x = forall a b. (Integral a, Num b) => a -> b fromIntegral Int -x - rawAttr :: Int -> Integer -rawAttr Int +x + rawAttr :: Int -> Integer +rawAttr Int _ = Integer 0 - fromRaw :: Integer -> Integer -> Int -fromRaw Integer -x Integer + fromRaw :: Integer -> Integer -> Int +fromRaw Integer +x Integer _ = forall a. Enum a => a -> Int fromEnum Integer -x +x - dataLiteral :: Int -> Text -dataLiteral = forall {a}. Show a => a -> Text + dataLiteral :: Int -> Text +dataLiteral = forall {a}. Show a => a -> Text showText -- | Integer number with specific bit width. -newtype IntX (w :: Nat) = IntX {forall (w :: Nat). IntX w -> Integer +newtype IntX (w :: Nat) = IntX {forall (w :: Nat). IntX w -> Integer intX :: Integer} - deriving (Int -> IntX w -> ShowS + deriving (Int -> IntX w -> ShowS forall (w :: Nat). Int -> IntX w -> ShowS forall (w :: Nat). [IntX w] -> ShowS forall (w :: Nat). IntX w -> String @@ -845,14 +845,14 @@ $cshow :: forall (w :: Nat). IntX w -> String showsPrec :: Int -> IntX w -> ShowS $cshowsPrec :: forall (w :: Nat). Int -> IntX w -> ShowS -Show, IntX w -> IntX w -> Bool +Show, IntX w -> IntX w -> Bool forall (w :: Nat). IntX w -> IntX w -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: IntX w -> IntX w -> Bool $c/= :: forall (w :: Nat). IntX w -> IntX w -> Bool == :: IntX w -> IntX w -> Bool $c== :: forall (w :: Nat). IntX w -> IntX w -> Bool -Eq, IntX w -> IntX w -> Bool +Eq, IntX w -> IntX w -> Bool IntX w -> IntX w -> Ordering IntX w -> IntX w -> IntX w forall (w :: Nat). Eq (IntX w) @@ -885,293 +885,293 @@ $ccompare :: forall (w :: Nat). IntX w -> IntX w -> Ordering Ord) -instance KnownNat m => Validity (IntX m) where - validate :: IntX m -> Validation -validate x :: IntX m -x@(IntX Integer -raw) = - let (Integer -minRaw, Integer -maxRaw) = forall {b} {p}. (Num b, Val p) => p -> (b, b) +instance KnownNat m => Validity (IntX m) where + validate :: IntX m -> Validation +validate x :: IntX m +x@(IntX Integer +raw) = + let (Integer +minRaw, Integer +maxRaw) = forall {b} {p}. (Num b, Val p) => p -> (b, b) minMaxRaw IntX m -x +x in Bool -> String -> Validation check (Integer -minRaw forall a. Ord a => a -> a -> Bool +minRaw forall a. Ord a => a -> a -> Bool <= Integer -raw Bool -> Bool -> Bool +raw Bool -> Bool -> Bool && Integer -raw forall a. Ord a => a -> a -> Bool +raw forall a. Ord a => a -> a -> Bool <= Integer -maxRaw) String +maxRaw) String "value is not out of range" -instance Read (IntX w) where - readsPrec :: Int -> ReadS (IntX w) -readsPrec Int -d String -r = case forall a. Read a => Int -> ReadS a +instance Read (IntX w) where + readsPrec :: Int -> ReadS (IntX w) +readsPrec Int +d String +r = case forall a. Read a => Int -> ReadS a readsPrec Int -d String -r of - [(Integer -x, String -r')] -> [(forall (w :: Nat). Integer -> IntX w +d String +r of + [(Integer +x, String +r')] -> [(forall (w :: Nat). Integer -> IntX w IntX Integer -x, String -r')] +x, String +r')] [(Integer, String)] _ -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "can not read IntX from: " forall a. [a] -> [a] -> [a] ++ String -r +r -instance PrintfArg (IntX w) where - formatArg :: IntX w -> FieldFormatter -formatArg (IntX Integer -x) = Integer -> FieldFormatter +instance PrintfArg (IntX w) where + formatArg :: IntX w -> FieldFormatter +formatArg (IntX Integer +x) = Integer -> FieldFormatter formatInteger Integer -x +x -instance Default (IntX w) where - def :: IntX w -def = forall (w :: Nat). Integer -> IntX w +instance Default (IntX w) where + def :: IntX w +def = forall (w :: Nat). Integer -> IntX w IntX Integer 0 -instance Enum (IntX w) where - toEnum :: Int -> IntX w -toEnum = forall (w :: Nat). Integer -> IntX w +instance Enum (IntX w) where + toEnum :: Int -> IntX w +toEnum = forall (w :: Nat). Integer -> IntX w IntX forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Integral a => a -> Integer toInteger - fromEnum :: IntX w -> Int -fromEnum (IntX Integer -x) = forall a. Num a => Integer -> a + fromEnum :: IntX w -> Int +fromEnum (IntX Integer +x) = forall a. Num a => Integer -> a fromInteger Integer -x +x -instance Num (IntX w) where - (IntX Integer -a) + :: IntX w -> IntX w -> IntX w -+ (IntX Integer -b) = forall (w :: Nat). Integer -> IntX w +instance Num (IntX w) where + (IntX Integer +a) + :: IntX w -> IntX w -> IntX w ++ (IntX Integer +b) = forall (w :: Nat). Integer -> IntX w IntX (Integer -a forall a. Num a => a -> a -> a +a forall a. Num a => a -> a -> a + Integer -b) - (IntX Integer -a) * :: IntX w -> IntX w -> IntX w -* (IntX Integer -b) = forall (w :: Nat). Integer -> IntX w +b) + (IntX Integer +a) * :: IntX w -> IntX w -> IntX w +* (IntX Integer +b) = forall (w :: Nat). Integer -> IntX w IntX (Integer -a forall a. Num a => a -> a -> a +a forall a. Num a => a -> a -> a * Integer -b) - abs :: IntX w -> IntX w -abs (IntX Integer -a) = forall (w :: Nat). Integer -> IntX w +b) + abs :: IntX w -> IntX w +abs (IntX Integer +a) = forall (w :: Nat). Integer -> IntX w IntX forall a b. (a -> b) -> a -> b $ forall a. Num a => a -> a abs Integer -a - signum :: IntX w -> IntX w -signum (IntX Integer -a) = forall (w :: Nat). Integer -> IntX w +a + signum :: IntX w -> IntX w +signum (IntX Integer +a) = forall (w :: Nat). Integer -> IntX w IntX forall a b. (a -> b) -> a -> b $ forall a. Num a => a -> a signum Integer -a - fromInteger :: Integer -> IntX w -fromInteger Integer -a = forall (w :: Nat). Integer -> IntX w +a + fromInteger :: Integer -> IntX w +fromInteger Integer +a = forall (w :: Nat). Integer -> IntX w IntX forall a b. (a -> b) -> a -> b $ forall a. Num a => Integer -> a fromInteger Integer -a - negate :: IntX w -> IntX w -negate (IntX Integer -a) = forall (w :: Nat). Integer -> IntX w +a + negate :: IntX w -> IntX w +negate (IntX Integer +a) = forall (w :: Nat). Integer -> IntX w IntX forall a b. (a -> b) -> a -> b $ forall a. Num a => a -> a negate Integer -a +a -instance Real (IntX w) where - toRational :: IntX w -> Rational -toRational (IntX Integer -x) = forall a. Real a => a -> Rational +instance Real (IntX w) where + toRational :: IntX w -> Rational +toRational (IntX Integer +x) = forall a. Real a => a -> Rational toRational Integer -x +x -instance Integral (IntX w) where - toInteger :: IntX w -> Integer -toInteger (IntX Integer -x) = forall a. Integral a => a -> Integer +instance Integral (IntX w) where + toInteger :: IntX w -> Integer +toInteger (IntX Integer +x) = forall a. Integral a => a -> Integer toInteger Integer -x - (IntX Integer -a) quotRem :: IntX w -> IntX w -> (IntX w, IntX w) -`quotRem` (IntX Integer -b) = - let (Integer -a', Integer -b') = Integer -a forall a. Integral a => a -> a -> (a, a) +x + (IntX Integer +a) quotRem :: IntX w -> IntX w -> (IntX w, IntX w) +`quotRem` (IntX Integer +b) = + let (Integer +a', Integer +b') = Integer +a forall a. Integral a => a -> a -> (a, a) `quotRem` Integer -b +b in (forall (w :: Nat). Integer -> IntX w IntX Integer -a', forall (w :: Nat). Integer -> IntX w +a', forall (w :: Nat). Integer -> IntX w IntX Integer -b') +b') -instance KnownNat w => Bits (IntX w) where - (IntX Integer -a) .&. :: IntX w -> IntX w -> IntX w -.&. (IntX Integer -b) = forall (w :: Nat). Integer -> IntX w +instance KnownNat w => Bits (IntX w) where + (IntX Integer +a) .&. :: IntX w -> IntX w -> IntX w +.&. (IntX Integer +b) = forall (w :: Nat). Integer -> IntX w IntX (Integer -a forall a. Bits a => a -> a -> a +a forall a. Bits a => a -> a -> a .&. Integer -b) - (IntX Integer -a) .|. :: IntX w -> IntX w -> IntX w -.|. (IntX Integer -b) = forall (w :: Nat). Integer -> IntX w +b) + (IntX Integer +a) .|. :: IntX w -> IntX w -> IntX w +.|. (IntX Integer +b) = forall (w :: Nat). Integer -> IntX w IntX (Integer -a forall a. Bits a => a -> a -> a +a forall a. Bits a => a -> a -> a .|. Integer -b) - (IntX Integer -a) xor :: IntX w -> IntX w -> IntX w -`xor` (IntX Integer -b) = forall (w :: Nat). Integer -> IntX w +b) + (IntX Integer +a) xor :: IntX w -> IntX w -> IntX w +`xor` (IntX Integer +b) = forall (w :: Nat). Integer -> IntX w IntX (Integer -a forall a. Bits a => a -> a -> a +a forall a. Bits a => a -> a -> a `xor` Integer -b) - complement :: IntX w -> IntX w -complement (IntX Integer -a) = forall (w :: Nat). Integer -> IntX w +b) + complement :: IntX w -> IntX w +complement (IntX Integer +a) = forall (w :: Nat). Integer -> IntX w IntX forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> a complement Integer -a - shift :: IntX w -> Int -> IntX w -shift (IntX Integer -a) Int -ix = forall x. Val x => x -> x +a + shift :: IntX w -> Int -> IntX w +shift (IntX Integer +a) Int +ix = forall x. Val x => x -> x crop forall a b. (a -> b) -> a -> b $ forall (w :: Nat). Integer -> IntX w IntX forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> Int -> a shift Integer -a Int -ix - rotate :: IntX w -> Int -> IntX w -rotate (IntX Integer -a) Int -ix = forall x. Val x => x -> x +a Int +ix + rotate :: IntX w -> Int -> IntX w +rotate (IntX Integer +a) Int +ix = forall x. Val x => x -> x crop forall a b. (a -> b) -> a -> b $ forall (w :: Nat). Integer -> IntX w IntX forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> Int -> a rotate Integer -a Int -ix +a Int +ix - bitSize :: IntX w -> Int -bitSize (IntX Integer -a) = forall a. a -> Maybe a -> a + bitSize :: IntX w -> Int +bitSize (IntX Integer +a) = forall a. a -> Maybe a -> a fromMaybe forall a. HasCallStack => a undefined forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> Maybe Int bitSizeMaybe Integer -a - bitSizeMaybe :: IntX w -> Maybe Int -bitSizeMaybe (IntX Integer -a) = forall a. Bits a => a -> Maybe Int +a + bitSizeMaybe :: IntX w -> Maybe Int +bitSizeMaybe (IntX Integer +a) = forall a. Bits a => a -> Maybe Int bitSizeMaybe Integer -a - isSigned :: IntX w -> Bool -isSigned (IntX Integer -a) = forall a. Bits a => a -> Bool +a + isSigned :: IntX w -> Bool +isSigned (IntX Integer +a) = forall a. Bits a => a -> Bool isSigned Integer -a - testBit :: IntX w -> Int -> Bool -testBit (IntX Integer -a) = forall a. Bits a => a -> Int -> Bool +a + testBit :: IntX w -> Int -> Bool +testBit (IntX Integer +a) = forall a. Bits a => a -> Int -> Bool testBit Integer -a - bit :: Int -> IntX w -bit Int -ix = forall (w :: Nat). Integer -> IntX w +a + bit :: Int -> IntX w +bit Int +ix = forall (w :: Nat). Integer -> IntX w IntX forall a b. (a -> b) -> a -> b $ forall a. Bits a => Int -> a bit Int -ix - popCount :: IntX w -> Int -popCount (IntX Integer -a) = forall a. Bits a => a -> Int +ix + popCount :: IntX w -> Int +popCount (IntX Integer +a) = forall a. Bits a => a -> Int popCount Integer -a +a -instance KnownNat w => Val (IntX w) where - dataWidth :: IntX w -> Int -dataWidth IntX w +instance KnownNat w => Val (IntX w) where + dataWidth :: IntX w -> Int +dataWidth IntX w _ = forall a. Num a => Integer -> a fromInteger forall a b. (a -> b) -> a -> b $ forall (n :: Nat) (proxy :: Nat -> *). KnownNat n => proxy n -> Integer natVal (forall {k} (t :: k). Proxy t -Proxy :: Proxy w) +Proxy :: Proxy w) - rawData :: IntX w -> Integer -rawData (IntX Integer -x) = forall a b. (Integral a, Num b) => a -> b + rawData :: IntX w -> Integer +rawData (IntX Integer +x) = forall a b. (Integral a, Num b) => a -> b fromIntegral Integer -x - rawAttr :: IntX w -> Integer -rawAttr IntX w -x = if forall a. Validity a => a -> Bool +x + rawAttr :: IntX w -> Integer +rawAttr IntX w +x = if forall a. Validity a => a -> Bool isInvalid IntX w -x then Integer +x then Integer 1 else Integer 0 - fromRaw :: Integer -> Integer -> IntX w -fromRaw Integer -x Integer + fromRaw :: Integer -> Integer -> IntX w +fromRaw Integer +x Integer _ = forall (w :: Nat). Integer -> IntX w IntX Integer -x +x - dataLiteral :: IntX w -> Text -dataLiteral (IntX Integer -x) = forall {a}. Show a => a -> Text + dataLiteral :: IntX w -> Text +dataLiteral (IntX Integer +x) = forall {a}. Show a => a -> Text showText Integer -x +x -instance FixedPointCompatible (IntX w) where - scalingFactorPower :: IntX w -> Integer -scalingFactorPower IntX w +instance FixedPointCompatible (IntX w) where + scalingFactorPower :: IntX w -> Integer +scalingFactorPower IntX w _ = Integer 0 - fractionalBitSize :: IntX w -> Int -fractionalBitSize IntX w + fractionalBitSize :: IntX w -> Int +fractionalBitSize IntX w _ = Int 0 -instance ToJSON (IntX w) where - toJSON :: IntX w -> Value -toJSON (IntX Integer -x) = forall a. ToJSON a => a -> Value +instance ToJSON (IntX w) where + toJSON :: IntX w -> Value +toJSON (IntX Integer +x) = forall a. ToJSON a => a -> Value toJSON Integer -x +x -- * Fixed point @@ -1184,16 +1184,16 @@ the second item in the dotted pair. For example, fx1.16 describes a number with 1 magnitude bit and 15 fractional bits in a 16 bit word. -} -newtype FX (m :: Nat) (b :: Nat) = FX {forall (m :: Nat) (b :: Nat). FX m b -> Integer +newtype FX (m :: Nat) (b :: Nat) = FX {forall (m :: Nat) (b :: Nat). FX m b -> Integer rawFX :: Integer} - deriving (FX m b -> FX m b -> Bool + deriving (FX m b -> FX m b -> Bool forall (m :: Nat) (b :: Nat). FX m b -> FX m b -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: FX m b -> FX m b -> Bool $c/= :: forall (m :: Nat) (b :: Nat). FX m b -> FX m b -> Bool == :: FX m b -> FX m b -> Bool $c== :: forall (m :: Nat) (b :: Nat). FX m b -> FX m b -> Bool -Eq, FX m b -> FX m b -> Bool +Eq, FX m b -> FX m b -> Bool FX m b -> FX m b -> Ordering FX m b -> FX m b -> FX m b forall (m :: Nat) (b :: Nat). Eq (FX m b) @@ -1232,341 +1232,341 @@ $cfrom :: forall (m :: Nat) (b :: Nat) x. FX m b -> Rep (FX m b) x Generic) -instance (KnownNat b, KnownNat m) => Validity (FX m b) where - validate :: FX m b -> Validation -validate t :: FX m b -t@(FX Integer -raw) = - let (Integer -minRaw, Integer -maxRaw) = forall {b} {p}. (Num b, Val p) => p -> (b, b) +instance (KnownNat b, KnownNat m) => Validity (FX m b) where + validate :: FX m b -> Validation +validate t :: FX m b +t@(FX Integer +raw) = + let (Integer +minRaw, Integer +maxRaw) = forall {b} {p}. (Num b, Val p) => p -> (b, b) minMaxRaw FX m b -t +t in Bool -> String -> Validation check (Integer -minRaw forall a. Ord a => a -> a -> Bool +minRaw forall a. Ord a => a -> a -> Bool <= Integer -raw Bool -> Bool -> Bool +raw Bool -> Bool -> Bool && Integer -raw forall a. Ord a => a -> a -> Bool +raw forall a. Ord a => a -> a -> Bool <= Integer -maxRaw) String +maxRaw) String "value is not out of range" -instance (KnownNat m, KnownNat b) => Read (FX m b) where - readsPrec :: Int -> ReadS (FX m b) -readsPrec Int -d String -r = - let x :: Double -x = case forall a. Read a => Int -> ReadS a +instance (KnownNat m, KnownNat b) => Read (FX m b) where + readsPrec :: Int -> ReadS (FX m b) +readsPrec Int +d String +r = + let x :: Double +x = case forall a. Read a => Int -> ReadS a readsPrec Int -d String -r of - [(Double -x' :: Double, String +d String +r of + [(Double +x' :: Double, String "")] -> Double -x' +x' [(Double, String)] _ -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "can not read FX from: " forall a. [a] -> [a] -> [a] ++ String -r - result :: FX m b -result = forall (m :: Nat) (b :: Nat). Integer -> FX m b +r + result :: FX m b +result = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX forall a b. (a -> b) -> a -> b $ forall a b. (RealFrac a, Integral b) => a -> b round (Double -x forall a. Num a => a -> a -> a +x forall a. Num a => a -> a -> a * forall {a} {a}. (Floating a, FixedPointCompatible a) => a -> a scalingFactor FX m b -result) +result) in [(FX m b -result, String +result, String "")] -instance (KnownNat m, KnownNat b) => PrintfArg (FX m b) where - formatArg :: FX m b -> FieldFormatter -formatArg (FX Integer -x) = Integer -> FieldFormatter +instance (KnownNat m, KnownNat b) => PrintfArg (FX m b) where + formatArg :: FX m b -> FieldFormatter +formatArg (FX Integer +x) = Integer -> FieldFormatter formatInteger Integer -x +x -instance (KnownNat m, KnownNat b) => Show (FX m b) where - show :: FX m b -> String -show t :: FX m b -t@(FX Integer -x) = forall a. RealFloat a => Maybe Int -> a -> ShowS +instance (KnownNat m, KnownNat b) => Show (FX m b) where + show :: FX m b -> String +show t :: FX m b +t@(FX Integer +x) = forall a. RealFloat a => Maybe Int -> a -> ShowS showFFloat (forall a. a -> Maybe a Just Int 6) (forall a b. (Integral a, Num b) => a -> b fromIntegral Integer -x forall a. Fractional a => a -> a -> a +x forall a. Fractional a => a -> a -> a / forall {a} {a}. (Floating a, FixedPointCompatible a) => a -> a scalingFactor FX m b -t :: Double) String +t :: Double) String "" -instance Default (FX m b) where - def :: FX m b -def = forall (m :: Nat) (b :: Nat). Integer -> FX m b +instance Default (FX m b) where + def :: FX m b +def = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX Integer 0 -instance (KnownNat m, KnownNat b) => Enum (FX m b) where - toEnum :: Int -> FX m b -toEnum Int -x = - let res :: FX m b -res = forall (m :: Nat) (b :: Nat). Integer -> FX m b +instance (KnownNat m, KnownNat b) => Enum (FX m b) where + toEnum :: Int -> FX m b +toEnum Int +x = + let res :: FX m b +res = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX forall a b. (a -> b) -> a -> b $ forall a. Integral a => a -> Integer toInteger (Int -x forall a. Num a => a -> a -> a +x forall a. Num a => a -> a -> a * forall a b. (RealFrac a, Integral b) => a -> b truncate (forall {a} {a}. (Floating a, FixedPointCompatible a) => a -> a scalingFactor FX m b -res :: Double)) +res :: Double)) in FX m b -res - fromEnum :: FX m b -> Int -fromEnum t :: FX m b -t@(FX Integer -x) = forall a b. (RealFrac a, Integral b) => a -> b +res + fromEnum :: FX m b -> Int +fromEnum t :: FX m b +t@(FX Integer +x) = forall a b. (RealFrac a, Integral b) => a -> b truncate (forall a b. (Integral a, Num b) => a -> b fromIntegral Integer -x forall a. Fractional a => a -> a -> a +x forall a. Fractional a => a -> a -> a / forall {a} {a}. (Floating a, FixedPointCompatible a) => a -> a scalingFactor FX m b -t :: Double) +t :: Double) -instance (KnownNat m, KnownNat b) => Num (FX m b) where - (FX Integer -a) + :: FX m b -> FX m b -> FX m b -+ (FX Integer -b) = forall (m :: Nat) (b :: Nat). Integer -> FX m b +instance (KnownNat m, KnownNat b) => Num (FX m b) where + (FX Integer +a) + :: FX m b -> FX m b -> FX m b ++ (FX Integer +b) = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX (Integer -a forall a. Num a => a -> a -> a +a forall a. Num a => a -> a -> a + Integer -b) - t :: FX m b -t@(FX Integer -a) * :: FX m b -> FX m b -> FX m b -* (FX Integer -b) = forall (m :: Nat) (b :: Nat). Integer -> FX m b +b) + t :: FX m b +t@(FX Integer +a) * :: FX m b -> FX m b -> FX m b +* (FX Integer +b) = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX ((Integer -a forall a. Num a => a -> a -> a +a forall a. Num a => a -> a -> a * Integer -b) forall a. Bits a => a -> Int -> a +b) forall a. Bits a => a -> Int -> a `shiftR` forall a. Num a => Integer -> a fromInteger (forall a. FixedPointCompatible a => a -> Integer scalingFactorPower FX m b -t)) - abs :: FX m b -> FX m b -abs (FX Integer -a) = forall (m :: Nat) (b :: Nat). Integer -> FX m b +t)) + abs :: FX m b -> FX m b +abs (FX Integer +a) = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX forall a b. (a -> b) -> a -> b $ forall a. Num a => a -> a abs Integer -a - signum :: FX m b -> FX m b -signum (FX Integer -a) = forall a. Num a => Integer -> a +a + signum :: FX m b -> FX m b +signum (FX Integer +a) = forall a. Num a => Integer -> a fromInteger forall a b. (a -> b) -> a -> b $ forall a. Num a => a -> a signum Integer -a - fromInteger :: Integer -> FX m b -fromInteger Integer -x = forall (m :: Nat) (b :: Nat). Integer -> FX m b +a + fromInteger :: Integer -> FX m b +fromInteger Integer +x = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> Int -> a shiftL Integer -x forall a b. (a -> b) -> a -> b +x forall a b. (a -> b) -> a -> b $ forall a. Num a => Integer -> a fromInteger forall a b. (a -> b) -> a -> b $ forall a. FixedPointCompatible a => a -> Integer scalingFactorPower (forall a. Default a => a -def :: FX m b) - negate :: FX m b -> FX m b -negate (FX Integer -a) = forall (m :: Nat) (b :: Nat). Integer -> FX m b +def :: FX m b) + negate :: FX m b -> FX m b +negate (FX Integer +a) = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX forall a b. (a -> b) -> a -> b $ forall a. Num a => a -> a negate Integer -a +a -instance (KnownNat m, KnownNat b) => Integral (FX m b) where - toInteger :: FX m b -> Integer -toInteger FX m b -t = forall a. Integral a => a -> Integer +instance (KnownNat m, KnownNat b) => Integral (FX m b) where + toInteger :: FX m b -> Integer +toInteger FX m b +t = forall a. Integral a => a -> Integer toInteger forall a b. (a -> b) -> a -> b $ forall a. Enum a => a -> Int fromEnum FX m b -t - t :: FX m b -t@(FX Integer -a) quotRem :: FX m b -> FX m b -> (FX m b, FX m b) -`quotRem` (FX Integer -b) = - let (Integer -a', Integer -b') = Integer -a forall a. Integral a => a -> a -> (a, a) +t + t :: FX m b +t@(FX Integer +a) quotRem :: FX m b -> FX m b -> (FX m b, FX m b) +`quotRem` (FX Integer +b) = + let (Integer +a', Integer +b') = Integer +a forall a. Integral a => a -> a -> (a, a) `quotRem` Integer -b - sf :: Double -sf = forall {a} {a}. (Floating a, FixedPointCompatible a) => a -> a +b + sf :: Double +sf = forall {a} {a}. (Floating a, FixedPointCompatible a) => a -> a scalingFactor FX m b -t +t in (forall (m :: Nat) (b :: Nat). Integer -> FX m b FX forall a b. (a -> b) -> a -> b $ forall a b. (RealFrac a, Integral b) => a -> b truncate (forall a b. (Integral a, Num b) => a -> b fromIntegral Integer -a' forall a. Num a => a -> a -> a +a' forall a. Num a => a -> a -> a * Double -sf :: Double), forall (m :: Nat) (b :: Nat). Integer -> FX m b +sf :: Double), forall (m :: Nat) (b :: Nat). Integer -> FX m b FX Integer -b') +b') -instance (KnownNat m, KnownNat b) => Bits (FX m b) where - (FX Integer -a) .&. :: FX m b -> FX m b -> FX m b -.&. (FX Integer -b) = forall (m :: Nat) (b :: Nat). Integer -> FX m b +instance (KnownNat m, KnownNat b) => Bits (FX m b) where + (FX Integer +a) .&. :: FX m b -> FX m b -> FX m b +.&. (FX Integer +b) = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX (Integer -a forall a. Bits a => a -> a -> a +a forall a. Bits a => a -> a -> a .&. Integer -b) - (FX Integer -a) .|. :: FX m b -> FX m b -> FX m b -.|. (FX Integer -b) = forall (m :: Nat) (b :: Nat). Integer -> FX m b +b) + (FX Integer +a) .|. :: FX m b -> FX m b -> FX m b +.|. (FX Integer +b) = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX (Integer -a forall a. Bits a => a -> a -> a +a forall a. Bits a => a -> a -> a .|. Integer -b) - (FX Integer -a) xor :: FX m b -> FX m b -> FX m b -`xor` (FX Integer -b) = forall (m :: Nat) (b :: Nat). Integer -> FX m b +b) + (FX Integer +a) xor :: FX m b -> FX m b -> FX m b +`xor` (FX Integer +b) = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX (Integer -a forall a. Bits a => a -> a -> a +a forall a. Bits a => a -> a -> a `xor` Integer -b) - complement :: FX m b -> FX m b -complement (FX Integer -a) = forall (m :: Nat) (b :: Nat). Integer -> FX m b +b) + complement :: FX m b -> FX m b +complement (FX Integer +a) = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> a complement Integer -a - shift :: FX m b -> Int -> FX m b -shift (FX Integer -a) Int -ix = forall x. Val x => x -> x +a + shift :: FX m b -> Int -> FX m b +shift (FX Integer +a) Int +ix = forall x. Val x => x -> x crop forall a b. (a -> b) -> a -> b $ forall (m :: Nat) (b :: Nat). Integer -> FX m b FX forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> Int -> a shift Integer -a Int -ix - rotate :: FX m b -> Int -> FX m b -rotate (FX Integer -a) Int -ix = forall x. Val x => x -> x +a Int +ix + rotate :: FX m b -> Int -> FX m b +rotate (FX Integer +a) Int +ix = forall x. Val x => x -> x crop forall a b. (a -> b) -> a -> b $ forall (m :: Nat) (b :: Nat). Integer -> FX m b FX forall a b. (a -> b) -> a -> b $ forall a. Bits a => a -> Int -> a rotate Integer -a Int -ix - bitSize :: FX m b -> Int -bitSize = forall x. Val x => x -> Int +a Int +ix + bitSize :: FX m b -> Int +bitSize = forall x. Val x => x -> Int dataWidth - bitSizeMaybe :: FX m b -> Maybe Int -bitSizeMaybe = forall a. a -> Maybe a + bitSizeMaybe :: FX m b -> Maybe Int +bitSizeMaybe = forall a. a -> Maybe a Just forall b c a. (b -> c) -> (a -> b) -> a -> c . forall x. Val x => x -> Int dataWidth - isSigned :: FX m b -> Bool -isSigned (FX Integer -a) = forall a. Bits a => a -> Bool + isSigned :: FX m b -> Bool +isSigned (FX Integer +a) = forall a. Bits a => a -> Bool isSigned Integer -a - testBit :: FX m b -> Int -> Bool -testBit (FX Integer -a) = forall a. Bits a => a -> Int -> Bool +a + testBit :: FX m b -> Int -> Bool +testBit (FX Integer +a) = forall a. Bits a => a -> Int -> Bool testBit Integer -a - bit :: Int -> FX m b -bit Int -ix = forall (m :: Nat) (b :: Nat). Integer -> FX m b +a + bit :: Int -> FX m b +bit Int +ix = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX forall a b. (a -> b) -> a -> b $ forall a. Bits a => Int -> a bit Int -ix - popCount :: FX m b -> Int -popCount (FX Integer -a) = forall a. Bits a => a -> Int +ix + popCount :: FX m b -> Int +popCount (FX Integer +a) = forall a. Bits a => a -> Int popCount Integer -a +a -instance (KnownNat m, KnownNat b) => Val (FX m b) where - dataWidth :: FX m b -> Int -dataWidth FX m b +instance (KnownNat m, KnownNat b) => Val (FX m b) where + dataWidth :: FX m b -> Int +dataWidth FX m b _ = forall a. Num a => Integer -> a fromInteger forall a b. (a -> b) -> a -> b $ forall (n :: Nat) (proxy :: Nat -> *). KnownNat n => proxy n -> Integer natVal (forall {k} (t :: k). Proxy t -Proxy :: Proxy b) +Proxy :: Proxy b) - rawData :: FX m b -> Integer -rawData (FX Integer -x) = Integer -x - rawAttr :: FX m b -> Integer -rawAttr FX m b -x = if forall a. Validity a => a -> Bool + rawData :: FX m b -> Integer +rawData (FX Integer +x) = Integer +x + rawAttr :: FX m b -> Integer +rawAttr FX m b +x = if forall a. Validity a => a -> Bool isInvalid FX m b -x then Integer +x then Integer 1 else Integer 0 - fromRaw :: Integer -> Integer -> FX m b -fromRaw Integer -x Integer + fromRaw :: Integer -> Integer -> FX m b +fromRaw Integer +x Integer _ = forall (m :: Nat) (b :: Nat). Integer -> FX m b FX Integer -x +x - dataLiteral :: FX m b -> Text -dataLiteral (FX Integer -x) = forall {a}. Show a => a -> Text + dataLiteral :: FX m b -> Text +dataLiteral (FX Integer +x) = forall {a}. Show a => a -> Text showText Integer -x - attrLiteral :: FX m b -> Text -attrLiteral FX m b -x = forall {a}. Show a => a -> Text +x + attrLiteral :: FX m b -> Text +attrLiteral FX m b +x = forall {a}. Show a => a -> Text showText (forall x. Val x => x -> Int attrWidth FX m b -x) forall a. Semigroup a => a -> a -> a +x) forall a. Semigroup a => a -> a -> a <> Text "'d000" forall a. Semigroup a => a -> a -> a <> forall {a}. Show a => a -> Text showText (forall x. Val x => x -> Integer rawAttr FX m b -x) +x) - verilogHelper :: FX m b -> Text -verilogHelper FX m b -x = + verilogHelper :: FX m b -> Text +verilogHelper FX m b +x = [__i| task traceWithAttr; input integer cycle; @@ -1605,8 +1605,8 @@ endfunction // fxtor |] - verilogAssertRE :: FX m b -> Regex -verilogAssertRE FX m b + verilogAssertRE :: FX m b -> Regex +verilogAssertRE FX m b _ = String -> Regex mkRegex forall a b. (a -> b) -> a -> b @@ -1623,59 +1623,59 @@ "var: ([^ \t\n]+)" ] -instance (KnownNat m, KnownNat b) => FixedPointCompatible (FX m b) where - fractionalBitSize :: FX m b -> Int -fractionalBitSize FX m b -x = forall x. Val x => x -> Int +instance (KnownNat m, KnownNat b) => FixedPointCompatible (FX m b) where + fractionalBitSize :: FX m b -> Int +fractionalBitSize FX m b +x = forall x. Val x => x -> Int dataWidth FX m b -x forall a. Num a => a -> a -> a +x forall a. Num a => a -> a -> a - forall a. Num a => Integer -> a fromInteger (forall (n :: Nat) (proxy :: Nat -> *). KnownNat n => proxy n -> Integer natVal (forall {k} (t :: k). Proxy t -Proxy :: Proxy m)) - scalingFactorPower :: FX m b -> Integer -scalingFactorPower FX m b +Proxy :: Proxy m)) + scalingFactorPower :: FX m b -> Integer +scalingFactorPower FX m b _ = - let m :: Integer -m = forall (n :: Nat) (proxy :: Nat -> *). + let m :: Integer +m = forall (n :: Nat) (proxy :: Nat -> *). KnownNat n => proxy n -> Integer natVal (forall {k} (t :: k). Proxy t -Proxy :: Proxy m) - b :: Integer -b = forall (n :: Nat) (proxy :: Nat -> *). +Proxy :: Proxy m) + b :: Integer +b = forall (n :: Nat) (proxy :: Nat -> *). KnownNat n => proxy n -> Integer natVal (forall {k} (t :: k). Proxy t -Proxy :: Proxy b) +Proxy :: Proxy b) in Integer -b forall a. Num a => a -> a -> a +b forall a. Num a => a -> a -> a - Integer -m +m -instance (KnownNat m, KnownNat b) => Real (FX m b) where - toRational :: FX m b -> Rational -toRational x :: FX m b -x@FX{Integer +instance (KnownNat m, KnownNat b) => Real (FX m b) where + toRational :: FX m b -> Rational +toRational x :: FX m b +x@FX{Integer rawFX :: Integer rawFX :: forall (m :: Nat) (b :: Nat). FX m b -> Integer -rawFX} = Integer -rawFX forall a. Integral a => a -> a -> Ratio a +rawFX} = Integer +rawFX forall a. Integral a => a -> a -> Ratio a % Integer 2 forall a b. (Num a, Integral b) => a -> b -> a ^ forall a. FixedPointCompatible a => a -> Integer scalingFactorPower FX m b -x +x -instance (KnownNat m, KnownNat b) => ToJSON (FX m b) where - toJSON :: FX m b -> Value -toJSON x :: FX m b -x@FX{} = forall a. ToJSON a => a -> Value +instance (KnownNat m, KnownNat b) => ToJSON (FX m b) where + toJSON :: FX m b -> Value +toJSON x :: FX m b +x@FX{} = forall a. ToJSON a => a -> Value toJSON (forall a. Read a => String -> a read forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> String show FX m b -x :: Double) +x :: Double) \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Intermediate.Variable.html b/haddock/nitta/src/NITTA.Intermediate.Variable.html index 490210ad3..bd5b38080 100644 --- a/haddock/nitta/src/NITTA.Intermediate.Variable.html +++ b/haddock/nitta/src/NITTA.Intermediate.Variable.html @@ -27,84 +27,84 @@ import Data.Typeable -- | Variable identifier. Used for simplify type description. -type Var v = (Typeable v, Ord v, IsString v, ToString v, Suffix v, Hashable v) +type Var v = (Typeable v, Ord v, IsString v, ToString v, Suffix v, Hashable v) -- | Type class of something, which is related to variables. -class Variables a v | a -> v where +class Variables a v | a -> v where -- | Get all related variables. - variables :: a -> S.Set v + variables :: a -> S.Set v -- | The type class for variable identifier modifications. -class Suffix v where +class Suffix v where -- | Make a buffered version of the variable. For example: @"v" -> "v@buf"@ - bufferSuffix :: v -> v + bufferSuffix :: v -> v -- | Buffer sequence length of a variable (@"v" -> 0; "v@buf" -> 1; "b@buf@buf" -> 2@) - countSuffix :: v -> Int + countSuffix :: v -> Int -- FIXME: unsafe, because can create duplicate variable. Solution options: -- -- - unsafeIO and counter; -- - restriction on user's variable names + checking collision for each variable generation. instance Suffix String where - bufferSuffix :: String -> String -bufferSuffix String -s = String -s forall a. [a] -> [a] -> [a] + bufferSuffix :: String -> String +bufferSuffix String +s = String +s forall a. [a] -> [a] -> [a] ++ String "@buf" - countSuffix :: String -> Int -countSuffix [] = Int + countSuffix :: String -> Int +countSuffix [] = Int 0 - countSuffix String -s - | Just String -s' <- forall a. Eq a => [a] -> [a] -> Maybe [a] + countSuffix String +s + | Just String +s' <- forall a. Eq a => [a] -> [a] -> Maybe [a] stripPrefix String "@buf" String -s = Int +s = Int 1 forall a. Num a => a -> a -> a + forall v. Suffix v => v -> Int countSuffix String -s' +s' | Bool otherwise = forall v. Suffix v => v -> Int countSuffix forall a b. (a -> b) -> a -> b $ forall a. Int -> [a] -> [a] drop Int 1 String -s +s instance Suffix T.Text where - bufferSuffix :: Text -> Text -bufferSuffix Text -s = Text -s forall a. Semigroup a => a -> a -> a + bufferSuffix :: Text -> Text +bufferSuffix Text +s = Text +s forall a. Semigroup a => a -> a -> a <> Text "@buf" - countSuffix :: Text -> Int -countSuffix Text -s | Text -s forall a. Eq a => a -> a -> Bool + countSuffix :: Text -> Int +countSuffix Text +s | Text +s forall a. Eq a => a -> a -> Bool == Text T.empty = Int 0 - countSuffix Text -s - | Just Text -s' <- Text -> Text -> Maybe Text + countSuffix Text +s + | Just Text +s' <- Text -> Text -> Maybe Text T.stripPrefix Text "@buf" Text -s = Int +s = Int 1 forall a. Num a => a -> a -> a + forall v. Suffix v => v -> Int countSuffix Text -s' +s' | Bool otherwise = forall v. Suffix v => v -> Int countSuffix forall a b. (a -> b) -> a -> b $ Int -> Text -> Text T.drop Int 1 Text -s +s \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Microarchitecture.Config.html b/haddock/nitta/src/NITTA.Model.Microarchitecture.Config.html index e2f07c773..90b2bd9f9 100644 --- a/haddock/nitta/src/NITTA.Model.Microarchitecture.Config.html +++ b/haddock/nitta/src/NITTA.Model.Microarchitecture.Config.html @@ -32,7 +32,7 @@ import NITTA.Model.ProcessorUnits qualified as PU import NITTA.Utils (getFromToml) -data PUConf +data PUConf = Accum { PUConf -> Text name :: T.Text @@ -81,7 +81,7 @@ (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep PUConf x -> PUConf $cfrom :: forall x. PUConf -> Rep PUConf x -Generic, Int -> PUConf -> ShowS +Generic, Int -> PUConf -> ShowS [PUConf] -> ShowS PUConf -> String forall a. @@ -106,23 +106,23 @@ "type"} } -instance ToJSON PUConf where - toJSON :: PUConf -> Value -toJSON = forall a. +instance ToJSON PUConf where + toJSON :: PUConf -> Value +toJSON = forall a. (Generic a, GToJSON' Value Zero (Rep a)) => Options -> a -> Value genericToJSON Options puConfJsonOptions -instance FromJSON PUConf where - parseJSON :: Value -> Parser PUConf -parseJSON = forall a. +instance FromJSON PUConf where + parseJSON :: Value -> Parser PUConf +parseJSON = forall a. (Generic a, GFromJSON Zero (Rep a)) => Options -> Value -> Parser a genericParseJSON Options puConfJsonOptions -data NetworkConf = NetworkConf +data NetworkConf = NetworkConf { NetworkConf -> Text name :: T.Text , NetworkConf -> [PUConf] @@ -136,7 +136,7 @@ (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep NetworkConf x -> NetworkConf $cfrom :: forall x. NetworkConf -> Rep NetworkConf x -Generic, Int -> NetworkConf -> ShowS +Generic, Int -> NetworkConf -> ShowS [NetworkConf] -> ShowS NetworkConf -> String forall a. @@ -149,10 +149,10 @@ $cshowsPrec :: Int -> NetworkConf -> ShowS Show) -instance FromJSON NetworkConf -instance ToJSON NetworkConf +instance FromJSON NetworkConf +instance ToJSON NetworkConf -newtype MicroarchitectureConf = MicroarchitectureConf +newtype MicroarchitectureConf = MicroarchitectureConf { MicroarchitectureConf -> [NetworkConf] networks :: [NetworkConf] } @@ -162,7 +162,7 @@ (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep MicroarchitectureConf x -> MicroarchitectureConf $cfrom :: forall x. MicroarchitectureConf -> Rep MicroarchitectureConf x -Generic, Int -> MicroarchitectureConf -> ShowS +Generic, Int -> MicroarchitectureConf -> ShowS [MicroarchitectureConf] -> ShowS MicroarchitectureConf -> String forall a. @@ -175,21 +175,21 @@ $cshowsPrec :: Int -> MicroarchitectureConf -> ShowS Show) -instance FromJSON MicroarchitectureConf -instance ToJSON MicroarchitectureConf +instance FromJSON MicroarchitectureConf +instance ToJSON MicroarchitectureConf -mkMicroarchitecture :: (Val v, Var x, ToJSON a, ToJSON x) => IOSynchronization -> HashMap T.Text a -> BusNetwork T.Text x v Int +mkMicroarchitecture :: (Val v, Var x, ToJSON a, ToJSON x) => IOSynchronization -> HashMap T.Text a -> BusNetwork T.Text x v Int mkMicroarchitecture :: forall v x a. (Val v, Var x, ToJSON a, ToJSON x) => IOSynchronization -> HashMap Text a -> BusNetwork Text x v Int -mkMicroarchitecture IOSynchronization -ioSync HashMap Text a -toml = - let addPU :: Bool -> tag -> pu -> IOPorts pu -> m () -addPU Bool -proto +mkMicroarchitecture IOSynchronization +ioSync HashMap Text a +toml = + let addPU :: Bool -> tag -> pu -> IOPorts pu -> m () +addPU Bool +proto | Bool -proto = forall tag v x t (m :: * -> *) pu. +proto = forall tag v x t (m :: * -> *) pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => tag -> pu -> IOPorts pu -> m () @@ -200,14 +200,14 @@ UnitTag tag) => tag -> pu -> IOPorts pu -> m () addCustom - build :: NetworkConf -> m () -build NetworkConf{[PUConf] + build :: NetworkConf -> m () +build NetworkConf{[PUConf] pus :: [PUConf] $sel:pus:NetworkConf :: NetworkConf -> [PUConf] -pus, [PUConf] +pus, [PUConf] protos :: [PUConf] $sel:protos:NetworkConf :: NetworkConf -> [PUConf] -protos} = do +protos} = do forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () @@ -215,9 +215,9 @@ (IsString v, ToString v, Suffix v, Hashable v, Typeable v, Val x, MonadState (BuilderSt Text v x Int) m, Ord v, ToJSON v) => Bool -> PUConf -> m () -configure Bool +configure Bool False) [PUConf] -pus +pus forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () @@ -225,16 +225,16 @@ (IsString v, ToString v, Suffix v, Hashable v, Typeable v, Val x, MonadState (BuilderSt Text v x Int) m, Ord v, ToJSON v) => Bool -> PUConf -> m () -configure Bool +configure Bool True) [PUConf] -protos +protos where - configure :: Bool -> PUConf -> m () -configure Bool -proto Accum{Text + configure :: Bool -> PUConf -> m () +configure Bool +proto Accum{Text name :: Text $sel:name:Accum :: PUConf -> Text -name} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. +name} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. (MonadState (BuilderSt tag v x t) m, UnitTag tag, Controllable pu, TargetSystemComponent pu, UnambiguouslyDecode pu, IOConnected pu, Connected pu, Locks pu v, IOTestBench pu v x, @@ -243,22 +243,22 @@ ByTime pu t, EndpointProblem pu v t, ProcessorUnit pu v x t, Show (Instruction pu), Typeable pu) => Bool -> tag -> pu -> IOPorts pu -> m () -addPU Bool -proto Text -name forall a. Default a => a +addPU Bool +proto Text +name forall a. Default a => a def forall v x t. IOPorts (Accum v x t) PU.AccumIO - configure Bool -proto Divider{Text + configure Bool +proto Divider{Text name :: Text $sel:name:Accum :: PUConf -> Text -name, Int +name, Int pipeline :: Int $sel:pipeline:Accum :: PUConf -> Int -pipeline, Bool +pipeline, Bool mock :: Bool $sel:mock:Accum :: PUConf -> Bool -mock} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. +mock} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. (MonadState (BuilderSt tag v x t) m, UnitTag tag, Controllable pu, TargetSystemComponent pu, UnambiguouslyDecode pu, IOConnected pu, Connected pu, Locks pu v, IOTestBench pu v x, @@ -267,21 +267,21 @@ ByTime pu t, EndpointProblem pu v t, ProcessorUnit pu v x t, Show (Instruction pu), Typeable pu) => Bool -> tag -> pu -> IOPorts pu -> m () -addPU Bool -proto Text -name (forall {t} {v} {x}. Default t => t -> Bool -> Divider v x t +addPU Bool +proto Text +name (forall {t} {v} {x}. Default t => t -> Bool -> Divider v x t PU.divider Int -pipeline Bool -mock) forall v x t. IOPorts (Divider v x t) +pipeline Bool +mock) forall v x t. IOPorts (Divider v x t) PU.DividerIO - configure Bool -proto Multiplier{Text + configure Bool +proto Multiplier{Text name :: Text $sel:name:Accum :: PUConf -> Text -name, Bool +name, Bool mock :: Bool $sel:mock:Accum :: PUConf -> Bool -mock} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. +mock} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. (MonadState (BuilderSt tag v x t) m, UnitTag tag, Controllable pu, TargetSystemComponent pu, UnambiguouslyDecode pu, IOConnected pu, Connected pu, Locks pu v, IOTestBench pu v x, @@ -290,20 +290,20 @@ ByTime pu t, EndpointProblem pu v t, ProcessorUnit pu v x t, Show (Instruction pu), Typeable pu) => Bool -> tag -> pu -> IOPorts pu -> m () -addPU Bool -proto Text -name (forall {t} {v} {x}. Default t => Bool -> Multiplier v x t +addPU Bool +proto Text +name (forall {t} {v} {x}. Default t => Bool -> Multiplier v x t PU.multiplier Bool -mock) forall v x t. IOPorts (Multiplier v x t) +mock) forall v x t. IOPorts (Multiplier v x t) PU.MultiplierIO - configure Bool -proto Fram{Text + configure Bool +proto Fram{Text name :: Text $sel:name:Accum :: PUConf -> Text -name, Int +name, Int size :: Int $sel:size:Accum :: PUConf -> Int -size} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. +size} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. (MonadState (BuilderSt tag v x t) m, UnitTag tag, Controllable pu, TargetSystemComponent pu, UnambiguouslyDecode pu, IOConnected pu, Connected pu, Locks pu v, IOTestBench pu v x, @@ -312,20 +312,20 @@ ByTime pu t, EndpointProblem pu v t, ProcessorUnit pu v x t, Show (Instruction pu), Typeable pu) => Bool -> tag -> pu -> IOPorts pu -> m () -addPU Bool -proto Text -name (forall {x} {t} {v}. (Default x, Default t) => Int -> Fram v x t +addPU Bool +proto Text +name (forall {x} {t} {v}. (Default x, Default t) => Int -> Fram v x t PU.framWithSize Int -size) forall v x t. IOPorts (Fram v x t) +size) forall v x t. IOPorts (Fram v x t) PU.FramIO - configure Bool -proto Shift{Text + configure Bool +proto Shift{Text name :: Text $sel:name:Accum :: PUConf -> Text -name, Maybe Bool +name, Maybe Bool sRight :: Maybe Bool $sel:sRight:Accum :: PUConf -> Maybe Bool -sRight} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. +sRight} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. (MonadState (BuilderSt tag v x t) m, UnitTag tag, Controllable pu, TargetSystemComponent pu, UnambiguouslyDecode pu, IOConnected pu, Connected pu, Locks pu v, IOTestBench pu v x, @@ -334,42 +334,42 @@ ByTime pu t, EndpointProblem pu v t, ProcessorUnit pu v x t, Show (Instruction pu), Typeable pu) => Bool -> tag -> pu -> IOPorts pu -> m () -addPU Bool -proto Text -name (forall {t} {v} {x}. Default t => Bool -> Shift v x t +addPU Bool +proto Text +name (forall {t} {v} {x}. Default t => Bool -> Shift v x t PU.shift forall a b. (a -> b) -> a -> b $ forall a. a -> Maybe a Just Bool False forall a. Eq a => a -> a -> Bool /= Maybe Bool -sRight) forall v x t. IOPorts (Shift v x t) +sRight) forall v x t. IOPorts (Shift v x t) PU.ShiftIO - configure Bool -proto SPI{Text + configure Bool +proto SPI{Text name :: Text $sel:name:Accum :: PUConf -> Text -name, Text +name, Text mosi :: Text $sel:mosi:Accum :: PUConf -> Text -mosi, Text +mosi, Text miso :: Text $sel:miso:Accum :: PUConf -> Text -miso, Text +miso, Text sclk :: Text $sel:sclk:Accum :: PUConf -> Text -sclk, Text +sclk, Text cs :: Text $sel:cs:Accum :: PUConf -> Text -cs, Bool +cs, Bool isSlave :: Bool $sel:isSlave:Accum :: PUConf -> Bool -isSlave, Int +isSlave, Int bounceFilter :: Int $sel:bounceFilter:Accum :: PUConf -> Int -bounceFilter, Maybe Int +bounceFilter, Maybe Int bufferSize :: Maybe Int $sel:bufferSize:Accum :: PUConf -> Maybe Int -bufferSize} = +bufferSize} = forall {tag} {v} {x} {t} {m :: * -> *} {pu}. (MonadState (BuilderSt tag v x t) m, UnitTag tag, Controllable pu, TargetSystemComponent pu, UnambiguouslyDecode pu, IOConnected pu, @@ -379,87 +379,87 @@ ByTime pu t, EndpointProblem pu v t, ProcessorUnit pu v x t, Show (Instruction pu), Typeable pu) => Bool -> tag -> pu -> IOPorts pu -> m () -addPU Bool -proto Text -name (forall t v x. Time t => Int -> Maybe Int -> SPI v x t +addPU Bool +proto Text +name (forall t v x. Time t => Int -> Maybe Int -> SPI v x t PU.anySPI Int -bounceFilter Maybe Int -bufferSize) forall a b. (a -> b) -> a -> b +bounceFilter Maybe Int +bufferSize) forall a b. (a -> b) -> a -> b $ if Bool -isSlave +isSlave then PU.SPISlave { $sel:slave_mosi:SPIMaster :: InputPortTag slave_mosi = Text -> InputPortTag PU.InputPortTag Text -mosi +mosi , $sel:slave_miso:SPIMaster :: OutputPortTag slave_miso = Text -> OutputPortTag PU.OutputPortTag Text -miso +miso , $sel:slave_sclk:SPIMaster :: InputPortTag slave_sclk = Text -> InputPortTag PU.InputPortTag Text -sclk +sclk , $sel:slave_cs:SPIMaster :: InputPortTag slave_cs = Text -> InputPortTag PU.InputPortTag Text -cs +cs } else PU.SPIMaster { $sel:master_mosi:SPIMaster :: OutputPortTag master_mosi = Text -> OutputPortTag PU.OutputPortTag Text -mosi +mosi , $sel:master_miso:SPIMaster :: InputPortTag master_miso = Text -> InputPortTag PU.InputPortTag Text -miso +miso , $sel:master_sclk:SPIMaster :: OutputPortTag master_sclk = Text -> OutputPortTag PU.OutputPortTag Text -sclk +sclk , $sel:master_cs:SPIMaster :: OutputPortTag master_cs = Text -> OutputPortTag PU.OutputPortTag Text -cs +cs } - nets :: [NetworkConf] -nets = MicroarchitectureConf -> [NetworkConf] + nets :: [NetworkConf] +nets = MicroarchitectureConf -> [NetworkConf] networks (forall {a1} {a2}. (FromJSON a1, ToJSON a2) => HashMap Text a2 -> a1 getFromToml HashMap Text a -toml :: MicroarchitectureConf) - mkNetwork :: NetworkConf -> BusNetwork Text v x Int -mkNetwork net :: NetworkConf -net@NetworkConf{Text +toml :: MicroarchitectureConf) + mkNetwork :: NetworkConf -> BusNetwork Text v x Int +mkNetwork net :: NetworkConf +net@NetworkConf{Text name :: Text $sel:name:NetworkConf :: NetworkConf -> Text -name} = forall k v x t a. +name} = forall k v x t a. BusNetwork k v x t -> State (BuilderSt k v x t) a -> BusNetwork k v x t modifyNetwork (forall {t} {tag} {v} {x}. Default t => tag -> IOSynchronization -> BusNetwork tag v x t busNetwork Text -name IOSynchronization -ioSync) (forall {m :: * -> *} {v} {x}. +name IOSynchronization +ioSync) (forall {m :: * -> *} {v} {x}. (IsString v, ToString v, Suffix v, Hashable v, Val x, MonadState (BuilderSt Text v x Int) m, Typeable v, Ord v, ToJSON v) => NetworkConf -> m () -build NetworkConf -net) +build NetworkConf +net) in case [NetworkConf] -nets of - [NetworkConf -n] -> forall {x} {v}. +nets of + [NetworkConf +n] -> forall {x} {v}. (Val x, Hashable v, Suffix v, ToString v, IsString v, Typeable v, Ord v, ToJSON v) => NetworkConf -> BusNetwork Text v x Int -mkNetwork NetworkConf -n +mkNetwork NetworkConf +n [NetworkConf] _ -> forall a. HasCallStack => String -> a error String diff --git a/haddock/nitta/src/NITTA.Model.Microarchitecture.Types.html b/haddock/nitta/src/NITTA.Model.Microarchitecture.Types.html index 16340aaca..6193e5bc1 100644 --- a/haddock/nitta/src/NITTA.Model.Microarchitecture.Types.html +++ b/haddock/nitta/src/NITTA.Model.Microarchitecture.Types.html @@ -25,9 +25,9 @@ import NITTA.Model.Networks.Types import NITTA.Utils.Base -data MicroarchitectureDesc tag = MicroarchitectureDesc +data MicroarchitectureDesc tag = MicroarchitectureDesc { forall tag. MicroarchitectureDesc tag -> [NetworkDesc tag] -networks :: [NetworkDesc tag] +networks :: [NetworkDesc tag] , forall tag. MicroarchitectureDesc tag -> IOSynchronization ioSyncMode :: IOSynchronization } @@ -43,15 +43,15 @@ MicroarchitectureDesc tag -> Rep (MicroarchitectureDesc tag) x Generic) -instance ToJSON tag => ToJSON (MicroarchitectureDesc tag) +instance ToJSON tag => ToJSON (MicroarchitectureDesc tag) -data NetworkDesc tag = NetworkDesc +data NetworkDesc tag = NetworkDesc { forall tag. NetworkDesc tag -> tag -networkTag :: tag +networkTag :: tag , forall tag. NetworkDesc tag -> Text valueType :: T.Text , forall tag. NetworkDesc tag -> [UnitDesc tag] -units :: [UnitDesc tag] +units :: [UnitDesc tag] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -61,11 +61,11 @@ $cfrom :: forall tag x. NetworkDesc tag -> Rep (NetworkDesc tag) x Generic) -instance ToJSON tag => ToJSON (NetworkDesc tag) +instance ToJSON tag => ToJSON (NetworkDesc tag) -data UnitDesc tag = UnitDesc +data UnitDesc tag = UnitDesc { forall tag. UnitDesc tag -> tag -unitTag :: tag +unitTag :: tag , forall tag. UnitDesc tag -> Text unitType :: T.Text } @@ -77,19 +77,19 @@ $cfrom :: forall tag x. UnitDesc tag -> Rep (UnitDesc tag) x Generic) -instance ToJSON tag => ToJSON (UnitDesc tag) +instance ToJSON tag => ToJSON (UnitDesc tag) -microarchitectureDesc :: forall tag v x t. Typeable x => BusNetwork tag v x t -> MicroarchitectureDesc tag +microarchitectureDesc :: forall tag v x t. Typeable x => BusNetwork tag v x t -> MicroarchitectureDesc tag microarchitectureDesc :: forall tag v x t. Typeable x => BusNetwork tag v x t -> MicroarchitectureDesc tag -microarchitectureDesc BusNetwork{tag +microarchitectureDesc BusNetwork{tag bnName :: forall tag v x t. BusNetwork tag v x t -> tag bnName :: tag -bnName, Map tag (PU v x t) +bnName, Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) bnPus :: Map tag (PU v x t) -bnPus, IOSynchronization +bnPus, IOSynchronization ioSync :: forall tag v x t. BusNetwork tag v x t -> IOSynchronization ioSync :: IOSynchronization ioSync} = @@ -99,7 +99,7 @@ [ NetworkDesc { $sel:networkTag:NetworkDesc :: tag networkTag = tag -bnName +bnName , $sel:valueType:NetworkDesc :: Text valueType = forall {a}. Show a => a -> Text showText forall a b. (a -> b) -> a -> b @@ -107,20 +107,20 @@ Typeable a => proxy a -> TypeRep typeRep (forall {k} (t :: k). Proxy t -Proxy :: Proxy x) +Proxy :: Proxy x) , $sel:units:NetworkDesc :: [UnitDesc tag] units = forall a b. (a -> b) -> [a] -> [b] map - ( \(tag -tag, PU{pu + ( \(tag +tag, PU{pu unit :: () unit :: pu unit}) -> UnitDesc { $sel:unitTag:UnitDesc :: tag unitTag = tag -tag +tag , $sel:unitType:UnitDesc :: Text unitType = String -> Text T.pack forall a b. (a -> b) -> a -> b @@ -132,17 +132,17 @@ show forall a b. (a -> b) -> a -> b $ forall a. Typeable a => a -> TypeRep typeOf pu -unit +unit } ) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus +bnPus } ] , $sel:ioSyncMode:MicroarchitectureDesc :: IOSynchronization ioSyncMode = IOSynchronization -ioSync +ioSync } \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Networks.Bus.html b/haddock/nitta/src/NITTA.Model.Networks.Bus.html index 5d28b0b88..5ab9937eb 100644 --- a/haddock/nitta/src/NITTA.Model.Networks.Bus.html +++ b/haddock/nitta/src/NITTA.Model.Networks.Bus.html @@ -60,21 +60,21 @@ import Prettyprinter import Text.Regex -data BusNetwork tag v x t = BusNetwork +data BusNetwork tag v x t = BusNetwork { forall tag v x t. BusNetwork tag v x t -> tag -bnName :: tag +bnName :: tag , forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains :: [F v x] +bnRemains :: [F v x] -- ^ List of functions bound to network, but not bound to any process unit. , forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] -bnBound :: M.Map tag [F v x] +bnBound :: M.Map tag [F v x] -- ^ Map process unit name to list of bound functions. , forall tag v x t. BusNetwork tag v x t -> Process t (StepInfo v x t) -bnProcess :: Process t (StepInfo v x t) +bnProcess :: Process t (StepInfo v x t) -- ^ Network process (bindings and transport instructions) , forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus :: M.Map tag (PU v x t) +bnPus :: M.Map tag (PU v x t) -- ^ Map of process units. , forall tag v x t. BusNetwork tag v x t -> Int bnSignalBusWidth :: Int @@ -83,21 +83,21 @@ ioSync :: IOSynchronization , forall tag v x t. BusNetwork tag v x t -> UnitEnv (BusNetwork tag v x t) -bnEnv :: UnitEnv (BusNetwork tag v x t) +bnEnv :: UnitEnv (BusNetwork tag v x t) , forall tag v x t. BusNetwork tag v x t -> Map tag (PUPrototype tag v x t) -bnPUPrototypes :: M.Map tag (PUPrototype tag v x t) +bnPUPrototypes :: M.Map tag (PUPrototype tag v x t) -- ^ Set of the PUs that could be added to the network during synthesis process } busNetwork :: tag -> IOSynchronization -> BusNetwork tag v x t -busNetwork tag -name IOSynchronization -iosync = +busNetwork tag +name IOSynchronization +iosync = BusNetwork { bnName :: tag bnName = tag -name +name , bnRemains :: [F v x] bnRemains = [] , bnBound :: Map tag [F v x] @@ -114,7 +114,7 @@ 0 , ioSync :: IOSynchronization ioSync = IOSynchronization -iosync +iosync , bnEnv :: UnitEnv (BusNetwork tag v x t) bnEnv = forall a. Default a => a def @@ -123,83 +123,83 @@ def } -instance (Default t, IsString tag) => Default (BusNetwork tag v x t) where - def :: BusNetwork tag v x t -def = forall {t} {tag} {v} {x}. +instance (Default t, IsString tag) => Default (BusNetwork tag v x t) where + def :: BusNetwork tag v x t +def = forall {t} {tag} {v} {x}. Default t => tag -> IOSynchronization -> BusNetwork tag v x t busNetwork tag "defaultBus" IOSynchronization ASync -instance Var v => Variables (BusNetwork tag v x t) v where - variables :: BusNetwork tag v x t -> Set v -variables BusNetwork{Map tag [F v x] +instance Var v => Variables (BusNetwork tag v x t) v where + variables :: BusNetwork tag v x t -> Set v +variables BusNetwork{Map tag [F v x] bnBound :: Map tag [F v x] bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] -bnBound} = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 +bnBound} = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [a] M.elems Map tag [F v x] -bnBound +bnBound boundFunctions :: k -> BusNetwork k v x t -> [F v x] -boundFunctions k -puTitle BusNetwork{Map k [F v x] +boundFunctions k +puTitle BusNetwork{Map k [F v x] bnBound :: Map k [F v x] bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] -bnBound} +bnBound} | k -puTitle forall k a. Ord k => k -> Map k a -> Bool +puTitle forall k a. Ord k => k -> Map k a -> Bool `M.member` Map k [F v x] -bnBound = Map k [F v x] -bnBound forall k a. Ord k => Map k a -> k -> a +bnBound = Map k [F v x] +bnBound forall k a. Ord k => Map k a -> k -> a M.! k -puTitle +puTitle | Bool otherwise = [] -instance Default x => DefaultX (BusNetwork tag v x t) x +instance Default x => DefaultX (BusNetwork tag v x t) x -instance WithFunctions (BusNetwork tag v x t) (F v x) where - functions :: BusNetwork tag v x t -> [F v x] -functions BusNetwork{[F v x] +instance WithFunctions (BusNetwork tag v x t) (F v x) where + functions :: BusNetwork tag v x t -> [F v x] +functions BusNetwork{[F v x] bnRemains :: [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains, Map tag [F v x] +bnRemains, Map tag [F v x] bnBound :: Map tag [F v x] bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] -bnBound} = [F v x] -bnRemains forall a. [a] -> [a] -> [a] +bnBound} = [F v x] +bnRemains forall a. [a] -> [a] -> [a] ++ forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat (forall k a. Map k a -> [a] M.elems Map tag [F v x] -bnBound) +bnBound) -instance (UnitTag tag, VarValTime v x t) => DataflowProblem (BusNetwork tag v x t) tag v t where - dataflowOptions :: BusNetwork tag v x t -> [DataflowSt tag v (TimeConstraint t)] -dataflowOptions BusNetwork{Map tag (PU v x t) +instance (UnitTag tag, VarValTime v x t) => DataflowProblem (BusNetwork tag v x t) tag v t where + dataflowOptions :: BusNetwork tag v x t -> [DataflowSt tag v (TimeConstraint t)] +dataflowOptions BusNetwork{Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus, Process t (StepInfo v x t) +bnPus, Process t (StepInfo v x t) bnProcess :: Process t (StepInfo v x t) bnProcess :: forall tag v x t. BusNetwork tag v x t -> Process t (StepInfo v x t) -bnProcess} = - let sources :: [(tag, EndpointSt v (TimeConstraint t))] -sources = +bnProcess} = + let sources :: [(tag, EndpointSt v (TimeConstraint t))] +sources = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap - (\(tag -tag, PU v x t -pu) -> forall a b. (a -> b) -> [a] -> [b] -map (\EndpointSt v (TimeConstraint t) -ep -> (tag -tag, EndpointSt v (TimeConstraint t) -ep)) forall a b. (a -> b) -> a -> b + (\(tag +tag, PU v x t +pu) -> forall a b. (a -> b) -> [a] -> [b] +map (\EndpointSt v (TimeConstraint t) +ep -> (tag +tag, EndpointSt v (TimeConstraint t) +ep)) forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter forall {v} {tp}. EndpointSt v tp -> Bool isSource forall a b. (a -> b) -> a -> b @@ -207,32 +207,32 @@ EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] endpointOptions PU v x t -pu) +pu) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus - targets :: Map v (tag, EndpointSt v (TimeConstraint t)) -targets = +bnPus + targets :: Map v (tag, EndpointSt v (TimeConstraint t)) +targets = forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap - ( \(tag -tag, PU v x t -pu) -> + ( \(tag +tag, PU v x t +pu) -> forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] -concatMap (\EndpointSt v (TimeConstraint t) -ep -> forall a b. (a -> b) -> [a] -> [b] +concatMap (\EndpointSt v (TimeConstraint t) +ep -> forall a b. (a -> b) -> [a] -> [b] map (,(tag -tag, EndpointSt v (TimeConstraint t) -ep)) forall a b. (a -> b) -> a -> b +tag, EndpointSt v (TimeConstraint t) +ep)) forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables EndpointSt v (TimeConstraint t) -ep) forall a b. (a -> b) -> a -> b +ep) forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter forall {v} {tp}. EndpointSt v tp -> Bool @@ -242,12 +242,12 @@ EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] endpointOptions PU v x t -pu +pu ) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus +bnPus in forall a. (a -> Bool) -> [a] -> [a] filter (Bool -> Bool not forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -258,38 +258,38 @@ $ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap - ( \(tag -src, EndpointSt v (TimeConstraint t) -sEndpoint) -> - let dfSource :: (tag, EndpointSt v (TimeConstraint t)) -dfSource = (tag -src, EndpointSt v (TimeConstraint t) -> EndpointSt v (TimeConstraint t) -netConstrain EndpointSt v (TimeConstraint t) -sEndpoint) + ( \(tag +src, EndpointSt v (TimeConstraint t) +sEndpoint) -> + let dfSource :: (tag, EndpointSt v (TimeConstraint t)) +dfSource = (tag +src, EndpointSt v (TimeConstraint t) -> EndpointSt v (TimeConstraint t) +netConstrain EndpointSt v (TimeConstraint t) +sEndpoint) -- collsion example (can not be sended at the same time): -- fram1 -- x1 -> accum -- x2 -> accum - ([v] -hold, [v] -sendWithColisions) = + ([v] +hold, [v] +sendWithColisions) = forall a. (a -> Bool) -> [a] -> ([a], [a]) -L.partition (\v -v -> forall a. Maybe a -> Bool +L.partition (\v +v -> forall a. Maybe a -> Bool isNothing forall a b. (a -> b) -> a -> b $ Map v (tag, EndpointSt v (TimeConstraint t)) -targets forall k a. Ord k => Map k a -> k -> Maybe a +targets forall k a. Ord k => Map k a -> k -> Maybe a M.!? v -v) forall a b. (a -> b) -> a -> b +v) forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables EndpointSt v (TimeConstraint t) -sEndpoint - sends :: [[v]] -sends = +sEndpoint + sends :: [[v]] +sends = forall (t :: * -> *) (m :: * -> *) a. (Traversable t, Monad m) => t (m a) -> m (t a) @@ -302,30 +302,30 @@ Foldable t => (a -> b -> b) -> b -> t a -> b foldr - (\v -v -> forall k a. + (\v +v -> forall k a. Ord k => (Maybe a -> Maybe a) -> k -> Map k a -> Map k a M.alter (forall a. a -> Maybe a Just forall b c a. (b -> c) -> (a -> b) -> a -> c . forall b a. b -> (a -> b) -> Maybe a -> b maybe [v -v] (v -v forall a. a -> [a] -> [a] +v] (v +v forall a. a -> [a] -> [a] :)) (forall a b. (a, b) -> a fst forall a b. (a -> b) -> a -> b $ Map v (tag, EndpointSt v (TimeConstraint t)) -targets forall k a. Ord k => Map k a -> k -> a +targets forall k a. Ord k => Map k a -> k -> a M.! v -v)) +v)) forall a. Default a => a def [v] -sendWithColisions +sendWithColisions in forall a b. (a -> b) -> [a] -> [b] map - ( \[v] -send -> + ( \[v] +send -> DataflowSt { (tag, EndpointSt v (TimeConstraint t)) dfSource :: (tag, EndpointSt v (TimeConstraint t)) @@ -335,81 +335,81 @@ dfTargets = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe - (\v -v -> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b + (\v +v -> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (forall (p :: * -> * -> *) b c a. Bifunctor p => (b -> c) -> p a b -> p a c second EndpointSt v (TimeConstraint t) -> EndpointSt v (TimeConstraint t) -netConstrain) (Map v (tag, EndpointSt v (TimeConstraint t)) -targets forall k a. Ord k => Map k a -> k -> Maybe a +netConstrain) (Map v (tag, EndpointSt v (TimeConstraint t)) +targets forall k a. Ord k => Map k a -> k -> Maybe a M.!? v -v)) +v)) forall a b. (a -> b) -> a -> b $ [v] -send forall a. [a] -> [a] -> [a] +send forall a. [a] -> [a] -> [a] ++ [v] -hold +hold } ) [[v]] -sends +sends ) [(tag, EndpointSt v (TimeConstraint t))] -sources +sources where - netConstrain :: EndpointSt v (TimeConstraint t) -> EndpointSt v (TimeConstraint t) -netConstrain = + netConstrain :: EndpointSt v (TimeConstraint t) -> EndpointSt v (TimeConstraint t) +netConstrain = forall {t} {tp} {v}. (t -> tp) -> EndpointSt v t -> EndpointSt v tp updAt forall a b. (a -> b) -> a -> b -$ \at :: TimeConstraint t -at@TimeConstraint{Interval t +$ \at :: TimeConstraint t +at@TimeConstraint{Interval t tcAvailable :: forall t. TimeConstraint t -> Interval t tcAvailable :: Interval t tcAvailable} -> - let a :: t -a = forall a. Ord a => a -> a -> a + let a :: t +a = forall a. Ord a => a -> a -> a max (forall u t. NextTick u t => u -> t nextTick Process t (StepInfo v x t) -bnProcess) forall a b. (a -> b) -> a -> b +bnProcess) forall a b. (a -> b) -> a -> b $ forall a. Interval a -> a inf Interval t -tcAvailable - b :: t -b = forall a. Interval a -> a +tcAvailable + b :: t +b = forall a. Interval a -> a sup Interval t -tcAvailable +tcAvailable in TimeConstraint t -at{tcAvailable :: Interval t +at{tcAvailable :: Interval t tcAvailable = t -a forall a. Ord a => a -> a -> Interval a +a forall a. Ord a => a -> a -> Interval a ... t -b} +b} - dataflowDecision :: BusNetwork tag v x t + dataflowDecision :: BusNetwork tag v x t -> DataflowSt tag v (Interval t) -> BusNetwork tag v x t -dataflowDecision bn :: BusNetwork tag v x t -bn@BusNetwork{Process t (StepInfo v x t) +dataflowDecision bn :: BusNetwork tag v x t +bn@BusNetwork{Process t (StepInfo v x t) bnProcess :: Process t (StepInfo v x t) bnProcess :: forall tag v x t. BusNetwork tag v x t -> Process t (StepInfo v x t) -bnProcess, Map tag (PU v x t) +bnProcess, Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus} DataflowSt{dfSource :: forall tag v tp. DataflowSt tag v tp -> (tag, EndpointSt v tp) -dfSource = (tag -srcTitle, EndpointSt v (Interval t) -src), [(tag, EndpointSt v (Interval t))] +bnPus} DataflowSt{dfSource :: forall tag v tp. DataflowSt tag v tp -> (tag, EndpointSt v tp) +dfSource = (tag +srcTitle, EndpointSt v (Interval t) +src), [(tag, EndpointSt v (Interval t))] dfTargets :: [(tag, EndpointSt v (Interval t))] dfTargets :: forall tag v tp. DataflowSt tag v tp -> [(tag, EndpointSt v tp)] -dfTargets} +dfTargets} | forall u t. NextTick u t => u -> t nextTick Process t (StepInfo v x t) -bnProcess forall a. Ord a => a -> a -> Bool +bnProcess forall a. Ord a => a -> a -> Bool > forall a. Interval a -> a inf (forall v tp. EndpointSt v tp -> tp epAt EndpointSt v (Interval t) -src) = +src) = forall a. HasCallStack => [Char] -> a error forall a b. (a -> b) -> a -> b $ [Char] @@ -417,48 +417,48 @@ ++ forall a. Show a => a -> [Char] show (forall u t. NextTick u t => u -> t nextTick Process t (StepInfo v x t) -bnProcess) forall a. [a] -> [a] -> [a] +bnProcess) forall a. [a] -> [a] -> [a] ++ [Char] " Act start at: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show EndpointSt v (Interval t) -src +src | Bool otherwise = - let srcStart :: t -srcStart = forall a. Interval a -> a + let srcStart :: t +srcStart = forall a. Interval a -> a inf forall a b. (a -> b) -> a -> b $ forall v tp. EndpointSt v tp -> tp epAt EndpointSt v (Interval t) -src - srcDuration :: t -srcDuration = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a +src + srcDuration :: t +srcDuration = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map ((\EndpointSt{Interval t +map ((\EndpointSt{Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} -> (forall a. Interval a -> a +epAt} -> (forall a. Interval a -> a inf Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a - t -srcStart) forall a. Num a => a -> a -> a +srcStart) forall a. Num a => a -> a -> a + forall a. Num a => Interval a -> a I.width Interval t -epAt) forall b c a. (b -> c) -> (a -> b) -> a -> c +epAt) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(tag, EndpointSt v (Interval t))] -dfTargets - srcEnd :: t -srcEnd = t -srcStart forall a. Num a => a -> a -> a +dfTargets + srcEnd :: t +srcEnd = t +srcStart forall a. Num a => a -> a -> a + t -srcDuration +srcDuration - subDecisions :: [(tag, EndpointSt v (Interval t))] -subDecisions = + subDecisions :: [(tag, EndpointSt v (Interval t))] +subDecisions = (tag -srcTitle, forall v tp. EndpointRole v -> tp -> EndpointSt v tp +srcTitle, forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. Set v -> EndpointRole v Source forall a b. (a -> b) -> a -> b $ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 @@ -466,13 +466,13 @@ variables forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(tag, EndpointSt v (Interval t))] -dfTargets) (forall v tp. EndpointSt v tp -> tp +dfTargets) (forall v tp. EndpointSt v tp -> tp epAt EndpointSt v (Interval t) -src)) forall a. a -> [a] -> [a] +src)) forall a. a -> [a] -> [a] : [(tag, EndpointSt v (Interval t))] -dfTargets +dfTargets in BusNetwork tag v x t -bn +bn { bnPus :: Map tag (PU v x t) bnPus = forall (t :: * -> *) b a. Foldable t => @@ -480,9 +480,9 @@ foldl forall {k} {a} {v} {t}. (Ord k, EndpointProblem a v t) => Map k a -> (k, EndpointSt v (Interval t)) -> Map k a -applyDecision Map tag (PU v x t) -bnPus [(tag, EndpointSt v (Interval t))] -subDecisions +applyDecision Map tag (PU v x t) +bnPus [(tag, EndpointSt v (Interval t))] +subDecisions , bnProcess :: Process t (StepInfo v x t) bnProcess = forall {pu} {t} {v} {x} {a}. pu @@ -490,188 +490,188 @@ -> State (Schedule pu v x t) a -> Process t (StepInfo v x t) execScheduleWithProcess BusNetwork tag v x t -bn Process t (StepInfo v x t) -bnProcess forall a b. (a -> b) -> a -> b +bn Process t (StepInfo v x t) +bnProcess forall a b. (a -> b) -> a -> b $ do forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ - ( \(tag -targetTitle, EndpointSt v (Interval t) -ep) -> + ( \(tag +targetTitle, EndpointSt v (Interval t) +ep) -> forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe (t -srcStart forall a. Ord a => a -> a -> Interval a +srcStart forall a. Ord a => a -> a -> Interval a ... t -srcEnd) +srcEnd) (forall tag v x t. v -> tag -> tag -> Instruction (BusNetwork tag v x t) Transport (forall {c}. Set c -> c oneOf forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables EndpointSt v (Interval t) -ep) tag -srcTitle tag -targetTitle :: Instruction (BusNetwork tag v x t)) +ep) tag +srcTitle tag +targetTitle :: Instruction (BusNetwork tag v x t)) ) [(tag, EndpointSt v (Interval t))] -dfTargets +dfTargets } where - applyDecision :: Map k a -> (k, EndpointSt v (Interval t)) -> Map k a -applyDecision Map k a -pus (k -trgTitle, EndpointSt v (Interval t) -d') = forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a + applyDecision :: Map k a -> (k, EndpointSt v (Interval t)) -> Map k a +applyDecision Map k a +pus (k +trgTitle, EndpointSt v (Interval t) +d') = forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a M.adjust (forall u v t. EndpointProblem u v t => u -> EndpointSt v (Interval t) -> u `endpointDecision` EndpointSt v (Interval t) -d') k -trgTitle Map k a -pus +d') k +trgTitle Map k a +pus -instance (UnitTag tag, VarValTime v x t) => ProcessorUnit (BusNetwork tag v x t) v x t where - tryBind :: F v x +instance (UnitTag tag, VarValTime v x t) => ProcessorUnit (BusNetwork tag v x t) v x t where + tryBind :: F v x -> BusNetwork tag v x t -> Either [Char] (BusNetwork tag v x t) -tryBind F v x -f net :: BusNetwork tag v x t -net@BusNetwork{[F v x] +tryBind F v x +f net :: BusNetwork tag v x t +net@BusNetwork{[F v x] bnRemains :: [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains, Map tag (PU v x t) +bnRemains, Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus, Map tag (PUPrototype tag v x t) +bnPus, Map tag (PUPrototype tag v x t) bnPUPrototypes :: Map tag (PUPrototype tag v x t) bnPUPrototypes :: forall tag v x t. BusNetwork tag v x t -> Map tag (PUPrototype tag v x t) -bnPUPrototypes} +bnPUPrototypes} | forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any (forall {b} {v} {x} {t}. ProcessorUnit b v x t => F v x -> b -> Bool allowToProcess F v x -f) (forall k a. Map k a -> [a] +f) (forall k a. Map k a -> [a] M.elems Map tag (PU v x t) -bnPus) = forall a b. b -> Either a b +bnPus) = forall a b. b -> Either a b Right BusNetwork tag v x t -net{bnRemains :: [F v x] +net{bnRemains :: [F v x] bnRemains = F v x -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] : [F v x] -bnRemains} +bnRemains} -- TODO: -- There are several issues that need to be addressed: see https://github.com/ryukzak/nitta/pull/195#discussion_r853486450 -- 1) Now the binding of functions to the network is hardcoded, that prevents use of an empty uarch at the start -- 2) If Allocation options are independent of the bnRemains, then they are present in all synthesis states, which means no leaves in the synthesis tree | forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool -any (\PUPrototype{pu +any (\PUPrototype{pu pProto :: () pProto :: pu pProto} -> forall {b} {v} {x} {t}. ProcessorUnit b v x t => F v x -> b -> Bool allowToProcess F v x -f pu -pProto) (forall k a. Map k a -> [a] +f pu +pProto) (forall k a. Map k a -> [a] M.elems Map tag (PUPrototype tag v x t) -bnPUPrototypes) = forall a b. b -> Either a b +bnPUPrototypes) = forall a b. b -> Either a b Right BusNetwork tag v x t -net{bnRemains :: [F v x] +net{bnRemains :: [F v x] bnRemains = F v x -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] : [F v x] -bnRemains} - tryBind F v x -f BusNetwork{Map tag (PU v x t) +bnRemains} + tryBind F v x +f BusNetwork{Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus} = +bnPus} = forall a b. a -> Either a b Left [i|All sub process units reject the functional block: #{ f }; rejects: #{ rejects }|] where - rejects :: Text -rejects = Text -> [Text] -> Text + rejects :: Text +rejects = Text -> [Text] -> Text T.intercalate Text "; " forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (tag, PU v x t) -> Text -showReject forall a b. (a -> b) -> a -> b +showReject forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus - showReject :: (tag, PU v x t) -> Text -showReject (tag -tag, PU v x t -pu) | Left [Char] -err <- forall u v x t. +bnPus + showReject :: (tag, PU v x t) -> Text +showReject (tag +tag, PU v x t +pu) | Left [Char] +err <- forall u v x t. ProcessorUnit u v x t => F v x -> u -> Either [Char] u tryBind F v x -f PU v x t -pu = [i|[#{ toString tag }]: #{ err }"|] - showReject (tag -tag, PU v x t +f PU v x t +pu = [i|[#{ toString tag }]: #{ err }"|] + showReject (tag +tag, PU v x t _) = [i|[#{ toString tag }]: undefined"|] - process :: BusNetwork tag v x t -> Process t (StepInfo v x t) -process net :: BusNetwork tag v x t -net@BusNetwork{Process t (StepInfo v x t) + process :: BusNetwork tag v x t -> Process t (StepInfo v x t) +process net :: BusNetwork tag v x t +net@BusNetwork{Process t (StepInfo v x t) bnProcess :: Process t (StepInfo v x t) bnProcess :: forall tag v x t. BusNetwork tag v x t -> Process t (StepInfo v x t) -bnProcess, Map tag (PU v x t) +bnProcess, Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus} = - let v2transportStepKey :: Map v Int -v2transportStepKey = +bnPus} = + let v2transportStepKey :: Map v Int +v2transportStepKey = forall k a. Ord k => [(k, a)] -> Map k a M.fromList [ (v -v, Int -pID) - | step :: Step t (StepInfo v x t) -step@Step{Int +v, Int +pID) + | step :: Step t (StepInfo v x t) +step@Step{Int pID :: forall t i. Step t i -> Int pID :: Int -pID, StepInfo v x t +pID, StepInfo v x t pDesc :: forall t i. Step t i -> i pDesc :: StepInfo v x t pDesc} <- forall t i. Process t i -> [Step t i] steps Process t (StepInfo v x t) -bnProcess +bnProcess , forall {t1} {v} {x} {t2}. Step t1 (StepInfo v x t2) -> Bool isInstruction Step t (StepInfo v x t) -step - , v -v <- case StepInfo v x t -pDesc of - (InstructionStep Instruction pu -ins) | Just (Transport v -var tag +step + , v +v <- case StepInfo v x t +pDesc of + (InstructionStep Instruction pu +ins) | Just (Transport v +var tag _ tag _) <- forall a pu. (Typeable a, Typeable pu) => pu -> a -> Maybe (Instruction pu) castInstruction BusNetwork tag v x t -net Instruction pu -ins -> [v -var] +net Instruction pu +ins -> [v +var] StepInfo v x t _ -> [] ] - wholeProcess :: Process t (StepInfo v x t) -wholeProcess = forall {pu} {t} {v} {x} {a}. + wholeProcess :: Process t (StepInfo v x t) +wholeProcess = forall {pu} {t} {v} {x} {a}. pu -> Process t (StepInfo v x t) -> State (Schedule pu v x t) a -> Process t (StepInfo v x t) execScheduleWithProcess BusNetwork tag v x t -net Process t (StepInfo v x t) -bnProcess forall a b. (a -> b) -> a -> b +net Process t (StepInfo v x t) +bnProcess forall a b. (a -> b) -> a -> b $ do forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => @@ -681,75 +681,75 @@ (UnitTag tag, MonadState (Schedule pu v x t) m, ProcessorUnit u v x t) => tag -> u -> m () -includeNestedProcess) forall a b. (a -> b) -> a -> b +includeNestedProcess) forall a b. (a -> b) -> a -> b $ forall b a. Ord b => (a -> b) -> [a] -> [a] L.sortOn forall a b. (a, b) -> a fst forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus - Process{[Step t (StepInfo v x t)] +bnPus + Process{[Step t (StepInfo v x t)] steps :: [Step t (StepInfo v x t)] steps :: forall t i. Process t i -> [Step t i] -steps} <- forall pu v x t. +steps} <- forall pu v x t. State (Schedule pu v x t) (Process t (StepInfo v x t)) getProcessSlice -- Vertical relations between Transport and Endpoint - let enpointStepKeyVars :: [(Int, v)] -enpointStepKeyVars = + let enpointStepKeyVars :: [(Int, v)] +enpointStepKeyVars = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap - ( \Step{Int + ( \Step{Int pID :: Int pID :: forall t i. Step t i -> Int -pID, StepInfo v x t +pID, StepInfo v x t pDesc :: StepInfo v x t pDesc :: forall t i. Step t i -> i -pDesc} -> +pDesc} -> case StepInfo v x t -pDesc of +pDesc of NestedStep{nStep :: forall t v x. StepInfo v x t -> Step t (StepInfo v x t) nStep = Step{pDesc :: forall t i. Step t i -> i -pDesc = EndpointRoleStep EndpointRole v -role}} -> +pDesc = EndpointRoleStep EndpointRole v +role}} -> forall a b. (a -> b) -> [a] -> [b] map (Int -pID,) forall a b. (a -> b) -> a -> b +pID,) forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables EndpointRole v -role +role StepInfo v x t _ -> [] ) [Step t (StepInfo v x t)] -steps +steps forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ - ( \(Int -epKey, v -v) -> + ( \(Int +epKey, v +v) -> forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (v -v forall k a. Ord k => k -> Map k a -> Bool +v forall k a. Ord k => k -> Map k a -> Bool `M.member` Map v Int -v2transportStepKey) forall a b. (a -> b) -> a -> b +v2transportStepKey) forall a b. (a -> b) -> a -> b $ forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [Int] -> [Int] -> m () establishVerticalRelations [Map v Int -v2transportStepKey forall k a. Ord k => Map k a -> k -> a +v2transportStepKey forall k a. Ord k => Map k a -> k -> a M.! v -v] [Int -epKey] +v] [Int +epKey] ) [(Int, v)] -enpointStepKeyVars +enpointStepKeyVars -- Vertical relations between FB and Transport forall (t :: * -> *) (m :: * -> *) a b. @@ -757,39 +757,39 @@ (a -> m b) -> t a -> m () mapM_ ( \case - Step{Int + Step{Int pID :: Int pID :: forall t i. Step t i -> Int -pID, pDesc :: forall t i. Step t i -> i +pID, pDesc :: forall t i. Step t i -> i pDesc = NestedStep{nStep :: forall t v x. StepInfo v x t -> Step t (StepInfo v x t) nStep = Step{pDesc :: forall t i. Step t i -> i -pDesc = IntermediateStep F v x -f}}} -> +pDesc = IntermediateStep F v x +f}}} -> forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ - ( \v -v -> + ( \v +v -> forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (v -v forall k a. Ord k => k -> Map k a -> Bool +v forall k a. Ord k => k -> Map k a -> Bool `M.member` Map v Int -v2transportStepKey) forall a b. (a -> b) -> a -> b +v2transportStepKey) forall a b. (a -> b) -> a -> b $ forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [Int] -> [Int] -> m () establishVerticalRelations [Int -pID] [Map v Int -v2transportStepKey forall k a. Ord k => Map k a -> k -> a +pID] [Map v Int +v2transportStepKey forall k a. Ord k => Map k a -> k -> a M.! v -v] +v] ) forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables F v x -f +f Step t (StepInfo v x t) _ -> forall a. HasCallStack => [Char] -> a error [Char] @@ -799,27 +799,27 @@ $ forall a. (a -> Bool) -> [a] -> [a] filter forall {t1} {v} {x} {t2}. Step t1 (StepInfo v x t2) -> Bool isIntermediate [Step t (StepInfo v x t)] -steps +steps in Process t (StepInfo v x t) -wholeProcess +wholeProcess where - includeNestedProcess :: tag -> u -> m () -includeNestedProcess tag -tag u -pu = do - let Process{[Step t (StepInfo v x t)] + includeNestedProcess :: tag -> u -> m () +includeNestedProcess tag +tag u +pu = do + let Process{[Step t (StepInfo v x t)] steps :: [Step t (StepInfo v x t)] steps :: forall t i. Process t i -> [Step t i] -steps, [Relation] +steps, [Relation] relations :: forall t i. Process t i -> [Relation] relations :: [Relation] relations} = forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -pu - Map Int Int -pu2netKey <- +pu + Map Int Int +pu2netKey <- forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -827,130 +827,130 @@ (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM - ( \step :: Step t (StepInfo v x t) -step@Step{Int + ( \step :: Step t (StepInfo v x t) +step@Step{Int pID :: Int pID :: forall t i. Step t i -> Int -pID} -> do - Int -pID' <- forall {m :: * -> *} {pu} {v} {x} {t} {tag}. +pID} -> do + Int +pID' <- forall {m :: * -> *} {pu} {v} {x} {t} {tag}. (MonadState (Schedule pu v x t) m, UnitTag tag) => tag -> Step t (StepInfo v x t) -> m Int scheduleNestedStep tag -tag Step t (StepInfo v x t) -step +tag Step t (StepInfo v x t) +step forall (m :: * -> *) a. Monad m => a -> m a return (Int -pID, Int -pID') +pID, Int +pID') ) [Step t (StepInfo v x t)] -steps +steps forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ ( \case - (Vertical Int -h Int -l) -> forall {m :: * -> *} {pu} {v} {x} {t}. + (Vertical Int +h Int +l) -> forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [Int] -> [Int] -> m () establishVerticalRelations [Map Int Int -pu2netKey forall k a. Ord k => Map k a -> k -> a +pu2netKey forall k a. Ord k => Map k a -> k -> a M.! Int -h] [Map Int Int -pu2netKey forall k a. Ord k => Map k a -> k -> a +h] [Map Int Int +pu2netKey forall k a. Ord k => Map k a -> k -> a M.! Int -l] - (Horizontal Int -h Int -l) -> forall {m :: * -> *} {pu} {v} {x} {t}. +l] + (Horizontal Int +h Int +l) -> forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [Int] -> [Int] -> m () establishHorizontalRelations [Map Int Int -pu2netKey forall k a. Ord k => Map k a -> k -> a +pu2netKey forall k a. Ord k => Map k a -> k -> a M.! Int -h] [Map Int Int -pu2netKey forall k a. Ord k => Map k a -> k -> a +h] [Map Int Int +pu2netKey forall k a. Ord k => Map k a -> k -> a M.! Int -l] +l] ) [Relation] -relations +relations - parallelismType :: BusNetwork tag v x t -> ParallelismType + parallelismType :: BusNetwork tag v x t -> ParallelismType parallelismType BusNetwork tag v x t _ = forall a. HasCallStack => [Char] -> a error [Char] " not support parallelismType for BusNetwork" - puSize :: BusNetwork tag v x t -> Float -puSize BusNetwork{Map tag (PU v x t) + puSize :: BusNetwork tag v x t -> Float +puSize BusNetwork{Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus} = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a +bnPus} = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall u v x t. ProcessorUnit u v x t => u -> Float puSize forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [a] M.elems Map tag (PU v x t) -bnPus +bnPus -instance Controllable (BusNetwork tag v x t) where - data Instruction (BusNetwork tag v x t) - = Transport v tag tag +instance Controllable (BusNetwork tag v x t) where + data Instruction (BusNetwork tag v x t) + = Transport v tag tag deriving (Typeable) - data Microcode (BusNetwork tag v x t) + data Microcode (BusNetwork tag v x t) = BusNetworkMC (M.Map SignalTag SignalValue) -- Right now, BusNetwork don't have external control (exclude rst signal and some hacks). All -- signals starts and ends inside network unit. - zipSignalTagsAndValues :: Ports (BusNetwork tag v x t) + zipSignalTagsAndValues :: Ports (BusNetwork tag v x t) -> Microcode (BusNetwork tag v x t) -> [(SignalTag, SignalValue)] zipSignalTagsAndValues Ports (BusNetwork tag v x t) R:PortsBusNetwork tag v x t BusNetworkPorts BusNetworkMC{} = [] - usedPortTags :: Ports (BusNetwork tag v x t) -> [SignalTag] + usedPortTags :: Ports (BusNetwork tag v x t) -> [SignalTag] usedPortTags Ports (BusNetwork tag v x t) _ = forall a. HasCallStack => [Char] -> a error [Char] "internal error" - takePortTags :: [SignalTag] -> BusNetwork tag v x t -> Ports (BusNetwork tag v x t) + takePortTags :: [SignalTag] -> BusNetwork tag v x t -> Ports (BusNetwork tag v x t) takePortTags [SignalTag] _ BusNetwork tag v x t _ = forall a. HasCallStack => [Char] -> a error [Char] "internal error" -instance (ToString tag, Var v) => Show (Instruction (BusNetwork tag v x t)) where - show :: Instruction (BusNetwork tag v x t) -> [Char] -show (Transport v -v tag -src tag -trg) = [Char] +instance (ToString tag, Var v) => Show (Instruction (BusNetwork tag v x t)) where + show :: Instruction (BusNetwork tag v x t) -> [Char] +show (Transport v +v tag +src tag +trg) = [Char] "Transport " forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> [Char] toString v -v forall a. Semigroup a => a -> a -> a +v forall a. Semigroup a => a -> a -> a <> [Char] " " forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> [Char] toString tag -src forall a. Semigroup a => a -> a -> a +src forall a. Semigroup a => a -> a -> a <> [Char] " " forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> [Char] toString tag -trg +trg -instance {-# OVERLAPS #-} ByTime (BusNetwork tag v x t) t where - microcodeAt :: BusNetwork tag v x t -> t -> Microcode (BusNetwork tag v x t) -microcodeAt BusNetwork{tag +instance {-# OVERLAPS #-} ByTime (BusNetwork tag v x t) t where + microcodeAt :: BusNetwork tag v x t -> t -> Microcode (BusNetwork tag v x t) +microcodeAt BusNetwork{tag Int [F v x] Map tag [F v x] @@ -980,8 +980,8 @@ bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] bnName :: forall tag v x t. BusNetwork tag v x t -> tag -..} t -t = +..} t +t = forall tag v x t. Map SignalTag SignalValue -> Microcode (BusNetwork tag v x t) BusNetworkMC forall a b. (a -> b) -> a -> b @@ -989,90 +989,90 @@ Foldable t => (b -> a -> b) -> b -> t a -> b foldl Map SignalTag SignalValue -> PU v x t -> Map SignalTag SignalValue -merge Map SignalTag SignalValue -initSt forall a b. (a -> b) -> a -> b +merge Map SignalTag SignalValue +initSt forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [a] M.elems Map tag (PU v x t) -bnPus +bnPus where - initSt :: Map SignalTag SignalValue -initSt = forall k a. Ord k => [(k, a)] -> Map k a + initSt :: Map SignalTag SignalValue +initSt = forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\Int -ins -> (Text -> SignalTag +map (\Int +ins -> (Text -> SignalTag SignalTag forall a b. (a -> b) -> a -> b $ forall {dst} {src}. (Builder (IsCustomSink dst) dst ~ Builder (IsCustomSink dst) dst, Interpolatable (IsCustomSink dst) src dst) => src -> dst controlSignalLiteral Int -ins, forall a. Default a => a +ins, forall a. Default a => a def)) [Int 0 .. Int -bnSignalBusWidth forall a. Num a => a -> a -> a +bnSignalBusWidth forall a. Num a => a -> a -> a - Int 1] - merge :: Map SignalTag SignalValue -> PU v x t -> Map SignalTag SignalValue -merge Map SignalTag SignalValue -st PU{pu + merge :: Map SignalTag SignalValue -> PU v x t -> Map SignalTag SignalValue +merge Map SignalTag SignalValue +st PU{pu unit :: () unit :: pu unit, uEnv :: () uEnv = UnitEnv{ctrlPorts :: forall m. UnitEnv m -> Maybe (Ports m) -ctrlPorts = Just Ports pu -ports}} = +ctrlPorts = Just Ports pu +ports}} = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl forall {k}. Ord k => Map k SignalValue -> (k, SignalValue) -> Map k SignalValue -merge' Map SignalTag SignalValue -st forall a b. (a -> b) -> a -> b +merge' Map SignalTag SignalValue +st forall a b. (a -> b) -> a -> b $ forall pu. Controllable pu => Ports pu -> Microcode pu -> [(SignalTag, SignalValue)] zipSignalTagsAndValues Ports pu -ports forall a b. (a -> b) -> a -> b +ports forall a b. (a -> b) -> a -> b $ forall pu t. ByTime pu t => pu -> t -> Microcode pu microcodeAt pu -unit t -t - merge Map SignalTag SignalValue +unit t +t + merge Map SignalTag SignalValue _ PU v x t _ = forall a. HasCallStack => [Char] -> a error [Char] "internal error" - merge' :: Map k SignalValue -> (k, SignalValue) -> Map k SignalValue -merge' Map k SignalValue -st (k -signalTag, SignalValue -value) = forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a + merge' :: Map k SignalValue -> (k, SignalValue) -> Map k SignalValue +merge' Map k SignalValue +st (k +signalTag, SignalValue +value) = forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a M.adjust (SignalValue -> SignalValue -> SignalValue +++ SignalValue -value) k -signalTag Map k SignalValue -st +value) k +signalTag Map k SignalValue +st ---------------------------------------------------------------------- -cartesianProduct :: [[a]] -> [[a]] +cartesianProduct :: [[a]] -> [[a]] cartesianProduct :: forall a. [[a]] -> [[a]] cartesianProduct [] = [[]] -cartesianProduct ([a] -xs : [[a]] -xss) = [a -x forall a. a -> [a] -> [a] +cartesianProduct ([a] +xs : [[a]] +xss) = [a +x forall a. a -> [a] -> [a] : [a] -ys | a -x <- [a] -xs, [a] -ys <- forall a. [[a]] -> [[a]] +ys | a +x <- [a] +xs, [a] +ys <- forall a. [[a]] -> [[a]] cartesianProduct [[a]] -xss] +xss] {- | Not all bindings can be applied to unit a the same time. E.g.: @@ -1083,49 +1083,49 @@ In this case, we just throw away conflicted bindings. -} -fixGroupBinding :: (UnitTag tag, VarValTime v x t) => BusNetwork tag v x t -> [(tag, F v x)] -> [(tag, F v x)] +fixGroupBinding :: (UnitTag tag, VarValTime v x t) => BusNetwork tag v x t -> [(tag, F v x)] -> [(tag, F v x)] fixGroupBinding :: forall tag v x t. (UnitTag tag, VarValTime v x t) => BusNetwork tag v x t -> [(tag, F v x)] -> [(tag, F v x)] -fixGroupBinding BusNetwork tag v x t -_bn [] = [] -fixGroupBinding bn :: BusNetwork tag v x t -bn@BusNetwork{Map tag (PU v x t) +fixGroupBinding BusNetwork tag v x t +_bn [] = [] +fixGroupBinding bn :: BusNetwork tag v x t +bn@BusNetwork{Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus} (b :: (tag, F v x) -b@(tag -uTag, F v x -f) : [(tag, F v x)] -binds) +bnPus} (b :: (tag, F v x) +b@(tag +uTag, F v x +f) : [(tag, F v x)] +binds) | Right PU v x t _ <- forall u v x t. ProcessorUnit u v x t => F v x -> u -> Either [Char] u tryBind F v x -f (Map tag (PU v x t) -bnPus forall k a. Ord k => Map k a -> k -> a +f (Map tag (PU v x t) +bnPus forall k a. Ord k => Map k a -> k -> a M.! tag -uTag) = (tag, F v x) -b forall a. a -> [a] -> [a] +uTag) = (tag, F v x) +b forall a. a -> [a] -> [a] : forall tag v x t. (UnitTag tag, VarValTime v x t) => BusNetwork tag v x t -> [(tag, F v x)] -> [(tag, F v x)] fixGroupBinding (forall u tag v x. BindProblem u tag v x => u -> Bind tag v x -> u bindDecision BusNetwork tag v x t -bn forall a b. (a -> b) -> a -> b +bn forall a b. (a -> b) -> a -> b $ forall tag v x. tag -> F v x -> Bind tag v x SingleBind tag -uTag F v x -f) [(tag, F v x)] -binds +uTag F v x +f) [(tag, F v x)] +binds | Bool otherwise = forall tag v x t. (UnitTag tag, VarValTime v x t) => BusNetwork tag v x t -> [(tag, F v x)] -> [(tag, F v x)] fixGroupBinding BusNetwork tag v x t -bn [(tag, F v x)] -binds +bn [(tag, F v x)] +binds mergeFunctionWithSameType :: Bool mergeFunctionWithSameType = Bool @@ -1145,48 +1145,48 @@ - Combination like: `u1 <- f1, f2; u2 <- f3 !== u1 <- f1, f3; u2 <- f2` are not equal because we don't take into accout their place in DFG. -} -bindsHash :: UnitTag k => BusNetwork k v x t -> [(k, F v x)] -> S.Set (TypeRep, Int, S.Set String) +bindsHash :: UnitTag k => BusNetwork k v x t -> [(k, F v x)] -> S.Set (TypeRep, Int, S.Set String) bindsHash :: forall k v x t. UnitTag k => BusNetwork k v x t -> [(k, F v x)] -> Set (TypeRep, Int, Set [Char]) -bindsHash BusNetwork{Map k (PU v x t) +bindsHash BusNetwork{Map k (PU v x t) bnPus :: Map k (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus, Map k [F v x] +bnPus, Map k [F v x] bnBound :: Map k [F v x] bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] -bnBound} [(k, F v x)] -binds = - let distribution :: Map k [F v x] -distribution = forall tag v x. UnitTag tag => [(tag, F v x)] -> Map tag [F v x] +bnBound} [(k, F v x)] +binds = + let distribution :: Map k [F v x] +distribution = forall tag v x. UnitTag tag => [(tag, F v x)] -> Map tag [F v x] binds2bindGroup [(k, F v x)] -binds +binds in forall a. Ord a => [a] -> Set a S.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map - ( \(k -tag, [F v x] -fs) -> + ( \(k +tag, [F v x] +fs) -> let - u :: PU v x t -u = Map k (PU v x t) -bnPus forall k a. Ord k => Map k a -> k -> a + u :: PU v x t +u = Map k (PU v x t) +bnPus forall k a. Ord k => Map k a -> k -> a M.! k -tag - bound :: Int -bound = forall b a. b -> (a -> b) -> Maybe a -> b +tag + bound :: Int +bound = forall b a. b -> (a -> b) -> Maybe a -> b maybe Int 0 forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ Map k [F v x] -bnBound forall k a. Ord k => Map k a -> k -> Maybe a +bnBound forall k a. Ord k => Map k a -> k -> Maybe a M.!? k -tag - fs' :: Set [Char] -fs' = +tag + fs' :: Set [Char] +fs' = forall a. Ord a => [a] -> Set a S.fromList forall a b. (a -> b) -> a -> b $ @@ -1201,80 +1201,80 @@ forall a b. (a -> b) -> [a] -> [b] map (forall a. Show a => a -> [Char] show forall b c a. (b -> c) -> (a -> b) -> a -> c -. (\[TypeRep] -lst -> (forall a. [a] -> a +. (\[TypeRep] +lst -> (forall a. [a] -> a head [TypeRep] -lst, forall (t :: * -> *) a. Foldable t => t a -> Int +lst, forall (t :: * -> *) a. Foldable t => t a -> Int length [TypeRep] -lst))) (forall a. Eq a => [a] -> [[a]] +lst))) (forall a. Eq a => [a] -> [[a]] L.group forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall v x. F v x -> TypeRep functionType [F v x] -fs) +fs) else forall a b. (a -> b) -> [a] -> [b] map forall a. Show a => a -> [Char] show [F v x] -fs +fs in (forall v x t. PU v x t -> TypeRep unitType PU v x t -u, Int -bound, Set [Char] -fs') +u, Int +bound, Set [Char] +fs') ) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map k [F v x] -distribution +distribution -nubNotObviousBinds :: UnitTag k => BusNetwork k v x t -> [[(k, F v x)]] -> [[(k, F v x)]] +nubNotObviousBinds :: UnitTag k => BusNetwork k v x t -> [[(k, F v x)]] -> [[(k, F v x)]] nubNotObviousBinds :: forall k v x t. UnitTag k => BusNetwork k v x t -> [[(k, F v x)]] -> [[(k, F v x)]] -nubNotObviousBinds BusNetwork k v x t -bn [[(k, F v x)]] -bindss = - let hashed :: [(Set (TypeRep, Int, Set [Char]), [(k, F v x)])] -hashed = forall a b. (a -> b) -> [a] -> [b] -map (\[(k, F v x)] -binds -> (forall k v x t. +nubNotObviousBinds BusNetwork k v x t +bn [[(k, F v x)]] +bindss = + let hashed :: [(Set (TypeRep, Int, Set [Char]), [(k, F v x)])] +hashed = forall a b. (a -> b) -> [a] -> [b] +map (\[(k, F v x)] +binds -> (forall k v x t. UnitTag k => BusNetwork k v x t -> [(k, F v x)] -> Set (TypeRep, Int, Set [Char]) bindsHash BusNetwork k v x t -bn [(k, F v x)] -binds, [(k, F v x)] -binds)) [[(k, F v x)]] -bindss +bn [(k, F v x)] +binds, [(k, F v x)] +binds)) [[(k, F v x)]] +bindss in forall k a. Map k a -> [a] M.elems forall a b. (a -> b) -> a -> b $ forall k a. Ord k => [(k, a)] -> Map k a M.fromList [(Set (TypeRep, Int, Set [Char]), [(k, F v x)])] -hashed +hashed instance - (UnitTag tag, VarValTime v x t) => - BindProblem (BusNetwork tag v x t) tag v x + (UnitTag tag, VarValTime v x t) => + BindProblem (BusNetwork tag v x t) tag v x where - bindOptions :: BusNetwork tag v x t -> [Bind tag v x] -bindOptions bn :: BusNetwork tag v x t -bn@BusNetwork{[F v x] + bindOptions :: BusNetwork tag v x t -> [Bind tag v x] +bindOptions bn :: BusNetwork tag v x t +bn@BusNetwork{[F v x] bnRemains :: [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains, Map tag (PU v x t) +bnRemains, Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus} = - let binds :: [[(tag, F v x)]] -binds = forall a b. (a -> b) -> [a] -> [b] +bnPus} = + let binds :: [[(tag, F v x)]] +binds = forall a b. (a -> b) -> [a] -> [b] map F v x -> [(tag, F v x)] -optionsFor [F v x] -bnRemains +optionsFor [F v x] +bnRemains -- obvious mean we have only one option to bind function - obviousBinds :: [(tag, F v x)] -obviousBinds = forall (t :: * -> *) a. Foldable t => t [a] -> [a] + obviousBinds :: [(tag, F v x)] +obviousBinds = forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Eq a => a -> a -> Bool @@ -1282,37 +1282,37 @@ 1) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a. Foldable t => t a -> Int length) [[(tag, F v x)]] -binds - singleAssingmentBinds :: [Bind tag v x] -singleAssingmentBinds +binds + singleAssingmentBinds :: [Bind tag v x] +singleAssingmentBinds | forall (t :: * -> *) a. Foldable t => t a -> Bool null [(tag, F v x)] -obviousBinds = [] +obviousBinds = [] | Bool otherwise = [forall tag v x. Bool -> Map tag [F v x] -> Bind tag v x GroupBind Bool True forall a b. (a -> b) -> a -> b $ forall tag v x. UnitTag tag => [(tag, F v x)] -> Map tag [F v x] binds2bindGroup [(tag, F v x)] -obviousBinds] +obviousBinds] - notObviousBinds :: [[(tag, F v x)]] - notObviousBinds :: [[(tag, F v x)]] -notObviousBinds = forall a. (a -> Bool) -> [a] -> [a] + notObviousBinds :: [[(tag, F v x)]] + notObviousBinds :: [[(tag, F v x)]] +notObviousBinds = forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Ord a => a -> a -> Bool > Int 1) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a. Foldable t => t a -> Int length) [[(tag, F v x)]] -binds +binds -- TODO: split them on independent bindGroups. It should -- significantly reduce complexity. - multiBinds :: [Bind tag v x] - multiBinds :: [Bind tag v x] -multiBinds + multiBinds :: [Bind tag v x] + multiBinds :: [Bind tag v x] +multiBinds | forall (t :: * -> *) a. Foldable t => t a -> Bool null [[(tag, F v x)]] -notObviousBinds = [] +notObviousBinds = [] | Bool otherwise = forall a b. (a -> b) -> [a] -> [b] @@ -1334,83 +1334,83 @@ (UnitTag tag, VarValTime v x t) => BusNetwork tag v x t -> [(tag, F v x)] -> [(tag, F v x)] fixGroupBinding BusNetwork tag v x t -bn) forall a b. (a -> b) -> a -> b +bn) forall a b. (a -> b) -> a -> b $ forall k v x t. UnitTag k => BusNetwork k v x t -> [[(k, F v x)]] -> [[(k, F v x)]] nubNotObviousBinds BusNetwork tag v x t -bn forall a b. (a -> b) -> a -> b +bn forall a b. (a -> b) -> a -> b $ forall a. [[a]] -> [[a]] cartesianProduct [[(tag, F v x)]] -notObviousBinds +notObviousBinds - simpleBinds :: [Bind tag v x] -simpleBinds = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] + simpleBinds :: [Bind tag v x] +simpleBinds = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (forall a b. (a -> b) -> [a] -> [b] map forall a b. (a -> b) -> a -> b $ forall a b c. (a -> b -> c) -> (a, b) -> c uncurry forall tag v x. tag -> F v x -> Bind tag v x SingleBind) [[(tag, F v x)]] -binds +binds in [Bind tag v x] -singleAssingmentBinds forall a. Semigroup a => a -> a -> a +singleAssingmentBinds forall a. Semigroup a => a -> a -> a <> [Bind tag v x] -multiBinds forall a. Semigroup a => a -> a -> a +multiBinds forall a. Semigroup a => a -> a -> a <> [Bind tag v x] -simpleBinds +simpleBinds where - optionsFor :: F v x -> [(tag, F v x)] -optionsFor F v x -f = + optionsFor :: F v x -> [(tag, F v x)] +optionsFor F v x +f = [ (tag -tag, F v x -f) - | (tag -tag, PU v x t -pu) <- forall k a. Map k a -> [(k, a)] +tag, F v x +f) + | (tag +tag, PU v x t +pu) <- forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus +bnPus , forall {b} {v} {x} {t}. ProcessorUnit b v x t => F v x -> b -> Bool allowToProcess F v x -f PU v x t -pu +f PU v x t +pu ] - bindDecision :: BusNetwork tag v x t -> Bind tag v x -> BusNetwork tag v x t -bindDecision bn :: BusNetwork tag v x t -bn@BusNetwork{Process t (StepInfo v x t) + bindDecision :: BusNetwork tag v x t -> Bind tag v x -> BusNetwork tag v x t +bindDecision bn :: BusNetwork tag v x t +bn@BusNetwork{Process t (StepInfo v x t) bnProcess :: Process t (StepInfo v x t) bnProcess :: forall tag v x t. BusNetwork tag v x t -> Process t (StepInfo v x t) -bnProcess, Map tag (PU v x t) +bnProcess, Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus, Map tag [F v x] +bnPus, Map tag [F v x] bnBound :: Map tag [F v x] bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] -bnBound, [F v x] +bnBound, [F v x] bnRemains :: [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains} (SingleBind tag -tag F v x -f) = +bnRemains} (SingleBind tag +tag F v x +f) = BusNetwork tag v x t -bn +bn { bnPus :: Map tag (PU v x t) bnPus = forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a M.adjust (forall {u} {v} {x} {t}. ProcessorUnit u v x t => F v x -> u -> u bind F v x -f) tag -tag Map tag (PU v x t) -bnPus +f) tag +tag Map tag (PU v x t) +bnPus , bnBound :: Map tag [F v x] bnBound = forall {k} {a}. Ord k => k -> a -> Map k [a] -> Map k [a] registerBinding tag -tag F v x -f Map tag [F v x] -bnBound +tag F v x +f Map tag [F v x] +bnBound , bnProcess :: Process t (StepInfo v x t) bnProcess = forall {pu} {t} {v} {x} {a}. pu @@ -1418,22 +1418,22 @@ -> State (Schedule pu v x t) a -> Process t (StepInfo v x t) execScheduleWithProcess BusNetwork tag v x t -bn Process t (StepInfo v x t) -bnProcess forall a b. (a -> b) -> a -> b +bn Process t (StepInfo v x t) +bnProcess forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *} {a}. (MonadState (Schedule pu v x t) m, Show a) => a -> m [Int] scheduleFunctionBind F v x -f +f , bnRemains :: [F v x] bnRemains = forall a. (a -> Bool) -> [a] -> [a] filter (forall a. Eq a => a -> a -> Bool /= F v x -f) [F v x] -bnRemains +f) [F v x] +bnRemains } - bindDecision bn :: BusNetwork tag v x t -bn@BusNetwork{} GroupBind{Map tag [F v x] + bindDecision bn :: BusNetwork tag v x t +bn@BusNetwork{} GroupBind{Map tag [F v x] bindGroup :: forall tag v x. Bind tag v x -> Map tag [F v x] bindGroup :: Map tag [F v x] bindGroup} = @@ -1442,44 +1442,44 @@ (b -> a -> b) -> b -> t a -> b foldl forall u tag v x. BindProblem u tag v x => u -> Bind tag v x -> u bindDecision BusNetwork tag v x t -bn forall a b. (a -> b) -> a -> b +bn forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] -concatMap (\(tag -tag, [F v x] -fs) -> forall a b. (a -> b) -> [a] -> [b] +concatMap (\(tag +tag, [F v x] +fs) -> forall a b. (a -> b) -> [a] -> [b] map (forall tag v x. tag -> F v x -> Bind tag v x SingleBind tag -tag) [F v x] -fs) forall a b. (a -> b) -> a -> b +tag) [F v x] +fs) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag [F v x] -bindGroup +bindGroup -instance (UnitTag tag, VarValTime v x t) => BreakLoopProblem (BusNetwork tag v x t) v x where - breakLoopOptions :: BusNetwork tag v x t -> [BreakLoop v x] -breakLoopOptions BusNetwork{Map tag (PU v x t) +instance (UnitTag tag, VarValTime v x t) => BreakLoopProblem (BusNetwork tag v x t) v x where + breakLoopOptions :: BusNetwork tag v x t -> [BreakLoop v x] +breakLoopOptions BusNetwork{Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +bnPus} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap forall u v x. BreakLoopProblem u v x => u -> [BreakLoop v x] breakLoopOptions forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [a] M.elems Map tag (PU v x t) -bnPus +bnPus - breakLoopDecision :: BusNetwork tag v x t -> BreakLoop v x -> BusNetwork tag v x t -breakLoopDecision bn :: BusNetwork tag v x t -bn@BusNetwork{Map tag [F v x] + breakLoopDecision :: BusNetwork tag v x t -> BreakLoop v x -> BusNetwork tag v x t +breakLoopDecision bn :: BusNetwork tag v x t +bn@BusNetwork{Map tag [F v x] bnBound :: Map tag [F v x] bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] -bnBound, Map tag (PU v x t) +bnBound, Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus} bl :: BreakLoop v x -bl@BreakLoop{} = - let (tag -puTag, [F v x] -boundToPU) = forall a. HasCallStack => Maybe a -> a +bnPus} bl :: BreakLoop v x +bl@BreakLoop{} = + let (tag +puTag, [F v x] +boundToPU) = forall a. HasCallStack => Maybe a -> a fromJust forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find (forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool @@ -1488,81 +1488,81 @@ Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoop BreakLoop v x -bl) forall b c a. (b -> c) -> (a -> b) -> a -> c +bl) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag [F v x] -bnBound - boundToPU' :: [F v x] -boundToPU' = forall {v} {x}. +bnBound + boundToPU' :: [F v x] +boundToPU' = forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoopIn BreakLoop v x -bl forall a. a -> [a] -> [a] +bl forall a. a -> [a] -> [a] : forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoopOut BreakLoop v x -bl forall a. a -> [a] -> [a] +bl forall a. a -> [a] -> [a] : ([F v x] -boundToPU forall a. Eq a => [a] -> [a] -> [a] +boundToPU forall a. Eq a => [a] -> [a] -> [a] L.\\ [forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoop BreakLoop v x -bl]) +bl]) in BusNetwork tag v x t -bn +bn { bnPus :: Map tag (PU v x t) bnPus = forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a M.adjust (forall u v x. BreakLoopProblem u v x => u -> BreakLoop v x -> u `breakLoopDecision` BreakLoop v x -bl) tag -puTag Map tag (PU v x t) -bnPus +bl) tag +puTag Map tag (PU v x t) +bnPus , bnBound :: Map tag [F v x] bnBound = forall k a. Ord k => k -> a -> Map k a -> Map k a M.insert tag -puTag [F v x] -boundToPU' Map tag [F v x] -bnBound +puTag [F v x] +boundToPU' Map tag [F v x] +bnBound } -instance (UnitTag tag, VarValTime v x t) => OptimizeAccumProblem (BusNetwork tag v x t) v x where - optimizeAccumOptions :: BusNetwork tag v x t -> [OptimizeAccum v x] -optimizeAccumOptions BusNetwork{[F v x] +instance (UnitTag tag, VarValTime v x t) => OptimizeAccumProblem (BusNetwork tag v x t) v x where + optimizeAccumOptions :: BusNetwork tag v x t -> [OptimizeAccum v x] +optimizeAccumOptions BusNetwork{[F v x] bnRemains :: [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains} = forall u v x. +bnRemains} = forall u v x. OptimizeAccumProblem u v x => u -> [OptimizeAccum v x] optimizeAccumOptions [F v x] -bnRemains +bnRemains - optimizeAccumDecision :: BusNetwork tag v x t -> OptimizeAccum v x -> BusNetwork tag v x t -optimizeAccumDecision bn :: BusNetwork tag v x t -bn@BusNetwork{[F v x] + optimizeAccumDecision :: BusNetwork tag v x t -> OptimizeAccum v x -> BusNetwork tag v x t +optimizeAccumDecision bn :: BusNetwork tag v x t +bn@BusNetwork{[F v x] bnRemains :: [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains, Process t (StepInfo v x t) +bnRemains, Process t (StepInfo v x t) bnProcess :: Process t (StepInfo v x t) bnProcess :: forall tag v x t. BusNetwork tag v x t -> Process t (StepInfo v x t) -bnProcess} oa :: OptimizeAccum v x -oa@OptimizeAccum{} = +bnProcess} oa :: OptimizeAccum v x +oa@OptimizeAccum{} = BusNetwork tag v x t -bn +bn { bnRemains :: [F v x] bnRemains = forall u v x. OptimizeAccumProblem u v x => u -> OptimizeAccum v x -> u optimizeAccumDecision [F v x] -bnRemains OptimizeAccum v x -oa +bnRemains OptimizeAccum v x +oa , bnProcess :: Process t (StepInfo v x t) bnProcess = forall {pu} {t} {v} {x} {a}. pu @@ -1570,8 +1570,8 @@ -> State (Schedule pu v x t) a -> Process t (StepInfo v x t) execScheduleWithProcess BusNetwork tag v x t -bn Process t (StepInfo v x t) -bnProcess forall a b. (a -> b) -> a -> b +bn Process t (StepInfo v x t) +bnProcess forall a b. (a -> b) -> a -> b $ do forall {pu} {v} {x} {t} {m :: * -> *} {ref}. (MonadState (Schedule pu v x t) m, Typeable ref, Show ref, @@ -1581,41 +1581,41 @@ I.singleton forall a b. (a -> b) -> a -> b $ forall u t. NextTick u t => u -> t nextTick BusNetwork tag v x t -bn) OptimizeAccum v x -oa +bn) OptimizeAccum v x +oa } -instance (UnitTag tag, VarValTime v x t) => ConstantFoldingProblem (BusNetwork tag v x t) v x where - constantFoldingOptions :: BusNetwork tag v x t -> [ConstantFolding v x] -constantFoldingOptions BusNetwork{[F v x] +instance (UnitTag tag, VarValTime v x t) => ConstantFoldingProblem (BusNetwork tag v x t) v x where + constantFoldingOptions :: BusNetwork tag v x t -> [ConstantFolding v x] +constantFoldingOptions BusNetwork{[F v x] bnRemains :: [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains} = forall u v x. +bnRemains} = forall u v x. ConstantFoldingProblem u v x => u -> [ConstantFolding v x] constantFoldingOptions [F v x] -bnRemains +bnRemains - constantFoldingDecision :: BusNetwork tag v x t -> ConstantFolding v x -> BusNetwork tag v x t -constantFoldingDecision bn :: BusNetwork tag v x t -bn@BusNetwork{[F v x] + constantFoldingDecision :: BusNetwork tag v x t -> ConstantFolding v x -> BusNetwork tag v x t +constantFoldingDecision bn :: BusNetwork tag v x t +bn@BusNetwork{[F v x] bnRemains :: [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains, Process t (StepInfo v x t) +bnRemains, Process t (StepInfo v x t) bnProcess :: Process t (StepInfo v x t) bnProcess :: forall tag v x t. BusNetwork tag v x t -> Process t (StepInfo v x t) -bnProcess} cf :: ConstantFolding v x -cf@ConstantFolding{} = +bnProcess} cf :: ConstantFolding v x +cf@ConstantFolding{} = BusNetwork tag v x t -bn +bn { bnRemains :: [F v x] bnRemains = forall u v x. ConstantFoldingProblem u v x => u -> ConstantFolding v x -> u constantFoldingDecision [F v x] -bnRemains ConstantFolding v x -cf +bnRemains ConstantFolding v x +cf , bnProcess :: Process t (StepInfo v x t) bnProcess = forall {pu} {t} {v} {x} {a}. pu @@ -1623,8 +1623,8 @@ -> State (Schedule pu v x t) a -> Process t (StepInfo v x t) execScheduleWithProcess BusNetwork tag v x t -bn Process t (StepInfo v x t) -bnProcess forall a b. (a -> b) -> a -> b +bn Process t (StepInfo v x t) +bnProcess forall a b. (a -> b) -> a -> b $ do forall {pu} {v} {x} {t} {m :: * -> *} {ref}. (MonadState (Schedule pu v x t) m, Typeable ref, Show ref, @@ -1634,23 +1634,23 @@ I.singleton forall a b. (a -> b) -> a -> b $ forall u t. NextTick u t => u -> t nextTick BusNetwork tag v x t -bn) ConstantFolding v x -cf +bn) ConstantFolding v x +cf } -instance (UnitTag tag, VarValTime v x t) => ResolveDeadlockProblem (BusNetwork tag v x t) v x where - resolveDeadlockOptions :: BusNetwork tag v x t -> [ResolveDeadlock v x] -resolveDeadlockOptions bn :: BusNetwork tag v x t -bn@BusNetwork{Map tag (PU v x t) +instance (UnitTag tag, VarValTime v x t) => ResolveDeadlockProblem (BusNetwork tag v x t) v x where + resolveDeadlockOptions :: BusNetwork tag v x t -> [ResolveDeadlock v x] +resolveDeadlockOptions bn :: BusNetwork tag v x t +bn@BusNetwork{Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus, Map tag [F v x] +bnPus, Map tag [F v x] bnBound :: Map tag [F v x] bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] -bnBound} = - let prepareResolve :: S.Set v -> [ResolveDeadlock v x] - prepareResolve :: Set v -> [ResolveDeadlock v x] -prepareResolve = +bnBound} = + let prepareResolve :: S.Set v -> [ResolveDeadlock v x] + prepareResolve :: Set v -> [ResolveDeadlock v x] +prepareResolve = forall a b. (a -> b) -> [a] -> [b] map forall v x. (Var v, Val x) => Set v -> ResolveDeadlock v x resolveDeadlock @@ -1664,77 +1664,77 @@ . forall a. Set a -> Bool S.null) forall b c a. (b -> c) -> (a -> b) -> a -> c -. ( \Set v -lockedVs -> +. ( \Set v +lockedVs -> if forall a. Set a -> Bool S.null Set v -lockedVs +lockedVs then forall a. Set a S.empty else forall a. (a -> Bool) -> Set a -> Set a S.filter (Bool -> Bool not forall b c a. (b -> c) -> (a -> b) -> a -> c . (Set v -lockedVs forall a. Ord a => Set a -> Set a -> Bool +lockedVs forall a. Ord a => Set a -> Set a -> Bool `S.disjoint`)) forall a b. (a -> b) -> a -> b $ forall a. Set a -> Set (Set a) S.powerSet (Map v (Set v) -var2endpointRole forall k a. Ord k => Map k a -> k -> a +var2endpointRole forall k a. Ord k => Map k a -> k -> a M.! forall {c}. Set c -> c oneOf Set v -lockedVs) +lockedVs) ) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. (a -> Bool) -> Set a -> Set a S.filter (Int -> v -> Bool -isBufferRepetionOK Int +isBufferRepetionOK Int maxBufferStack) - isBufferRepetionOK :: Int -> v -> Bool -isBufferRepetionOK Int + isBufferRepetionOK :: Int -> v -> Bool +isBufferRepetionOK Int 0 v _ = Bool False - isBufferRepetionOK Int -n v -v + isBufferRepetionOK Int +n v +v | forall v. Suffix v => v -> v bufferSuffix v -v forall a. Ord a => a -> Set a -> Bool +v forall a. Ord a => a -> Set a -> Bool `S.notMember` forall a v. Variables a v => a -> Set v variables BusNetwork tag v x t -bn = Bool +bn = Bool True | Bool otherwise = Int -> v -> Bool -isBufferRepetionOK (Int -n forall a. Num a => a -> a -> a +isBufferRepetionOK (Int +n forall a. Num a => a -> a -> a - Int 1) (forall v. Suffix v => v -> v bufferSuffix v -v) +v) - selfSending :: [ResolveDeadlock v x] -selfSending = + selfSending :: [ResolveDeadlock v x] +selfSending = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap - (\(tag -tag, [F v x] -fs) -> Set v -> [ResolveDeadlock v x] -prepareResolve (forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 + (\(tag +tag, [F v x] +fs) -> Set v -> [ResolveDeadlock v x] +prepareResolve (forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall f v. Function f v => f -> Set v inputs [F v x] -fs forall a. Ord a => Set a -> Set a -> Set a +fs forall a. Ord a => Set a -> Set a -> Set a `S.intersection` tag -> Set v -puOutputs tag -tag)) +puOutputs tag +tag)) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag [F v x] -bnBound +bnBound - allPULocks :: [(tag, [Lock v])] -allPULocks = forall a b. (a -> b) -> [a] -> [b] + allPULocks :: [(tag, [Lock v])] +allPULocks = forall a b. (a -> b) -> [a] -> [b] map (forall (p :: * -> * -> *) b c a. Bifunctor p => (b -> c) -> p a b -> p a c @@ -1742,75 +1742,75 @@ locks) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus +bnPus - resolveLocks :: [ResolveDeadlock v x] -resolveLocks = + resolveLocks :: [ResolveDeadlock v x] +resolveLocks = forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ Set v -> [ResolveDeadlock v x] -prepareResolve forall a b. (a -> b) -> a -> b +prepareResolve forall a b. (a -> b) -> a -> b $ forall a. a -> Set a S.singleton v -lockBy - | (tag -tag, [Lock v] -ls) <- [(tag, [Lock v])] -allPULocks - , Lock{v +lockBy + | (tag +tag, [Lock v] +ls) <- [(tag, [Lock v])] +allPULocks + , Lock{v lockBy :: forall v. Lock v -> v lockBy :: v -lockBy, v +lockBy, v locked :: forall v. Lock v -> v locked :: v locked} <- [Lock v] -ls +ls , v -lockBy forall a. Ord a => a -> Set a -> Bool +lockBy forall a. Ord a => a -> Set a -> Bool `S.member` Set v -maybeSended - , let reversedLock :: Lock v -reversedLock = Lock{lockBy :: v +maybeSended + , let reversedLock :: Lock v +reversedLock = Lock{lockBy :: v lockBy = v -locked, locked :: v +locked, locked :: v locked = v -lockBy} +lockBy} , forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool -any (\(tag -t, [Lock v] -puLocks) -> tag -tag forall a. Eq a => a -> a -> Bool +any (\(tag +t, [Lock v] +puLocks) -> tag +tag forall a. Eq a => a -> a -> Bool /= tag -t Bool -> Bool -> Bool +t Bool -> Bool -> Bool && Lock v -reversedLock forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +reversedLock forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [Lock v] -puLocks) [(tag, [Lock v])] -allPULocks +puLocks) [(tag, [Lock v])] +allPULocks ] in forall a. Eq a => [a] -> [a] L.nub forall a b. (a -> b) -> a -> b $ [ResolveDeadlock v x] -selfSending forall a. [a] -> [a] -> [a] +selfSending forall a. [a] -> [a] -> [a] ++ [ResolveDeadlock v x] -resolveLocks +resolveLocks where - endPointRoles :: Map tag [EndpointRole v] -endPointRoles = forall a b k. (a -> b) -> Map k a -> Map k b -M.map (\PU v x t -pu -> forall a b. (a -> b) -> [a] -> [b] + endPointRoles :: Map tag [EndpointRole v] +endPointRoles = forall a b k. (a -> b) -> Map k a -> Map k b +M.map (\PU v x t +pu -> forall a b. (a -> b) -> [a] -> [b] map forall v tp. EndpointSt v tp -> EndpointRole v epRole forall a b. (a -> b) -> a -> b $ forall u v t. EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] endpointOptions PU v x t -pu) Map tag (PU v x t) -bnPus +pu) Map tag (PU v x t) +bnPus - puOutputs :: tag -> Set v -puOutputs tag -tag = + puOutputs :: tag -> Set v +puOutputs tag +tag = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables forall a b. (a -> b) -> a -> b @@ -1822,30 +1822,30 @@ False) forall a b. (a -> b) -> a -> b $ Map tag [EndpointRole v] -endPointRoles forall k a. Ord k => Map k a -> k -> a +endPointRoles forall k a. Ord k => Map k a -> k -> a M.! tag -tag +tag - var2endpointRole :: Map v (Set v) -var2endpointRole = + var2endpointRole :: Map v (Set v) +var2endpointRole = forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap ( \case - (Source Set v -vs) -> [(v -v, Set v -vs) | v -v <- forall a. Set a -> [a] + (Source Set v +vs) -> [(v +v, Set v +vs) | v +v <- forall a. Set a -> [a] S.elems Set v -vs] - (Target v -v) -> [(v -v, forall a. a -> Set a +vs] + (Target v +v) -> [(v +v, forall a. a -> Set a S.singleton v -v)] +v)] ) forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t [a] -> [a] @@ -1853,40 +1853,40 @@ forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [a] M.elems Map tag [EndpointRole v] -endPointRoles +endPointRoles - maybeSended :: Set v -maybeSended = forall k a. Map k a -> Set k + maybeSended :: Set v +maybeSended = forall k a. Map k a -> Set k M.keysSet Map v (Set v) -var2endpointRole +var2endpointRole - resolveDeadlockDecision :: BusNetwork tag v x t -> ResolveDeadlock v x -> BusNetwork tag v x t + resolveDeadlockDecision :: BusNetwork tag v x t -> ResolveDeadlock v x -> BusNetwork tag v x t resolveDeadlockDecision - bn :: BusNetwork tag v x t -bn@BusNetwork{[F v x] + bn :: BusNetwork tag v x t +bn@BusNetwork{[F v x] bnRemains :: [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains, Map tag [F v x] +bnRemains, Map tag [F v x] bnBound :: Map tag [F v x] bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] -bnBound, Map tag (PU v x t) +bnBound, Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus, Process t (StepInfo v x t) +bnPus, Process t (StepInfo v x t) bnProcess :: Process t (StepInfo v x t) bnProcess :: forall tag v x t. BusNetwork tag v x t -> Process t (StepInfo v x t) -bnProcess} - ref :: ResolveDeadlock v x -ref@ResolveDeadlock{F v x +bnProcess} + ref :: ResolveDeadlock v x +ref@ResolveDeadlock{F v x newBuffer :: forall v x. ResolveDeadlock v x -> F v x newBuffer :: F v x -newBuffer, Changeset v +newBuffer, Changeset v changeset :: forall v x. ResolveDeadlock v x -> Changeset v changeset :: Changeset v changeset} = - let (tag -tag, [F v x] + let (tag +tag, [F v x] _) = forall a. HasCallStack => Maybe a -> a fromJust @@ -1894,45 +1894,45 @@ $ forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find (\(tag -_, [F v x] -f) -> Bool -> Bool +_, [F v x] +f) -> Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null forall a b. (a -> b) -> a -> b $ forall a. Ord a => Set a -> Set a -> Set a S.intersection (forall f v. Function f v => f -> Set v outputs F v x -newBuffer) forall a b. (a -> b) -> a -> b +newBuffer) forall a b. (a -> b) -> a -> b $ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall f v. Function f v => f -> Set v outputs [F v x] -f) +f) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag [F v x] -bnBound +bnBound in BusNetwork tag v x t -bn +bn { bnRemains :: [F v x] bnRemains = F v x -newBuffer forall a. a -> [a] -> [a] +newBuffer forall a. a -> [a] -> [a] : forall f diff. Patch f diff => diff -> f -> f patch Changeset v -changeset [F v x] -bnRemains +changeset [F v x] +bnRemains , bnPus :: Map tag (PU v x t) bnPus = forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a M.adjust (forall f diff. Patch f diff => diff -> f -> f patch Changeset v -changeset) tag -tag Map tag (PU v x t) -bnPus +changeset) tag +tag Map tag (PU v x t) +bnPus , bnBound :: Map tag [F v x] bnBound = forall a b k. (a -> b) -> Map k a -> Map k b M.map (forall f diff. Patch f diff => diff -> f -> f patch Changeset v -changeset) Map tag [F v x] -bnBound +changeset) Map tag [F v x] +bnBound , bnProcess :: Process t (StepInfo v x t) bnProcess = forall {pu} {t} {v} {x} {a}. pu @@ -1940,8 +1940,8 @@ -> State (Schedule pu v x t) a -> Process t (StepInfo v x t) execScheduleWithProcess BusNetwork tag v x t -bn Process t (StepInfo v x t) -bnProcess forall a b. (a -> b) -> a -> b +bn Process t (StepInfo v x t) +bnProcess forall a b. (a -> b) -> a -> b $ do forall {pu} {v} {x} {t} {m :: * -> *} {ref}. (MonadState (Schedule pu v x t) m, Typeable ref, Show ref, @@ -1951,131 +1951,131 @@ I.singleton forall a b. (a -> b) -> a -> b $ forall u t. NextTick u t => u -> t nextTick BusNetwork tag v x t -bn) ResolveDeadlock v x -ref +bn) ResolveDeadlock v x +ref } -instance UnitTag tag => AllocationProblem (BusNetwork tag v x t) tag where - allocationOptions :: BusNetwork tag v x t -> [Allocation tag] -allocationOptions BusNetwork{tag +instance UnitTag tag => AllocationProblem (BusNetwork tag v x t) tag where + allocationOptions :: BusNetwork tag v x t -> [Allocation tag] +allocationOptions BusNetwork{tag bnName :: tag bnName :: forall tag v x t. BusNetwork tag v x t -> tag -bnName, [F v x] +bnName, [F v x] bnRemains :: [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] -bnRemains, Map tag (PUPrototype tag v x t) +bnRemains, Map tag (PUPrototype tag v x t) bnPUPrototypes :: Map tag (PUPrototype tag v x t) bnPUPrototypes :: forall tag v x t. BusNetwork tag v x t -> Map tag (PUPrototype tag v x t) -bnPUPrototypes} = +bnPUPrototypes} = forall a b. (a -> b) -> [a] -> [b] map tag -> Allocation tag -toOptions forall a b. (a -> b) -> a -> b +toOptions forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [k] M.keys forall a b. (a -> b) -> a -> b $ forall a k. (a -> Bool) -> Map k a -> Map k a -M.filter (\PUPrototype{pu +M.filter (\PUPrototype{pu pProto :: pu pProto :: () -pProto} -> forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool +pProto} -> forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any (forall {b} {v} {x} {t}. ProcessorUnit b v x t => F v x -> b -> Bool `allowToProcess` pu -pProto) [F v x] -bnRemains) Map tag (PUPrototype tag v x t) -bnPUPrototypes +pProto) [F v x] +bnRemains) Map tag (PUPrototype tag v x t) +bnPUPrototypes where - toOptions :: tag -> Allocation tag -toOptions tag -processUnitTag = + toOptions :: tag -> Allocation tag +toOptions tag +processUnitTag = Allocation { networkTag :: tag networkTag = tag -bnName +bnName , tag processUnitTag :: tag processUnitTag :: tag processUnitTag } - allocationDecision :: BusNetwork tag v x t -> Allocation tag -> BusNetwork tag v x t -allocationDecision bn :: BusNetwork tag v x t -bn@BusNetwork{Map tag (PUPrototype tag v x t) + allocationDecision :: BusNetwork tag v x t -> Allocation tag -> BusNetwork tag v x t +allocationDecision bn :: BusNetwork tag v x t +bn@BusNetwork{Map tag (PUPrototype tag v x t) bnPUPrototypes :: Map tag (PUPrototype tag v x t) bnPUPrototypes :: forall tag v x t. BusNetwork tag v x t -> Map tag (PUPrototype tag v x t) -bnPUPrototypes, Map tag (PU v x t) +bnPUPrototypes, Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus, Process t (StepInfo v x t) +bnPus, Process t (StepInfo v x t) bnProcess :: Process t (StepInfo v x t) bnProcess :: forall tag v x t. BusNetwork tag v x t -> Process t (StepInfo v x t) -bnProcess} alloc :: Allocation tag -alloc@Allocation{tag +bnProcess} alloc :: Allocation tag +alloc@Allocation{tag networkTag :: tag networkTag :: forall tag. Allocation tag -> tag -networkTag, tag +networkTag, tag processUnitTag :: tag processUnitTag :: forall tag. Allocation tag -> tag -processUnitTag} = - let tag :: tag -tag = tag -networkTag forall a. Semigroup a => a -> a -> a +processUnitTag} = + let tag :: tag +tag = tag +networkTag forall a. Semigroup a => a -> a -> a <> tag "_" forall a. Semigroup a => a -> a -> a <> forall tag. UnitTag tag => tag -> [Char] -> tag fromTemplate tag -processUnitTag (forall a. Show a => a -> [Char] +processUnitTag (forall a. Show a => a -> [Char] show (forall (t :: * -> *) a. Foldable t => t a -> Int length Map tag (PU v x t) -bnPus)) - prototype :: PUPrototype tag v x t -prototype = +bnPus)) + prototype :: PUPrototype tag v x t +prototype = if forall k a. Ord k => k -> Map k a -> Bool M.member tag -processUnitTag Map tag (PUPrototype tag v x t) -bnPUPrototypes +processUnitTag Map tag (PUPrototype tag v x t) +bnPUPrototypes then Map tag (PUPrototype tag v x t) -bnPUPrototypes forall k a. Ord k => Map k a -> k -> a +bnPUPrototypes forall k a. Ord k => Map k a -> k -> a M.! tag -processUnitTag +processUnitTag else forall a. HasCallStack => [Char] -> a error forall a b. (a -> b) -> a -> b $ [Char] "No suitable prototype for the tag (" forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> [Char] toString tag -processUnitTag forall a. Semigroup a => a -> a -> a +processUnitTag forall a. Semigroup a => a -> a -> a <> [Char] ")" - addPU :: tag -> PUPrototype tag v x t -> BusNetwork tag v x t -addPU tag -t PUPrototype{pu + addPU :: tag -> PUPrototype tag v x t -> BusNetwork tag v x t +addPU tag +t PUPrototype{pu pProto :: pu pProto :: () -pProto, IOPorts pu +pProto, IOPorts pu pIOPorts :: () pIOPorts :: IOPorts pu pIOPorts} = forall k v x t a. BusNetwork k v x t -> State (BuilderSt k v x t) a -> BusNetwork k v x t modifyNetwork BusNetwork tag v x t -bn forall a b. (a -> b) -> a -> b +bn forall a b. (a -> b) -> a -> b $ do forall tag v x t (m :: * -> *) pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => tag -> pu -> IOPorts pu -> m () addCustom tag -t pu -pProto IOPorts pu -pIOPorts - nBn :: BusNetwork tag v x t -nBn = tag -> PUPrototype tag v x t -> BusNetwork tag v x t -addPU tag -tag PUPrototype tag v x t -prototype +t pu +pProto IOPorts pu +pIOPorts + nBn :: BusNetwork tag v x t +nBn = tag -> PUPrototype tag v x t -> BusNetwork tag v x t +addPU tag +tag PUPrototype tag v x t +prototype in BusNetwork tag v x t -nBn +nBn { bnProcess :: Process t (StepInfo v x t) bnProcess = forall {pu} {t} {v} {x} {a}. pu @@ -2083,69 +2083,69 @@ -> State (Schedule pu v x t) a -> Process t (StepInfo v x t) execScheduleWithProcess BusNetwork tag v x t -bn Process t (StepInfo v x t) -bnProcess forall a b. (a -> b) -> a -> b +bn Process t (StepInfo v x t) +bnProcess forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *} {a}. (MonadState (Schedule pu v x t) m, Typeable a, Show a, Eq a) => a -> m [Int] scheduleAllocation Allocation tag -alloc +alloc , bnPUPrototypes :: Map tag (PUPrototype tag v x t) bnPUPrototypes = if forall tag. UnitTag tag => tag -> Bool isTemplate tag -processUnitTag +processUnitTag then Map tag (PUPrototype tag v x t) -bnPUPrototypes +bnPUPrototypes else forall k a. Ord k => k -> Map k a -> Map k a M.delete tag -processUnitTag Map tag (PUPrototype tag v x t) -bnPUPrototypes +processUnitTag Map tag (PUPrototype tag v x t) +bnPUPrototypes } -------------------------------------------------------------------------- controlSignalLiteral :: src -> dst -controlSignalLiteral src -ix = [i|control_bus[#{ ix }]|] +controlSignalLiteral src +ix = [i|control_bus[#{ ix }]|] -- | Add binding to Map tag [F v x] dict registerBinding :: k -> a -> Map k [a] -> Map k [a] -registerBinding k -tag a -f Map k [a] -dict = +registerBinding k +tag a +f Map k [a] +dict = forall k a. Ord k => (Maybe a -> Maybe a) -> k -> Map k a -> Map k a M.alter (forall b a. b -> (a -> b) -> Maybe a -> b maybe (forall a. a -> Maybe a Just [a -f]) (forall a. a -> Maybe a +f]) (forall a. a -> Maybe a Just forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] :))) k -tag Map k [a] -dict +tag Map k [a] +dict programTicks :: u -> [a] -programTicks u -bn = [-a +programTicks u +bn = [-a 1 .. forall u t. NextTick u t => u -> t nextTick u -bn] +bn] bnExternalPorts :: Map k (PU v x t) -> [(k, ([Text], [Text], [Text]))] -bnExternalPorts Map k (PU v x t) -pus = +bnExternalPorts Map k (PU v x t) +pus = forall k a. Map k a -> [(k, a)] M.assocs forall a b. (a -> b) -> a -> b $ forall a b k. (a -> b) -> Map k a -> Map k b M.map - ( \PU v x t -pu -> + ( \PU v x t +pu -> ( forall a b. (a -> b) -> [a] -> [b] map InputPortTag -> Text inputPortTag forall a b. (a -> b) -> a -> b @@ -2153,7 +2153,7 @@ S.toList forall a b. (a -> b) -> a -> b $ forall {v} {x} {t}. PU v x t -> Set InputPortTag puInputPorts PU v x t -pu +pu , forall a b. (a -> b) -> [a] -> [b] map OutputPortTag -> Text outputPortTag forall a b. (a -> b) -> a -> b @@ -2161,7 +2161,7 @@ S.toList forall a b. (a -> b) -> a -> b $ forall {v} {x} {t}. PU v x t -> Set OutputPortTag puOutputPorts PU v x t -pu +pu , forall a b. (a -> b) -> [a] -> [b] map InoutPortTag -> Text inoutPortTag forall a b. (a -> b) -> a -> b @@ -2169,63 +2169,63 @@ S.toList forall a b. (a -> b) -> a -> b $ forall {v} {x} {t}. PU v x t -> Set InoutPortTag puInOutPorts PU v x t -pu +pu ) ) Map k (PU v x t) -pus +pus externalPortsDecl :: t (a, ([Text], [Text], [Text])) -> [Text] -externalPortsDecl t (a, ([Text], [Text], [Text])) -ports = +externalPortsDecl t (a, ([Text], [Text], [Text])) +ports = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap - ( \(a -tag, ([Text] -is, [Text] -os, [Text] -ios)) -> + ( \(a +tag, ([Text] +is, [Text] +os, [Text] +ios)) -> forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ [Text "// external ports for: " forall a. Semigroup a => a -> a -> a <> forall {a}. ToString a => a -> Text toText a -tag] +tag] , forall a b. (a -> b) -> [a] -> [b] map (Text ", input " forall a. Semigroup a => a -> a -> a <>) [Text] -is +is , forall a b. (a -> b) -> [a] -> [b] map (Text ", output " forall a. Semigroup a => a -> a -> a <>) [Text] -os +os , forall a b. (a -> b) -> [a] -> [b] map (Text ", inout " forall a. Semigroup a => a -> a -> a <>) [Text] -ios +ios ] ) t (a, ([Text], [Text], [Text])) -ports +ports -instance (UnitTag tag, VarValTime v x t) => TargetSystemComponent (BusNetwork tag v x t) where - moduleName :: Text -> BusNetwork tag v x t -> Text -moduleName Text -_tag BusNetwork{tag +instance (UnitTag tag, VarValTime v x t) => TargetSystemComponent (BusNetwork tag v x t) where + moduleName :: Text -> BusNetwork tag v x t -> Text +moduleName Text +_tag BusNetwork{tag bnName :: tag bnName :: forall tag v x t. BusNetwork tag v x t -> tag -bnName} = forall {a}. ToString a => a -> Text +bnName} = forall {a}. ToString a => a -> Text toText tag -bnName +bnName - hardware :: Text -> BusNetwork tag v x t -> Implementation -hardware Text -tag pu :: BusNetwork tag v x t -pu@BusNetwork{tag + hardware :: Text -> BusNetwork tag v x t -> Implementation +hardware Text +tag pu :: BusNetwork tag v x t +pu@BusNetwork{tag Int [F v x] Map tag [F v x] @@ -2255,24 +2255,24 @@ bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] bnName :: forall tag v x t. BusNetwork tag v x t -> tag -..} = - let ([Verilog] -instances, [(Text, Text)] -valuesRegs) = forall {a} {v} {x} {t}. +..} = + let ([Verilog] +instances, [(Text, Text)] +valuesRegs) = forall {a} {v} {x} {t}. ToString a => [Verilog] -> [(Text, Text)] -> [(a, PU v x t)] -> ([Verilog], [(Text, Text)]) -renderInstance [] [] forall a b. (a -> b) -> a -> b +renderInstance [] [] forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus - mn :: Text -mn = forall pu. TargetSystemComponent pu => Text -> pu -> Text +bnPus + mn :: Text +mn = forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -tag BusNetwork tag v x t -pu - iml :: Text -iml = +tag BusNetwork tag v x t +pu + iml :: Text +iml = [__i| module #{ mn } \# ( parameter DATA_WIDTH = #{ dataWidth (def :: x) } @@ -2335,16 +2335,16 @@ Just forall a b. (a -> b) -> a -> b $ forall a. ToString a => a -> [Char] toString Text -mn) forall a b. (a -> b) -> a -> b +mn) forall a b. (a -> b) -> a -> b $ [ [Char] -> Text -> Implementation Immediate (forall a. ToString a => a -> [Char] toString forall a b. (a -> b) -> a -> b $ Text -mn forall a. Semigroup a => a -> a -> a +mn forall a. Semigroup a => a -> a -> a <> Text ".v") Text -iml +iml , [Char] -> Implementation FromLibrary [Char] "pu_simple_control.v" @@ -2360,82 +2360,82 @@ first forall {a}. ToString a => a -> Text toText) (forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus) +bnPus) where - regInstance :: src -> dst -regInstance src -t = + regInstance :: src -> dst +regInstance src +t = [__i| wire [DATA_WIDTH-1:0] #{ t }_data_out; wire [ATTR_WIDTH-1:0] #{ t }_attr_out; |] - renderInstance :: [Verilog] + renderInstance :: [Verilog] -> [(Text, Text)] -> [(a, PU v x t)] -> ([Verilog], [(Text, Text)]) -renderInstance [Verilog] -insts [(Text, Text)] -regs [] = (forall a. [a] -> [a] +renderInstance [Verilog] +insts [(Text, Text)] +regs [] = (forall a. [a] -> [a] reverse [Verilog] -insts, forall a. [a] -> [a] +insts, forall a. [a] -> [a] reverse [(Text, Text)] -regs) - renderInstance [Verilog] -insts [(Text, Text)] -regs ((a -t, PU{pu +regs) + renderInstance [Verilog] +insts [(Text, Text)] +regs ((a +t, PU{pu unit :: pu unit :: () -unit, UnitEnv pu +unit, UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv}) : [(a, PU v x t)] -xs) = - let inst :: Verilog -inst = forall pu. +uEnv}) : [(a, PU v x t)] +xs) = + let inst :: Verilog +inst = forall pu. TargetSystemComponent pu => Text -> pu -> UnitEnv pu -> Verilog hardwareInstance (forall {a}. ToString a => a -> Text toText a -t) pu -unit UnitEnv pu -uEnv - insts' :: [Verilog] -insts' = Verilog -inst forall a. a -> [a] -> [a] +t) pu +unit UnitEnv pu +uEnv + insts' :: [Verilog] +insts' = Verilog +inst forall a. a -> [a] -> [a] : forall {dst} {src}. (Builder (IsCustomSink dst) dst ~ Builder (IsCustomSink dst) dst, Interpolatable (IsCustomSink dst) src dst) => src -> dst -regInstance (forall {a}. ToString a => a -> Text +regInstance (forall {a}. ToString a => a -> Text toText a -t) forall a. a -> [a] -> [a] +t) forall a. a -> [a] -> [a] : [Verilog] -insts - regs' :: [(Text, Text)] -regs' = (forall {a}. ToString a => a -> Text +insts + regs' :: [(Text, Text)] +regs' = (forall {a}. ToString a => a -> Text toText a -t forall a. Semigroup a => a -> a -> a +t forall a. Semigroup a => a -> a -> a <> Text "_attr_out", forall {a}. ToString a => a -> Text toText a -t forall a. Semigroup a => a -> a -> a +t forall a. Semigroup a => a -> a -> a <> Text "_data_out") forall a. a -> [a] -> [a] : [(Text, Text)] -regs +regs in [Verilog] -> [(Text, Text)] -> [(a, PU v x t)] -> ([Verilog], [(Text, Text)]) -renderInstance [Verilog] -insts' [(Text, Text)] -regs' [(a, PU v x t)] -xs +renderInstance [Verilog] +insts' [(Text, Text)] +regs' [(a, PU v x t)] +xs - software :: Text -> BusNetwork tag v x t -> Implementation -software Text -tag pu :: BusNetwork tag v x t -pu@BusNetwork{bnProcess :: forall tag v x t. + software :: Text -> BusNetwork tag v x t -> Implementation +software Text +tag pu :: BusNetwork tag v x t +pu@BusNetwork{bnProcess :: forall tag v x t. BusNetwork tag v x t -> Process t (StepInfo v x t) -bnProcess = Process{}, tag +bnProcess = Process{}, tag Int [F v x] Map tag [F v x] @@ -2461,9 +2461,9 @@ bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] bnRemains :: forall tag v x t. BusNetwork tag v x t -> [F v x] bnName :: forall tag v x t. BusNetwork tag v x t -> tag -..} = - let subSW :: [Implementation] -subSW = forall a b. (a -> b) -> [a] -> [b] +..} = + let subSW :: [Implementation] +subSW = forall a b. (a -> b) -> [a] -> [b] map (forall a b c. (a -> b -> c) -> (a, b) -> c uncurry forall pu. TargetSystemComponent pu => Text -> pu -> Implementation software forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -2474,55 +2474,55 @@ toText) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus - sw :: [Implementation] -sw = [[Char] -> Text -> Implementation +bnPus + sw :: [Implementation] +sw = [[Char] -> Text -> Implementation Immediate (forall a. ToString a => a -> [Char] toString forall a b. (a -> b) -> a -> b $ Text -mn forall a. Semigroup a => a -> a -> a +mn forall a. Semigroup a => a -> a -> a <> Text ".dump") forall a b. (a -> b) -> a -> b $ [Char] -> Text T.pack [Char] -memoryDump] +memoryDump] in Maybe [Char] -> [Implementation] -> Implementation Aggregate (forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall a. ToString a => a -> [Char] toString Text -mn) forall a b. (a -> b) -> a -> b +mn) forall a b. (a -> b) -> a -> b $ [Implementation] -subSW forall a. [a] -> [a] -> [a] +subSW forall a. [a] -> [a] -> [a] ++ [Implementation] -sw +sw where - mn :: Text -mn = forall pu. TargetSystemComponent pu => Text -> pu -> Text + mn :: Text +mn = forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -tag BusNetwork tag v x t -pu +tag BusNetwork tag v x t +pu -- Nop operation sets for all processor units at address 0. It is a -- safe state of the processor which is selected when rst signal is -- active. - memoryDump :: [Char] -memoryDump = [[Char]] -> [Char] + memoryDump :: [Char] +memoryDump = [[Char]] -> [Char] unlines forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall {t :: * -> *} {a}. (Foldable t, Show a) => t a -> [Char] values2dump forall b c a. (b -> c) -> (a -> b) -> a -> c . forall {tag} {v} {x} {t}. Microcode (BusNetwork tag v x t) -> [SignalValue] -values forall b c a. (b -> c) -> (a -> b) -> a -> c +values forall b c a. (b -> c) -> (a -> b) -> a -> c . forall pu t. ByTime pu t => pu -> t -> Microcode pu microcodeAt BusNetwork tag v x t -pu) forall a b. (a -> b) -> a -> b +pu) forall a b. (a -> b) -> a -> b $ forall {a} {u}. (Num a, NextTick u a, Enum a) => u -> [a] programTicks BusNetwork tag v x t -pu - values :: Microcode (BusNetwork tag v x t) -> [SignalValue] -values (BusNetworkMC Map SignalTag SignalValue -arr) = +pu + values :: Microcode (BusNetwork tag v x t) -> [SignalValue] +values (BusNetworkMC Map SignalTag SignalValue +arr) = forall a. [a] -> [a] reverse forall a b. (a -> b) -> a -> b $ @@ -2531,10 +2531,10 @@ snd forall a b. (a -> b) -> a -> b $ forall b a. Ord b => (a -> b) -> [a] -> [a] -L.sortOn ((\[Char] -ix -> forall a. Read a => [Char] -> a +L.sortOn ((\[Char] +ix -> forall a. Read a => [Char] -> a read [Char] -ix :: Int) forall b c a. (b -> c) -> (a -> b) -> a -> c +ix :: Int) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [a] -> a head forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. HasCallStack => Maybe a -> a @@ -2552,53 +2552,53 @@ $ forall k a. Map k a -> [(k, a)] M.assocs Map SignalTag SignalValue -arr +arr - hardwareInstance :: Text + hardwareInstance :: Text -> BusNetwork tag v x t -> UnitEnv (BusNetwork tag v x t) -> Verilog -hardwareInstance Text -tag BusNetwork{} UnitEnv{Text +hardwareInstance Text +tag BusNetwork{} UnitEnv{Text sigRst :: forall m. UnitEnv m -> Text sigRst :: Text -sigRst, Text +sigRst, Text sigClk :: forall m. UnitEnv m -> Text sigClk :: Text sigClk, ioPorts :: forall m. UnitEnv m -> Maybe (IOPorts m) -ioPorts = Just IOPorts (BusNetwork tag v x t) -ioPorts} - | let io2v :: src -> dst -io2v src -n = [i|, .#{ n }( #{ n } )|] - is :: [Doc Any] -is = forall a b. (a -> b) -> [a] -> [b] +ioPorts = Just IOPorts (BusNetwork tag v x t) +ioPorts} + | let io2v :: src -> dst +io2v src +n = [i|, .#{ n }( #{ n } )|] + is :: [Doc Any] +is = forall a b. (a -> b) -> [a] -> [b] map (forall {dst} {src}. (Builder (IsCustomSink dst) dst ~ Builder (IsCustomSink dst) dst, Interpolatable (IsCustomSink dst) src dst) => src -> dst -io2v forall b c a. (b -> c) -> (a -> b) -> a -> c +io2v forall b c a. (b -> c) -> (a -> b) -> a -> c . InputPortTag -> Text inputPortTag) forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.toList forall a b. (a -> b) -> a -> b $ forall pu. IOConnected pu => IOPorts pu -> Set InputPortTag inputPorts IOPorts (BusNetwork tag v x t) -ioPorts - os :: [Doc Any] -os = forall a b. (a -> b) -> [a] -> [b] +ioPorts + os :: [Doc Any] +os = forall a b. (a -> b) -> [a] -> [b] map (forall {dst} {src}. (Builder (IsCustomSink dst) dst ~ Builder (IsCustomSink dst) dst, Interpolatable (IsCustomSink dst) src dst) => src -> dst -io2v forall b c a. (b -> c) -> (a -> b) -> a -> c +io2v forall b c a. (b -> c) -> (a -> b) -> a -> c . OutputPortTag -> Text outputPortTag) forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.toList forall a b. (a -> b) -> a -> b $ forall pu. IOConnected pu => IOPorts pu -> Set OutputPortTag outputPorts IOPorts (BusNetwork tag v x t) -ioPorts = +ioPorts = [__i| #{ tag } \# ( .DATA_WIDTH( #{ dataWidth (def :: x) } ) @@ -2616,17 +2616,17 @@ , .is_drop_allow( rendezvous ) // FIXME: ); |] - hardwareInstance Text -_title BusNetwork tag v x t -_bn UnitEnv (BusNetwork tag v x t) -_env = + hardwareInstance Text +_title BusNetwork tag v x t +_bn UnitEnv (BusNetwork tag v x t) +_env = forall a. HasCallStack => [Char] -> a error [Char] "BusNetwork should be NetworkEnv" -instance Connected (BusNetwork tag v x t) where - data Ports (BusNetwork tag v x t) = BusNetworkPorts - deriving (Int -> Ports (BusNetwork tag v x t) -> ShowS +instance Connected (BusNetwork tag v x t) where + data Ports (BusNetwork tag v x t) = BusNetworkPorts + deriving (Int -> Ports (BusNetwork tag v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a forall tag v x t. Int -> Ports (BusNetwork tag v x t) -> ShowS @@ -2640,8 +2640,8 @@ $cshowsPrec :: forall tag v x t. Int -> Ports (BusNetwork tag v x t) -> ShowS Show) -instance IOConnected (BusNetwork tag v x t) where - data IOPorts (BusNetwork tag v x t) = BusNetworkIO +instance IOConnected (BusNetwork tag v x t) where + data IOPorts (BusNetwork tag v x t) = BusNetworkIO { forall tag v x t. IOPorts (BusNetwork tag v x t) -> Set InputPortTag extInputs :: S.Set InputPortTag @@ -2652,7 +2652,7 @@ IOPorts (BusNetwork tag v x t) -> Set InoutPortTag extInOuts :: S.Set InoutPortTag } - deriving (Int -> IOPorts (BusNetwork tag v x t) -> ShowS + deriving (Int -> IOPorts (BusNetwork tag v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a forall tag v x t. Int -> IOPorts (BusNetwork tag v x t) -> ShowS @@ -2665,126 +2665,126 @@ showsPrec :: Int -> IOPorts (BusNetwork tag v x t) -> ShowS $cshowsPrec :: forall tag v x t. Int -> IOPorts (BusNetwork tag v x t) -> ShowS Show) - inputPorts :: IOPorts (BusNetwork tag v x t) -> Set InputPortTag -inputPorts = forall tag v x t. + inputPorts :: IOPorts (BusNetwork tag v x t) -> Set InputPortTag +inputPorts = forall tag v x t. IOPorts (BusNetwork tag v x t) -> Set InputPortTag extInputs - outputPorts :: IOPorts (BusNetwork tag v x t) -> Set OutputPortTag -outputPorts = forall tag v x t. + outputPorts :: IOPorts (BusNetwork tag v x t) -> Set OutputPortTag +outputPorts = forall tag v x t. IOPorts (BusNetwork tag v x t) -> Set OutputPortTag extOutputs - inoutPorts :: IOPorts (BusNetwork tag v x t) -> Set InoutPortTag + inoutPorts :: IOPorts (BusNetwork tag v x t) -> Set InoutPortTag inoutPorts = forall tag v x t. IOPorts (BusNetwork tag v x t) -> Set InoutPortTag extInOuts -instance (UnitTag tag, VarValTime v x t) => Testable (BusNetwork tag v x t) v x where - testBenchImplementation :: Project (BusNetwork tag v x t) v x -> Implementation +instance (UnitTag tag, VarValTime v x t) => Testable (BusNetwork tag v x t) v x where + testBenchImplementation :: Project (BusNetwork tag v x t) v x -> Implementation testBenchImplementation Project - { Text + { Text pName :: forall m v x. Project m v x -> Text pName :: Text pName , pUnit :: forall m v x. Project m v x -> m -pUnit = bn :: BusNetwork tag v x t -bn@BusNetwork{Map tag (PU v x t) +pUnit = bn :: BusNetwork tag v x t +bn@BusNetwork{Map tag (PU v x t) bnPus :: Map tag (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus, IOSynchronization +bnPus, IOSynchronization ioSync :: IOSynchronization ioSync :: forall tag v x t. BusNetwork tag v x t -> IOSynchronization -ioSync, tag +ioSync, tag bnName :: tag bnName :: forall tag v x t. BusNetwork tag v x t -> tag -bnName} +bnName} , pTestCntx :: forall m v x. Project m v x -> Cntx v x -pTestCntx = pTestCntx :: Cntx v x -pTestCntx@Cntx{[CycleCntx v x] +pTestCntx = pTestCntx :: Cntx v x +pTestCntx@Cntx{[CycleCntx v x] cntxProcess :: forall v x. Cntx v x -> [CycleCntx v x] cntxProcess :: [CycleCntx v x] -cntxProcess, Int +cntxProcess, Int cntxCycleNumber :: forall v x. Cntx v x -> Int cntxCycleNumber :: Int cntxCycleNumber} } = - let testEnv :: Verilog -testEnv = + let testEnv :: Verilog +testEnv = forall ann. [Doc ann] -> Doc ann vsep forall a b. (a -> b) -> a -> b $ forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe - ( \(tag -tag, PU{pu + ( \(tag +tag, PU{pu unit :: pu unit :: () -unit, UnitEnv pu +unit, UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv}) -> - let tEnv :: TestEnvironment v x -tEnv = +uEnv}) -> + let tEnv :: TestEnvironment v x +tEnv = TestEnvironment { teCntx :: Cntx v x -teCntx = Cntx v x -pTestCntx +teCntx = Cntx v x +pTestCntx , teComputationDuration :: Int -teComputationDuration = forall a. Enum a => a -> Int +teComputationDuration = forall a. Enum a => a -> Int fromEnum forall a b. (a -> b) -> a -> b $ forall u t. NextTick u t => u -> t nextTick BusNetwork tag v x t -bn +bn } in forall pu v x. IOTestBench pu v x => Text -> pu -> UnitEnv pu -> TestEnvironment v x -> Maybe Verilog testEnvironment (forall {a}. ToString a => a -> Text toText tag -tag) pu -unit UnitEnv pu -uEnv TestEnvironment v x -tEnv +tag) pu +unit UnitEnv pu +uEnv TestEnvironment v x +tEnv ) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus +bnPus - externalPortNames :: [Doc Any] -externalPortNames = forall a b. (a -> b) -> [a] -> [b] + externalPortNames :: [Doc Any] +externalPortNames = forall a b. (a -> b) -> [a] -> [b] map forall a ann. Pretty a => a -> Doc ann pretty forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] -concatMap ((\([Text] -is, [Text] -os, [Text] -ios) -> [Text] -is forall a. Semigroup a => a -> a -> a +concatMap ((\([Text] +is, [Text] +os, [Text] +ios) -> [Text] +is forall a. Semigroup a => a -> a -> a <> [Text] -os forall a. Semigroup a => a -> a -> a +os forall a. Semigroup a => a -> a -> a <> [Text] -ios) forall b c a. (b -> c) -> (a -> b) -> a -> c +ios) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) forall a b. (a -> b) -> a -> b $ forall {k} {v} {x} {t}. Map k (PU v x t) -> [(k, ([Text], [Text], [Text]))] bnExternalPorts Map tag (PU v x t) -bnPus - externalIO :: Doc Any -externalIO = forall ann. [Doc ann] -> Doc ann +bnPus + externalIO :: Doc Any +externalIO = forall ann. [Doc ann] -> Doc ann vsep forall a b. (a -> b) -> a -> b $ forall ann. Doc ann -> [Doc ann] -> [Doc ann] punctuate Doc Any ", " (Doc Any "" forall a. a -> [a] -> [a] : forall a b. (a -> b) -> [a] -> [b] -map (\Doc Any -p -> [i|.#{ p }( #{ p } )|]) [Doc Any] -externalPortNames) +map (\Doc Any +p -> [i|.#{ p }( #{ p } )|]) [Doc Any] +externalPortNames) - envInitFlags :: [Doc Any] -envInitFlags = forall a b. (a -> b) -> [a] -> [b] + envInitFlags :: [Doc Any] +envInitFlags = forall a b. (a -> b) -> [a] -> [b] map forall a ann. Pretty a => a -> Doc ann pretty forall a b. (a -> b) -> a -> b $ forall a b. (a -> Maybe b) -> [a] -> [b] @@ -2798,28 +2798,28 @@ toText) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag (PU v x t) -bnPus +bnPus - tickWithTransfers :: [[(Int, t, Maybe (v, x))]] -tickWithTransfers = + tickWithTransfers :: [[(Int, t, Maybe (v, x))]] +tickWithTransfers = forall a b. (a -> b) -> [a] -> [b] map - ( \(Int -cycleI, CycleCntx v x -cycleCntx) -> + ( \(Int +cycleI, CycleCntx v x +cycleCntx) -> forall a b. (a -> b) -> [a] -> [b] map - (\t -t -> (Int -cycleI, t -t, CycleCntx v x -> t -> Maybe (v, x) -cntxToTransfer CycleCntx v x -cycleCntx t -t)) + (\t +t -> (Int +cycleI, t +t, CycleCntx v x -> t -> Maybe (v, x) +cntxToTransfer CycleCntx v x +cycleCntx t +t)) [t 0 .. forall u t. NextTick u t => u -> t nextTick BusNetwork tag v x t -bn] +bn] ) forall a b. (a -> b) -> a -> b $ forall a b. [a] -> [b] -> [(a, b)] @@ -2828,43 +2828,43 @@ forall a b. (a -> b) -> a -> b $ forall a. Int -> [a] -> [a] take Int -cntxCycleNumber [CycleCntx v x] -cntxProcess +cntxCycleNumber [CycleCntx v x] +cntxProcess - assertions :: Doc Any -assertions = forall ann. [Doc ann] -> Doc ann + assertions :: Doc Any +assertions = forall ann. [Doc ann] -> Doc ann vsep forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\[(Int, t, Maybe (v, x))] -cycleTickTransfer -> Doc Any -posedgeCycle forall a. Semigroup a => a -> a -> a +map (\[(Int, t, Maybe (v, x))] +cycleTickTransfer -> Doc Any +posedgeCycle forall a. Semigroup a => a -> a -> a <> forall ann. Doc ann line forall a. Semigroup a => a -> a -> a <> forall ann. [Doc ann] -> Doc ann vsep (forall a b. (a -> b) -> [a] -> [b] map (Int, t, Maybe (v, x)) -> Doc Any -assertion [(Int, t, Maybe (v, x))] -cycleTickTransfer)) [[(Int, t, Maybe (v, x))]] -tickWithTransfers +assertion [(Int, t, Maybe (v, x))] +cycleTickTransfer)) [[(Int, t, Maybe (v, x))]] +tickWithTransfers - assertion :: (Int, t, Maybe (v, x)) -> Doc Any -assertion (Int -cycleI, t -t, Maybe (v, x) + assertion :: (Int, t, Maybe (v, x)) -> Doc Any +assertion (Int +cycleI, t +t, Maybe (v, x) Nothing) = [i|@(posedge clk); traceWithAttr(#{ cycleI }, #{ t }, #{ toString bnName }.data_bus, #{ toString bnName }.attr_bus);|] - assertion (Int -cycleI, t -t, Just (v -v, x -x)) = + assertion (Int +cycleI, t +t, Just (v +v, x +x)) = [i|@(posedge clk); assertWithAttr(#{ cycleI }, #{ t }, #{ toString bnName }.data_bus, #{ toString bnName }.attr_bus, #{ dataLiteral x }, #{ attrLiteral x }, "#{ toString v }");|] - tbName :: Text -tbName = forall pu. TargetSystemComponent pu => Text -> pu -> Text + tbName :: Text +tbName = forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -pName BusNetwork tag v x t -bn forall a. Semigroup a => a -> a -> a +pName BusNetwork tag v x t +bn forall a. Semigroup a => a -> a -> a <> Text "_tb" in Maybe [Char] -> [Implementation] -> Implementation @@ -2875,7 +2875,7 @@ Immediate (forall a. ToString a => a -> [Char] toString forall a b. (a -> b) -> a -> b $ Text -tbName forall a. Semigroup a => a -> a -> a +tbName forall a. Semigroup a => a -> a -> a <> Text ".v") forall a b. (a -> b) -> a -> b $ @@ -2967,7 +2967,7 @@ Immediate (forall a. ToString a => a -> [Char] toString forall a b. (a -> b) -> a -> b $ Text -tbName forall a. Semigroup a => a -> a -> a +tbName forall a. Semigroup a => a -> a -> a <> Text ".gtkw") forall a b. (a -> b) -> a -> b $ @@ -3005,57 +3005,57 @@ |] ] where - defEnvInitFlag :: [Doc ann] -> IOSynchronization -> [Doc ann] -defEnvInitFlag [Doc ann] -flags IOSynchronization + defEnvInitFlag :: [Doc ann] -> IOSynchronization -> [Doc ann] +defEnvInitFlag [Doc ann] +flags IOSynchronization Sync = forall ann. Doc ann -> [Doc ann] -> [Doc ann] punctuate Doc ann " && " forall a b. (a -> b) -> a -> b $ Doc ann "1'b1" forall a. a -> [a] -> [a] : [Doc ann] -flags - defEnvInitFlag [Doc ann] -flags IOSynchronization +flags + defEnvInitFlag [Doc ann] +flags IOSynchronization ASync = forall ann. Doc ann -> [Doc ann] -> [Doc ann] punctuate Doc ann " || " forall a b. (a -> b) -> a -> b $ Doc ann "1'b1" forall a. a -> [a] -> [a] : [Doc ann] -flags - defEnvInitFlag [Doc ann] -_flags IOSynchronization +flags + defEnvInitFlag [Doc ann] +_flags IOSynchronization OnBoard = forall a. HasCallStack => [Char] -> a error [Char] "can't generate testbench without specific IOSynchronization" - cntxToTransfer :: CycleCntx v x -> t -> Maybe (v, x) -cntxToTransfer CycleCntx v x -cycleCntx t -t = + cntxToTransfer :: CycleCntx v x -> t -> Maybe (v, x) +cntxToTransfer CycleCntx v x +cycleCntx t +t = case forall {u} {v} {x} {t}. (ProcessorUnit u v x t, Typeable u) => u -> t -> [Instruction u] extractInstructionAt BusNetwork tag v x t -bn t -t of - Transport v -v tag +bn t +t of + Transport v +v tag _ tag _ : [Instruction (BusNetwork tag v x t)] _ -> forall a. a -> Maybe a Just (v -v, forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +v, forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v getCntx CycleCntx v x -cycleCntx v -v) +cycleCntx v +v) [Instruction (BusNetwork tag v x t)] _ -> forall a. Maybe a Nothing - posedgeCycle :: Doc Any -posedgeCycle = + posedgeCycle :: Doc Any +posedgeCycle = [__i| //----------------------------------------------------------------- @(posedge cycle); @@ -3076,45 +3076,45 @@ -- * Builder -data BuilderSt tag v x t = BuilderSt +data BuilderSt tag v x t = BuilderSt { forall tag v x t. BuilderSt tag v x t -> Int signalBusWidth :: Int , forall tag v x t. BuilderSt tag v x t -> [SignalTag] availSignals :: [SignalTag] , forall tag v x t. BuilderSt tag v x t -> Map tag (PU v x t) -pus :: M.Map tag (PU v x t) +pus :: M.Map tag (PU v x t) , forall tag v x t. BuilderSt tag v x t -> Map tag (PUPrototype tag v x t) -prototypes :: M.Map tag (PUPrototype tag v x t) +prototypes :: M.Map tag (PUPrototype tag v x t) } -modifyNetwork :: BusNetwork k v x t -> State (BuilderSt k v x t) a -> BusNetwork k v x t +modifyNetwork :: BusNetwork k v x t -> State (BuilderSt k v x t) a -> BusNetwork k v x t modifyNetwork :: forall k v x t a. BusNetwork k v x t -> State (BuilderSt k v x t) a -> BusNetwork k v x t -modifyNetwork net :: BusNetwork k v x t -net@BusNetwork{Map k (PU v x t) +modifyNetwork net :: BusNetwork k v x t +net@BusNetwork{Map k (PU v x t) bnPus :: Map k (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus, Map k (PUPrototype k v x t) +bnPus, Map k (PUPrototype k v x t) bnPUPrototypes :: Map k (PUPrototype k v x t) bnPUPrototypes :: forall tag v x t. BusNetwork tag v x t -> Map tag (PUPrototype tag v x t) -bnPUPrototypes, Int +bnPUPrototypes, Int bnSignalBusWidth :: Int bnSignalBusWidth :: forall tag v x t. BusNetwork tag v x t -> Int -bnSignalBusWidth, UnitEnv (BusNetwork k v x t) +bnSignalBusWidth, UnitEnv (BusNetwork k v x t) bnEnv :: UnitEnv (BusNetwork k v x t) bnEnv :: forall tag v x t. BusNetwork tag v x t -> UnitEnv (BusNetwork tag v x t) -bnEnv} State (BuilderSt k v x t) a -builder = - let st0 :: BuilderSt k v x t -st0 = +bnEnv} State (BuilderSt k v x t) a +builder = + let st0 :: BuilderSt k v x t +st0 = BuilderSt { signalBusWidth :: Int signalBusWidth = Int -bnSignalBusWidth +bnSignalBusWidth , availSignals :: [SignalTag] availSignals = forall a b. (a -> b) -> [a] -> [b] map (Text -> SignalTag @@ -3124,137 +3124,137 @@ Interpolatable (IsCustomSink dst) src dst) => src -> dst controlSignalLiteral) [Int -bnSignalBusWidth :: Int ..] +bnSignalBusWidth :: Int ..] , pus :: Map k (PU v x t) pus = Map k (PU v x t) -bnPus +bnPus , prototypes :: Map k (PUPrototype k v x t) prototypes = Map k (PUPrototype k v x t) -bnPUPrototypes +bnPUPrototypes } - BuilderSt{Int + BuilderSt{Int signalBusWidth :: Int signalBusWidth :: forall tag v x t. BuilderSt tag v x t -> Int -signalBusWidth, Map k (PU v x t) +signalBusWidth, Map k (PU v x t) pus :: Map k (PU v x t) pus :: forall tag v x t. BuilderSt tag v x t -> Map tag (PU v x t) -pus, Map k (PUPrototype k v x t) +pus, Map k (PUPrototype k v x t) prototypes :: Map k (PUPrototype k v x t) prototypes :: forall tag v x t. BuilderSt tag v x t -> Map tag (PUPrototype tag v x t) -prototypes} = forall s a. State s a -> s -> s +prototypes} = forall s a. State s a -> s -> s execState State (BuilderSt k v x t) a -builder BuilderSt k v x t -st0 - netIOPorts :: [PU v x t] -> IOPorts (BusNetwork tag v x t) -netIOPorts [PU v x t] -ps = +builder BuilderSt k v x t +st0 + netIOPorts :: [PU v x t] -> IOPorts (BusNetwork tag v x t) +netIOPorts [PU v x t] +ps = BusNetworkIO { extInputs :: Set InputPortTag extInputs = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall {v} {x} {t}. PU v x t -> Set InputPortTag puInputPorts [PU v x t] -ps +ps , extOutputs :: Set OutputPortTag extOutputs = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall {v} {x} {t}. PU v x t -> Set OutputPortTag puOutputPorts [PU v x t] -ps +ps , extInOuts :: Set InoutPortTag extInOuts = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall {v} {x} {t}. PU v x t -> Set InoutPortTag puInOutPorts [PU v x t] -ps +ps } in BusNetwork k v x t -net +net { bnPus :: Map k (PU v x t) bnPus = Map k (PU v x t) -pus +pus , bnSignalBusWidth :: Int bnSignalBusWidth = Int -signalBusWidth +signalBusWidth , bnEnv :: UnitEnv (BusNetwork k v x t) bnEnv = UnitEnv (BusNetwork k v x t) -bnEnv{ioPorts :: Maybe (IOPorts (BusNetwork k v x t)) +bnEnv{ioPorts :: Maybe (IOPorts (BusNetwork k v x t)) ioPorts = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall {v} {x} {t} {tag} {v} {x} {t}. [PU v x t] -> IOPorts (BusNetwork tag v x t) -netIOPorts forall a b. (a -> b) -> a -> b +netIOPorts forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [a] M.elems Map k (PU v x t) -pus} +pus} , bnPUPrototypes :: Map k (PUPrototype k v x t) bnPUPrototypes = Map k (PUPrototype k v x t) -prototypes +prototypes } -defineNetwork :: Default t => k -> IOSynchronization -> State (BuilderSt k v x t) a -> BusNetwork k v x t +defineNetwork :: Default t => k -> IOSynchronization -> State (BuilderSt k v x t) a -> BusNetwork k v x t defineNetwork :: forall t k v x a. Default t => k -> IOSynchronization -> State (BuilderSt k v x t) a -> BusNetwork k v x t -defineNetwork k -bnName IOSynchronization -ioSync State (BuilderSt k v x t) a -builder = forall k v x t a. +defineNetwork k +bnName IOSynchronization +ioSync State (BuilderSt k v x t) a +builder = forall k v x t a. BusNetwork k v x t -> State (BuilderSt k v x t) a -> BusNetwork k v x t modifyNetwork (forall {t} {tag} {v} {x}. Default t => tag -> IOSynchronization -> BusNetwork tag v x t busNetwork k -bnName IOSynchronization -ioSync) State (BuilderSt k v x t) a -builder +bnName IOSynchronization +ioSync) State (BuilderSt k v x t) a +builder addCustom :: - forall tag v x t m pu. - (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => - tag -> - pu -> - IOPorts pu -> - m () + forall tag v x t m pu. + (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => + tag -> + pu -> + IOPorts pu -> + m () addCustom :: forall tag v x t (m :: * -> *) pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => tag -> pu -> IOPorts pu -> m () -addCustom tag -tag pu -pu IOPorts pu -ioPorts = do - st :: BuilderSt tag v x t -st@BuilderSt{Int +addCustom tag +tag pu +pu IOPorts pu +ioPorts = do + st :: BuilderSt tag v x t +st@BuilderSt{Int signalBusWidth :: Int signalBusWidth :: forall tag v x t. BuilderSt tag v x t -> Int -signalBusWidth, [SignalTag] +signalBusWidth, [SignalTag] availSignals :: [SignalTag] availSignals :: forall tag v x t. BuilderSt tag v x t -> [SignalTag] -availSignals, Map tag (PU v x t) +availSignals, Map tag (PU v x t) pus :: Map tag (PU v x t) pus :: forall tag v x t. BuilderSt tag v x t -> Map tag (PU v x t) -pus} <- forall s (m :: * -> *). MonadState s m => m s +pus} <- forall s (m :: * -> *). MonadState s m => m s get - let ctrlPorts :: Ports pu -ctrlPorts = forall pu. Controllable pu => [SignalTag] -> pu -> Ports pu + let ctrlPorts :: Ports pu +ctrlPorts = forall pu. Controllable pu => [SignalTag] -> pu -> Ports pu takePortTags [SignalTag] -availSignals pu -pu - puEnv :: UnitEnv pu -puEnv = +availSignals pu +pu + puEnv :: UnitEnv pu +puEnv = forall a. Default a => a def { ctrlPorts :: Maybe (Ports pu) ctrlPorts = forall a. a -> Maybe a Just Ports pu -ctrlPorts +ctrlPorts , ioPorts :: Maybe (IOPorts pu) ioPorts = forall a. a -> Maybe a Just IOPorts pu -ioPorts +ioPorts , valueIn :: Maybe (Text, Text) valueIn = forall a. a -> Maybe a Just (Text @@ -3264,42 +3264,42 @@ valueOut = forall a. a -> Maybe a Just (forall {a}. ToString a => a -> Text toText tag -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_data_out", forall {a}. ToString a => a -> Text toText tag -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_attr_out") } - pu' :: PU v x t -pu' = forall pu v x t. + pu' :: PU v x t +pu' = forall pu v x t. PUClasses pu v x t => pu -> Changeset v -> UnitEnv pu -> PU v x t PU pu -pu forall a. Default a => a +pu forall a. Default a => a def UnitEnv pu -puEnv - usedPortsLen :: Int -usedPortsLen = forall (t :: * -> *) a. Foldable t => t a -> Int +puEnv + usedPortsLen :: Int +usedPortsLen = forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ forall pu. Controllable pu => Ports pu -> [SignalTag] usedPortTags Ports pu -ctrlPorts +ctrlPorts forall s (m :: * -> *). MonadState s m => s -> m () put BuilderSt tag v x t -st +st { signalBusWidth :: Int signalBusWidth = Int -signalBusWidth forall a. Num a => a -> a -> a +signalBusWidth forall a. Num a => a -> a -> a + Int -usedPortsLen +usedPortsLen , availSignals :: [SignalTag] availSignals = forall a. Int -> [a] -> [a] drop Int -usedPortsLen [SignalTag] -availSignals +usedPortsLen [SignalTag] +availSignals , pus :: Map tag (PU v x t) pus = forall k a. Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a M.insertWith (\PU v x t @@ -3307,71 +3307,71 @@ _ -> forall a. HasCallStack => [Char] -> a error [Char] "every PU must has uniq tag") tag -tag PU v x t -pu' Map tag (PU v x t) -pus +tag PU v x t +pu' Map tag (PU v x t) +pus } -- | Add PU with the default initial state. Type specify by IOPorts. -add :: - (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, Default pu, UnitTag tag) => - tag -> - IOPorts pu -> - m () +add :: + (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, Default pu, UnitTag tag) => + tag -> + IOPorts pu -> + m () add :: forall tag v x t (m :: * -> *) pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, Default pu, UnitTag tag) => tag -> IOPorts pu -> m () -add tag -tag IOPorts pu -ioport = forall tag v x t (m :: * -> *) pu. +add tag +tag IOPorts pu +ioport = forall tag v x t (m :: * -> *) pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => tag -> pu -> IOPorts pu -> m () addCustom tag -tag forall a. Default a => a +tag forall a. Default a => a def IOPorts pu -ioport +ioport addCustomPrototype :: - forall tag v x t m pu. - (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => - tag -> - pu -> - IOPorts pu -> - m () + forall tag v x t m pu. + (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => + tag -> + pu -> + IOPorts pu -> + m () addCustomPrototype :: forall tag v x t (m :: * -> *) pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => tag -> pu -> IOPorts pu -> m () -addCustomPrototype tag -tag pu -pu IOPorts pu -ioports +addCustomPrototype tag +tag pu +pu IOPorts pu +ioports | forall a. Typeable a => a -> TypeRep typeOf pu -pu forall a. Eq a => a -> a -> Bool +pu forall a. Eq a => a -> a -> Bool == forall {k} (proxy :: k -> *) (a :: k). Typeable a => proxy a -> TypeRep typeRep (forall {k} (t :: k). Proxy t -Proxy :: Proxy (SPI v x t)) = +Proxy :: Proxy (SPI v x t)) = forall a. HasCallStack => [Char] -> a error [Char] "Adding SPI prototype are not supported due to https://github.com/ryukzak/nitta/issues/194" | Bool otherwise = do - st :: BuilderSt tag v x t -st@BuilderSt{Map tag (PUPrototype tag v x t) + st :: BuilderSt tag v x t +st@BuilderSt{Map tag (PUPrototype tag v x t) prototypes :: Map tag (PUPrototype tag v x t) prototypes :: forall tag v x t. BuilderSt tag v x t -> Map tag (PUPrototype tag v x t) -prototypes} <- forall s (m :: * -> *). MonadState s m => m s +prototypes} <- forall s (m :: * -> *). MonadState s m => m s get forall s (m :: * -> *). MonadState s m => s -> m () put BuilderSt tag v x t -st +st { prototypes :: Map tag (PUPrototype tag v x t) prototypes = forall k a. Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a @@ -3382,36 +3382,36 @@ error [Char] "every prototype must has uniq tag") tag -tag +tag (forall tag pu v x t. (UnitTag tag, PUClasses pu v x t) => tag -> pu -> IOPorts pu -> PUPrototype tag v x t PUPrototype tag -tag pu -pu IOPorts pu -ioports) +tag pu +pu IOPorts pu +ioports) Map tag (PUPrototype tag v x t) -prototypes +prototypes } -- | Add PU to prototypes with the default initial state. Type specify by IOPorts. -addPrototype :: - (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, Default pu, UnitTag tag) => - tag -> - IOPorts pu -> - m () +addPrototype :: + (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, Default pu, UnitTag tag) => + tag -> + IOPorts pu -> + m () addPrototype :: forall tag v x t (m :: * -> *) pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, Default pu, UnitTag tag) => tag -> IOPorts pu -> m () -addPrototype tag -tag IOPorts pu -ioports = forall tag v x t (m :: * -> *) pu. +addPrototype tag +tag IOPorts pu +ioports = forall tag v x t (m :: * -> *) pu. (MonadState (BuilderSt tag v x t) m, PUClasses pu v x t, UnitTag tag) => tag -> pu -> IOPorts pu -> m () addCustomPrototype tag -tag forall a. Default a => a +tag forall a. Default a => a def IOPorts pu -ioports +ioports \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Networks.Types.html b/haddock/nitta/src/NITTA.Model.Networks.Types.html index cf88f3d66..6288938a6 100644 --- a/haddock/nitta/src/NITTA.Model.Networks.Types.html +++ b/haddock/nitta/src/NITTA.Model.Networks.Types.html @@ -34,564 +34,564 @@ import NITTA.Project.TestBench import NITTA.Project.Types -type PUClasses pu v x t = - ( ByTime pu t - , Connected pu - , IOConnected pu - , EndpointProblem pu v t - , BreakLoopProblem pu v x - , ConstantFoldingProblem pu v x - , OptimizeAccumProblem pu v x - , ResolveDeadlockProblem pu v x - , ProcessorUnit pu v x t - , Show (Instruction pu) - , Typeable pu - , UnambiguouslyDecode pu - , TargetSystemComponent pu - , Controllable pu - , IOTestBench pu v x - , Locks pu v - , Typeable pu +type PUClasses pu v x t = + ( ByTime pu t + , Connected pu + , IOConnected pu + , EndpointProblem pu v t + , BreakLoopProblem pu v x + , ConstantFoldingProblem pu v x + , OptimizeAccumProblem pu v x + , ResolveDeadlockProblem pu v x + , ProcessorUnit pu v x t + , Show (Instruction pu) + , Typeable pu + , UnambiguouslyDecode pu + , TargetSystemComponent pu + , Controllable pu + , IOTestBench pu v x + , Locks pu v + , Typeable pu ) -- | Existential container for a processor unit . -data PU v x t where - PU :: - PUClasses pu v x t => +data PU v x t where + PU :: + PUClasses pu v x t => { () -unit :: pu +unit :: pu , forall v x t. PU v x t -> Changeset v -diff :: Changeset v +diff :: Changeset v , () -uEnv :: UnitEnv pu +uEnv :: UnitEnv pu } -> - PU v x t + PU v x t -unitType :: PU v x t -> TypeRep +unitType :: PU v x t -> TypeRep unitType :: forall v x t. PU v x t -> TypeRep -unitType PU{pu +unitType PU{pu unit :: pu unit :: () -unit} = forall a. Typeable a => a -> TypeRep +unit} = forall a. Typeable a => a -> TypeRep typeOf pu -unit +unit -instance Ord v => EndpointProblem (PU v x t) v t where - endpointOptions :: PU v x t -> [EndpointSt v (TimeConstraint t)] -endpointOptions PU{Changeset v +instance Ord v => EndpointProblem (PU v x t) v t where + endpointOptions :: PU v x t -> [EndpointSt v (TimeConstraint t)] +endpointOptions PU{Changeset v diff :: Changeset v diff :: forall v x t. PU v x t -> Changeset v -diff, pu +diff, pu unit :: pu unit :: () -unit} = +unit} = forall a b. (a -> b) -> [a] -> [b] map (forall f diff. Patch f diff => diff -> f -> f patch Changeset v -diff) forall a b. (a -> b) -> a -> b +diff) forall a b. (a -> b) -> a -> b $ forall u v t. EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] endpointOptions pu -unit +unit - endpointDecision :: PU v x t -> EndpointSt v (Interval t) -> PU v x t -endpointDecision PU{pu + endpointDecision :: PU v x t -> EndpointSt v (Interval t) -> PU v x t +endpointDecision PU{pu unit :: pu unit :: () -unit, Changeset v +unit, Changeset v diff :: Changeset v diff :: forall v x t. PU v x t -> Changeset v -diff, UnitEnv pu +diff, UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv} EndpointSt v (Interval t) -d = +uEnv} EndpointSt v (Interval t) +d = PU { unit :: pu unit = forall u v t. EndpointProblem u v t => u -> EndpointSt v (Interval t) -> u endpointDecision pu -unit forall a b. (a -> b) -> a -> b +unit forall a b. (a -> b) -> a -> b $ forall f diff. Patch f diff => diff -> f -> f patch (forall {t}. Ord t => Changeset t -> Changeset t reverseDiff Changeset v -diff) EndpointSt v (Interval t) -d +diff) EndpointSt v (Interval t) +d , Changeset v diff :: Changeset v diff :: Changeset v -diff +diff , UnitEnv pu uEnv :: UnitEnv pu uEnv :: UnitEnv pu -uEnv +uEnv } -instance BreakLoopProblem (PU v x t) v x where - breakLoopOptions :: PU v x t -> [BreakLoop v x] -breakLoopOptions PU{pu +instance BreakLoopProblem (PU v x t) v x where + breakLoopOptions :: PU v x t -> [BreakLoop v x] +breakLoopOptions PU{pu unit :: pu unit :: () -unit} = forall u v x. BreakLoopProblem u v x => u -> [BreakLoop v x] +unit} = forall u v x. BreakLoopProblem u v x => u -> [BreakLoop v x] breakLoopOptions pu -unit - breakLoopDecision :: PU v x t -> BreakLoop v x -> PU v x t -breakLoopDecision PU{Changeset v +unit + breakLoopDecision :: PU v x t -> BreakLoop v x -> PU v x t +breakLoopDecision PU{Changeset v diff :: Changeset v diff :: forall v x t. PU v x t -> Changeset v -diff, pu +diff, pu unit :: pu unit :: () -unit, UnitEnv pu +unit, UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv} BreakLoop v x -d = +uEnv} BreakLoop v x +d = PU{unit :: pu unit = forall u v x. BreakLoopProblem u v x => u -> BreakLoop v x -> u breakLoopDecision pu -unit BreakLoop v x -d, Changeset v +unit BreakLoop v x +d, Changeset v diff :: Changeset v diff :: Changeset v -diff, UnitEnv pu +diff, UnitEnv pu uEnv :: UnitEnv pu uEnv :: UnitEnv pu -uEnv} +uEnv} -instance OptimizeAccumProblem (PU v x t) v x where - optimizeAccumOptions :: PU v x t -> [OptimizeAccum v x] -optimizeAccumOptions PU{pu +instance OptimizeAccumProblem (PU v x t) v x where + optimizeAccumOptions :: PU v x t -> [OptimizeAccum v x] +optimizeAccumOptions PU{pu unit :: pu unit :: () -unit} = forall u v x. +unit} = forall u v x. OptimizeAccumProblem u v x => u -> [OptimizeAccum v x] optimizeAccumOptions pu -unit - optimizeAccumDecision :: PU v x t -> OptimizeAccum v x -> PU v x t -optimizeAccumDecision PU{Changeset v +unit + optimizeAccumDecision :: PU v x t -> OptimizeAccum v x -> PU v x t +optimizeAccumDecision PU{Changeset v diff :: Changeset v diff :: forall v x t. PU v x t -> Changeset v -diff, pu +diff, pu unit :: pu unit :: () -unit, UnitEnv pu +unit, UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv} OptimizeAccum v x -d = +uEnv} OptimizeAccum v x +d = PU{Changeset v diff :: Changeset v diff :: Changeset v -diff, unit :: pu +diff, unit :: pu unit = forall u v x. OptimizeAccumProblem u v x => u -> OptimizeAccum v x -> u optimizeAccumDecision pu -unit OptimizeAccum v x -d, UnitEnv pu +unit OptimizeAccum v x +d, UnitEnv pu uEnv :: UnitEnv pu uEnv :: UnitEnv pu -uEnv} +uEnv} -instance ResolveDeadlockProblem (PU v x t) v x where - resolveDeadlockOptions :: PU v x t -> [ResolveDeadlock v x] -resolveDeadlockOptions PU{pu +instance ResolveDeadlockProblem (PU v x t) v x where + resolveDeadlockOptions :: PU v x t -> [ResolveDeadlock v x] +resolveDeadlockOptions PU{pu unit :: pu unit :: () -unit} = forall u v x. +unit} = forall u v x. ResolveDeadlockProblem u v x => u -> [ResolveDeadlock v x] resolveDeadlockOptions pu -unit - resolveDeadlockDecision :: PU v x t -> ResolveDeadlock v x -> PU v x t -resolveDeadlockDecision PU{Changeset v +unit + resolveDeadlockDecision :: PU v x t -> ResolveDeadlock v x -> PU v x t +resolveDeadlockDecision PU{Changeset v diff :: Changeset v diff :: forall v x t. PU v x t -> Changeset v -diff, pu +diff, pu unit :: pu unit :: () -unit, UnitEnv pu +unit, UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv} ResolveDeadlock v x -d = +uEnv} ResolveDeadlock v x +d = PU{unit :: pu unit = forall u v x. ResolveDeadlockProblem u v x => u -> ResolveDeadlock v x -> u resolveDeadlockDecision pu -unit ResolveDeadlock v x -d, Changeset v +unit ResolveDeadlock v x +d, Changeset v diff :: Changeset v diff :: Changeset v -diff, UnitEnv pu +diff, UnitEnv pu uEnv :: UnitEnv pu uEnv :: UnitEnv pu -uEnv} +uEnv} -instance VarValTime v x t => ProcessorUnit (PU v x t) v x t where - tryBind :: F v x -> PU v x t -> Either String (PU v x t) -tryBind F v x -fb PU{Changeset v +instance VarValTime v x t => ProcessorUnit (PU v x t) v x t where + tryBind :: F v x -> PU v x t -> Either String (PU v x t) +tryBind F v x +fb PU{Changeset v diff :: Changeset v diff :: forall v x t. PU v x t -> Changeset v -diff, pu +diff, pu unit :: pu unit :: () -unit, UnitEnv pu +unit, UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv} = +uEnv} = case forall u v x t. ProcessorUnit u v x t => F v x -> u -> Either String u tryBind F v x -fb pu -unit of - Right pu -unit' -> forall a b. b -> Either a b +fb pu +unit of + Right pu +unit' -> forall a b. b -> Either a b Right PU{unit :: pu unit = pu -unit', Changeset v +unit', Changeset v diff :: Changeset v diff :: Changeset v -diff, UnitEnv pu +diff, UnitEnv pu uEnv :: UnitEnv pu uEnv :: UnitEnv pu -uEnv} - Left String -err -> forall a b. a -> Either a b +uEnv} + Left String +err -> forall a b. a -> Either a b Left String -err - process :: PU v x t -> Process t (StepInfo v x t) -process PU{pu +err + process :: PU v x t -> Process t (StepInfo v x t) +process PU{pu unit :: pu unit :: () -unit, Changeset v +unit, Changeset v diff :: Changeset v diff :: forall v x t. PU v x t -> Changeset v -diff} = - let p :: Process t (StepInfo v x t) -p = forall u v x t. +diff} = + let p :: Process t (StepInfo v x t) +p = forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process pu -unit +unit in Process t (StepInfo v x t) -p{steps :: [Step t (StepInfo v x t)] +p{steps :: [Step t (StepInfo v x t)] steps = forall a b. (a -> b) -> [a] -> [b] map (forall f diff. Patch f diff => diff -> f -> f patch Changeset v -diff) forall a b. (a -> b) -> a -> b +diff) forall a b. (a -> b) -> a -> b $ forall t i. Process t i -> [Step t i] steps Process t (StepInfo v x t) -p} - parallelismType :: PU v x t -> ParallelismType -parallelismType PU{pu +p} + parallelismType :: PU v x t -> ParallelismType +parallelismType PU{pu unit :: pu unit :: () -unit} = forall u v x t. ProcessorUnit u v x t => u -> ParallelismType +unit} = forall u v x t. ProcessorUnit u v x t => u -> ParallelismType parallelismType pu -unit +unit -instance Ord v => Patch (PU v x t) (Changeset v) where - patch :: Changeset v -> PU v x t -> PU v x t -patch Changeset v -diff' PU{pu +instance Ord v => Patch (PU v x t) (Changeset v) where + patch :: Changeset v -> PU v x t -> PU v x t +patch Changeset v +diff' PU{pu unit :: pu unit :: () -unit, Changeset v +unit, Changeset v diff :: Changeset v diff :: forall v x t. PU v x t -> Changeset v -diff, UnitEnv pu +diff, UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv} = +uEnv} = PU { pu unit :: pu unit :: pu -unit +unit , diff :: Changeset v diff = Changeset { changeI :: Map v v changeI = forall v. Changeset v -> Map v v changeI Changeset v -diff' forall k a. Ord k => Map k a -> Map k a -> Map k a +diff' forall k a. Ord k => Map k a -> Map k a -> Map k a `M.union` forall v. Changeset v -> Map v v changeI Changeset v -diff +diff , changeO :: Map v (Set v) changeO = forall v. Changeset v -> Map v (Set v) changeO Changeset v -diff' forall k a. Ord k => Map k a -> Map k a -> Map k a +diff' forall k a. Ord k => Map k a -> Map k a -> Map k a `M.union` forall v. Changeset v -> Map v (Set v) changeO Changeset v -diff +diff } , UnitEnv pu uEnv :: UnitEnv pu uEnv :: UnitEnv pu -uEnv +uEnv } -instance Ord v => Patch (PU v x t) (I v, I v) where - patch :: (I v, I v) -> PU v x t -> PU v x t -patch (I v -v, I v -v') pu :: PU v x t -pu@PU{diff :: forall v x t. PU v x t -> Changeset v -diff = diff :: Changeset v -diff@Changeset{Map v v +instance Ord v => Patch (PU v x t) (I v, I v) where + patch :: (I v, I v) -> PU v x t -> PU v x t +patch (I v +v, I v +v') pu :: PU v x t +pu@PU{diff :: forall v x t. PU v x t -> Changeset v +diff = diff :: Changeset v +diff@Changeset{Map v v changeI :: Map v v changeI :: forall v. Changeset v -> Map v v -changeI}} = PU v x t -pu{diff :: Changeset v +changeI}} = PU v x t +pu{diff :: Changeset v diff = Changeset v -diff{changeI :: Map v v +diff{changeI :: Map v v changeI = forall k a. Ord k => k -> a -> Map k a -> Map k a M.insert v -v v -v' Map v v -changeI}} +v v +v' Map v v +changeI}} -instance Ord v => Patch (PU v x t) (O v, O v) where - patch :: (O v, O v) -> PU v x t -> PU v x t -patch (O Set v -vs, O Set v -vs') pu :: PU v x t -pu@PU{diff :: forall v x t. PU v x t -> Changeset v -diff = diff :: Changeset v -diff@Changeset{Map v (Set v) +instance Ord v => Patch (PU v x t) (O v, O v) where + patch :: (O v, O v) -> PU v x t -> PU v x t +patch (O Set v +vs, O Set v +vs') pu :: PU v x t +pu@PU{diff :: forall v x t. PU v x t -> Changeset v +diff = diff :: Changeset v +diff@Changeset{Map v (Set v) changeO :: Map v (Set v) changeO :: forall v. Changeset v -> Map v (Set v) -changeO}} = +changeO}} = PU v x t -pu +pu { diff :: Changeset v diff = Changeset v -diff +diff { changeO :: Map v (Set v) changeO = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl - (\Map v (Set v) -s (v -v, v -v') -> forall k a. Ord k => k -> a -> Map k a -> Map k a + (\Map v (Set v) +s (v +v, v +v') -> forall k a. Ord k => k -> a -> Map k a -> Map k a M.insert v -v (forall a. a -> Set a +v (forall a. a -> Set a S.singleton v -v') Map v (Set v) -s) +v') Map v (Set v) +s) Map v (Set v) -changeO +changeO forall a b. (a -> b) -> a -> b $ [(v -a, v -b) | v -b <- forall a. Set a -> [a] +a, v +b) | v +b <- forall a. Set a -> [a] S.elems Set v -vs', v -a <- forall a. Set a -> [a] +vs', v +a <- forall a. Set a -> [a] S.elems Set v -vs] +vs] } } -instance Var v => Locks (PU v x t) v where - locks :: PU v x t -> [Lock v] -locks PU{pu +instance Var v => Locks (PU v x t) v where + locks :: PU v x t -> [Lock v] +locks PU{pu unit :: pu unit :: () -unit, diff :: forall v x t. PU v x t -> Changeset v -diff = diff :: Changeset v -diff@Changeset{Map v v +unit, diff :: forall v x t. PU v x t -> Changeset v +diff = diff :: Changeset v +diff@Changeset{Map v v changeI :: Map v v changeI :: forall v. Changeset v -> Map v v -changeI, Map v (Set v) +changeI, Map v (Set v) changeO :: Map v (Set v) changeO :: forall v. Changeset v -> Map v (Set v) -changeO}} +changeO}} | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> Bool M.null Map v v -changeI = forall a. HasCallStack => String -> a +changeI = forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "Locks (PU v x t) with non empty changeI: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Changeset v -diff +diff | Bool otherwise = - let ([Lock v] -locked', [Lock v] -locks') = forall a. (a -> Bool) -> [a] -> ([a], [a]) -L.partition (\Lock{v + let ([Lock v] +locked', [Lock v] +locks') = forall a. (a -> Bool) -> [a] -> ([a], [a]) +L.partition (\Lock{v locked :: forall v. Lock v -> v locked :: v locked} -> v -locked forall k a. Ord k => k -> Map k a -> Bool +locked forall k a. Ord k => k -> Map k a -> Bool `M.member` Map v (Set v) -changeO) forall a b. (a -> b) -> a -> b +changeO) forall a b. (a -> b) -> a -> b $ forall x v. Locks x v => x -> [Lock v] locks pu -unit - ([Lock v] -lockBy', [Lock v] -locks'') = forall a. (a -> Bool) -> [a] -> ([a], [a]) -L.partition (\Lock{v +unit + ([Lock v] +lockBy', [Lock v] +locks'') = forall a. (a -> Bool) -> [a] -> ([a], [a]) +L.partition (\Lock{v lockBy :: forall v. Lock v -> v lockBy :: v lockBy} -> v -lockBy forall k a. Ord k => k -> Map k a -> Bool +lockBy forall k a. Ord k => k -> Map k a -> Bool `M.member` Map v (Set v) -changeO) [Lock v] -locks' +changeO) [Lock v] +locks' in forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ [Lock v] -locks'' +locks'' , forall a. Eq a => [a] -> [a] L.nub forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap - (\Lock{v + (\Lock{v locked :: v locked :: forall v. Lock v -> v -locked, v +locked, v lockBy :: v lockBy :: forall v. Lock v -> v -lockBy} -> [Lock{v +lockBy} -> [Lock{v locked :: v locked :: v -locked, lockBy :: v +locked, lockBy :: v lockBy = v -v} | v -v <- forall a. Set a -> [a] +v} | v +v <- forall a. Set a -> [a] S.elems (Map v (Set v) -changeO forall k a. Ord k => Map k a -> k -> a +changeO forall k a. Ord k => Map k a -> k -> a M.! v -lockBy)]) +lockBy)]) [Lock v] -lockBy' +lockBy' , forall a. Eq a => [a] -> [a] L.nub forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap - (\Lock{v + (\Lock{v locked :: v locked :: forall v. Lock v -> v -locked, v +locked, v lockBy :: v lockBy :: forall v. Lock v -> v -lockBy} -> [Lock{locked :: v +lockBy} -> [Lock{locked :: v locked = v -v, v +v, v lockBy :: v lockBy :: v -lockBy} | v -v <- forall a. Set a -> [a] +lockBy} | v +v <- forall a. Set a -> [a] S.elems (Map v (Set v) -changeO forall k a. Ord k => Map k a -> k -> a +changeO forall k a. Ord k => Map k a -> k -> a M.! v -locked)]) +locked)]) [Lock v] -locked' +locked' ] -instance TargetSystemComponent (PU v x t) where - moduleName :: Text -> PU v x t -> Text -moduleName Text -name PU{pu +instance TargetSystemComponent (PU v x t) where + moduleName :: Text -> PU v x t -> Text +moduleName Text +name PU{pu unit :: pu unit :: () -unit} = forall pu. TargetSystemComponent pu => Text -> pu -> Text +unit} = forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -name pu -unit - hardware :: Text -> PU v x t -> Implementation -hardware Text -name PU{pu +name pu +unit + hardware :: Text -> PU v x t -> Implementation +hardware Text +name PU{pu unit :: pu unit :: () -unit} = forall pu. TargetSystemComponent pu => Text -> pu -> Implementation +unit} = forall pu. TargetSystemComponent pu => Text -> pu -> Implementation hardware Text -name pu -unit - software :: Text -> PU v x t -> Implementation -software Text -name PU{pu +name pu +unit + software :: Text -> PU v x t -> Implementation +software Text +name PU{pu unit :: pu unit :: () -unit} = forall pu. TargetSystemComponent pu => Text -> pu -> Implementation +unit} = forall pu. TargetSystemComponent pu => Text -> pu -> Implementation software Text -name pu -unit - hardwareInstance :: Text -> PU v x t -> UnitEnv (PU v x t) -> Verilog -hardwareInstance Text -name PU v x t -pu = forall pu. +name pu +unit + hardwareInstance :: Text -> PU v x t -> UnitEnv (PU v x t) -> Verilog +hardwareInstance Text +name PU v x t +pu = forall pu. TargetSystemComponent pu => Text -> pu -> UnitEnv pu -> Verilog hardwareInstance Text -name PU v x t -pu +name PU v x t +pu -instance IOTestBench (PU v x t) v x where - testEnvironmentInitFlag :: Text -> PU v x t -> Maybe Text -testEnvironmentInitFlag Text -tag PU{pu +instance IOTestBench (PU v x t) v x where + testEnvironmentInitFlag :: Text -> PU v x t -> Maybe Text +testEnvironmentInitFlag Text +tag PU{pu unit :: pu unit :: () -unit} = forall pu v x. IOTestBench pu v x => Text -> pu -> Maybe Text +unit} = forall pu v x. IOTestBench pu v x => Text -> pu -> Maybe Text testEnvironmentInitFlag Text -tag pu -unit +tag pu +unit - testEnvironment :: Text + testEnvironment :: Text -> PU v x t -> UnitEnv (PU v x t) -> TestEnvironment v x -> Maybe Verilog -testEnvironment Text -tag PU{pu +testEnvironment Text +tag PU{pu unit :: pu unit :: () -unit, UnitEnv pu +unit, UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv} UnitEnv (PU v x t) -_env TestEnvironment v x -cntxs = forall pu v x. +uEnv} UnitEnv (PU v x t) +_env TestEnvironment v x +cntxs = forall pu v x. IOTestBench pu v x => Text -> pu -> UnitEnv pu -> TestEnvironment v x -> Maybe Verilog testEnvironment Text -tag pu -unit UnitEnv pu -uEnv TestEnvironment v x -cntxs +tag pu +unit UnitEnv pu +uEnv TestEnvironment v x +cntxs -data IOSynchronization +data IOSynchronization = -- | IO cycle synchronously to process cycle Sync | -- | if IO cycle lag behiend - ignore them ASync | -- | defined by onboard signal (sync - false, async - true) OnBoard - deriving (Int -> IOSynchronization -> ShowS + deriving (Int -> IOSynchronization -> ShowS [IOSynchronization] -> ShowS IOSynchronization -> String forall a. @@ -602,7 +602,7 @@ $cshow :: IOSynchronization -> String showsPrec :: Int -> IOSynchronization -> ShowS $cshowsPrec :: Int -> IOSynchronization -> ShowS -Show, ReadPrec [IOSynchronization] +Show, ReadPrec [IOSynchronization] ReadPrec IOSynchronization Int -> ReadS IOSynchronization ReadS [IOSynchronization] @@ -625,46 +625,46 @@ $cfrom :: forall x. IOSynchronization -> Rep IOSynchronization x Generic) -instance ToJSON IOSynchronization -instance FromJSON IOSynchronization +instance ToJSON IOSynchronization +instance FromJSON IOSynchronization puInputPorts :: PU v x t -> Set InputPortTag -puInputPorts PU{UnitEnv pu +puInputPorts PU{UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv} = forall {pu}. IOConnected pu => UnitEnv pu -> Set InputPortTag +uEnv} = forall {pu}. IOConnected pu => UnitEnv pu -> Set InputPortTag envInputPorts UnitEnv pu -uEnv +uEnv puOutputPorts :: PU v x t -> Set OutputPortTag -puOutputPorts PU{UnitEnv pu +puOutputPorts PU{UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv} = forall {pu}. IOConnected pu => UnitEnv pu -> Set OutputPortTag +uEnv} = forall {pu}. IOConnected pu => UnitEnv pu -> Set OutputPortTag envOutputPorts UnitEnv pu -uEnv +uEnv puInOutPorts :: PU v x t -> Set InoutPortTag -puInOutPorts PU{UnitEnv pu +puInOutPorts PU{UnitEnv pu uEnv :: UnitEnv pu uEnv :: () -uEnv} = forall {pu}. IOConnected pu => UnitEnv pu -> Set InoutPortTag +uEnv} = forall {pu}. IOConnected pu => UnitEnv pu -> Set InoutPortTag envInOutPorts UnitEnv pu -uEnv +uEnv -- | PU and some additional information required for allocation on BusNetwork -data PUPrototype tag v x t where - PUPrototype :: - (UnitTag tag, PUClasses pu v x t) => +data PUPrototype tag v x t where + PUPrototype :: + (UnitTag tag, PUClasses pu v x t) => { forall tag v x t. PUPrototype tag v x t -> tag -pTag :: tag +pTag :: tag -- ^ Prototype tag. You can specify tag as a template by adding {x}. -- This will allow to allocate PU more than once by replacing {x} with index. -- When PU is allocated processUnitTag will look like bnName_pTag. , () -pProto :: pu +pProto :: pu -- ^ PU prototype , () -pIOPorts :: IOPorts pu +pIOPorts :: IOPorts pu -- ^ IO ports that will be used by PU } -> - PUPrototype tag v x t + PUPrototype tag v x t \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Problems.Allocation.html b/haddock/nitta/src/NITTA.Model.Problems.Allocation.html index f6cd55771..3f0f315a4 100644 --- a/haddock/nitta/src/NITTA.Model.Problems.Allocation.html +++ b/haddock/nitta/src/NITTA.Model.Problems.Allocation.html @@ -19,12 +19,12 @@ import Data.String.ToString (ToString (..)) import GHC.Generics (Generic) -data Allocation tag = Allocation +data Allocation tag = Allocation { forall tag. Allocation tag -> tag -networkTag :: tag +networkTag :: tag -- ^ Tag of the BusNetwork where PU will be allocated , forall tag. Allocation tag -> tag -processUnitTag :: tag +processUnitTag :: tag -- ^ Tag of the prototype that will be used for allocation } deriving (forall a. @@ -33,7 +33,7 @@ forall tag x. Allocation tag -> Rep (Allocation tag) x $cto :: forall tag x. Rep (Allocation tag) x -> Allocation tag $cfrom :: forall tag x. Allocation tag -> Rep (Allocation tag) x -Generic, Allocation tag -> Allocation tag -> Bool +Generic, Allocation tag -> Allocation tag -> Bool forall tag. Eq tag => Allocation tag -> Allocation tag -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Allocation tag -> Allocation tag -> Bool @@ -42,26 +42,26 @@ $c== :: forall tag. Eq tag => Allocation tag -> Allocation tag -> Bool Eq) -instance ToString tag => Show (Allocation tag) where - show :: Allocation tag -> String -show Allocation{tag +instance ToString tag => Show (Allocation tag) where + show :: Allocation tag -> String +show Allocation{tag networkTag :: tag networkTag :: forall tag. Allocation tag -> tag -networkTag, tag +networkTag, tag processUnitTag :: tag processUnitTag :: forall tag. Allocation tag -> tag -processUnitTag} = String +processUnitTag} = String "Allocation of " forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString tag -processUnitTag forall a. Semigroup a => a -> a -> a +processUnitTag forall a. Semigroup a => a -> a -> a <> String " on " forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString tag -networkTag +networkTag -class AllocationProblem u tag | u -> tag where - allocationOptions :: u -> [Allocation tag] - allocationDecision :: u -> Allocation tag -> u +class AllocationProblem u tag | u -> tag where + allocationOptions :: u -> [Allocation tag] + allocationDecision :: u -> Allocation tag -> u \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Problems.Bind.html b/haddock/nitta/src/NITTA.Model.Problems.Bind.html index d2f4dd72c..da6ac7f50 100644 --- a/haddock/nitta/src/NITTA.Model.Problems.Bind.html +++ b/haddock/nitta/src/NITTA.Model.Problems.Bind.html @@ -23,18 +23,18 @@ import NITTA.Model.ProcessorUnits.Types (UnitTag) import NITTA.Utils.Base (unionsMap) -data Bind tag v x - = SingleBind tag (F v x) +data Bind tag v x + = SingleBind tag (F v x) | GroupBind {forall tag v x. Bind tag v x -> Bool isObviousBinds :: Bool, forall tag v x. Bind tag v x -> Map tag [F v x] -bindGroup :: M.Map tag [F v x]} +bindGroup :: M.Map tag [F v x]} deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall tag v x x. Rep (Bind tag v x) x -> Bind tag v x forall tag v x x. Bind tag v x -> Rep (Bind tag v x) x $cto :: forall tag v x x. Rep (Bind tag v x) x -> Bind tag v x $cfrom :: forall tag v x x. Bind tag v x -> Rep (Bind tag v x) x -Generic, Bind tag v x -> Bind tag v x -> Bool +Generic, Bind tag v x -> Bind tag v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall tag v x. Eq tag => Bind tag v x -> Bind tag v x -> Bool /= :: Bind tag v x -> Bind tag v x -> Bool @@ -43,68 +43,68 @@ $c== :: forall tag v x. Eq tag => Bind tag v x -> Bind tag v x -> Bool Eq) -binds2bindGroup :: UnitTag tag => [(tag, F v x)] -> M.Map tag [F v x] +binds2bindGroup :: UnitTag tag => [(tag, F v x)] -> M.Map tag [F v x] binds2bindGroup :: forall tag v x. UnitTag tag => [(tag, F v x)] -> Map tag [F v x] -binds2bindGroup [(tag, F v x)] -binds = +binds2bindGroup [(tag, F v x)] +binds = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl - ( \Map tag [F v x] -st (tag -tag, F v x -f) -> + ( \Map tag [F v x] +st (tag +tag, F v x +f) -> forall k a. Ord k => (Maybe a -> Maybe a) -> k -> Map k a -> Map k a M.alter ( \case - (Just [F v x] -fs) -> forall a. a -> Maybe a + (Just [F v x] +fs) -> forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ F v x -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] : [F v x] -fs +fs Maybe [F v x] Nothing -> forall a. a -> Maybe a Just [F v x -f] +f] ) tag -tag +tag Map tag [F v x] -st +st ) forall k a. Map k a M.empty [(tag, F v x)] -binds +binds -instance UnitTag tag => Show (Bind tag v x) where - show :: Bind tag v x -> String -show (SingleBind tag -uTag F v x -f) = String +instance UnitTag tag => Show (Bind tag v x) where + show :: Bind tag v x -> String +show (SingleBind tag +uTag F v x +f) = String "Bind " forall a. Semigroup a => a -> a -> a <> forall tag v x. UnitTag tag => (F v x, tag) -> String showFAndTag (F v x -f, tag -uTag) - show (GroupBind{Bool +f, tag +uTag) + show (GroupBind{Bool isObviousBinds :: Bool isObviousBinds :: forall tag v x. Bind tag v x -> Bool -isObviousBinds, Map tag [F v x] +isObviousBinds, Map tag [F v x] bindGroup :: Map tag [F v x] bindGroup :: forall tag v x. Bind tag v x -> Map tag [F v x] -bindGroup}) = +bindGroup}) = forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ String "Binds " , if Bool -isObviousBinds then String +isObviousBinds then String "obviousBinds " else String "" , forall a. [a] -> [[a]] -> [a] @@ -114,29 +114,29 @@ showFsAndTag forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag [F v x] -bindGroup) +bindGroup) ] -showFAndTag :: UnitTag tag => (F v x, tag) -> String +showFAndTag :: UnitTag tag => (F v x, tag) -> String showFAndTag :: forall tag v x. UnitTag tag => (F v x, tag) -> String -showFAndTag (F v x -f, tag -tag) = forall a. ToString a => a -> String +showFAndTag (F v x +f, tag +tag) = forall a. ToString a => a -> String toString tag -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> String " <- " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show F v x -f +f -showFsAndTag :: (ToString a1, Show a2) => (a1, [a2]) -> String +showFsAndTag :: (ToString a1, Show a2) => (a1, [a2]) -> String showFsAndTag :: forall a1 a2. (ToString a1, Show a2) => (a1, [a2]) -> String -showFsAndTag (a1 -tag, [a2] -fs) = forall a. ToString a => a -> String +showFsAndTag (a1 +tag, [a2] +fs) = forall a. ToString a => a -> String toString a1 -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> String " <- " forall a. Semigroup a => a -> a -> a <> forall a. [a] -> [[a]] -> [a] @@ -144,43 +144,43 @@ ", " (forall a b. (a -> b) -> [a] -> [b] map forall a. Show a => a -> String show [a2] -fs) +fs) -class BindProblem u tag v x | u -> tag v x where - bindOptions :: u -> [Bind tag v x] - bindDecision :: u -> Bind tag v x -> u +class BindProblem u tag v x | u -> tag v x where + bindOptions :: u -> [Bind tag v x] + bindDecision :: u -> Bind tag v x -> u -instance Var v => Variables (Bind tab v x) v where - variables :: Bind tab v x -> Set v -variables (SingleBind tab -_tag F v x -f) = forall a v. Variables a v => a -> Set v +instance Var v => Variables (Bind tab v x) v where + variables :: Bind tab v x -> Set v +variables (SingleBind tab +_tag F v x +f) = forall a v. Variables a v => a -> Set v variables F v x -f - variables GroupBind{Map tab [F v x] +f + variables GroupBind{Map tab [F v x] bindGroup :: Map tab [F v x] bindGroup :: forall tag v x. Bind tag v x -> Map tag [F v x] -bindGroup} = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 +bindGroup} = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [a] M.elems Map tab [F v x] -bindGroup +bindGroup -instance WithFunctions (Bind tag v x) (F v x) where - functions :: Bind tag v x -> [F v x] -functions (SingleBind tag -_tag F v x -f) = [F v x -f] - functions GroupBind{Map tag [F v x] +instance WithFunctions (Bind tag v x) (F v x) where + functions :: Bind tag v x -> [F v x] +functions (SingleBind tag +_tag F v x +f) = [F v x +f] + functions GroupBind{Map tag [F v x] bindGroup :: Map tag [F v x] bindGroup :: forall tag v x. Bind tag v x -> Map tag [F v x] -bindGroup} = forall (t :: * -> *) a. Foldable t => t [a] -> [a] +bindGroup} = forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [a] M.elems Map tag [F v x] -bindGroup +bindGroup \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Problems.Dataflow.html b/haddock/nitta/src/NITTA.Model.Problems.Dataflow.html index 1773403ec..acaa94866 100644 --- a/haddock/nitta/src/NITTA.Model.Problems.Dataflow.html +++ b/haddock/nitta/src/NITTA.Model.Problems.Dataflow.html @@ -29,13 +29,13 @@ statement. Describe sending data between processor units over a network. Any 'DataflowSt' has implicently linked "NITTA.Model.Problems.Endpoint". -} -data DataflowSt tag v tp = DataflowSt +data DataflowSt tag v tp = DataflowSt { forall tag v tp. DataflowSt tag v tp -> (tag, EndpointSt v tp) -dfSource :: (tag, EndpointSt v tp) +dfSource :: (tag, EndpointSt v tp) -- ^ A source processor unit of data flow transaction, and it's time -- constrains which defines when data can be sended. , forall tag v tp. DataflowSt tag v tp -> [(tag, EndpointSt v tp)] -dfTargets :: [(tag, EndpointSt v tp)] +dfTargets :: [(tag, EndpointSt v tp)] -- ^ All possible targets of dataflow transaction. } deriving (forall a. @@ -50,85 +50,85 @@ DataflowSt tag v tp -> Rep (DataflowSt tag v tp) x Generic) -instance (ToString tag, Show (EndpointSt v tp)) => Show (DataflowSt tag v tp) where - show :: DataflowSt tag v tp -> String -show DataflowSt{(tag, EndpointSt v tp) +instance (ToString tag, Show (EndpointSt v tp)) => Show (DataflowSt tag v tp) where + show :: DataflowSt tag v tp -> String +show DataflowSt{(tag, EndpointSt v tp) dfSource :: (tag, EndpointSt v tp) dfSource :: forall tag v tp. DataflowSt tag v tp -> (tag, EndpointSt v tp) -dfSource, [(tag, EndpointSt v tp)] +dfSource, [(tag, EndpointSt v tp)] dfTargets :: [(tag, EndpointSt v tp)] dfTargets :: forall tag v tp. DataflowSt tag v tp -> [(tag, EndpointSt v tp)] -dfTargets} = +dfTargets} = String "DataflowSt{ dfSource=" forall a. Semigroup a => a -> a -> a <> forall {a} {a}. (ToString a, Show a) => (a, a) -> String -show' (tag, EndpointSt v tp) -dfSource forall a. Semigroup a => a -> a -> a +show' (tag, EndpointSt v tp) +dfSource forall a. Semigroup a => a -> a -> a <> String ", dfTargets=" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show (forall a b. (a -> b) -> [a] -> [b] map forall {a} {a}. (ToString a, Show a) => (a, a) -> String -show' [(tag, EndpointSt v tp)] -dfTargets) forall a. Semigroup a => a -> a -> a +show' [(tag, EndpointSt v tp)] +dfTargets) forall a. Semigroup a => a -> a -> a <> String "}" where - show' :: (a, a) -> String -show' (a -tag, a -ep) = String + show' :: (a, a) -> String +show' (a +tag, a +ep) = String "(" forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString a -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> String ", " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show a -ep forall a. Semigroup a => a -> a -> a +ep forall a. Semigroup a => a -> a -> a <> String ")" -instance Ord v => Variables (DataflowSt tag v tp) v where - variables :: DataflowSt tag v tp -> Set v -variables DataflowSt{[(tag, EndpointSt v tp)] +instance Ord v => Variables (DataflowSt tag v tp) v where + variables :: DataflowSt tag v tp -> Set v +variables DataflowSt{[(tag, EndpointSt v tp)] dfTargets :: [(tag, EndpointSt v tp)] dfTargets :: forall tag v tp. DataflowSt tag v tp -> [(tag, EndpointSt v tp)] -dfTargets} = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 +dfTargets} = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap (forall a v. Variables a v => a -> Set v variables forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(tag, EndpointSt v tp)] -dfTargets +dfTargets {- | Implemented for any things, which can send data between processor units over the network. -} -class DataflowProblem u tag v t | u -> tag v t where - dataflowOptions :: u -> [DataflowSt tag v (TimeConstraint t)] - dataflowDecision :: u -> DataflowSt tag v (Interval t) -> u +class DataflowProblem u tag v t | u -> tag v t where + dataflowOptions :: u -> [DataflowSt tag v (TimeConstraint t)] + dataflowDecision :: u -> DataflowSt tag v (Interval t) -> u -- | Convert dataflow option to decision. -dataflowOption2decision :: Time t => DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) +dataflowOption2decision :: Time t => DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) dataflowOption2decision :: forall t tag v. Time t => DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -dataflowOption2decision (DataflowSt (tag -srcTag, EndpointSt v (TimeConstraint t) -srcEp) [(tag, EndpointSt v (TimeConstraint t))] -trgs) = - let targetsAt :: [TimeConstraint t] -targetsAt = forall a b. (a -> b) -> [a] -> [b] +dataflowOption2decision (DataflowSt (tag +srcTag, EndpointSt v (TimeConstraint t) +srcEp) [(tag, EndpointSt v (TimeConstraint t))] +trgs) = + let targetsAt :: [TimeConstraint t] +targetsAt = forall a b. (a -> b) -> [a] -> [b] map (forall v tp. EndpointSt v tp -> tp epAt forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(tag, EndpointSt v (TimeConstraint t))] -trgs +trgs - srcStart :: t -srcStart = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a + srcStart :: t +srcStart = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall a. Interval a -> a @@ -137,11 +137,11 @@ tcAvailable) forall a b. (a -> b) -> a -> b $ forall v tp. EndpointSt v tp -> tp epAt EndpointSt v (TimeConstraint t) -srcEp forall a. a -> [a] -> [a] +srcEp forall a. a -> [a] -> [a] : [TimeConstraint t] -targetsAt - srcDuration :: t -srcDuration = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a +targetsAt + srcDuration :: t +srcDuration = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall a. Interval a -> a @@ -150,42 +150,42 @@ tcDuration) forall a b. (a -> b) -> a -> b $ forall v tp. EndpointSt v tp -> tp epAt EndpointSt v (TimeConstraint t) -srcEp forall a. a -> [a] -> [a] +srcEp forall a. a -> [a] -> [a] : [TimeConstraint t] -targetsAt - srcEnd :: t -srcEnd = t -srcStart forall a. Num a => a -> a -> a +targetsAt + srcEnd :: t +srcEnd = t +srcStart forall a. Num a => a -> a -> a + t -srcDuration forall a. Num a => a -> a -> a +srcDuration forall a. Num a => a -> a -> a - t 1 in DataflowSt { dfSource :: (tag, EndpointSt v (Interval t)) dfSource = (tag -srcTag, forall {tp1} {v} {tp2}. tp1 -> EndpointSt v tp2 -> EndpointSt v tp1 +srcTag, forall {tp1} {v} {tp2}. tp1 -> EndpointSt v tp2 -> EndpointSt v tp1 setAt (t -srcStart forall a. Ord a => a -> a -> Interval a +srcStart forall a. Ord a => a -> a -> Interval a ... t -srcEnd) EndpointSt v (TimeConstraint t) -srcEp) +srcEnd) EndpointSt v (TimeConstraint t) +srcEp) , dfTargets :: [(tag, EndpointSt v (Interval t))] dfTargets = forall a b. (a -> b) -> [a] -> [b] map (forall (p :: * -> * -> *) b c a. Bifunctor p => (b -> c) -> p a b -> p a c second (forall {t} {tp} {v}. (t -> tp) -> EndpointSt v t -> EndpointSt v tp -updAt (\TimeConstraint t -tc -> t -srcStart forall a. Ord a => a -> a -> Interval a +updAt (\TimeConstraint t +tc -> t +srcStart forall a. Ord a => a -> a -> Interval a ... (t -srcStart forall a. Num a => a -> a -> a +srcStart forall a. Num a => a -> a -> a + forall a. Interval a -> a inf (forall t. TimeConstraint t -> Interval t tcDuration TimeConstraint t -tc) forall a. Num a => a -> a -> a +tc) forall a. Num a => a -> a -> a - t 1)))) [(tag, EndpointSt v (TimeConstraint t))] -trgs +trgs } \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Problems.Endpoint.html b/haddock/nitta/src/NITTA.Model.Problems.Endpoint.html index 80dfa178c..19eebbb3a 100644 --- a/haddock/nitta/src/NITTA.Model.Problems.Endpoint.html +++ b/haddock/nitta/src/NITTA.Model.Problems.Endpoint.html @@ -35,12 +35,12 @@ import NITTA.Utils.Base import Numeric.Interval.NonEmpty -data EndpointSt v tp = EndpointSt +data EndpointSt v tp = EndpointSt { forall v tp. EndpointSt v tp -> EndpointRole v -epRole :: EndpointRole v +epRole :: EndpointRole v -- ^ use processor unit as source or target of data , forall v tp. EndpointSt v tp -> tp -epAt :: tp +epAt :: tp -- ^ time of operation } deriving (forall a. @@ -51,71 +51,71 @@ $cfrom :: forall v tp x. EndpointSt v tp -> Rep (EndpointSt v tp) x Generic) -instance Variables (EndpointSt v t) v where - variables :: EndpointSt v t -> Set v -variables EndpointSt{EndpointRole v +instance Variables (EndpointSt v t) v where + variables :: EndpointSt v t -> Set v +variables EndpointSt{EndpointRole v epRole :: EndpointRole v epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole} = forall a v. Variables a v => a -> Set v +epRole} = forall a v. Variables a v => a -> Set v variables EndpointRole v -epRole +epRole -instance (ToString v, Time t) => Show (EndpointSt v (TimeConstraint t)) where - show :: EndpointSt v (TimeConstraint t) -> String -show EndpointSt{EndpointRole v +instance (ToString v, Time t) => Show (EndpointSt v (TimeConstraint t)) where + show :: EndpointSt v (TimeConstraint t) -> String +show EndpointSt{EndpointRole v epRole :: EndpointRole v epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole, TimeConstraint t +epRole, TimeConstraint t epAt :: TimeConstraint t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} = String +epAt} = String "?" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show EndpointRole v -epRole forall a. Semigroup a => a -> a -> a +epRole forall a. Semigroup a => a -> a -> a <> String "@(" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show TimeConstraint t -epAt forall a. Semigroup a => a -> a -> a +epAt forall a. Semigroup a => a -> a -> a <> String ")" -instance (ToString v, Time t) => Show (EndpointSt v (Interval t)) where - show :: EndpointSt v (Interval t) -> String -show EndpointSt{EndpointRole v +instance (ToString v, Time t) => Show (EndpointSt v (Interval t)) where + show :: EndpointSt v (Interval t) -> String +show EndpointSt{EndpointRole v epRole :: EndpointRole v epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole, Interval t +epRole, Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} = String +epAt} = String "!" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show EndpointRole v -epRole forall a. Semigroup a => a -> a -> a +epRole forall a. Semigroup a => a -> a -> a <> String "@(" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Interval t -epAt forall a. Semigroup a => a -> a -> a +epAt forall a. Semigroup a => a -> a -> a <> String ")" -instance Ord v => Patch (EndpointSt v tp) (Changeset v) where - patch :: Changeset v -> EndpointSt v tp -> EndpointSt v tp -patch Changeset v -diff ep :: EndpointSt v tp -ep@EndpointSt{EndpointRole v +instance Ord v => Patch (EndpointSt v tp) (Changeset v) where + patch :: Changeset v -> EndpointSt v tp -> EndpointSt v tp +patch Changeset v +diff ep :: EndpointSt v tp +ep@EndpointSt{EndpointRole v epRole :: EndpointRole v epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole} = EndpointSt v tp -ep{epRole :: EndpointRole v +epRole} = EndpointSt v tp +ep{epRole :: EndpointRole v epRole = forall f diff. Patch f diff => diff -> f -> f patch Changeset v -diff EndpointRole v -epRole} +diff EndpointRole v +epRole} -instance (ToJSON v, ToJSON tp) => ToJSON (EndpointSt v tp) +instance (ToJSON v, ToJSON tp) => ToJSON (EndpointSt v tp) isSource :: EndpointSt v tp -> Bool isSource EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v @@ -134,42 +134,42 @@ False setAt :: tp -> EndpointSt v tp -> EndpointSt v tp -setAt tp -epAt ep :: EndpointSt v tp -ep@EndpointSt{} = EndpointSt v tp -ep{tp +setAt tp +epAt ep :: EndpointSt v tp +ep@EndpointSt{} = EndpointSt v tp +ep{tp epAt :: tp epAt :: tp -epAt} +epAt} updAt :: (t -> tp) -> EndpointSt v t -> EndpointSt v tp -updAt t -> tp -f ep :: EndpointSt v t -ep@EndpointSt{t +updAt t -> tp +f ep :: EndpointSt v t +ep@EndpointSt{t epAt :: t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} = EndpointSt v t -ep{epAt :: tp +epAt} = EndpointSt v t +ep{epAt :: tp epAt = t -> tp -f t -epAt} +f t +epAt} -class EndpointProblem u v t | u -> v t where - endpointOptions :: u -> [EndpointSt v (TimeConstraint t)] - endpointDecision :: u -> EndpointSt v (Interval t) -> u +class EndpointProblem u v t | u -> v t where + endpointOptions :: u -> [EndpointSt v (TimeConstraint t)] + endpointDecision :: u -> EndpointSt v (Interval t) -> u -data EndpointRole v +data EndpointRole v = -- | get data from PU - Source (S.Set v) + Source (S.Set v) | -- | put data to PU - Target v - deriving (EndpointRole v -> EndpointRole v -> Bool + Target v + deriving (EndpointRole v -> EndpointRole v -> Bool forall v. Eq v => EndpointRole v -> EndpointRole v -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: EndpointRole v -> EndpointRole v -> Bool $c/= :: forall v. Eq v => EndpointRole v -> EndpointRole v -> Bool == :: EndpointRole v -> EndpointRole v -> Bool $c== :: forall v. Eq v => EndpointRole v -> EndpointRole v -> Bool -Eq, EndpointRole v -> EndpointRole v -> Bool +Eq, EndpointRole v -> EndpointRole v -> Bool EndpointRole v -> EndpointRole v -> Ordering forall a. Eq a @@ -213,86 +213,86 @@ $cfrom :: forall v x. EndpointRole v -> Rep (EndpointRole v) x Generic) -instance ToString v => Show (EndpointRole v) where - show :: EndpointRole v -> String -show (Source Set v -vs) = String +instance ToString v => Show (EndpointRole v) where + show :: EndpointRole v -> String +show (Source Set v +vs) = String "Source " forall a. Semigroup a => a -> a -> a <> forall a. [a] -> [[a]] -> [a] S.join String "," (forall {a}. ToString a => Set a -> [String] vsToStringList Set v -vs) - show (Target v -v) = String +vs) + show (Target v +v) = String "Target " forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString v -v +v -instance Ord v => Patch (EndpointRole v) (Changeset v) where - patch :: Changeset v -> EndpointRole v -> EndpointRole v -patch Changeset{Map v v +instance Ord v => Patch (EndpointRole v) (Changeset v) where + patch :: Changeset v -> EndpointRole v -> EndpointRole v +patch Changeset{Map v v changeI :: forall v. Changeset v -> Map v v changeI :: Map v v -changeI} (Target v -v) = forall v. v -> EndpointRole v +changeI} (Target v +v) = forall v. v -> EndpointRole v Target forall a b. (a -> b) -> a -> b $ forall a. a -> Maybe a -> a fromMaybe v -v forall a b. (a -> b) -> a -> b +v forall a b. (a -> b) -> a -> b $ Map v v -changeI forall k a. Ord k => Map k a -> k -> Maybe a +changeI forall k a. Ord k => Map k a -> k -> Maybe a M.!? v -v - patch Changeset{Map v (Set v) +v + patch Changeset{Map v (Set v) changeO :: forall v. Changeset v -> Map v (Set v) changeO :: Map v (Set v) -changeO} (Source Set v -vs) = +changeO} (Source Set v +vs) = forall v. Set v -> EndpointRole v Source forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a S.unions forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\v -v -> forall a. a -> Maybe a -> a +map (\v +v -> forall a. a -> Maybe a -> a fromMaybe (forall a. a -> Set a S.singleton v -v) forall a b. (a -> b) -> a -> b +v) forall a b. (a -> b) -> a -> b $ Map v (Set v) -changeO forall k a. Ord k => Map k a -> k -> Maybe a +changeO forall k a. Ord k => Map k a -> k -> Maybe a M.!? v -v) forall a b. (a -> b) -> a -> b +v) forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems Set v -vs +vs -instance Variables (EndpointRole v) v where - variables :: EndpointRole v -> Set v -variables (Source Set v -vs) = Set v -vs - variables (Target v -v) = forall a. a -> Set a +instance Variables (EndpointRole v) v where + variables :: EndpointRole v -> Set v +variables (Source Set v +vs) = Set v +vs + variables (Target v +v) = forall a. a -> Set a S.singleton v -v +v -instance ToJSON v => ToJSON (EndpointRole v) +instance ToJSON v => ToJSON (EndpointRole v) isSubroleOf :: EndpointRole a -> EndpointRole a -> Bool -isSubroleOf (Target a -a) (Target a -b) = a -a forall a. Eq a => a -> a -> Bool +isSubroleOf (Target a +a) (Target a +b) = a +a forall a. Eq a => a -> a -> Bool == a -b -isSubroleOf (Source Set a -as) (Source Set a -bs) = Set a -as forall a. Ord a => Set a -> Set a -> Bool +b +isSubroleOf (Source Set a +as) (Source Set a +bs) = Set a +as forall a. Ord a => Set a -> Set a -> Bool `S.isSubsetOf` Set a -bs +bs isSubroleOf EndpointRole a _ EndpointRole a _ = Bool @@ -302,33 +302,33 @@ decision. -} endpointOptionToDecision :: EndpointSt v (TimeConstraint a) -> EndpointSt v (Interval a) -endpointOptionToDecision EndpointSt{EndpointRole v +endpointOptionToDecision EndpointSt{EndpointRole v epRole :: EndpointRole v epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole, TimeConstraint a +epRole, TimeConstraint a epAt :: TimeConstraint a epAt :: forall v tp. EndpointSt v tp -> tp -epAt} = - let a :: a -a = forall a. Interval a -> a +epAt} = + let a :: a +a = forall a. Interval a -> a inf forall a b. (a -> b) -> a -> b $ forall t. TimeConstraint t -> Interval t tcAvailable TimeConstraint a -epAt +epAt -- "-1" - is necessary for reduction transfer time - b :: a -b = a -a forall a. Num a => a -> a -> a + b :: a +b = a +a forall a. Num a => a -> a -> a + forall a. Interval a -> a inf (forall t. TimeConstraint t -> Interval t tcDuration TimeConstraint a -epAt) forall a. Num a => a -> a -> a +epAt) forall a. Num a => a -> a -> a - a 1 in forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt EndpointRole v -epRole (a -a forall a. Ord a => a -> a -> Interval a +epRole (a +a forall a. Ord a => a -> a -> Interval a ... a -b) +b) \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Problems.Refactor.BreakLoop.html b/haddock/nitta/src/NITTA.Model.Problems.Refactor.BreakLoop.html index 59a156033..dc4288c1d 100644 --- a/haddock/nitta/src/NITTA.Model.Problems.Refactor.BreakLoop.html +++ b/haddock/nitta/src/NITTA.Model.Problems.Refactor.BreakLoop.html @@ -39,15 +39,15 @@ import NITTA.Intermediate.Functions import NITTA.Intermediate.Types -data BreakLoop v x = BreakLoop +data BreakLoop v x = BreakLoop { forall v x. BreakLoop v x -> x -loopX :: x +loopX :: x -- ^ initial looped value , forall v x. BreakLoop v x -> Set v -loopO :: S.Set v +loopO :: S.Set v -- ^ output variables , forall v x. BreakLoop v x -> v -loopI :: v +loopI :: v -- ^ input variable } deriving (forall a. @@ -56,7 +56,7 @@ forall v x x. BreakLoop v x -> Rep (BreakLoop v x) x $cto :: forall v x x. Rep (BreakLoop v x) x -> BreakLoop v x $cfrom :: forall v x x. BreakLoop v x -> Rep (BreakLoop v x) x -Generic, BreakLoop v x -> BreakLoop v x -> Bool +Generic, BreakLoop v x -> BreakLoop v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. (Eq x, Eq v) => BreakLoop v x -> BreakLoop v x -> Bool /= :: BreakLoop v x -> BreakLoop v x -> Bool @@ -65,8 +65,8 @@ $c== :: forall v x. (Eq x, Eq v) => BreakLoop v x -> BreakLoop v x -> Bool Eq) -instance (Var v, Val x) => Show (BreakLoop v x) where - show :: BreakLoop v x -> String +instance (Var v, Val x) => Show (BreakLoop v x) where + show :: BreakLoop v x -> String show = (String "BreakLoop: " forall a. Semigroup a => a -> a -> a <>) forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -78,29 +78,29 @@ BreakLoop v x -> F v x recLoop -class BreakLoopProblem u v x | u -> v x where - breakLoopOptions :: u -> [BreakLoop v x] - breakLoopOptions u +class BreakLoopProblem u v x | u -> v x where + breakLoopOptions :: u -> [BreakLoop v x] + breakLoopOptions u _ = [] - breakLoopDecision :: u -> BreakLoop v x -> u - breakLoopDecision u + breakLoopDecision :: u -> BreakLoop v x -> u + breakLoopDecision u _ BreakLoop v x _ = forall a. HasCallStack => String -> a error String "not supported" recLoop :: BreakLoop v x -> F v x -recLoop BreakLoop{x +recLoop BreakLoop{x loopX :: x loopX :: forall v x. BreakLoop v x -> x -loopX, Set v +loopX, Set v loopO :: Set v loopO :: forall v x. BreakLoop v x -> Set v -loopO, v +loopO, v loopI :: v loopI :: forall v x. BreakLoop v x -> v -loopI} = +loopI} = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => @@ -109,23 +109,23 @@ $ forall v x. X x -> O v -> I v -> Loop v x Loop (forall x. x -> X x X x -loopX) (forall v. Set v -> O v +loopX) (forall v. Set v -> O v O Set v -loopO) (forall v. v -> I v +loopO) (forall v. v -> I v I v -loopI) +loopI) recLoopIn :: BreakLoop v x -> F v x -recLoopIn BreakLoop{x +recLoopIn BreakLoop{x loopX :: x loopX :: forall v x. BreakLoop v x -> x -loopX, Set v +loopX, Set v loopO :: Set v loopO :: forall v x. BreakLoop v x -> Set v -loopO, v +loopO, v loopI :: v loopI :: forall v x. BreakLoop v x -> v -loopI} = +loopI} = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => @@ -135,25 +135,25 @@ LoopEnd (forall v x. X x -> O v -> I v -> Loop v x Loop (forall x. x -> X x X x -loopX) (forall v. Set v -> O v +loopX) (forall v. Set v -> O v O Set v -loopO) (forall v. v -> I v +loopO) (forall v. v -> I v I v -loopI)) (forall v. v -> I v +loopI)) (forall v. v -> I v I v -loopI) +loopI) recLoopOut :: BreakLoop v x -> F v x -recLoopOut BreakLoop{x +recLoopOut BreakLoop{x loopX :: x loopX :: forall v x. BreakLoop v x -> x -loopX, Set v +loopX, Set v loopO :: Set v loopO :: forall v x. BreakLoop v x -> Set v -loopO, v +loopO, v loopI :: v loopI :: forall v x. BreakLoop v x -> v -loopI} = +loopI} = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => @@ -163,11 +163,11 @@ LoopBegin (forall v x. X x -> O v -> I v -> Loop v x Loop (forall x. x -> X x X x -loopX) (forall v. Set v -> O v +loopX) (forall v. Set v -> O v O Set v -loopO) (forall v. v -> I v +loopO) (forall v. v -> I v I v -loopI)) (forall v. Set v -> O v +loopI)) (forall v. Set v -> O v O Set v -loopO) +loopO) \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Problems.Refactor.ConstantFolding.html b/haddock/nitta/src/NITTA.Model.Problems.Refactor.ConstantFolding.html index fc2b5ee0f..3d4841e4e 100644 --- a/haddock/nitta/src/NITTA.Model.Problems.Refactor.ConstantFolding.html +++ b/haddock/nitta/src/NITTA.Model.Problems.Refactor.ConstantFolding.html @@ -66,11 +66,11 @@ import NITTA.Intermediate.Functions import NITTA.Intermediate.Types -data ConstantFolding v x = ConstantFolding +data ConstantFolding v x = ConstantFolding { forall v x. ConstantFolding v x -> [F v x] -cRefOld :: [F v x] +cRefOld :: [F v x] , forall v x. ConstantFolding v x -> [F v x] -cRefNew :: [F v x] +cRefNew :: [F v x] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -78,7 +78,7 @@ forall v x x. ConstantFolding v x -> Rep (ConstantFolding v x) x $cto :: forall v x x. Rep (ConstantFolding v x) x -> ConstantFolding v x $cfrom :: forall v x x. ConstantFolding v x -> Rep (ConstantFolding v x) x -Generic, Int -> ConstantFolding v x -> ShowS +Generic, Int -> ConstantFolding v x -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x. Int -> ConstantFolding v x -> ShowS @@ -90,7 +90,7 @@ $cshow :: forall v x. ConstantFolding v x -> String showsPrec :: Int -> ConstantFolding v x -> ShowS $cshowsPrec :: forall v x. Int -> ConstantFolding v x -> ShowS -Show, ConstantFolding v x -> ConstantFolding v x -> Bool +Show, ConstantFolding v x -> ConstantFolding v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. ConstantFolding v x -> ConstantFolding v x -> Bool /= :: ConstantFolding v x -> ConstantFolding v x -> Bool @@ -99,71 +99,71 @@ $c== :: forall v x. ConstantFolding v x -> ConstantFolding v x -> Bool Eq) -class ConstantFoldingProblem u v x | u -> v x where +class ConstantFoldingProblem u v x | u -> v x where -- | Function takes algorithm in 'DataFlowGraph' and return list of optimizations that can be done - constantFoldingOptions :: u -> [ConstantFolding v x] - constantFoldingOptions u + constantFoldingOptions :: u -> [ConstantFolding v x] + constantFoldingOptions u _ = [] -- | Function takes 'ConstantFolding' and modify 'DataFlowGraph' - constantFoldingDecision :: u -> ConstantFolding v x -> u - constantFoldingDecision u + constantFoldingDecision :: u -> ConstantFolding v x -> u + constantFoldingDecision u _ ConstantFolding v x _ = forall a. HasCallStack => String -> a error String "not implemented" -instance (Var v, Val x) => ConstantFoldingProblem [F v x] v x where - constantFoldingOptions :: [F v x] -> [ConstantFolding v x] -constantFoldingOptions [F v x] -fs = - let clusters :: [[F v x]] -clusters = forall {v} {x}. +instance (Var v, Val x) => ConstantFoldingProblem [F v x] v x where + constantFoldingOptions :: [F v x] -> [ConstantFolding v x] +constantFoldingOptions [F v x] +fs = + let clusters :: [[F v x]] +clusters = forall {v} {x}. (Typeable v, Typeable x, Ord v) => [F v x] -> [[F v x]] selectClusters [F v x] -fs - evaluatedClusters :: [[F v x]] -evaluatedClusters = forall a b. (a -> b) -> [a] -> [b] +fs + evaluatedClusters :: [[F v x]] +evaluatedClusters = forall a b. (a -> b) -> [a] -> [b] map forall {v} {x}. (IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => [F v x] -> [F v x] evalCluster [[F v x]] -clusters - zipOfClusters :: [([F v x], [F v x])] -zipOfClusters = forall a b. [a] -> [b] -> [(a, b)] +clusters + zipOfClusters :: [([F v x], [F v x])] +zipOfClusters = forall a b. [a] -> [b] -> [(a, b)] zip [[F v x]] -clusters [[F v x]] -evaluatedClusters - filteredZip :: [([F v x], [F v x])] -filteredZip = forall a. (a -> Bool) -> [a] -> [a] +clusters [[F v x]] +evaluatedClusters + filteredZip :: [([F v x], [F v x])] +filteredZip = forall a. (a -> Bool) -> [a] -> [a] filter (\case ([F v x _], [F v x] _) -> Bool False; ([F v x], [F v x]) _ -> Bool True) [([F v x], [F v x])] -zipOfClusters - options :: [ConstantFolding v x] -options = [ConstantFolding{cRefOld :: [F v x] +zipOfClusters + options :: [ConstantFolding v x] +options = [ConstantFolding{cRefOld :: [F v x] cRefOld = [F v x] -c, cRefNew :: [F v x] +c, cRefNew :: [F v x] cRefNew = [F v x] -ec} | ([F v x] -c, [F v x] -ec) <- [([F v x], [F v x])] -filteredZip, [F v x] -c forall a. Eq a => a -> a -> Bool +ec} | ([F v x] +c, [F v x] +ec) <- [([F v x], [F v x])] +filteredZip, [F v x] +c forall a. Eq a => a -> a -> Bool /= [F v x] -ec] - optionsFiltered :: [ConstantFolding v x] -optionsFiltered = forall a. (a -> Bool) -> [a] -> [a] +ec] + optionsFiltered :: [ConstantFolding v x] +optionsFiltered = forall a. (a -> Bool) -> [a] -> [a] filter ConstantFolding v x -> Bool -isBlankOptions [ConstantFolding v x] -options - isBlankOptions :: ConstantFolding v x -> Bool -isBlankOptions = Bool -> Bool +isBlankOptions [ConstantFolding v x] +options + isBlankOptions :: ConstantFolding v x -> Bool +isBlankOptions = Bool -> Bool not forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a. Foldable t => t a -> Bool null forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -171,118 +171,118 @@ ConstantFoldingProblem u v x => u -> ConstantFolding v x -> u constantFoldingDecision [F v x] -fs +fs in [ConstantFolding v x] -optionsFiltered +optionsFiltered - constantFoldingDecision :: [F v x] -> ConstantFolding v x -> [F v x] -constantFoldingDecision [F v x] -fs ConstantFolding{[F v x] + constantFoldingDecision :: [F v x] -> ConstantFolding v x -> [F v x] +constantFoldingDecision [F v x] +fs ConstantFolding{[F v x] cRefOld :: [F v x] cRefOld :: forall v x. ConstantFolding v x -> [F v x] -cRefOld, [F v x] +cRefOld, [F v x] cRefNew :: [F v x] cRefNew :: forall v x. ConstantFolding v x -> [F v x] -cRefNew} +cRefNew} | [F v x] -cRefOld forall a. Eq a => a -> a -> Bool +cRefOld forall a. Eq a => a -> a -> Bool == [F v x] -cRefNew = [F v x] -cRefNew +cRefNew = [F v x] +cRefNew | Bool otherwise = forall {a} {a}. (Ord a, Variables a a, Eq a) => [a] -> [a] deleteExtraF forall a b. (a -> b) -> a -> b $ ([F v x] -fs forall a. Eq a => [a] -> [a] -> [a] +fs forall a. Eq a => [a] -> [a] -> [a] L.\\ [F v x] -cRefOld) forall a. Semigroup a => a -> a -> a +cRefOld) forall a. Semigroup a => a -> a -> a <> [F v x] -cRefNew +cRefNew selectClusters :: [F v x] -> [[F v x]] -selectClusters [F v x] -fs = - let consts :: [F v x] -consts = forall a. (a -> Bool) -> [a] -> [a] +selectClusters [F v x] +fs = + let consts :: [F v x] +consts = forall a. (a -> Bool) -> [a] -> [a] filter forall {v} {x}. (Typeable v, Typeable x) => F v x -> Bool isConst [F v x] -fs - isIntersection :: Set a -> Set a -> Bool -isIntersection Set a -a Set a -b = Bool -> Bool +fs + isIntersection :: Set a -> Set a -> Bool +isIntersection Set a +a Set a +b = Bool -> Bool not forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Set a -> Bool S.null forall a b. (a -> b) -> a -> b $ forall a. Ord a => Set a -> Set a -> Set a S.intersection Set a -a Set a -b - inputsAreConst :: f -> Bool -inputsAreConst f -f = forall f v. Function f v => f -> Set v +a Set a +b + inputsAreConst :: f -> Bool +inputsAreConst f +f = forall f v. Function f v => f -> Set v inputs f -f forall a. Ord a => Set a -> Set a -> Bool +f forall a. Ord a => Set a -> Set a -> Bool `S.isSubsetOf` forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a S.unions (forall a b. (a -> b) -> [a] -> [b] map forall f v. Function f v => f -> Set v outputs [F v x] -consts) - getInputConsts :: f -> [F v x] -getInputConsts f -f = forall a. (a -> Bool) -> [a] -> [a] -filter (\F v x -c -> forall f v. Function f v => f -> Set v +consts) + getInputConsts :: f -> [F v x] +getInputConsts f +f = forall a. (a -> Bool) -> [a] -> [a] +filter (\F v x +c -> forall f v. Function f v => f -> Set v outputs F v x -c forall a. Ord a => Set a -> Set a -> Bool -`isIntersection` forall f v. Function f v => f -> Set v +c forall a. Ord a => Set a -> Set a -> Bool +`isIntersection` forall f v. Function f v => f -> Set v inputs f -f) [F v x] -consts - createCluster :: F v x -> [F v x] -createCluster F v x -f +f) [F v x] +consts + createCluster :: F v x -> [F v x] +createCluster F v x +f | forall {f}. Function f v => f -> Bool -inputsAreConst F v x -f = F v x -f forall a. a -> [a] -> [a] +inputsAreConst F v x +f = F v x +f forall a. a -> [a] -> [a] : forall {f}. Function f v => f -> [F v x] -getInputConsts F v x -f +getInputConsts F v x +f | Bool otherwise = [F v x -f] +f] in forall a b. (a -> b) -> [a] -> [b] map F v x -> [F v x] -createCluster [F v x] -fs +createCluster [F v x] +fs evalCluster :: [F v x] -> [F v x] -evalCluster [F v x -f] = [F v x -f] -evalCluster [F v x] -fs = [F v x] -outputResult +evalCluster [F v x +f] = [F v x +f] +evalCluster [F v x] +fs = [F v x] +outputResult where - ([F v x] -consts, [F v x] -fSingleton) = forall a. (a -> Bool) -> [a] -> ([a], [a]) + ([F v x] +consts, [F v x] +fSingleton) = forall a. (a -> Bool) -> [a] -> ([a], [a]) L.partition forall {v} {x}. (Typeable v, Typeable x) => F v x -> Bool isConst [F v x] -fs - f :: F v x -f = case [F v x] -fSingleton of - [F v x -f'] -> F v x -f' +fs + f :: F v x +f = case [F v x] +fSingleton of + [F v x +f'] -> F v x +f' [F v x] _ -> forall a. HasCallStack => String -> a error String "evalCluster: internal error" - cntx :: CycleCntx v x -cntx = forall v x. HashMap v x -> CycleCntx v x + cntx :: CycleCntx v x +cntx = forall v x. HashMap v x -> CycleCntx v x CycleCntx forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v HM.fromList forall a b. (a -> b) -> a -> b @@ -292,56 +292,56 @@ CycleCntx v x -> f -> [(v, x)] simulate forall a. Default a => a def) [F v x] -consts - outputResult :: [F v x] -outputResult +consts + outputResult :: [F v x] +outputResult | forall (t :: * -> *) a. Foldable t => t a -> Bool null forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v outputs F v x -f = [F v x] -fs +f = [F v x] +fs | Bool otherwise = forall a b. (a -> b) -> [a] -> [b] -map (\(v -v, x -x) -> forall v x. (Var v, Val x) => x -> [v] -> F v x +map (\(v +v, x +x) -> forall v x. (Var v, Val x) => x -> [v] -> F v x constant x -x [v -v]) (forall f v x. +x [v +v]) (forall f v x. FunctionSimulation f v x => CycleCntx v x -> f -> [(v, x)] simulate CycleCntx v x -cntx F v x -f) forall a. Semigroup a => a -> a -> a +cntx F v x +f) forall a. Semigroup a => a -> a -> a <> [F v x] -consts +consts deleteExtraF :: [a] -> [a] -deleteExtraF [a] -fs = +deleteExtraF [a] +fs = forall a. Eq a => [a] -> [a] L.nub [ a -f1 - | a -f1 <- [a] -fs - , a -f2 <- [a] -fs +f1 + | a +f1 <- [a] +fs + , a +f2 <- [a] +fs , a -f1 forall a. Eq a => a -> a -> Bool +f1 forall a. Eq a => a -> a -> Bool /= a -f2 +f2 , Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null (forall a v. Variables a v => a -> Set v variables a -f1 forall a. Ord a => Set a -> Set a -> Set a +f1 forall a. Ord a => Set a -> Set a -> Set a `S.intersection` forall a v. Variables a v => a -> Set v variables a -f2) +f2) ] \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Problems.Refactor.OptimizeAccum.html b/haddock/nitta/src/NITTA.Model.Problems.Refactor.OptimizeAccum.html index aacfd6f17..4bea04d0a 100644 --- a/haddock/nitta/src/NITTA.Model.Problems.Refactor.OptimizeAccum.html +++ b/haddock/nitta/src/NITTA.Model.Problems.Refactor.OptimizeAccum.html @@ -56,11 +56,11 @@ >>> optimizeAccumDecision fs $ head $ optimizeAccumOptions fs [Acc(+a +b +c = res),const(1) = a,const(2) = b,const(3) = c,loop(1, e) = res] -} -data OptimizeAccum v x = OptimizeAccum +data OptimizeAccum v x = OptimizeAccum { forall v x. OptimizeAccum v x -> [F v x] -refOld :: [F v x] +refOld :: [F v x] , forall v x. OptimizeAccum v x -> [F v x] -refNew :: [F v x] +refNew :: [F v x] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -68,7 +68,7 @@ forall v x x. OptimizeAccum v x -> Rep (OptimizeAccum v x) x $cto :: forall v x x. Rep (OptimizeAccum v x) x -> OptimizeAccum v x $cfrom :: forall v x x. OptimizeAccum v x -> Rep (OptimizeAccum v x) x -Generic, Int -> OptimizeAccum v x -> ShowS +Generic, Int -> OptimizeAccum v x -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x. Int -> OptimizeAccum v x -> ShowS @@ -80,7 +80,7 @@ $cshow :: forall v x. OptimizeAccum v x -> String showsPrec :: Int -> OptimizeAccum v x -> ShowS $cshowsPrec :: forall v x. Int -> OptimizeAccum v x -> ShowS -Show, OptimizeAccum v x -> OptimizeAccum v x -> Bool +Show, OptimizeAccum v x -> OptimizeAccum v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. OptimizeAccum v x -> OptimizeAccum v x -> Bool /= :: OptimizeAccum v x -> OptimizeAccum v x -> Bool @@ -89,159 +89,159 @@ $c== :: forall v x. OptimizeAccum v x -> OptimizeAccum v x -> Bool Eq) -class OptimizeAccumProblem u v x | u -> v x where +class OptimizeAccumProblem u v x | u -> v x where -- | Function takes algorithm in 'DataFlowGraph' and return list of 'Refactor' that can be done - optimizeAccumOptions :: u -> [OptimizeAccum v x] - optimizeAccumOptions u + optimizeAccumOptions :: u -> [OptimizeAccum v x] + optimizeAccumOptions u _ = [] -- | Function takes 'OptimizeAccum' and modify 'DataFlowGraph' - optimizeAccumDecision :: u -> OptimizeAccum v x -> u - optimizeAccumDecision u + optimizeAccumDecision :: u -> OptimizeAccum v x -> u + optimizeAccumDecision u _ OptimizeAccum v x _ = forall a. HasCallStack => String -> a error String "not implemented" -instance (Var v, Val x) => OptimizeAccumProblem [F v x] v x where - optimizeAccumOptions :: [F v x] -> [OptimizeAccum v x] -optimizeAccumOptions [F v x] -fs = [OptimizeAccum v x] -res +instance (Var v, Val x) => OptimizeAccumProblem [F v x] v x where + optimizeAccumOptions :: [F v x] -> [OptimizeAccum v x] +optimizeAccumOptions [F v x] +fs = [OptimizeAccum v x] +res where - res :: [OptimizeAccum v x] -res = + res :: [OptimizeAccum v x] +res = forall a. Eq a => [a] -> [a] L.nub [ OptimizeAccum{[F v x] refOld :: [F v x] refOld :: [F v x] -refOld, [F v x] +refOld, [F v x] refNew :: [F v x] refNew :: [F v x] -refNew} - | [F v x] -refOld <- forall {a} {a}. (Ord a, Ord a, Function a a) => [a] -> [[a]] +refNew} + | [F v x] +refOld <- forall {a} {a}. (Ord a, Ord a, Function a a) => [a] -> [[a]] selectClusters forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter forall {v} {x}. (Typeable v, Typeable x) => F v x -> Bool isSupportByAccum [F v x] -fs - , let refNew :: [F v x] -refNew = forall {k} {x}. +fs + , let refNew :: [F v x] +refNew = forall {k} {x}. (Ord k, Num x, Hashable k, Suffix k, ToString k, IsString k, Typeable x, Typeable k) => [F k x] -> [F k x] optimizeCluster [F v x] -refOld +refOld , forall a. Ord a => [a] -> Set a S.fromList [F v x] -refOld forall a. Eq a => a -> a -> Bool +refOld forall a. Eq a => a -> a -> Bool /= forall a. Ord a => [a] -> Set a S.fromList [F v x] -refNew +refNew ] - optimizeAccumDecision :: [F v x] -> OptimizeAccum v x -> [F v x] -optimizeAccumDecision [F v x] -fs OptimizeAccum{[F v x] + optimizeAccumDecision :: [F v x] -> OptimizeAccum v x -> [F v x] +optimizeAccumDecision [F v x] +fs OptimizeAccum{[F v x] refOld :: [F v x] refOld :: forall v x. OptimizeAccum v x -> [F v x] -refOld, [F v x] +refOld, [F v x] refNew :: [F v x] refNew :: forall v x. OptimizeAccum v x -> [F v x] -refNew} = [F v x] -refNew forall a. Semigroup a => a -> a -> a +refNew} = [F v x] +refNew forall a. Semigroup a => a -> a -> a <> ([F v x] -fs forall a. Eq a => [a] -> [a] -> [a] +fs forall a. Eq a => [a] -> [a] -> [a] L.\\ [F v x] -refOld) +refOld) selectClusters :: [a] -> [[a]] -selectClusters [a] -fs = +selectClusters [a] +fs = forall a. (a -> a -> Bool) -> [a] -> [a] L.nubBy - (\[a] -a [a] -b -> forall a. Ord a => [a] -> Set a + (\[a] +a [a] +b -> forall a. Ord a => [a] -> Set a S.fromList [a] -a forall a. Eq a => a -> a -> Bool +a forall a. Eq a => a -> a -> Bool == forall a. Ord a => [a] -> Set a S.fromList [a] -b) +b) [ [a -f, a -f'] - | a -f <- [a] -fs - , a -f' <- [a] -fs +f, a +f'] + | a +f <- [a] +fs + , a +f' <- [a] +fs , a -f' forall a. Eq a => a -> a -> Bool +f' forall a. Eq a => a -> a -> Bool /= a -f +f , forall {a} {f} {f}. (Ord a, Function f a, Function f a) => f -> f -> Bool -inputOutputIntersect a -f a -f' +inputOutputIntersect a +f a +f' ] where - inputOutputIntersect :: f -> f -> Bool -inputOutputIntersect f -f1 f -f2 = forall {a}. Ord a => Set a -> Set a -> Bool -isIntersection (forall f v. Function f v => f -> Set v + inputOutputIntersect :: f -> f -> Bool +inputOutputIntersect f +f1 f +f2 = forall {a}. Ord a => Set a -> Set a -> Bool +isIntersection (forall f v. Function f v => f -> Set v inputs f -f1) (forall f v. Function f v => f -> Set v +f1) (forall f v. Function f v => f -> Set v outputs f -f2) Bool -> Bool -> Bool +f2) Bool -> Bool -> Bool || forall {a}. Ord a => Set a -> Set a -> Bool -isIntersection (forall f v. Function f v => f -> Set v +isIntersection (forall f v. Function f v => f -> Set v inputs f -f2) (forall f v. Function f v => f -> Set v +f2) (forall f v. Function f v => f -> Set v outputs f -f1) - isIntersection :: Set a -> Set a -> Bool -isIntersection Set a -a Set a -b = Bool -> Bool +f1) + isIntersection :: Set a -> Set a -> Bool +isIntersection Set a +a Set a +b = Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall {a}. Ord a => Set a -> Set a -> Bool S.disjoint Set a -a Set a -b +a Set a +b isSupportByAccum :: F v x -> Bool -isSupportByAccum F v x -f +isSupportByAccum F v x +f | Just Add{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = Bool +f = Bool True | Just Sub{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = Bool +f = Bool True | Just Neg{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = Bool +f = Bool True | Just Acc{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = Bool +f = Bool True | Bool otherwise = Bool @@ -249,8 +249,8 @@ -- | Create Map String (HistoryTree (F v x)), where Key is input label and Value is FU that contain this input label containerMapCreate :: [f] -> Map k [f] -containerMapCreate [f] -fs = +containerMapCreate [f] +fs = forall (f :: * -> *) k a. (Foldable f, Ord k) => f (Map k a) -> Map k a @@ -258,21 +258,21 @@ $ forall a b. (a -> b) -> [a] -> [b] map - ( \f -f -> + ( \f +f -> forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl - ( \Map k [f] -dataMap k -k -> + ( \Map k [f] +dataMap k +k -> forall k a. Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a M.insertWith forall a. [a] -> [a] -> [a] (++) k -k [f -f] Map k [f] -dataMap +k [f +f] Map k [f] +dataMap ) forall k a. Map k a M.empty @@ -280,192 +280,192 @@ S.toList forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v inputs f -f) +f) ) [f] -fs +fs -- | Takes container and refactor it, if it can be optimizeCluster :: [F k x] -> [F k x] -optimizeCluster [F k x] -fs = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +optimizeCluster [F k x] +fs = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap F k x -> [F k x] -refactored [F k x] -fs +refactored [F k x] +fs where - containerMap :: Map k [F k x] -containerMap = forall {k} {f}. (Ord k, Function f k) => [f] -> Map k [f] + containerMap :: Map k [F k x] +containerMap = forall {k} {f}. (Ord k, Function f k) => [f] -> Map k [f] containerMapCreate [F k x] -fs +fs - refactored :: F k x -> [F k x] -refactored F k x -f = + refactored :: F k x -> [F k x] +refactored F k x +f = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap - ( \k -o -> + ( \k +o -> case forall k a. Ord k => a -> k -> Map k a -> a M.findWithDefault [] k -o Map k [F k x] -containerMap of +o Map k [F k x] +containerMap of [] -> [] - [F k x] -matchedFUs -> forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] + [F k x] +matchedFUs -> forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (forall {x} {a}. (Num x, Hashable a, Suffix a, ToString a, IsString a, Ord a, Typeable x, Typeable a) => F a x -> F a x -> [F a x] refactorFunction F k x -f) [F k x] -matchedFUs +f) [F k x] +matchedFUs ) (forall a. Set a -> [a] S.toList forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v outputs F k x -f) +f) refactorFunction :: F a x -> F a x -> [F a x] -refactorFunction F a x -f' F a x -f - | Just (Acc [Action a] -lst') <- forall (f :: * -> * -> *) v x. +refactorFunction F a x +f' F a x +f + | Just (Acc [Action a] +lst') <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F a x -f' - , Just (Acc [Action a] -lst) <- forall (f :: * -> * -> *) v x. +f' + , Just (Acc [Action a] +lst) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F a x -f - , let singleOutBool :: Bool -singleOutBool = (Int +f + , let singleOutBool :: Bool +singleOutBool = (Int 1 forall a. Eq a => a -> a -> Bool ==) forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v outputs F a x -f' - isOutInpIntersect :: Bool -isOutInpIntersect = +f' + isOutInpIntersect :: Bool +isOutInpIntersect = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any ( \case Push Sign -_ (I a -v) -> forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +_ (I a +v) -> forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool elem a -v forall a b. (a -> b) -> a -> b +v forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v outputs F a x -f' +f' Action a _ -> Bool False ) [Action a] -lst - makeRefactor :: Bool -makeRefactor = Bool -singleOutBool Bool -> Bool -> Bool +lst + makeRefactor :: Bool +makeRefactor = Bool +singleOutBool Bool -> Bool -> Bool && Bool -isOutInpIntersect +isOutInpIntersect in Bool -makeRefactor = - let subs :: v -> Action v -> Action v -> Maybe (Action v) -subs v +makeRefactor = + let subs :: v -> Action v -> Action v -> Maybe (Action v) +subs v _ (Push Sign Minus I v _) (Push Sign -Plus I v -v) = forall a. a -> Maybe a +Plus I v +v) = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall v. Sign -> I v -> Action v Push Sign Minus I v -v - subs v +v + subs v _ (Push Sign Minus I v _) (Push Sign -Minus I v -v) = forall a. a -> Maybe a +Minus I v +v) = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall v. Sign -> I v -> Action v Push Sign Plus I v -v - subs v +v + subs v _ (Push Sign Plus I v -_) push :: Action v -push@(Push Sign +_) push :: Action v +push@(Push Sign _ I v _) = forall a. a -> Maybe a Just Action v -push - subs v -v Action v -_ pull :: Action v -pull@(Pull O v +push + subs v +v Action v +_ pull :: Action v +pull@(Pull O v _) = forall {v}. Ord v => v -> Action v -> Maybe (Action v) deleteFromPull v -v Action v -pull - subs v +v Action v +pull + subs v _ Action v _ Action v _ = forall a. HasCallStack => String -> a error String "Pull can not be here" - refactorAcc :: [Action v] -> f -> Action v -> [Action v] -refactorAcc [Action v] + refactorAcc :: [Action v] -> f -> Action v -> [Action v] +refactorAcc [Action v] _ f -_ (Pull O v -o) = [forall v. O v -> Action v +_ (Pull O v +o) = [forall v. O v -> Action v Pull O v -o] - refactorAcc [Action v] -accList f -accNew accOld :: Action v -accOld@(Push Sign -s i :: I v -i@(I v -v)) +o] + refactorAcc [Action v] +accList f +accNew accOld :: Action v +accOld@(Push Sign +s i :: I v +i@(I v +v)) | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool elem v -v forall a b. (a -> b) -> a -> b +v forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v outputs f -accNew = forall a b. (a -> Maybe b) -> [a] -> [b] +accNew = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe (forall {v} {v}. Ord v => v -> Action v -> Action v -> Maybe (Action v) -subs v -v Action v -accOld) [Action v] -accList +subs v +v Action v +accOld) [Action v] +accList | Sign -s forall a. Eq a => a -> a -> Bool +s forall a. Eq a => a -> a -> Bool == Sign Minus = [forall v. Sign -> I v -> Action v Push Sign Minus I v -i] +i] | Sign -s forall a. Eq a => a -> a -> Bool +s forall a. Eq a => a -> a -> Bool == Sign Plus = [forall v. Sign -> I v -> Action v Push Sign Plus I v -i] - refactorAcc [Action v] +i] + refactorAcc [Action v] _ f _ (Push Sign _ (I v @@ -482,24 +482,24 @@ concatMap (forall {v} {f}. (Function f v, Ord v) => [Action v] -> f -> Action v -> [Action v] -refactorAcc [Action a] -lst' F a x -f') [Action a] -lst] - | Just F a x -f1 <- forall {v} {x}. +refactorAcc [Action a] +lst' F a x +f') [Action a] +lst] + | Just F a x +f1 <- forall {v} {x}. (Typeable v, Typeable x, Hashable v, Suffix v, ToString v, IsString v, Ord v, Num x) => F v x -> Maybe (F v x) fromAddSub F a x -f' - , Just F a x -f2 <- forall {v} {x}. +f' + , Just F a x +f2 <- forall {v} {x}. (Typeable v, Typeable x, Hashable v, Suffix v, ToString v, IsString v, Ord v, Num x) => F v x -> Maybe (F v x) fromAddSub F a x -f +f , (Int 1 forall a. Eq a => a -> a -> Bool ==) forall a b. (a -> b) -> a -> b @@ -507,29 +507,29 @@ length forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v outputs F a x -f' = case F a x -> F a x -> [F a x] +f' = case F a x -> F a x -> [F a x] refactorFunction F a x -f1 F a x -f2 of - [F a x -fNew] -> [F a x -fNew] +f1 F a x +f2 of + [F a x +fNew] -> [F a x +fNew] [F a x] _ -> [F a x -f, F a x -f'] +f, F a x +f'] | Bool otherwise = [F a x -f, F a x -f'] +f, F a x +f'] deleteFromPull :: v -> Action v -> Maybe (Action v) -deleteFromPull v -v (Pull (O Set v -s)) +deleteFromPull v +v (Pull (O Set v +s)) | forall a. Set a -> Bool S.null Set v -deleted = forall a. Maybe a +deleted = forall a. Maybe a Nothing | Bool otherwise = forall a. a -> Maybe a @@ -538,13 +538,13 @@ Pull forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O Set v -deleted +deleted where - deleted :: Set v -deleted = forall a. Ord a => a -> Set a -> Set a + deleted :: Set v +deleted = forall a. Ord a => a -> Set a -> Set a S.delete v -v Set v -s +v Set v +s deleteFromPull v _ (Push Sign _ I v @@ -553,16 +553,16 @@ "delete only Pull" fromAddSub :: F v x -> Maybe (F v x) -fromAddSub F v x -f - | Just (Add I v -in1 I v -in2 (O Set v -out)) <- forall (f :: * -> * -> *) v x. +fromAddSub F v x +f + | Just (Add I v +in1 I v +in2 (O Set v +out)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ @@ -575,28 +575,28 @@ [forall v. Sign -> I v -> Action v Push Sign Plus I v -in1, forall v. Sign -> I v -> Action v +in1, forall v. Sign -> I v -> Action v Push Sign Plus I v -in2] forall a. [a] -> [a] -> [a] +in2] forall a. [a] -> [a] -> [a] ++ [forall v. O v -> Action v Pull forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a S.fromList [v -o] | v -o <- forall a. Set a -> [a] +o] | v +o <- forall a. Set a -> [a] S.toList Set v -out] - | Just (Sub I v -in1 I v -in2 (O Set v -out)) <- forall (f :: * -> * -> *) v x. +out] + | Just (Sub I v +in1 I v +in2 (O Set v +out)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ @@ -609,27 +609,27 @@ [forall v. Sign -> I v -> Action v Push Sign Plus I v -in1, forall v. Sign -> I v -> Action v +in1, forall v. Sign -> I v -> Action v Push Sign Minus I v -in2] forall a. [a] -> [a] -> [a] +in2] forall a. [a] -> [a] -> [a] ++ [forall v. O v -> Action v Pull forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a S.fromList [v -o] | v -o <- forall a. Set a -> [a] +o] | v +o <- forall a. Set a -> [a] S.toList Set v -out] - | Just (Neg I v -in1 (O Set v -out)) <- forall (f :: * -> * -> *) v x. +out] + | Just (Neg I v +in1 (O Set v +out)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ @@ -642,24 +642,24 @@ forall v. Sign -> I v -> Action v Push Sign Minus I v -in1 forall a. a -> [a] -> [a] +in1 forall a. a -> [a] -> [a] : [forall v. O v -> Action v Pull forall a b. (a -> b) -> a -> b $ forall v. Set v -> O v O forall a b. (a -> b) -> a -> b $ forall a. a -> Set a S.singleton v -o | v -o <- forall a. Set a -> [a] +o | v +o <- forall a. Set a -> [a] S.toList Set v -out] +out] | Just Acc{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = forall a. a -> Maybe a +f = forall a. a -> Maybe a Just F v x -f +f | Bool otherwise = forall a. Maybe a Nothing diff --git a/haddock/nitta/src/NITTA.Model.Problems.Refactor.ResolveDeadlock.html b/haddock/nitta/src/NITTA.Model.Problems.Refactor.ResolveDeadlock.html index 9856998c6..4128f5c63 100644 --- a/haddock/nitta/src/NITTA.Model.Problems.Refactor.ResolveDeadlock.html +++ b/haddock/nitta/src/NITTA.Model.Problems.Refactor.ResolveDeadlock.html @@ -69,11 +69,11 @@ import NITTA.Intermediate.Types import NITTA.Utils.Base -data ResolveDeadlock v x = ResolveDeadlock +data ResolveDeadlock v x = ResolveDeadlock { forall v x. ResolveDeadlock v x -> F v x -newBuffer :: F v x +newBuffer :: F v x , forall v x. ResolveDeadlock v x -> Changeset v -changeset :: Changeset v +changeset :: Changeset v } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -81,7 +81,7 @@ forall v x x. ResolveDeadlock v x -> Rep (ResolveDeadlock v x) x $cto :: forall v x x. Rep (ResolveDeadlock v x) x -> ResolveDeadlock v x $cfrom :: forall v x x. ResolveDeadlock v x -> Rep (ResolveDeadlock v x) x -Generic, Int -> ResolveDeadlock v x -> ShowS +Generic, Int -> ResolveDeadlock v x -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x. @@ -111,7 +111,7 @@ (Typeable v, Ord v, IsString v, ToString v, Suffix v, Hashable v) => Int -> ResolveDeadlock v x -> ShowS -Show, ResolveDeadlock v x -> ResolveDeadlock v x -> Bool +Show, ResolveDeadlock v x -> ResolveDeadlock v x -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x. Eq v => @@ -126,53 +126,53 @@ ResolveDeadlock v x -> ResolveDeadlock v x -> Bool Eq) -class ResolveDeadlockProblem u v x | u -> v x where - resolveDeadlockOptions :: u -> [ResolveDeadlock v x] - resolveDeadlockOptions u +class ResolveDeadlockProblem u v x | u -> v x where + resolveDeadlockOptions :: u -> [ResolveDeadlock v x] + resolveDeadlockOptions u _ = [] - resolveDeadlockDecision :: u -> ResolveDeadlock v x -> u - resolveDeadlockDecision u + resolveDeadlockDecision :: u -> ResolveDeadlock v x -> u + resolveDeadlockDecision u _ ResolveDeadlock v x _ = forall a. HasCallStack => String -> a error String "not supported" -resolveDeadlock :: (Var v, Val x) => S.Set v -> ResolveDeadlock v x +resolveDeadlock :: (Var v, Val x) => S.Set v -> ResolveDeadlock v x resolveDeadlock :: forall v x. (Var v, Val x) => Set v -> ResolveDeadlock v x -resolveDeadlock Set v -buffered = - let bufferI :: v -bufferI = forall v. Suffix v => v -> v +resolveDeadlock Set v +buffered = + let bufferI :: v +bufferI = forall v. Suffix v => v -> v bufferSuffix forall a b. (a -> b) -> a -> b $ forall {c}. Set c -> c oneOf Set v -buffered - bufferO :: [v] -bufferO = forall a. Set a -> [a] +buffered + bufferO :: [v] +bufferO = forall a. Set a -> [a] S.elems Set v -buffered - diff :: Changeset v -diff = forall a. Default a => a +buffered + diff :: Changeset v +diff = forall a. Default a => a def{changeO :: Map v (Set v) -changeO = forall k a. Ord k => [(k, a)] -> Map k a +changeO = forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\v -o -> (v -o, forall a. a -> Set a +map (\v +o -> (v +o, forall a. a -> Set a S.singleton v -bufferI)) [v] -bufferO} +bufferI)) [v] +bufferO} in ResolveDeadlock { newBuffer :: F v x newBuffer = forall v x. (Var v, Val x) => v -> [v] -> F v x buffer v -bufferI [v] -bufferO +bufferI [v] +bufferO , changeset :: Changeset v changeset = Changeset v -diff +diff } -- | The constant, which restrict maximum length of a buffer sequence. diff --git a/haddock/nitta/src/NITTA.Model.Problems.ViewHelper.html b/haddock/nitta/src/NITTA.Model.Problems.ViewHelper.html index 179ec5502..5e7016123 100644 --- a/haddock/nitta/src/NITTA.Model.Problems.ViewHelper.html +++ b/haddock/nitta/src/NITTA.Model.Problems.ViewHelper.html @@ -23,7 +23,7 @@ import NITTA.Utils import Numeric.Interval.NonEmpty -newtype IntervalView = IntervalView T.Text +newtype IntervalView = IntervalView T.Text deriving (forall x. Rep IntervalView x -> IntervalView forall x. IntervalView -> Rep IntervalView x forall a. @@ -32,21 +32,21 @@ $cfrom :: forall x. IntervalView -> Rep IntervalView x Generic) -instance Time t => Viewable (Interval t) IntervalView where - view :: Interval t -> IntervalView +instance Time t => Viewable (Interval t) IntervalView where + view :: Interval t -> IntervalView view = Text -> IntervalView IntervalView forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> Text -> Text -> Text T.replace (forall {a}. Show a => a -> Text showText (forall a. Bounded a => a -maxBound :: t)) Text +maxBound :: t)) Text "INF" forall b c a. (b -> c) -> (a -> b) -> a -> c . forall {a}. Show a => a -> Text showText -instance ToJSON IntervalView +instance ToJSON IntervalView -data DecisionView +data DecisionView = RootView | SingleBindView { DecisionView -> FView @@ -104,22 +104,22 @@ $cfrom :: forall x. DecisionView -> Rep DecisionView x Generic) -instance UnitTag tag => Viewable (Bind tag v x) DecisionView where - view :: Bind tag v x -> DecisionView -view (SingleBind tag -uTag F v x -f) = +instance UnitTag tag => Viewable (Bind tag v x) DecisionView where + view :: Bind tag v x -> DecisionView +view (SingleBind tag +uTag F v x +f) = SingleBindView { $sel:function:RootView :: FView function = forall t v. Viewable t v => t -> v view F v x -f +f , $sel:pu:RootView :: Text pu = forall {a}. ToString a => a -> Text toText tag -uTag +uTag } - view GroupBind{Map tag [F v x] + view GroupBind{Map tag [F v x] bindGroup :: forall tag v x. Bind tag v x -> Map tag [F v x] bindGroup :: Map tag [F v x] bindGroup} = HashMap Text [FView] -> DecisionView @@ -136,14 +136,14 @@ view)) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag [F v x] -bindGroup +bindGroup -instance UnitTag tag => Viewable (Allocation tag) DecisionView where - view :: Allocation tag -> DecisionView -view Allocation{tag +instance UnitTag tag => Viewable (Allocation tag) DecisionView where + view :: Allocation tag -> DecisionView +view Allocation{tag networkTag :: forall tag. Allocation tag -> tag networkTag :: tag -networkTag, tag +networkTag, tag processUnitTag :: forall tag. Allocation tag -> tag processUnitTag :: tag processUnitTag} = @@ -151,19 +151,19 @@ { $sel:networkTag:RootView :: Text networkTag = forall {a}. ToString a => a -> Text toText tag -networkTag +networkTag , $sel:processUnitTag:RootView :: Text processUnitTag = forall {a}. ToString a => a -> Text toText tag -processUnitTag +processUnitTag } -instance (UnitTag tag, Var v, Time t) => Viewable (DataflowSt tag v (Interval t)) DecisionView where - view :: DataflowSt tag v (Interval t) -> DecisionView -view DataflowSt{(tag, EndpointSt v (Interval t)) +instance (UnitTag tag, Var v, Time t) => Viewable (DataflowSt tag v (Interval t)) DecisionView where + view :: DataflowSt tag v (Interval t) -> DecisionView +view DataflowSt{(tag, EndpointSt v (Interval t)) dfSource :: forall tag v tp. DataflowSt tag v tp -> (tag, EndpointSt v tp) dfSource :: (tag, EndpointSt v (Interval t)) -dfSource, [(tag, EndpointSt v (Interval t))] +dfSource, [(tag, EndpointSt v (Interval t))] dfTargets :: forall tag v tp. DataflowSt tag v tp -> [(tag, EndpointSt v tp)] dfTargets :: [(tag, EndpointSt v (Interval t))] dfTargets} = @@ -173,73 +173,73 @@ (Bifunctor p, ToString a, ToString a, Enum a) => p a (EndpointSt a (Interval a)) -> p Text (EndpointSt Text (Interval Int)) -view' (tag, EndpointSt v (Interval t)) -dfSource +view' (tag, EndpointSt v (Interval t)) +dfSource , $sel:targets:RootView :: [(Text, EndpointSt Text (Interval Int))] targets = forall a b. (a -> b) -> [a] -> [b] map forall {p :: * -> * -> *} {a} {a} {a}. (Bifunctor p, ToString a, ToString a, Enum a) => p a (EndpointSt a (Interval a)) -> p Text (EndpointSt Text (Interval Int)) -view' [(tag, EndpointSt v (Interval t))] -dfTargets +view' [(tag, EndpointSt v (Interval t))] +dfTargets } where - view' :: p a (EndpointSt a (Interval a)) + view' :: p a (EndpointSt a (Interval a)) -> p Text (EndpointSt Text (Interval Int)) -view' = forall (p :: * -> * -> *) a b c d. +view' = forall (p :: * -> * -> *) a b c d. Bifunctor p => (a -> b) -> (c -> d) -> p a c -> p b d bimap forall {a}. ToString a => a -> Text toText forall {a} {a}. (ToString a, Enum a) => EndpointSt a (Interval a) -> EndpointSt Text (Interval Int) -epdView - epdView :: EndpointSt a (Interval a) -> EndpointSt Text (Interval Int) -epdView EndpointSt{EndpointRole a +epdView + epdView :: EndpointSt a (Interval a) -> EndpointSt Text (Interval Int) +epdView EndpointSt{EndpointRole a epRole :: forall v tp. EndpointSt v tp -> EndpointRole v epRole :: EndpointRole a -epRole, Interval a +epRole, Interval a epAt :: forall v tp. EndpointSt v tp -> tp epAt :: Interval a epAt} = EndpointSt { epRole :: EndpointRole Text epRole = case EndpointRole a -epRole of - Source Set a -vs -> forall v. Set v -> EndpointRole v +epRole of + Source Set a +vs -> forall v. Set v -> EndpointRole v Source forall a b. (a -> b) -> a -> b $ forall b a. Ord b => (a -> b) -> Set a -> Set b S.map forall {a}. ToString a => a -> Text toText Set a -vs - Target a -v -> forall v. v -> EndpointRole v +vs + Target a +v -> forall v. v -> EndpointRole v Target forall a b. (a -> b) -> a -> b $ forall {a}. ToString a => a -> Text toText a -v +v , epAt :: Interval Int epAt = forall a. Enum a => a -> Int fromEnum (forall a. Interval a -> a sup Interval a -epAt) forall a. Ord a => a -> a -> Interval a +epAt) forall a. Ord a => a -> a -> Interval a ... forall a. Enum a => a -> Int fromEnum (forall a. Interval a -> a inf Interval a -epAt) +epAt) } -instance (Var v, Val x) => Viewable (BreakLoop v x) DecisionView where - view :: BreakLoop v x -> DecisionView -view BreakLoop{x +instance (Var v, Val x) => Viewable (BreakLoop v x) DecisionView where + view :: BreakLoop v x -> DecisionView +view BreakLoop{x loopX :: forall v x. BreakLoop v x -> x loopX :: x -loopX, Set v +loopX, Set v loopO :: forall v x. BreakLoop v x -> Set v loopO :: Set v -loopO, v +loopO, v loopI :: forall v x. BreakLoop v x -> v loopI :: v loopI} = @@ -247,26 +247,26 @@ { $sel:value:RootView :: Text value = forall {a}. Show a => a -> Text showText x -loopX +loopX , $sel:outputs:RootView :: [Text] outputs = forall a b. (a -> b) -> [a] -> [b] map forall {a}. ToString a => a -> Text toText forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems Set v -loopO +loopO , $sel:input:RootView :: Text input = forall {a}. ToString a => a -> Text toText v -loopI +loopI } -instance Viewable (ConstantFolding v x) DecisionView where - view :: ConstantFolding v x -> DecisionView -view ConstantFolding{[F v x] +instance Viewable (ConstantFolding v x) DecisionView where + view :: ConstantFolding v x -> DecisionView +view ConstantFolding{[F v x] cRefOld :: forall v x. ConstantFolding v x -> [F v x] cRefOld :: [F v x] -cRefOld, [F v x] +cRefOld, [F v x] cRefNew :: forall v x. ConstantFolding v x -> [F v x] cRefNew :: [F v x] cRefNew} = @@ -275,20 +275,20 @@ cRefOld = forall a b. (a -> b) -> [a] -> [b] map forall t v. Viewable t v => t -> v view [F v x] -cRefOld +cRefOld , $sel:cRefNew:RootView :: [FView] cRefNew = forall a b. (a -> b) -> [a] -> [b] map forall t v. Viewable t v => t -> v view [F v x] -cRefNew +cRefNew } -instance Viewable (OptimizeAccum v x) DecisionView where - view :: OptimizeAccum v x -> DecisionView -view OptimizeAccum{[F v x] +instance Viewable (OptimizeAccum v x) DecisionView where + view :: OptimizeAccum v x -> DecisionView +view OptimizeAccum{[F v x] refOld :: forall v x. OptimizeAccum v x -> [F v x] refOld :: [F v x] -refOld, [F v x] +refOld, [F v x] refNew :: forall v x. OptimizeAccum v x -> [F v x] refNew :: [F v x] refNew} = @@ -297,20 +297,20 @@ old = forall a b. (a -> b) -> [a] -> [b] map forall t v. Viewable t v => t -> v view [F v x] -refOld +refOld , $sel:new:RootView :: [FView] new = forall a b. (a -> b) -> [a] -> [b] map forall t v. Viewable t v => t -> v view [F v x] -refNew +refNew } -instance Var v => Viewable (ResolveDeadlock v x) DecisionView where - view :: ResolveDeadlock v x -> DecisionView -view ResolveDeadlock{F v x +instance Var v => Viewable (ResolveDeadlock v x) DecisionView where + view :: ResolveDeadlock v x -> DecisionView +view ResolveDeadlock{F v x newBuffer :: forall v x. ResolveDeadlock v x -> F v x newBuffer :: F v x -newBuffer, Changeset v +newBuffer, Changeset v changeset :: forall v x. ResolveDeadlock v x -> Changeset v changeset :: Changeset v changeset} = @@ -318,12 +318,12 @@ { $sel:newBuffer:RootView :: Text newBuffer = forall {a}. Show a => a -> Text showText F v x -newBuffer +newBuffer , $sel:changeset:RootView :: Text changeset = forall {a}. Show a => a -> Text showText Changeset v -changeset +changeset } -instance ToJSON DecisionView +instance ToJSON DecisionView \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.ProcessIntegrity.html b/haddock/nitta/src/NITTA.Model.ProcessIntegrity.html index c9334f1e3..5f316c7a1 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessIntegrity.html +++ b/haddock/nitta/src/NITTA.Model.ProcessIntegrity.html @@ -23,13 +23,13 @@ import NITTA.Model.ProcessorUnits import NITTA.Utils -class ProcessIntegrity u where - checkProcessIntegrity :: u -> Either String () +class ProcessIntegrity u where + checkProcessIntegrity :: u -> Either String () -instance ProcessorUnit (pu v x t) v x t => ProcessIntegrity (pu v x t) where - checkProcessIntegrity :: pu v x t -> Either String () -checkProcessIntegrity pu v x t -pu = +instance ProcessorUnit (pu v x t) v x t => ProcessIntegrity (pu v x t) where + checkProcessIntegrity :: pu v x t -> Either String () +checkProcessIntegrity pu v x t +pu = forall {b}. [Either String b] -> Either String () collectChecks [ forall {k} {a} {a} {a}. @@ -39,15 +39,15 @@ ProcessorUnit u v x t => u -> Map ProcessStepID (Set ProcessStepID) up2down pu v x t -pu) (forall {u} {v} {x} {t2}. +pu) (forall {u} {v} {x} {t2}. ProcessorUnit u v x t2 => u -> Map ProcessStepID (F v x) pid2intermediate pu v x t -pu) (forall {u} {v} {x} {t2}. +pu) (forall {u} {v} {x} {t2}. ProcessorUnit u v x t2 => u -> Map ProcessStepID (EndpointRole v) pid2endpoint pu v x t -pu) String +pu) String "intermediate not related to endpoint" , forall {k} {a} {a} {a}. (Ord k, Ord a, Show a) => @@ -56,15 +56,15 @@ ProcessorUnit u v x t => u -> Map ProcessStepID (Set ProcessStepID) down2up pu v x t -pu) (forall {u} {v} {x} {t2}. +pu) (forall {u} {v} {x} {t2}. ProcessorUnit u v x t2 => u -> Map ProcessStepID (EndpointRole v) pid2endpoint pu v x t -pu) (forall {u} {v} {x} {t2}. +pu) (forall {u} {v} {x} {t2}. ProcessorUnit u v x t2 => u -> Map ProcessStepID (F v x) pid2intermediate pu v x t -pu) String +pu) String "endpoint not related to intermediate" , forall {k} {a} {a} {a}. (Ord k, Ord a, Show a) => @@ -73,15 +73,15 @@ ProcessorUnit u v x t => u -> Map ProcessStepID (Set ProcessStepID) up2down pu v x t -pu) (forall {u} {v} {x} {t2}. +pu) (forall {u} {v} {x} {t2}. ProcessorUnit u v x t2 => u -> Map ProcessStepID (EndpointRole v) pid2endpoint pu v x t -pu) (forall {u} {v} {x} {t2}. +pu) (forall {u} {v} {x} {t2}. ProcessorUnit u v x t2 => u -> Map ProcessStepID (StepInfo v x t2) pid2instruction pu v x t -pu) String +pu) String "endpoint not related to instruction" , forall {k} {a} {a} {a}. (Ord k, Ord a, Show a) => @@ -90,62 +90,62 @@ ProcessorUnit u v x t => u -> Map ProcessStepID (Set ProcessStepID) down2up pu v x t -pu) (forall {u} {v} {x} {t2}. +pu) (forall {u} {v} {x} {t2}. ProcessorUnit u v x t2 => u -> Map ProcessStepID (StepInfo v x t2) pid2instruction pu v x t -pu) (forall {u} {v} {x} {t2}. +pu) (forall {u} {v} {x} {t2}. ProcessorUnit u v x t2 => u -> Map ProcessStepID (EndpointRole v) pid2endpoint pu v x t -pu) String +pu) String "instruction not related to endpoint" ] checkVerticalRelations :: Map k (Set a) -> Map k a -> Map a a -> String -> Either String () -checkVerticalRelations Map k (Set a) -f Map k a -dom Map a a -codom String -errmsg = +checkVerticalRelations Map k (Set a) +f Map k a +dom Map a a +codom String +errmsg = forall {b}. [Either String b] -> Either String () collectChecks forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map - ( \k -x -> - let ys :: Set a -ys = forall k a. Ord k => a -> k -> Map k a -> a + ( \k +x -> + let ys :: Set a +ys = forall k a. Ord k => a -> k -> Map k a -> a M.findWithDefault forall a. Set a S.empty k -x Map k (Set a) -f +x Map k (Set a) +f in if forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any (forall k a. Ord k => k -> Map k a -> Bool `M.member` Map a a -codom) forall a b. (a -> b) -> a -> b +codom) forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems Set a -ys +ys then forall a b. b -> Either a b Right () else forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b $ String -errmsg forall a. Semigroup a => a -> a -> a +errmsg forall a. Semigroup a => a -> a -> a <> String ": " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show (Map k a -dom forall k a. Ord k => Map k a -> k -> a +dom forall k a. Ord k => Map k a -> k -> a M.! k -x) +x) ) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [k] M.keys Map k a -dom +dom -- TODO: #205 Divider: missing vertical relation between Do instruction and Endpoint skipIntegrityErrors :: [String] @@ -153,224 +153,224 @@ "instruction not related to endpoint: Instruction: Do"] collectChecks :: [Either String b] -> Either String () -collectChecks [Either String b] -checks = case forall a b. [Either a b] -> [a] +collectChecks [Either String b] +checks = case forall a b. [Either a b] -> [a] lefts [Either String b] -checks of +checks of [] -> forall a b. b -> Either a b Right () - [String] -errs -> case forall a. (a -> Bool) -> [a] -> [a] + [String] +errs -> case forall a. (a -> Bool) -> [a] -> [a] filter (forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `L.notElem` [String] skipIntegrityErrors) [String] -errs of +errs of [] -> forall a b. b -> Either a b Right () - [String] -errs' -> forall a b. a -> Either a b + [String] +errs' -> forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b $ forall a. [a] -> [[a]] -> [a] S.join String "; " [String] -errs' +errs' relationsMap :: [(b, b)] -> Map b (Set b) -relationsMap [(b, b)] -pairs = forall k a. Ord k => [(k, a)] -> Map k a +relationsMap [(b, b)] +pairs = forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall {a} {a}. Ord a => [(a, a)] -> (a, Set a) -merge forall a b. (a -> b) -> a -> b +merge forall a b. (a -> b) -> a -> b $ forall a. (a -> a -> Bool) -> [a] -> [[a]] -L.groupBy (\(b, b) -a (b, b) -b -> forall a b. (a, b) -> a +L.groupBy (\(b, b) +a (b, b) +b -> forall a b. (a, b) -> a fst (b, b) -a forall a. Eq a => a -> a -> Bool +a forall a. Eq a => a -> a -> Bool == forall a b. (a, b) -> a fst (b, b) -b) forall a b. (a -> b) -> a -> b +b) forall a b. (a -> b) -> a -> b $ forall b a. Ord b => (a -> b) -> [a] -> [a] L.sortOn forall a b. (a, b) -> a fst [(b, b)] -pairs +pairs where - merge :: [(a, a)] -> (a, Set a) -merge xs :: [(a, a)] -xs@((a -a, a + merge :: [(a, a)] -> (a, Set a) +merge xs :: [(a, a)] +xs@((a +a, a _) : [(a, a)] _) = (a -a, forall a. Ord a => [a] -> Set a +a, forall a. Ord a => [a] -> Set a S.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> b snd [(a, a)] -xs) - merge [(a, a)] +xs) + merge [(a, a)] _ = forall a. HasCallStack => String -> a error String "internal error" up2down :: u -> Map ProcessStepID (Set ProcessStepID) -up2down u -pu = forall {b} {b}. (Ord b, Ord b) => [(b, b)] -> Map b (Set b) +up2down u +pu = forall {b} {b}. (Ord b, Ord b) => [(b, b)] -> Map b (Set b) relationsMap forall a b. (a -> b) -> a -> b $ forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe Relation -> Maybe (ProcessStepID, ProcessStepID) -get forall a b. (a -> b) -> a -> b +get forall a b. (a -> b) -> a -> b $ forall t i. Process t i -> [Relation] relations forall a b. (a -> b) -> a -> b $ forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -pu +pu where - get :: Relation -> Maybe (ProcessStepID, ProcessStepID) -get Vertical{ProcessStepID + get :: Relation -> Maybe (ProcessStepID, ProcessStepID) +get Vertical{ProcessStepID vUp :: Relation -> ProcessStepID vUp :: ProcessStepID -vUp, ProcessStepID +vUp, ProcessStepID vDown :: Relation -> ProcessStepID vDown :: ProcessStepID vDown} = forall a. a -> Maybe a Just (ProcessStepID -vUp, ProcessStepID -vDown) - get Relation +vUp, ProcessStepID +vDown) + get Relation _ = forall a. Maybe a Nothing down2up :: u -> Map ProcessStepID (Set ProcessStepID) -down2up u -pu = forall {b} {b}. (Ord b, Ord b) => [(b, b)] -> Map b (Set b) +down2up u +pu = forall {b} {b}. (Ord b, Ord b) => [(b, b)] -> Map b (Set b) relationsMap forall a b. (a -> b) -> a -> b $ forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe Relation -> Maybe (ProcessStepID, ProcessStepID) -get forall a b. (a -> b) -> a -> b +get forall a b. (a -> b) -> a -> b $ forall t i. Process t i -> [Relation] relations forall a b. (a -> b) -> a -> b $ forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -pu +pu where - get :: Relation -> Maybe (ProcessStepID, ProcessStepID) -get Vertical{ProcessStepID + get :: Relation -> Maybe (ProcessStepID, ProcessStepID) +get Vertical{ProcessStepID vUp :: ProcessStepID vUp :: Relation -> ProcessStepID -vUp, ProcessStepID +vUp, ProcessStepID vDown :: ProcessStepID vDown :: Relation -> ProcessStepID -vDown} = forall a. a -> Maybe a +vDown} = forall a. a -> Maybe a Just (ProcessStepID -vDown, ProcessStepID -vUp) - get Relation +vDown, ProcessStepID +vUp) + get Relation _ = forall a. Maybe a Nothing pid2intermediate :: u -> Map ProcessStepID (F v x) -pid2intermediate u -pu = forall k a. Ord k => [(k, a)] -> Map k a +pid2intermediate u +pu = forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe forall {t1} {v} {x} {t2}. Step t1 (StepInfo v x t2) -> Maybe (ProcessStepID, F v x) -get forall a b. (a -> b) -> a -> b +get forall a b. (a -> b) -> a -> b $ forall t i. Process t i -> [Step t i] steps forall a b. (a -> b) -> a -> b $ forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -pu +pu where - get :: Step t1 (StepInfo v x t2) -> Maybe (ProcessStepID, F v x) -get s :: Step t1 (StepInfo v x t2) -s@Step{ProcessStepID + get :: Step t1 (StepInfo v x t2) -> Maybe (ProcessStepID, F v x) +get s :: Step t1 (StepInfo v x t2) +s@Step{ProcessStepID pID :: forall t i. Step t i -> ProcessStepID pID :: ProcessStepID pID} - | Just F v x -f <- forall {t1} {v} {x} {t2}. + | Just F v x +f <- forall {t1} {v} {x} {t2}. Step t1 (StepInfo v x t2) -> Maybe (F v x) getIntermediate Step t1 (StepInfo v x t2) -s = forall a. a -> Maybe a +s = forall a. a -> Maybe a Just (ProcessStepID -pID, F v x -f) +pID, F v x +f) | Bool otherwise = forall a. Maybe a Nothing pid2endpoint :: u -> Map ProcessStepID (EndpointRole v) -pid2endpoint u -pu = forall k a. Ord k => [(k, a)] -> Map k a +pid2endpoint u +pu = forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe forall {t1} {v} {x} {t2}. Step t1 (StepInfo v x t2) -> Maybe (ProcessStepID, EndpointRole v) -get forall a b. (a -> b) -> a -> b +get forall a b. (a -> b) -> a -> b $ forall t i. Process t i -> [Step t i] steps forall a b. (a -> b) -> a -> b $ forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -pu +pu where - get :: Step t1 (StepInfo v x t2) -> Maybe (ProcessStepID, EndpointRole v) -get s :: Step t1 (StepInfo v x t2) -s@Step{ProcessStepID + get :: Step t1 (StepInfo v x t2) -> Maybe (ProcessStepID, EndpointRole v) +get s :: Step t1 (StepInfo v x t2) +s@Step{ProcessStepID pID :: ProcessStepID pID :: forall t i. Step t i -> ProcessStepID -pID} - | Just EndpointRole v -ep <- forall {t1} {v} {x} {t2}. +pID} + | Just EndpointRole v +ep <- forall {t1} {v} {x} {t2}. Step t1 (StepInfo v x t2) -> Maybe (EndpointRole v) getEndpoint Step t1 (StepInfo v x t2) -s = forall a. a -> Maybe a +s = forall a. a -> Maybe a Just (ProcessStepID -pID, EndpointRole v -ep) +pID, EndpointRole v +ep) | Bool otherwise = forall a. Maybe a Nothing pid2instruction :: u -> Map ProcessStepID (StepInfo v x t2) -pid2instruction u -pu = forall k a. Ord k => [(k, a)] -> Map k a +pid2instruction u +pu = forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe forall {t1} {v} {x} {t2}. Step t1 (StepInfo v x t2) -> Maybe (ProcessStepID, StepInfo v x t2) -get forall a b. (a -> b) -> a -> b +get forall a b. (a -> b) -> a -> b $ forall t i. Process t i -> [Step t i] steps forall a b. (a -> b) -> a -> b $ forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -pu +pu where - get :: Step t1 (StepInfo v x t2) -> Maybe (ProcessStepID, StepInfo v x t2) -get s :: Step t1 (StepInfo v x t2) -s@Step{ProcessStepID + get :: Step t1 (StepInfo v x t2) -> Maybe (ProcessStepID, StepInfo v x t2) +get s :: Step t1 (StepInfo v x t2) +s@Step{ProcessStepID pID :: ProcessStepID pID :: forall t i. Step t i -> ProcessStepID -pID} - | Just StepInfo v x t2 -instr <- forall {t1} {v} {x} {t2}. +pID} + | Just StepInfo v x t2 +instr <- forall {t1} {v} {x} {t2}. Step t1 (StepInfo v x t2) -> Maybe (StepInfo v x t2) getInstruction Step t1 (StepInfo v x t2) -s = forall a. a -> Maybe a +s = forall a. a -> Maybe a Just (ProcessStepID -pID, StepInfo v x t2 -instr) +pID, StepInfo v x t2 +instr) | Bool otherwise = forall a. Maybe a Nothing diff --git a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Accum.html b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Accum.html index 075b44590..99e9448fe 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Accum.html +++ b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Accum.html @@ -48,12 +48,12 @@ @a + b = c; d - e = f@ is one expression too and it equals: @[[(False, "a"), (False, "b")], [(False, "c")], [(False, "d"), (True, "d")], [(False, "f")]]@ -} -data Job v x = Job +data Job v x = Job { forall v x. Job v x -> [[(Bool, v)]] -tasks :: [[(Bool, v)]] +tasks :: [[(Bool, v)]] -- ^ Contains future parts expression to eval (c + d = e) , forall v x. Job v x -> F v x -func :: F v x +func :: F v x -- ^ Func of this expression , forall v x. Job v x -> JobState state :: JobState @@ -65,7 +65,7 @@ | Calculate | WaitResults | ArgumentAfterResult - deriving (Int -> JobState -> ShowS + deriving (Int -> JobState -> ShowS [JobState] -> ShowS JobState -> String forall a. @@ -79,30 +79,30 @@ Show) taskVars :: [(a, a)] -> Set a -taskVars [(a, a)] -lst = forall a. Ord a => [a] -> Set a +taskVars [(a, a)] +lst = forall a. Ord a => [a] -> Set a S.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> b snd [(a, a)] -lst +lst -instance Var v => Show (Job v x) where - show :: Job v x -> String -show Job{[[(Bool, v)]] +instance Var v => Show (Job v x) where + show :: Job v x -> String +show Job{[[(Bool, v)]] tasks :: [[(Bool, v)]] $sel:tasks:Job :: forall v x. Job v x -> [[(Bool, v)]] -tasks, F v x +tasks, F v x func :: F v x $sel:func:Job :: forall v x. Job v x -> F v x -func, JobState +func, JobState state :: JobState $sel:state:Job :: forall v x. Job v x -> JobState -state} = +state} = [i|Job{tasks=#{ show' tasks }, func=#{ func }, state=#{ state }}|] where - show' :: [[(a, v)]] -> [[(a, String)]] -show' = forall a b. (a -> b) -> [a] -> [b] + show' :: [[(a, v)]] -> [[(a, String)]] +show' = forall a b. (a -> b) -> [a] -> [b] map (forall a b. (a -> b) -> [a] -> [b] map (forall (p :: * -> * -> *) b c a. Bifunctor p => @@ -110,22 +110,22 @@ second forall a. ToString a => a -> String toString)) -data Accum v x t = Accum +data Accum v x t = Accum { forall v x t. Accum v x t -> [Job v x] -remainJobs :: [Job v x] +remainJobs :: [Job v x] -- ^ List of jobs (expressions) , forall v x t. Accum v x t -> Maybe (Job v x) -currentJob :: Maybe (Job v x) +currentJob :: Maybe (Job v x) -- ^ Current job , forall v x t. Accum v x t -> Process t (StepInfo v x t) -process_ :: Process t (StepInfo v x t) +process_ :: Process t (StepInfo v x t) -- ^ Process } -instance VarValTime v x t => Pretty (Accum v x t) where - pretty :: forall ann. Accum v x t -> Doc ann -pretty Accum v x t -a = +instance VarValTime v x t => Pretty (Accum v x t) where + pretty :: forall ann. Accum v x t -> Doc ann +pretty Accum v x t +a = [__i| Accum: remainJobs: #{ remainJobs a } @@ -133,15 +133,15 @@ #{ indent 4 $ pretty $ process_ a } |] -instance VarValTime v x t => Show (Accum v x t) where - show :: Accum v x t -> String -show = forall a. Show a => a -> String +instance VarValTime v x t => Show (Accum v x t) where + show :: Accum v x t -> String +show = forall a. Show a => a -> String show forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a ann. Pretty a => a -> Doc ann pretty -instance VarValTime v x t => Default (Accum v x t) where - def :: Accum v x t +instance VarValTime v x t => Default (Accum v x t) where + def :: Accum v x t def = Accum { $sel:remainJobs:Accum :: [Job v x] @@ -154,20 +154,20 @@ def } -instance Default x => DefaultX (Accum v x t) x +instance Default x => DefaultX (Accum v x t) x registerAcc :: Acc v x -> Accum v x t -> Accum v x t -registerAcc f :: Acc v x -f@F.Acc{[Action v] +registerAcc f :: Acc v x +f@F.Acc{[Action v] $sel:actions:Acc :: forall v x. Acc v x -> [Action v] actions :: [Action v] -actions} pu :: Accum v x t -pu@Accum{[Job v x] +actions} pu :: Accum v x t +pu@Accum{[Job v x] remainJobs :: [Job v x] $sel:remainJobs:Accum :: forall v x t. Accum v x t -> [Job v x] -remainJobs} = +remainJobs} = Accum v x t -pu +pu { $sel:remainJobs:Accum :: [Job v x] remainJobs = Job @@ -176,124 +176,124 @@ concat forall a b. (a -> b) -> a -> b $ forall {b}. [Action b] -> [[[(Bool, b)]]] actionGroups [Action v] -actions +actions , $sel:func:Job :: F v x func = forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, FunctionSimulation f v x, Typeable f, Eq f) => f -> F v x packF Acc v x -f +f , $sel:state:Job :: JobState state = JobState Initialize } forall a. a -> [a] -> [a] : [Job v x] -remainJobs +remainJobs } actionGroups :: [Action b] -> [[[(Bool, b)]]] actionGroups [] = [] -actionGroups [Action b] -as = - let ([Action b] -pushs, [Action b] -as') = forall a. (a -> Bool) -> [a] -> ([a], [a]) +actionGroups [Action b] +as = + let ([Action b] +pushs, [Action b] +as') = forall a. (a -> Bool) -> [a] -> ([a], [a]) span forall {v}. Action v -> Bool F.isPush [Action b] -as - ([Action b] -pulls, [Action b] -as'') = forall a. (a -> Bool) -> [a] -> ([a], [a]) +as + ([Action b] +pulls, [Action b] +as'') = forall a. (a -> Bool) -> [a] -> ([a], [a]) span forall {v}. Action v -> Bool F.isPull [Action b] -as' +as' in [ forall a b. (a -> b) -> [a] -> [b] map ( \case - (F.Push Sign -sign (I b -v)) -> (Sign -sign forall a. Eq a => a -> a -> Bool + (F.Push Sign +sign (I b +v)) -> (Sign +sign forall a. Eq a => a -> a -> Bool == Sign F.Minus, b -v) +v) Action b _ -> forall a. HasCallStack => String -> a error String "actionGroups: internal error" ) [Action b] -pushs +pushs , forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap ( \case - (F.Pull (O Set b -vs)) -> forall a b. (a -> b) -> [a] -> [b] + (F.Pull (O Set b +vs)) -> forall a b. (a -> b) -> [a] -> [b] map (Bool True,) forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems Set b -vs +vs Action b _ -> forall a. HasCallStack => String -> a error String "actionGroups: internal error" ) [Action b] -pulls +pulls ] forall a. a -> [a] -> [a] : [Action b] -> [[[(Bool, b)]]] actionGroups [Action b] -as'' +as'' targetTask :: [a] -> Maybe a -targetTask [a] -tasks +targetTask [a] +tasks | forall a. Integral a => a -> Bool even forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Int length [a] -tasks = forall a. a -> Maybe a +tasks = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [a] -tasks +tasks | Bool otherwise = forall a. Maybe a Nothing sourceTask :: [a] -> Maybe a -sourceTask [a] -tasks +sourceTask [a] +tasks | forall a. Integral a => a -> Bool odd forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Int length [a] -tasks = forall a. a -> Maybe a +tasks = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [a] -tasks +tasks | Bool otherwise = forall a. Maybe a Nothing -instance VarValTime v x t => ProcessorUnit (Accum v x t) v x t where - tryBind :: F v x -> Accum v x t -> Either String (Accum v x t) -tryBind F v x -f Accum v x t -pu - | Just (F.Add I v -a I v -b O v -c) <- forall (f :: * -> * -> *) v x. +instance VarValTime v x t => ProcessorUnit (Accum v x t) v x t where + tryBind :: F v x -> Accum v x t -> Either String (Accum v x t) +tryBind F v x +f Accum v x t +pu + | Just (F.Add I v +a I v +b O v +c) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = forall a b. b -> Either a b Right forall a b. (a -> b) -> a -> b $ forall {v} {x} {t}. @@ -304,21 +304,21 @@ F.Acc [forall v. Sign -> I v -> Action v F.Push Sign F.Plus I v -a, forall v. Sign -> I v -> Action v +a, forall v. Sign -> I v -> Action v F.Push Sign F.Plus I v -b, forall v. O v -> Action v +b, forall v. O v -> Action v F.Pull O v -c]) Accum v x t -pu - | Just (F.Sub I v -a I v -b O v -c) <- forall (f :: * -> * -> *) v x. +c]) Accum v x t +pu + | Just (F.Sub I v +a I v +b O v +c) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = forall a b. b -> Either a b Right forall a b. (a -> b) -> a -> b $ forall {v} {x} {t}. @@ -329,20 +329,20 @@ F.Acc [forall v. Sign -> I v -> Action v F.Push Sign F.Plus I v -a, forall v. Sign -> I v -> Action v +a, forall v. Sign -> I v -> Action v F.Push Sign F.Minus I v -b, forall v. O v -> Action v +b, forall v. O v -> Action v F.Pull O v -c]) Accum v x t -pu - | Just (F.Neg I v -a O v -b) <- forall (f :: * -> * -> *) v x. +c]) Accum v x t +pu + | Just (F.Neg I v +a O v +b) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = forall a b. b -> Either a b Right forall a b. (a -> b) -> a -> b $ forall {v} {x} {t}. @@ -353,16 +353,16 @@ F.Acc [forall v. Sign -> I v -> Action v F.Push Sign F.Minus I v -a, forall v. O v -> Action v +a, forall v. O v -> Action v F.Pull O v -b]) Accum v x t -pu - | Just f' :: Acc v x -f'@F.Acc{} <- forall (f :: * -> * -> *) v x. +b]) Accum v x t +pu + | Just f' :: Acc v x +f'@F.Acc{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = forall a b. b -> Either a b Right forall a b. (a -> b) -> a -> b $ forall {v} {x} {t}. @@ -370,8 +370,8 @@ Typeable v, Typeable x) => Acc v x -> Accum v x t -> Accum v x t registerAcc Acc v x -f' Accum v x t -pu +f' Accum v x t +pu | Bool otherwise = forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b @@ -379,56 +379,56 @@ "The function is unsupported by Accum: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show F v x -f +f - process :: Accum v x t -> Process t (StepInfo v x t) + process :: Accum v x t -> Process t (StepInfo v x t) process = forall v x t. Accum v x t -> Process t (StepInfo v x t) process_ -instance VarValTime v x t => EndpointProblem (Accum v x t) v t where - endpointOptions :: Accum v x t -> [EndpointSt v (TimeConstraint t)] -endpointOptions pu :: Accum v x t -pu@Accum{$sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) -currentJob = Just Job{[[(Bool, v)]] +instance VarValTime v x t => EndpointProblem (Accum v x t) v t where + endpointOptions :: Accum v x t -> [EndpointSt v (TimeConstraint t)] +endpointOptions pu :: Accum v x t +pu@Accum{$sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) +currentJob = Just Job{[[(Bool, v)]] tasks :: [[(Bool, v)]] $sel:tasks:Job :: forall v x. Job v x -> [[(Bool, v)]] -tasks, JobState +tasks, JobState state :: JobState $sel:state:Job :: forall v x. Job v x -> JobState -state}} - | Just [(Bool, v)] -task <- forall {a}. [a] -> Maybe a +state}} + | Just [(Bool, v)] +task <- forall {a}. [a] -> Maybe a targetTask [[(Bool, v)]] -tasks = - let from :: t -from = case JobState -state of +tasks = + let from :: t +from = case JobState +state of JobState ArgumentAfterResult -> forall u t. NextTick u t => u -> t nextTick Accum v x t -pu forall a. Num a => a -> a -> a +pu forall a. Num a => a -> a -> a + t 1 JobState Initialize -> forall u t. NextTick u t => u -> t nextTick Accum v x t -pu forall {a}. (Eq a, Num a) => a -> a -> a +pu forall {a}. (Eq a, Num a) => a -> a -> a `withShift` t 1 JobState _ -> forall u t. NextTick u t => u -> t nextTick Accum v x t -pu +pu in forall a b. (a -> b) -> [a] -> [b] map - (\v -v -> forall v tp. EndpointRole v -> tp -> EndpointSt v tp + (\v +v -> forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. v -> EndpointRole v Target v -v) forall a b. (a -> b) -> a -> b +v) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (t -from forall a. Ord a => a -> a -> Interval a +from forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) (forall a. a -> Interval a singleton t @@ -439,82 +439,82 @@ forall a b. (a -> b) -> a -> b $ forall {a} {a}. Ord a => [(a, a)] -> Set a taskVars [(Bool, v)] -task - | Just [(Bool, v)] -task <- forall {a}. [a] -> Maybe a +task + | Just [(Bool, v)] +task <- forall {a}. [a] -> Maybe a sourceTask [[(Bool, v)]] -tasks = - let from :: t -from = case JobState -state of +tasks = + let from :: t +from = case JobState +state of JobState Calculate -> forall u t. NextTick u t => u -> t nextTick Accum v x t -pu forall a. Num a => a -> a -> a +pu forall a. Num a => a -> a -> a + t 2 JobState WaitResults -> forall u t. NextTick u t => u -> t nextTick Accum v x t -pu forall a. Num a => a -> a -> a +pu forall a. Num a => a -> a -> a + t 1 JobState _ -> forall u t. NextTick u t => u -> t nextTick Accum v x t -pu +pu in [forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. Set v -> EndpointRole v Source forall a b. (a -> b) -> a -> b $ forall {a} {a}. Ord a => [(a, a)] -> Set a taskVars [(Bool, v)] -task) forall a b. (a -> b) -> a -> b +task) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (t -from forall a. Ord a => a -> a -> Interval a +from forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) (t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound)] - endpointOptions pu :: Accum v x t -pu@Accum{[Job v x] + endpointOptions pu :: Accum v x t +pu@Accum{[Job v x] remainJobs :: [Job v x] $sel:remainJobs:Accum :: forall v x t. Accum v x t -> [Job v x] -remainJobs, $sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) +remainJobs, $sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) currentJob = Maybe (Job v x) Nothing} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] -concatMap (\Job v x -j -> forall u v t. +concatMap (\Job v x +j -> forall u v t. EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] endpointOptions Accum v x t -pu{$sel:currentJob:Accum :: Maybe (Job v x) +pu{$sel:currentJob:Accum :: Maybe (Job v x) currentJob = forall a. a -> Maybe a Just Job v x -j}) [Job v x] -remainJobs - endpointOptions Accum v x t -pu = forall a. HasCallStack => String -> a +j}) [Job v x] +remainJobs + endpointOptions Accum v x t +pu = forall a. HasCallStack => String -> a error [i|incorrect state for #{ pretty pu }|] - endpointDecision :: Accum v x t -> EndpointSt v (Interval t) -> Accum v x t -endpointDecision pu :: Accum v x t -pu@Accum{[Job v x] + endpointDecision :: Accum v x t -> EndpointSt v (Interval t) -> Accum v x t +endpointDecision pu :: Accum v x t +pu@Accum{[Job v x] remainJobs :: [Job v x] $sel:remainJobs:Accum :: forall v x t. Accum v x t -> [Job v x] -remainJobs, $sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) +remainJobs, $sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) currentJob = Maybe (Job v x) -Nothing} EndpointSt v (Interval t) -d - | ([Job v x -job], [Job v x] -jobs') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) +Nothing} EndpointSt v (Interval t) +d + | ([Job v x +job], [Job v x] +jobs') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) L.partition ((forall {c}. Set c -> c oneOf (forall a v. Variables a v => a -> Set v variables EndpointSt v (Interval t) -d) forall a. Ord a => a -> Set a -> Bool +d) forall a. Ord a => a -> Set a -> Bool `S.member`) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall {a} {a}. Ord a => [(a, a)] -> Set a taskVars forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -522,275 +522,275 @@ head forall b c a. (b -> c) -> (a -> b) -> a -> c . forall v x. Job v x -> [[(Bool, v)]] tasks) [Job v x] -remainJobs = +remainJobs = forall u v t. EndpointProblem u v t => u -> EndpointSt v (Interval t) -> u endpointDecision Accum v x t -pu +pu { $sel:remainJobs:Accum :: [Job v x] remainJobs = [Job v x] -jobs' +jobs' , $sel:currentJob:Accum :: Maybe (Job v x) currentJob = forall a. a -> Maybe a Just Job v x -job +job } EndpointSt v (Interval t) -d +d endpointDecision - pu :: Accum v x t -pu@Accum{$sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) -currentJob = Just job :: Job v x -job@Job{[[(Bool, v)]] + pu :: Accum v x t +pu@Accum{$sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) +currentJob = Just job :: Job v x +job@Job{[[(Bool, v)]] tasks :: [[(Bool, v)]] $sel:tasks:Job :: forall v x. Job v x -> [[(Bool, v)]] -tasks, JobState +tasks, JobState state :: JobState $sel:state:Job :: forall v x. Job v x -> JobState -state}} - d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Target v -v, Interval t +state}} + d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Target v +v, Interval t epAt :: forall v tp. EndpointSt v tp -> tp epAt :: Interval t epAt} - | Just [(Bool, v)] -task <- forall {a}. [a] -> Maybe a + | Just [(Bool, v)] +task <- forall {a}. [a] -> Maybe a targetTask [[(Bool, v)]] -tasks = - let ((Bool -neg, v -_v), [(Bool, v)] -task') = case forall a. (a -> Bool) -> [a] -> ([a], [a]) +tasks = + let ((Bool +neg, v +_v), [(Bool, v)] +task') = case forall a. (a -> Bool) -> [a] -> ([a], [a]) L.partition ((forall a. Eq a => a -> a -> Bool == v -v) forall b c a. (b -> c) -> (a -> b) -> a -> c +v) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(Bool, v)] -task of - ([(Bool, v) -negAndVar], [(Bool, v)] -ts) -> ((Bool, v) -negAndVar, [(Bool, v)] -ts) +task of + ([(Bool, v) +negAndVar], [(Bool, v)] +ts) -> ((Bool, v) +negAndVar, [(Bool, v)] +ts) ([(Bool, v)], [(Bool, v)]) _ -> forall a. HasCallStack => String -> a error String "Accum: endpointDecision: internal error" - instr :: Instruction (Accum v x t) -instr = case JobState -state of + instr :: Instruction (Accum v x t) +instr = case JobState +state of JobState Initialize -> forall v x t. Bool -> Instruction (Accum v x t) ResetAndLoad Bool -neg +neg JobState _ -> forall v x t. Bool -> Instruction (Accum v x t) Load Bool -neg - process_' :: Process t (StepInfo v x t) -process_' = forall {u} {v} {x} {t} {a}. +neg + process_' :: Process t (StepInfo v x t) +process_' = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Accum v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe Interval t -epAt Instruction (Accum v x t) -instr +epAt Instruction (Accum v x t) +instr in Accum v x t -pu +pu { $sel:process_:Accum :: Process t (StepInfo v x t) process_ = Process t (StepInfo v x t) -process_' +process_' , $sel:currentJob:Accum :: Maybe (Job v x) currentJob = case ([(Bool, v)] -task', forall a. [a] -> [a] +task', forall a. [a] -> [a] tail [[(Bool, v)]] -tasks) of +tasks) of ([], []) -> forall a. Maybe a Nothing - ([], [[(Bool, v)]] -tasks') -> forall a. a -> Maybe a + ([], [[(Bool, v)]] +tasks') -> forall a. a -> Maybe a Just Job v x -job{$sel:tasks:Job :: [[(Bool, v)]] +job{$sel:tasks:Job :: [[(Bool, v)]] tasks = [[(Bool, v)]] -tasks', $sel:state:Job :: JobState +tasks', $sel:state:Job :: JobState state = JobState Calculate} - ([(Bool, v)] -_task', [[(Bool, v)]] -tasks') -> forall a. a -> Maybe a + ([(Bool, v)] +_task', [[(Bool, v)]] +tasks') -> forall a. a -> Maybe a Just Job v x -job{$sel:tasks:Job :: [[(Bool, v)]] +job{$sel:tasks:Job :: [[(Bool, v)]] tasks = [(Bool, v)] -task' forall a. a -> [a] -> [a] +task' forall a. a -> [a] -> [a] : [[(Bool, v)]] -tasks', $sel:state:Job :: JobState +tasks', $sel:state:Job :: JobState state = JobState WaitArguments} } endpointDecision - pu :: Accum v x t -pu@Accum{$sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) -currentJob = Just job :: Job v x -job@Job{[[(Bool, v)]] + pu :: Accum v x t +pu@Accum{$sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) +currentJob = Just job :: Job v x +job@Job{[[(Bool, v)]] tasks :: [[(Bool, v)]] $sel:tasks:Job :: forall v x. Job v x -> [[(Bool, v)]] -tasks, F v x +tasks, F v x func :: F v x $sel:func:Job :: forall v x. Job v x -> F v x -func}, Process t (StepInfo v x t) +func}, Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Accum :: forall v x t. Accum v x t -> Process t (StepInfo v x t) -process_} - d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Source Set v -vs, Interval t +process_} + d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Source Set v +vs, Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} - | Just [(Bool, v)] -task <- forall {a}. [a] -> Maybe a +epAt} + | Just [(Bool, v)] +task <- forall {a}. [a] -> Maybe a sourceTask [[(Bool, v)]] -tasks = +tasks = let ([(Bool, v)] -_, [(Bool, v)] -task') = forall a. (a -> Bool) -> [a] -> ([a], [a]) +_, [(Bool, v)] +task') = forall a. (a -> Bool) -> [a] -> ([a], [a]) L.partition ((forall a. Ord a => a -> Set a -> Bool `S.member` Set v -vs) forall b c a. (b -> c) -> (a -> b) -> a -> c +vs) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(Bool, v)] -task - process_' :: Process t (StepInfo v x t) -process_' = forall {u} {v} {x} {t} {a}. +task + process_' :: Process t (StepInfo v x t) +process_' = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Accum v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do - [Int] -endpoints <- forall {m :: * -> *} {pu} {v} {x} {t}. + [Int] +endpoints <- forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe (Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a - Interval t 1) forall v x t. Instruction (Accum v x t) Out forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [(Bool, v)] -task' Bool -> Bool -> Bool +task' Bool -> Bool -> Bool && forall (t :: * -> *) a. Foldable t => t a -> Int length [[(Bool, v)]] -tasks forall a. Eq a => a -> a -> Bool +tasks forall a. Eq a => a -> a -> Bool == Int 1) forall a b. (a -> b) -> a -> b $ do - let endpoints' :: [Step t (StepInfo v x t)] -endpoints' = forall {a} {t1} {x} {t2}. + let endpoints' :: [Step t (StepInfo v x t)] +endpoints' = forall {a} {t1} {x} {t2}. Ord a => Process t1 (StepInfo a x t2) -> Set a -> [Step t1 (StepInfo a x t2)] relatedEndpoints Process t (StepInfo v x t) -process_ forall a b. (a -> b) -> a -> b +process_ forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables F v x -func - a :: t -a = forall a. Interval a -> a +func + a :: t +a = forall a. Interval a -> a inf forall a b. (a -> b) -> a -> b $ forall {a} {i}. Ord a => [Step a i] -> Interval a stepsInterval [Step t (StepInfo v x t)] -endpoints' - low :: [Int] -low = [Int] -endpoints forall a. [a] -> [a] -> [a] +endpoints' + low :: [Int] +low = [Int] +endpoints forall a. [a] -> [a] -> [a] ++ forall a b. (a -> b) -> [a] -> [b] map forall t i. Step t i -> Int pID [Step t (StepInfo v x t)] -endpoints' - [Int] -high <- forall {pu} {v} {x} {t} {m :: * -> *}. +endpoints' + [Int] +high <- forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => Interval t -> F v x -> m [Int] scheduleFunction (t -a forall a. Ord a => a -> a -> Interval a +a forall a. Ord a => a -> a -> Interval a ... forall a. Interval a -> a sup Interval t -epAt) F v x -func +epAt) F v x +func forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [Int] -> [Int] -> m () establishVerticalRelations [Int] -high [Int] -low +high [Int] +low in Accum v x t -pu +pu { $sel:process_:Accum :: Process t (StepInfo v x t) process_ = Process t (StepInfo v x t) -process_' +process_' , $sel:currentJob:Accum :: Maybe (Job v x) currentJob = case ([(Bool, v)] -task', forall a. [a] -> [a] +task', forall a. [a] -> [a] tail [[(Bool, v)]] -tasks) of +tasks) of ([], []) -> forall a. Maybe a Nothing - ([], [[(Bool, v)]] -tasks') -> forall a. a -> Maybe a + ([], [[(Bool, v)]] +tasks') -> forall a. a -> Maybe a Just Job v x -job{$sel:tasks:Job :: [[(Bool, v)]] +job{$sel:tasks:Job :: [[(Bool, v)]] tasks = [[(Bool, v)]] -tasks', $sel:state:Job :: JobState +tasks', $sel:state:Job :: JobState state = JobState ArgumentAfterResult} - ([(Bool, v)] -_task', [[(Bool, v)]] -tasks') -> forall a. a -> Maybe a + ([(Bool, v)] +_task', [[(Bool, v)]] +tasks') -> forall a. a -> Maybe a Just Job v x -job{$sel:tasks:Job :: [[(Bool, v)]] +job{$sel:tasks:Job :: [[(Bool, v)]] tasks = [(Bool, v)] -task' forall a. a -> [a] -> [a] +task' forall a. a -> [a] -> [a] : [[(Bool, v)]] -tasks', $sel:state:Job :: JobState +tasks', $sel:state:Job :: JobState state = JobState WaitResults} } - endpointDecision Accum v x t -pu EndpointSt v (Interval t) -d = forall a. HasCallStack => String -> a + endpointDecision Accum v x t +pu EndpointSt v (Interval t) +d = forall a. HasCallStack => String -> a error [i|incorrect decision #{ d } for #{ pretty pu }|] -instance Connected (Accum v x t) where - data Ports (Accum v x t) = AccumPorts {forall v x t. Ports (Accum v x t) -> SignalTag +instance Connected (Accum v x t) where + data Ports (Accum v x t) = AccumPorts {forall v x t. Ports (Accum v x t) -> SignalTag resetAcc, forall v x t. Ports (Accum v x t) -> SignalTag load, forall v x t. Ports (Accum v x t) -> SignalTag neg, forall v x t. Ports (Accum v x t) -> SignalTag oe :: SignalTag} - deriving (Int -> Ports (Accum v x t) -> ShowS + deriving (Int -> Ports (Accum v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Ports (Accum v x t) -> ShowS @@ -804,8 +804,8 @@ $cshowsPrec :: forall v x t. Int -> Ports (Accum v x t) -> ShowS Show) -instance IOConnected (Accum v x t) where - data IOPorts (Accum v x t) = AccumIO deriving (Int -> IOPorts (Accum v x t) -> ShowS +instance IOConnected (Accum v x t) where + data IOPorts (Accum v x t) = AccumIO deriving (Int -> IOPorts (Accum v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> IOPorts (Accum v x t) -> ShowS @@ -819,8 +819,8 @@ $cshowsPrec :: forall v x t. Int -> IOPorts (Accum v x t) -> ShowS Show) -instance Controllable (Accum v x t) where - data Instruction (Accum v x t) = ResetAndLoad Bool | Load Bool | Out deriving (Int -> Instruction (Accum v x t) -> ShowS +instance Controllable (Accum v x t) where + data Instruction (Accum v x t) = ResetAndLoad Bool | Load Bool | Out deriving (Int -> Instruction (Accum v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Instruction (Accum v x t) -> ShowS @@ -834,7 +834,7 @@ $cshowsPrec :: forall v x t. Int -> Instruction (Accum v x t) -> ShowS Show) - data Microcode (Accum v x t) = Microcode + data Microcode (Accum v x t) = Microcode { forall v x t. Microcode (Accum v x t) -> Bool oeSignal :: Bool , forall v x t. Microcode (Accum v x t) -> Bool @@ -844,7 +844,7 @@ , forall v x t. Microcode (Accum v x t) -> Maybe Bool negSignal :: Maybe Bool } - deriving (Int -> Microcode (Accum v x t) -> ShowS + deriving (Int -> Microcode (Accum v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Microcode (Accum v x t) -> ShowS @@ -856,7 +856,7 @@ $cshow :: forall v x t. Microcode (Accum v x t) -> String showsPrec :: Int -> Microcode (Accum v x t) -> ShowS $cshowsPrec :: forall v x t. Int -> Microcode (Accum v x t) -> ShowS -Show, Microcode (Accum v x t) -> Microcode (Accum v x t) -> Bool +Show, Microcode (Accum v x t) -> Microcode (Accum v x t) -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x t. Microcode (Accum v x t) -> Microcode (Accum v x t) -> Bool @@ -866,7 +866,7 @@ == :: Microcode (Accum v x t) -> Microcode (Accum v x t) -> Bool $c== :: forall v x t. Microcode (Accum v x t) -> Microcode (Accum v x t) -> Bool -Eq, Microcode (Accum v x t) -> Microcode (Accum v x t) -> Bool +Eq, Microcode (Accum v x t) -> Microcode (Accum v x t) -> Bool Microcode (Accum v x t) -> Microcode (Accum v x t) -> Ordering forall a. Eq a @@ -913,9 +913,9 @@ Microcode (Accum v x t) -> Microcode (Accum v x t) -> Ordering Ord) - zipSignalTagsAndValues :: Ports (Accum v x t) + zipSignalTagsAndValues :: Ports (Accum v x t) -> Microcode (Accum v x t) -> [(SignalTag, SignalValue)] -zipSignalTagsAndValues AccumPorts{SignalTag +zipSignalTagsAndValues AccumPorts{SignalTag oe :: SignalTag neg :: SignalTag load :: SignalTag @@ -924,7 +924,7 @@ $sel:neg:AccumPorts :: forall v x t. Ports (Accum v x t) -> SignalTag $sel:load:AccumPorts :: forall v x t. Ports (Accum v x t) -> SignalTag $sel:resetAcc:AccumPorts :: forall v x t. Ports (Accum v x t) -> SignalTag -..} Microcode{Bool +..} Microcode{Bool Maybe Bool negSignal :: Maybe Bool loadSignal :: Bool @@ -934,70 +934,70 @@ $sel:loadSignal:Microcode :: forall v x t. Microcode (Accum v x t) -> Bool $sel:resetAccSignal:Microcode :: forall v x t. Microcode (Accum v x t) -> Bool $sel:oeSignal:Microcode :: forall v x t. Microcode (Accum v x t) -> Bool -..} = +..} = [ (SignalTag -resetAcc, Bool -> SignalValue +resetAcc, Bool -> SignalValue Bool Bool -resetAccSignal) +resetAccSignal) , (SignalTag -load, Bool -> SignalValue +load, Bool -> SignalValue Bool Bool -loadSignal) +loadSignal) , (SignalTag -oe, Bool -> SignalValue +oe, Bool -> SignalValue Bool Bool -oeSignal) +oeSignal) , (SignalTag -neg, forall b a. b -> (a -> b) -> Maybe a -> b +neg, forall b a. b -> (a -> b) -> Maybe a -> b maybe SignalValue Undef Bool -> SignalValue Bool Maybe Bool -negSignal) +negSignal) ] - usedPortTags :: Ports (Accum v x t) -> [SignalTag] -usedPortTags AccumPorts{SignalTag + usedPortTags :: Ports (Accum v x t) -> [SignalTag] +usedPortTags AccumPorts{SignalTag resetAcc :: SignalTag $sel:resetAcc:AccumPorts :: forall v x t. Ports (Accum v x t) -> SignalTag -resetAcc, SignalTag +resetAcc, SignalTag load :: SignalTag $sel:load:AccumPorts :: forall v x t. Ports (Accum v x t) -> SignalTag -load, SignalTag +load, SignalTag neg :: SignalTag $sel:neg:AccumPorts :: forall v x t. Ports (Accum v x t) -> SignalTag -neg, SignalTag +neg, SignalTag oe :: SignalTag $sel:oe:AccumPorts :: forall v x t. Ports (Accum v x t) -> SignalTag -oe} = [SignalTag -resetAcc, SignalTag -load, SignalTag -neg, SignalTag -oe] +oe} = [SignalTag +resetAcc, SignalTag +load, SignalTag +neg, SignalTag +oe] - takePortTags :: [SignalTag] -> Accum v x t -> Ports (Accum v x t) -takePortTags (SignalTag -resetAcc : SignalTag -load : SignalTag -neg : SignalTag -oe : [SignalTag] + takePortTags :: [SignalTag] -> Accum v x t -> Ports (Accum v x t) +takePortTags (SignalTag +resetAcc : SignalTag +load : SignalTag +neg : SignalTag +oe : [SignalTag] _) Accum v x t _ = forall v x t. SignalTag -> SignalTag -> SignalTag -> SignalTag -> Ports (Accum v x t) AccumPorts SignalTag -resetAcc SignalTag -load SignalTag -neg SignalTag -oe +resetAcc SignalTag +load SignalTag +neg SignalTag +oe takePortTags [SignalTag] _ Accum v x t _ = forall a. HasCallStack => String -> a error String "can not take port tags, tags are over" -instance Default (Microcode (Accum v x t)) where - def :: Microcode (Accum v x t) -def = +instance Default (Microcode (Accum v x t)) where + def :: Microcode (Accum v x t) +def = Microcode { $sel:oeSignal:Microcode :: Bool oeSignal = Bool @@ -1013,10 +1013,10 @@ Nothing } -instance UnambiguouslyDecode (Accum v x t) where - decodeInstruction :: Instruction (Accum v x t) -> Microcode (Accum v x t) -decodeInstruction (ResetAndLoad Bool -neg) = forall a. Default a => a +instance UnambiguouslyDecode (Accum v x t) where + decodeInstruction :: Instruction (Accum v x t) -> Microcode (Accum v x t) +decodeInstruction (ResetAndLoad Bool +neg) = forall a. Default a => a def{$sel:resetAccSignal:Microcode :: Bool resetAccSignal = Bool True, $sel:loadSignal:Microcode :: Bool @@ -1024,9 +1024,9 @@ True, $sel:negSignal:Microcode :: Maybe Bool negSignal = forall a. a -> Maybe a Just Bool -neg} - decodeInstruction (Load Bool -neg) = forall a. Default a => a +neg} + decodeInstruction (Load Bool +neg) = forall a. Default a => a def{$sel:resetAccSignal:Microcode :: Bool resetAccSignal = Bool False, $sel:loadSignal:Microcode :: Bool @@ -1034,7 +1034,7 @@ True, $sel:negSignal:Microcode :: Maybe Bool negSignal = forall a. a -> Maybe a Just Bool -neg} +neg} decodeInstruction Instruction (Accum v x t) R:InstructionAccum v x t Out = forall a. Default a => a @@ -1042,19 +1042,19 @@ oeSignal = Bool True} -instance Var v => Locks (Accum v x t) v where - locks :: Accum v x t -> [Lock v] +instance Var v => Locks (Accum v x t) v where + locks :: Accum v x t -> [Lock v] locks Accum{$sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) currentJob = Maybe (Job v x) -Nothing, [Job v x] +Nothing, [Job v x] remainJobs :: [Job v x] $sel:remainJobs:Accum :: forall v x t. Accum v x t -> [Job v x] -remainJobs} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +remainJobs} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (forall x v. Locks x v => x -> [Lock v] locks forall b c a. (b -> c) -> (a -> b) -> a -> c . forall v x. Job v x -> F v x func) [Job v x] -remainJobs +remainJobs locks Accum{$sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) currentJob = Just Job{$sel:tasks:Job :: forall v x. Job v x -> [[(Bool, v)]] tasks = []}} = forall a. HasCallStack => String -> a @@ -1062,99 +1062,99 @@ "Accum locks: internal error" locks Accum{$sel:currentJob:Accum :: forall v x t. Accum v x t -> Maybe (Job v x) currentJob = Just Job{$sel:tasks:Job :: forall v x. Job v x -> [[(Bool, v)]] -tasks = [(Bool, v)] -t : [[(Bool, v)]] -ts}, [Job v x] +tasks = [(Bool, v)] +t : [[(Bool, v)]] +ts}, [Job v x] remainJobs :: [Job v x] $sel:remainJobs:Accum :: forall v x t. Accum v x t -> [Job v x] -remainJobs} = - let current :: [Lock v] -current = +remainJobs} = + let current :: [Lock v] +current = [ Lock{v locked :: v locked :: v -locked, v +locked, v lockBy :: v lockBy :: v -lockBy} - | v -locked <- forall a. Set a -> [a] +lockBy} + | v +locked <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall {a} {a}. Ord a => [(a, a)] -> Set a taskVars [[(Bool, v)]] -ts - , v -lockBy <- forall a. Set a -> [a] +ts + , v +lockBy <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall {a} {a}. Ord a => [(a, a)] -> Set a taskVars [(Bool, v)] -t +t ] - remain :: [Lock v] -remain = + remain :: [Lock v] +remain = [ Lock{v locked :: v locked :: v -locked, v +locked, v lockBy :: v lockBy :: v -lockBy} - | v -locked <- forall a. Set a -> [a] +lockBy} + | v +locked <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap (forall a v. Variables a v => a -> Set v variables forall b c a. (b -> c) -> (a -> b) -> a -> c . forall v x. Job v x -> F v x func) [Job v x] -remainJobs - , v -lockBy <- forall a. Set a -> [a] +remainJobs + , v +lockBy <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall {a} {a}. Ord a => [(a, a)] -> Set a taskVars [(Bool, v)] -t +t ] in [Lock v] -current forall a. [a] -> [a] -> [a] +current forall a. [a] -> [a] -> [a] ++ [Lock v] -remain +remain -instance VarValTime v x t => TargetSystemComponent (Accum v x t) where - moduleName :: Text -> Accum v x t -> Text +instance VarValTime v x t => TargetSystemComponent (Accum v x t) where + moduleName :: Text -> Accum v x t -> Text moduleName Text _ Accum v x t _ = Text "pu_accum" - hardware :: Text -> Accum v x t -> Implementation -hardware Text -_tag Accum v x t -_pu = String -> Implementation + hardware :: Text -> Accum v x t -> Implementation +hardware Text +_tag Accum v x t +_pu = String -> Implementation FromLibrary String "pu_accum.v" - software :: Text -> Accum v x t -> Implementation + software :: Text -> Accum v x t -> Implementation software Text _ Accum v x t _ = Implementation Empty - hardwareInstance :: Text -> Accum v x t -> UnitEnv (Accum v x t) -> Verilog + hardwareInstance :: Text -> Accum v x t -> UnitEnv (Accum v x t) -> Verilog hardwareInstance - Text -tag - Accum v x t -_pu + Text +tag + Accum v x t +_pu UnitEnv - { Text + { Text sigClk :: forall m. UnitEnv m -> Text sigClk :: Text sigClk - , Text + , Text sigRst :: forall m. UnitEnv m -> Text sigRst :: Text sigRst , ctrlPorts :: forall m. UnitEnv m -> Maybe (Ports m) -ctrlPorts = Just AccumPorts{SignalTag +ctrlPorts = Just AccumPorts{SignalTag oe :: SignalTag neg :: SignalTag load :: SignalTag @@ -1163,15 +1163,15 @@ $sel:neg:AccumPorts :: forall v x t. Ports (Accum v x t) -> SignalTag $sel:load:AccumPorts :: forall v x t. Ports (Accum v x t) -> SignalTag $sel:resetAcc:AccumPorts :: forall v x t. Ports (Accum v x t) -> SignalTag -..} +..} , valueIn :: forall m. UnitEnv m -> Maybe (Text, Text) -valueIn = Just (Text -dataIn, Text -attrIn) +valueIn = Just (Text +dataIn, Text +attrIn) , valueOut :: forall m. UnitEnv m -> Maybe (Text, Text) -valueOut = Just (Text -dataOut, Text -attrOut) +valueOut = Just (Text +dataOut, Text +attrOut) } = [__i| pu_accum \# @@ -1190,61 +1190,61 @@ , .attr_out( #{ attrOut } ) ); |] - hardwareInstance Text -_title Accum v x t -_pu UnitEnv (Accum v x t) -_env = forall a. HasCallStack => String -> a + hardwareInstance Text +_title Accum v x t +_pu UnitEnv (Accum v x t) +_env = forall a. HasCallStack => String -> a error String "internal error" -instance Ord t => WithFunctions (Accum v x t) (F v x) where - functions :: Accum v x t -> [F v x] -functions Accum{Process t (StepInfo v x t) +instance Ord t => WithFunctions (Accum v x t) (F v x) where + functions :: Accum v x t -> [F v x] +functions Accum{Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Accum :: forall v x t. Accum v x t -> Process t (StepInfo v x t) -process_, [Job v x] +process_, [Job v x] remainJobs :: [Job v x] $sel:remainJobs:Accum :: forall v x t. Accum v x t -> [Job v x] -remainJobs} = +remainJobs} = forall a f. WithFunctions a f => a -> [f] functions Process t (StepInfo v x t) -process_ forall a. [a] -> [a] -> [a] +process_ forall a. [a] -> [a] -> [a] ++ forall a b. (a -> b) -> [a] -> [b] map forall v x. Job v x -> F v x func [Job v x] -remainJobs +remainJobs -instance VarValTime v x t => Testable (Accum v x t) v x where - testBenchImplementation :: Project (Accum v x t) v x -> Implementation -testBenchImplementation prj :: Project (Accum v x t) v x -prj@Project{Text +instance VarValTime v x t => Testable (Accum v x t) v x where + testBenchImplementation :: Project (Accum v x t) v x -> Implementation +testBenchImplementation prj :: Project (Accum v x t) v x +prj@Project{Text pName :: forall m v x. Project m v x -> Text pName :: Text -pName, Accum v x t +pName, Accum v x t pUnit :: forall m v x. Project m v x -> m pUnit :: Accum v x t pUnit} = - let tbcSignalsConst :: [Text] -tbcSignalsConst = [Text + let tbcSignalsConst :: [Text] +tbcSignalsConst = [Text "resetAcc", Text "load", Text "oe", Text "neg"] - showMicrocode :: Microcode (Accum v x t) -> String -showMicrocode Microcode{Bool + showMicrocode :: Microcode (Accum v x t) -> String +showMicrocode Microcode{Bool resetAccSignal :: Bool $sel:resetAccSignal:Microcode :: forall v x t. Microcode (Accum v x t) -> Bool -resetAccSignal, Bool +resetAccSignal, Bool loadSignal :: Bool $sel:loadSignal:Microcode :: forall v x t. Microcode (Accum v x t) -> Bool -loadSignal, Bool +loadSignal, Bool oeSignal :: Bool $sel:oeSignal:Microcode :: forall v x t. Microcode (Accum v x t) -> Bool -oeSignal, Maybe Bool +oeSignal, Maybe Bool negSignal :: Maybe Bool $sel:negSignal:Microcode :: forall v x t. Microcode (Accum v x t) -> Maybe Bool -negSignal} = +negSignal} = ([i|resetAcc <= #{ bool2verilog resetAccSignal };|] :: String) forall a. Semigroup a => a -> a -> a <> [i| load <= #{ bool2verilog loadSignal };|] @@ -1253,14 +1253,14 @@ forall a. Semigroup a => a -> a -> a <> [i| neg <= #{ bool2verilog $ fromMaybe False negSignal };|] - conf :: SnippetTestBenchConf (Accum v x t) -conf = + conf :: SnippetTestBenchConf (Accum v x t) +conf = SnippetTestBenchConf { tbcSignals :: [Text] -tbcSignals = [Text] -tbcSignalsConst +tbcSignals = [Text] +tbcSignalsConst , tbcPorts :: Ports (Accum v x t) -tbcPorts = +tbcPorts = AccumPorts { $sel:resetAcc:AccumPorts :: SignalTag resetAcc = Text -> SignalTag @@ -1280,18 +1280,18 @@ "neg" } , tbcMC2verilogLiteral :: Microcode (Accum v x t) -> Text -tbcMC2verilogLiteral = String -> Text +tbcMC2verilogLiteral = String -> Text T.pack forall b c a. (b -> c) -> (a -> b) -> a -> c . forall v x t. Microcode (Accum v x t) -> String -showMicrocode +showMicrocode } in String -> Text -> Implementation Immediate (forall a. ToString a => a -> String toString forall a b. (a -> b) -> a -> b $ forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -pName Accum v x t -pUnit forall a. Semigroup a => a -> a -> a +pName Accum v x t +pUnit forall a. Semigroup a => a -> a -> a <> Text "_tb.v") forall a b. (a -> b) -> a -> b $ forall m v x t. @@ -1300,13 +1300,13 @@ Show (Instruction m), Default (Microcode m)) => Project m v x -> SnippetTestBenchConf m -> Text snippetTestBench Project (Accum v x t) v x -prj SnippetTestBenchConf (Accum v x t) -conf +prj SnippetTestBenchConf (Accum v x t) +conf -instance IOTestBench (Accum v x t) v x +instance IOTestBench (Accum v x t) v x -instance BreakLoopProblem (Accum v x t) v x -instance ConstantFoldingProblem (Accum v x t) v x -instance OptimizeAccumProblem (Accum v x t) v x -instance ResolveDeadlockProblem (Accum v x t) v x +instance BreakLoopProblem (Accum v x t) v x +instance ConstantFoldingProblem (Accum v x t) v x +instance OptimizeAccumProblem (Accum v x t) v x +instance ResolveDeadlockProblem (Accum v x t) v x \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Broken.html b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Broken.html index 100579dac..080597011 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Broken.html +++ b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Broken.html @@ -38,21 +38,21 @@ import Numeric.Interval.NonEmpty qualified as I import Prettyprinter -data Broken v x t = Broken +data Broken v x t = Broken { forall v x t. Broken v x t -> [F v x] -remain :: [F v x] +remain :: [F v x] , forall v x t. Broken v x t -> [v] -targets :: [v] +targets :: [v] , forall v x t. Broken v x t -> [v] -sources :: [v] +sources :: [v] , forall v x t. Broken v x t -> Maybe t -doneAt :: Maybe t +doneAt :: Maybe t , forall v x t. Broken v x t -> Maybe (t, F v x) -currentWork :: Maybe (t, F v x) +currentWork :: Maybe (t, F v x) , forall v x t. Broken v x t -> [ProcessStepID] currentWorkEndpoints :: [ProcessStepID] , forall v x t. Broken v x t -> Process t (StepInfo v x t) -process_ :: Process t (StepInfo v x t) +process_ :: Process t (StepInfo v x t) , forall v x t. Broken v x t -> Bool brokeVerilog :: Bool -- ^ generate verilog code with syntax error @@ -83,9 +83,9 @@ unknownDataOut :: Bool } -instance VarValTime v x t => Pretty (Broken v x t) where - pretty :: forall ann. Broken v x t -> Doc ann -pretty Broken{Bool +instance VarValTime v x t => Pretty (Broken v x t) where + pretty :: forall ann. Broken v x t -> Doc ann +pretty Broken{Bool [v] [ProcessStepID] [F v x] @@ -128,7 +128,7 @@ $sel:sources:Broken :: forall v x t. Broken v x t -> [v] $sel:targets:Broken :: forall v x t. Broken v x t -> [v] $sel:remain:Broken :: forall v x t. Broken v x t -> [F v x] -..} = +..} = [__i| Broken: remain:#{ remain } @@ -147,78 +147,78 @@ #{ indent 4 $ pretty $ process_ } |] -instance Var v => Locks (Broken v x t) v where - locks :: Broken v x t -> [Lock v] -locks Broken{[F v x] +instance Var v => Locks (Broken v x t) v where + locks :: Broken v x t -> [Lock v] +locks Broken{[F v x] remain :: [F v x] $sel:remain:Broken :: forall v x t. Broken v x t -> [F v x] -remain, [v] +remain, [v] sources :: [v] $sel:sources:Broken :: forall v x t. Broken v x t -> [v] -sources, [v] +sources, [v] targets :: [v] $sel:targets:Broken :: forall v x t. Broken v x t -> [v] -targets} = +targets} = [ Lock{v lockBy :: v lockBy :: v -lockBy, v +lockBy, v locked :: v locked :: v -locked} - | v -locked <- [v] -sources - , v -lockBy <- [v] -targets +locked} + | v +locked <- [v] +sources + , v +lockBy <- [v] +targets ] forall a. [a] -> [a] -> [a] ++ [ Lock{v lockBy :: v lockBy :: v -lockBy, v +lockBy, v locked :: v locked :: v -locked} - | v -locked <- forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +locked} + | v +locked <- forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (forall a. Set a -> [a] elems forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a v. Variables a v => a -> Set v variables) [F v x] -remain - , v -lockBy <- [v] -sources forall a. [a] -> [a] -> [a] +remain + , v +lockBy <- [v] +sources forall a. [a] -> [a] -> [a] ++ [v] -targets +targets ] -instance BreakLoopProblem (Broken v x t) v x -instance ConstantFoldingProblem (Broken v x t) v x -instance OptimizeAccumProblem (Broken v x t) v x -instance ResolveDeadlockProblem (Broken v x t) v x +instance BreakLoopProblem (Broken v x t) v x +instance ConstantFoldingProblem (Broken v x t) v x +instance OptimizeAccumProblem (Broken v x t) v x +instance ResolveDeadlockProblem (Broken v x t) v x -instance VarValTime v x t => ProcessorUnit (Broken v x t) v x t where - tryBind :: F v x -> Broken v x t -> Either String (Broken v x t) -tryBind F v x -f pu :: Broken v x t -pu@Broken{[F v x] +instance VarValTime v x t => ProcessorUnit (Broken v x t) v x t where + tryBind :: F v x -> Broken v x t -> Either String (Broken v x t) +tryBind F v x +f pu :: Broken v x t +pu@Broken{[F v x] remain :: [F v x] $sel:remain:Broken :: forall v x t. Broken v x t -> [F v x] -remain} +remain} | Just F.BrokenBuffer{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = forall a b. b -> Either a b +f = forall a b. b -> Either a b Right Broken v x t -pu{$sel:remain:Broken :: [F v x] +pu{$sel:remain:Broken :: [F v x] remain = F v x -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] : [F v x] -remain} +remain} | Bool otherwise = forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b @@ -226,50 +226,50 @@ "The function is unsupported by Broken: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show F v x -f - process :: Broken v x t -> Process t (StepInfo v x t) +f + process :: Broken v x t -> Process t (StepInfo v x t) process = forall v x t. Broken v x t -> Process t (StepInfo v x t) process_ execution :: Broken v x t -> F v x -> Broken v x t -execution pu :: Broken v x t -pu@Broken{$sel:targets:Broken :: forall v x t. Broken v x t -> [v] +execution pu :: Broken v x t +pu@Broken{$sel:targets:Broken :: forall v x t. Broken v x t -> [v] targets = [], $sel:sources:Broken :: forall v x t. Broken v x t -> [v] -sources = [], [F v x] +sources = [], [F v x] remain :: [F v x] $sel:remain:Broken :: forall v x t. Broken v x t -> [F v x] -remain, Process t (StepInfo v x t) +remain, Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Broken :: forall v x t. Broken v x t -> Process t (StepInfo v x t) -process_} F v x -f - | Just (F.BrokenBuffer (I v -x) (O Set v -y)) <- forall (f :: * -> * -> *) v x. +process_} F v x +f + | Just (F.BrokenBuffer (I v +x) (O Set v +y)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = Broken v x t -pu +pu { $sel:targets:Broken :: [v] targets = [v -x] +x] , $sel:sources:Broken :: [v] sources = forall a. Set a -> [a] elems Set v -y +y , $sel:currentWork:Broken :: Maybe (t, F v x) currentWork = forall a. a -> Maybe a Just (forall u t. NextTick u t => u -> t nextTick Process t (StepInfo v x t) -process_, F v x -f) +process_, F v x +f) , $sel:remain:Broken :: [F v x] remain = [F v x] -remain forall a. Eq a => [a] -> [a] -> [a] +remain forall a. Eq a => [a] -> [a] -> [a] \\ [F v x -f] +f] } execution Broken v x t _ F v x @@ -277,67 +277,67 @@ error String "Broken: internal execution error." -instance VarValTime v x t => EndpointProblem (Broken v x t) v t where - endpointOptions :: Broken v x t -> [EndpointSt v (TimeConstraint t)] +instance VarValTime v x t => EndpointProblem (Broken v x t) v t where + endpointOptions :: Broken v x t -> [EndpointSt v (TimeConstraint t)] endpointOptions Broken{$sel:targets:Broken :: forall v x t. Broken v x t -> [v] targets = [v _], $sel:lostEndpointTarget:Broken :: forall v x t. Broken v x t -> Bool lostEndpointTarget = Bool True} = [] - endpointOptions pu :: Broken v x t -pu@Broken{$sel:targets:Broken :: forall v x t. Broken v x t -> [v] -targets = [v -v]} = - let start :: Interval t -start = forall u t. NextTick u t => u -> t + endpointOptions pu :: Broken v x t +pu@Broken{$sel:targets:Broken :: forall v x t. Broken v x t -> [v] +targets = [v +v]} = + let start :: Interval t +start = forall u t. NextTick u t => u -> t nextTick Broken v x t -pu forall {a}. (Eq a, Num a) => a -> a -> a +pu forall {a}. (Eq a, Num a) => a -> a -> a `withShift` t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound - dur :: Interval t -dur = t + dur :: Interval t +dur = t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound in [forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. v -> EndpointRole v Target v -v) forall a b. (a -> b) -> a -> b +v) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint Interval t -start Interval t -dur] +start Interval t +dur] endpointOptions Broken{$sel:doneAt:Broken :: forall v x t. Broken v x t -> Maybe t doneAt = Just t _, $sel:lostEndpointSource:Broken :: forall v x t. Broken v x t -> Bool lostEndpointSource = Bool True} = [] - endpointOptions pu :: Broken v x t -pu@Broken{[v] + endpointOptions pu :: Broken v x t +pu@Broken{[v] sources :: [v] $sel:sources:Broken :: forall v x t. Broken v x t -> [v] -sources, $sel:doneAt:Broken :: forall v x t. Broken v x t -> Maybe t -doneAt = Just t -at} +sources, $sel:doneAt:Broken :: forall v x t. Broken v x t -> Maybe t +doneAt = Just t +at} | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources = - let start :: Interval t -start = forall a. Ord a => a -> a -> a +sources = + let start :: Interval t +start = forall a. Ord a => a -> a -> a max t -at (forall u t. NextTick u t => u -> t +at (forall u t. NextTick u t => u -> t nextTick Broken v x t -pu forall a. Num a => a -> a -> a +pu forall a. Num a => a -> a -> a + t 1) forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound - dur :: Interval t -dur = t + dur :: Interval t +dur = t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound @@ -346,23 +346,23 @@ Source forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -sources) forall a b. (a -> b) -> a -> b +sources) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint Interval t -start Interval t -dur] - endpointOptions pu :: Broken v x t -pu@Broken{[F v x] +start Interval t +dur] + endpointOptions pu :: Broken v x t +pu@Broken{[F v x] remain :: [F v x] $sel:remain:Broken :: forall v x t. Broken v x t -> [F v x] -remain, $sel:lostEndpointTarget:Broken :: forall v x t. Broken v x t -> Bool +remain, $sel:lostEndpointTarget:Broken :: forall v x t. Broken v x t -> Bool lostEndpointTarget = Bool True} | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [F v x] -remain = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +remain = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (forall u v t. EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] @@ -371,15 +371,15 @@ (Typeable v, Typeable x) => Broken v x t -> F v x -> Broken v x t execution Broken v x t -pu) forall a b. (a -> b) -> a -> b +pu) forall a b. (a -> b) -> a -> b $ forall a. [a] -> [a] tail [F v x] -remain - endpointOptions pu :: Broken v x t -pu@Broken{[F v x] +remain + endpointOptions pu :: Broken v x t +pu@Broken{[F v x] remain :: [F v x] $sel:remain:Broken :: forall v x t. Broken v x t -> [F v x] -remain} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +remain} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (forall u v t. EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] @@ -388,125 +388,125 @@ (Typeable v, Typeable x) => Broken v x t -> F v x -> Broken v x t execution Broken v x t -pu) [F v x] -remain +pu) [F v x] +remain - endpointDecision :: Broken v x t -> EndpointSt v (Interval t) -> Broken v x t -endpointDecision pu :: Broken v x t -pu@Broken{$sel:targets:Broken :: forall v x t. Broken v x t -> [v] -targets = [v -v], [ProcessStepID] + endpointDecision :: Broken v x t -> EndpointSt v (Interval t) -> Broken v x t +endpointDecision pu :: Broken v x t +pu@Broken{$sel:targets:Broken :: forall v x t. Broken v x t -> [v] +targets = [v +v], [ProcessStepID] currentWorkEndpoints :: [ProcessStepID] $sel:currentWorkEndpoints:Broken :: forall v x t. Broken v x t -> [ProcessStepID] -currentWorkEndpoints, Bool +currentWorkEndpoints, Bool wrongControlOnPush :: Bool $sel:wrongControlOnPush:Broken :: forall v x t. Broken v x t -> Bool -wrongControlOnPush} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Target v -v', Interval t +wrongControlOnPush} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Target v +v', Interval t epAt :: forall v tp. EndpointSt v tp -> tp epAt :: Interval t epAt} | v -v forall a. Eq a => a -> a -> Bool +v forall a. Eq a => a -> a -> Bool == v -v' = - let workAt :: Interval t -workAt = Interval t -epAt forall a. Num a => a -> a -> a +v' = + let workAt :: Interval t +workAt = Interval t +epAt forall a. Num a => a -> a -> a + forall a. a -> Interval a I.singleton (if Bool -wrongControlOnPush then t +wrongControlOnPush then t 1 else t 0) - ([ProcessStepID] -newEndpoints, Process t (StepInfo v x t) -process_') = forall {u} {v} {x} {t} {a}. + ([ProcessStepID] +newEndpoints, Process t (StepInfo v x t) +process_') = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) runSchedule Broken v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [ProcessStepID] -> m [ProcessStepID] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [ProcessStepID] scheduleInstructionUnsafe Interval t -workAt forall v x t. Instruction (Broken v x t) +workAt forall v x t. Instruction (Broken v x t) Load in Broken v x t -pu +pu { $sel:process_:Broken :: Process t (StepInfo v x t) process_ = Process t (StepInfo v x t) -process_' +process_' , $sel:targets:Broken :: [v] targets = [] , $sel:currentWorkEndpoints:Broken :: [ProcessStepID] currentWorkEndpoints = [ProcessStepID] -newEndpoints forall a. [a] -> [a] -> [a] +newEndpoints forall a. [a] -> [a] -> [a] ++ [ProcessStepID] -currentWorkEndpoints +currentWorkEndpoints , $sel:doneAt:Broken :: Maybe t doneAt = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall a. Interval a -> a sup Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a + t 3 } endpointDecision - pu :: Broken v x t -pu@Broken + pu :: Broken v x t +pu@Broken { $sel:targets:Broken :: forall v x t. Broken v x t -> [v] -targets = [v -v] - , [ProcessStepID] +targets = [v +v] + , [ProcessStepID] currentWorkEndpoints :: [ProcessStepID] $sel:currentWorkEndpoints:Broken :: forall v x t. Broken v x t -> [ProcessStepID] -currentWorkEndpoints - , Bool +currentWorkEndpoints + , Bool wrongControlOnPush :: Bool $sel:wrongControlOnPush:Broken :: forall v x t. Broken v x t -> Bool -wrongControlOnPush - , Bool +wrongControlOnPush + , Bool lostEndpointInVerticalRelation :: Bool $sel:lostEndpointInVerticalRelation:Broken :: forall v x t. Broken v x t -> Bool -lostEndpointInVerticalRelation - , Bool +lostEndpointInVerticalRelation + , Bool lostInstructionInVerticalRelation :: Bool $sel:lostInstructionInVerticalRelation:Broken :: forall v x t. Broken v x t -> Bool -lostInstructionInVerticalRelation +lostInstructionInVerticalRelation } - d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Target v -v', Interval t + d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Target v +v', Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} +epAt} | v -v forall a. Eq a => a -> a -> Bool +v forall a. Eq a => a -> a -> Bool == v -v' - , let ([ProcessStepID] -newEndpoints, Process t (StepInfo v x t) -process_') = forall {u} {v} {x} {t} {a}. +v' + , let ([ProcessStepID] +newEndpoints, Process t (StepInfo v x t) +process_') = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) runSchedule Broken v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do - let ins :: State (Schedule (Broken v x t) v x t) [ProcessStepID] -ins = + let ins :: State (Schedule (Broken v x t) v x t) [ProcessStepID] +ins = if Bool -lostInstructionInVerticalRelation +lostInstructionInVerticalRelation then forall (m :: * -> *) a. Monad m => a -> m a return [] else forall {pu} {v} {x} {t} {m :: * -> *}. @@ -515,237 +515,237 @@ Interval t -> Instruction pu -> m [ProcessStepID] scheduleInstructionUnsafe (forall {a}. (Num a, Ord a) => a -> Interval a -> Interval a shiftI (if Bool -wrongControlOnPush then t +wrongControlOnPush then t 1 else t 0) Interval t -epAt) forall v x t. Instruction (Broken v x t) +epAt) forall v x t. Instruction (Broken v x t) Load if Bool -lostEndpointInVerticalRelation +lostEndpointInVerticalRelation then forall (m :: * -> *) a. Monad m => a -> m a return [] else forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [ProcessStepID] -> m [ProcessStepID] scheduleEndpoint EndpointSt v (Interval t) -d State (Schedule (Broken v x t) v x t) [ProcessStepID] -ins = +d State (Schedule (Broken v x t) v x t) [ProcessStepID] +ins = Broken v x t -pu +pu { $sel:process_:Broken :: Process t (StepInfo v x t) process_ = Process t (StepInfo v x t) -process_' +process_' , $sel:targets:Broken :: [v] targets = [] , $sel:currentWorkEndpoints:Broken :: [ProcessStepID] currentWorkEndpoints = [ProcessStepID] -newEndpoints forall a. [a] -> [a] -> [a] +newEndpoints forall a. [a] -> [a] -> [a] ++ [ProcessStepID] -currentWorkEndpoints +currentWorkEndpoints , $sel:doneAt:Broken :: Maybe t doneAt = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall a. Interval a -> a sup Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a + t 3 } endpointDecision - pu :: Broken v x t -pu@Broken + pu :: Broken v x t +pu@Broken { $sel:targets:Broken :: forall v x t. Broken v x t -> [v] targets = [] - , [v] + , [v] sources :: [v] $sel:sources:Broken :: forall v x t. Broken v x t -> [v] -sources - , Maybe t +sources + , Maybe t doneAt :: Maybe t $sel:doneAt:Broken :: forall v x t. Broken v x t -> Maybe t -doneAt +doneAt , $sel:currentWork:Broken :: forall v x t. Broken v x t -> Maybe (t, F v x) -currentWork = Just (t -a, F v x -f) - , [ProcessStepID] +currentWork = Just (t +a, F v x +f) + , [ProcessStepID] currentWorkEndpoints :: [ProcessStepID] $sel:currentWorkEndpoints:Broken :: forall v x t. Broken v x t -> [ProcessStepID] -currentWorkEndpoints - , Bool +currentWorkEndpoints + , Bool wrongControlOnPull :: Bool $sel:wrongControlOnPull:Broken :: forall v x t. Broken v x t -> Bool -wrongControlOnPull - , Bool +wrongControlOnPull + , Bool lostFunctionInVerticalRelation :: Bool $sel:lostFunctionInVerticalRelation:Broken :: forall v x t. Broken v x t -> Bool -lostFunctionInVerticalRelation - , Bool +lostFunctionInVerticalRelation + , Bool lostEndpointInVerticalRelation :: Bool $sel:lostEndpointInVerticalRelation:Broken :: forall v x t. Broken v x t -> Bool -lostEndpointInVerticalRelation - , Bool +lostEndpointInVerticalRelation + , Bool lostInstructionInVerticalRelation :: Bool $sel:lostInstructionInVerticalRelation:Broken :: forall v x t. Broken v x t -> Bool -lostInstructionInVerticalRelation +lostInstructionInVerticalRelation } EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = epRole :: EndpointRole v -epRole@(Source Set v -v), Interval t +epRole = epRole :: EndpointRole v +epRole@(Source Set v +v), Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} +epAt} | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources - , let sources' :: [v] -sources' = [v] -sources forall a. Eq a => [a] -> [a] -> [a] +sources + , let sources' :: [v] +sources' = [v] +sources forall a. Eq a => [a] -> [a] -> [a] \\ forall a. Set a -> [a] elems Set v -v +v , [v] -sources' forall a. Eq a => a -> a -> Bool +sources' forall a. Eq a => a -> a -> Bool /= [v] -sources - , let ([ProcessStepID] -newEndpoints, Process t (StepInfo v x t) -process_') = forall {u} {v} {x} {t} {a}. +sources + , let ([ProcessStepID] +newEndpoints, Process t (StepInfo v x t) +process_') = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) runSchedule Broken v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do - let doAt :: Interval t -doAt = forall {a}. (Num a, Ord a) => a -> Interval a -> Interval a + let doAt :: Interval t +doAt = forall {a}. (Num a, Ord a) => a -> Interval a -> Interval a shiftI (if Bool -wrongControlOnPull then t +wrongControlOnPull then t 0 else -t 1) Interval t -epAt +epAt -- Inlined: endpoints <- scheduleEndpoint d $ scheduleInstructionUnsafe doAt Out - [ProcessStepID] -endpoints <- do - [ProcessStepID] -high <- forall {pu} {v} {x} {t} {m :: * -> *}. + [ProcessStepID] +endpoints <- do + [ProcessStepID] +high <- forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => Interval t -> StepInfo v x t -> m [ProcessStepID] scheduleStep Interval t -epAt forall a b. (a -> b) -> a -> b +epAt forall a b. (a -> b) -> a -> b $ forall v x t. EndpointRole v -> StepInfo v x t EndpointRoleStep EndpointRole v -epRole - [ProcessStepID] -low <- forall {pu} {v} {x} {t} {m :: * -> *}. +epRole + [ProcessStepID] +low <- forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [ProcessStepID] scheduleInstructionUnsafe Interval t -doAt forall v x t. Instruction (Broken v x t) +doAt forall v x t. Instruction (Broken v x t) Out forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [ProcessStepID] -> [ProcessStepID] -> m () establishVerticalRelations (if Bool -lostEndpointInVerticalRelation then [] else [ProcessStepID] -high) +lostEndpointInVerticalRelation then [] else [ProcessStepID] +high) (if Bool -lostInstructionInVerticalRelation then [] else [ProcessStepID] -low) +lostInstructionInVerticalRelation then [] else [ProcessStepID] +low) forall (m :: * -> *) a. Monad m => a -> m a return [ProcessStepID] -high +high forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources') forall a b. (a -> b) -> a -> b +sources') forall a b. (a -> b) -> a -> b $ do - [ProcessStepID] -high <- forall {pu} {v} {x} {t} {m :: * -> *}. + [ProcessStepID] +high <- forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => Interval t -> F v x -> m [ProcessStepID] scheduleFunction (t -a forall a. Ord a => a -> a -> Interval a +a forall a. Ord a => a -> a -> Interval a ... forall a. Interval a -> a sup Interval t -epAt) F v x -f - let low :: [ProcessStepID] -low = [ProcessStepID] -endpoints forall a. [a] -> [a] -> [a] +epAt) F v x +f + let low :: [ProcessStepID] +low = [ProcessStepID] +endpoints forall a. [a] -> [a] -> [a] ++ [ProcessStepID] -currentWorkEndpoints +currentWorkEndpoints forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [ProcessStepID] -> [ProcessStepID] -> m () establishVerticalRelations (if Bool -lostFunctionInVerticalRelation then [] else [ProcessStepID] -high) +lostFunctionInVerticalRelation then [] else [ProcessStepID] +high) (if Bool -lostEndpointInVerticalRelation then [] else [ProcessStepID] -low) +lostEndpointInVerticalRelation then [] else [ProcessStepID] +low) forall (m :: * -> *) a. Monad m => a -> m a return [ProcessStepID] -endpoints = +endpoints = Broken v x t -pu +pu { $sel:process_:Broken :: Process t (StepInfo v x t) process_ = Process t (StepInfo v x t) -process_' +process_' , $sel:sources:Broken :: [v] sources = [v] -sources' +sources' , $sel:doneAt:Broken :: Maybe t doneAt = if forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources' then forall a. Maybe a +sources' then forall a. Maybe a Nothing else Maybe t -doneAt +doneAt , $sel:currentWork:Broken :: Maybe (t, F v x) currentWork = if forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources' then forall a. Maybe a +sources' then forall a. Maybe a Nothing else forall a. a -> Maybe a Just (t -a, F v x -f) +a, F v x +f) , $sel:currentWorkEndpoints:Broken :: [ProcessStepID] currentWorkEndpoints = if forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources' then [] else [ProcessStepID] -newEndpoints forall a. [a] -> [a] -> [a] +sources' then [] else [ProcessStepID] +newEndpoints forall a. [a] -> [a] -> [a] ++ [ProcessStepID] -currentWorkEndpoints +currentWorkEndpoints } - endpointDecision pu :: Broken v x t -pu@Broken{$sel:targets:Broken :: forall v x t. Broken v x t -> [v] + endpointDecision pu :: Broken v x t +pu@Broken{$sel:targets:Broken :: forall v x t. Broken v x t -> [v] targets = [], $sel:sources:Broken :: forall v x t. Broken v x t -> [v] -sources = [], [F v x] +sources = [], [F v x] remain :: [F v x] $sel:remain:Broken :: forall v x t. Broken v x t -> [F v x] -remain} EndpointSt v (Interval t) -d - | let v :: v -v = forall {c}. Set c -> c +remain} EndpointSt v (Interval t) +d + | let v :: v +v = forall {c}. Set c -> c oneOf forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables EndpointSt v (Interval t) -d - , Just F v x -f <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a -find (\F v x -f -> v -v forall a. Ord a => a -> Set a -> Bool +d + , Just F v x +f <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a +find (\F v x +f -> v +v forall a. Ord a => a -> Set a -> Bool `member` forall a v. Variables a v => a -> Set v variables F v x -f) [F v x] -remain = +f) [F v x] +remain = forall u v t. EndpointProblem u v t => u -> EndpointSt v (Interval t) -> u @@ -753,19 +753,19 @@ (Typeable v, Typeable x) => Broken v x t -> F v x -> Broken v x t execution Broken v x t -pu F v x -f) EndpointSt v (Interval t) -d - endpointDecision Broken v x t -pu EndpointSt v (Interval t) -d = forall a. HasCallStack => String -> a +pu F v x +f) EndpointSt v (Interval t) +d + endpointDecision Broken v x t +pu EndpointSt v (Interval t) +d = forall a. HasCallStack => String -> a error [i|incorrect decision #{ d } for #{ pretty pu }|] -instance Controllable (Broken v x t) where - data Instruction (Broken v x t) +instance Controllable (Broken v x t) where + data Instruction (Broken v x t) = Load | Out - deriving (ProcessStepID -> Instruction (Broken v x t) -> ShowS + deriving (ProcessStepID -> Instruction (Broken v x t) -> ShowS forall a. (ProcessStepID -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a @@ -780,13 +780,13 @@ $cshowsPrec :: forall v x t. ProcessStepID -> Instruction (Broken v x t) -> ShowS Show) - data Microcode (Broken v x t) = Microcode + data Microcode (Broken v x t) = Microcode { forall v x t. Microcode (Broken v x t) -> Bool wrSignal :: Bool , forall v x t. Microcode (Broken v x t) -> Bool oeSignal :: Bool } - deriving (ProcessStepID -> Microcode (Broken v x t) -> ShowS + deriving (ProcessStepID -> Microcode (Broken v x t) -> ShowS forall a. (ProcessStepID -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a @@ -799,7 +799,7 @@ $cshow :: forall v x t. Microcode (Broken v x t) -> String showsPrec :: ProcessStepID -> Microcode (Broken v x t) -> ShowS $cshowsPrec :: forall v x t. ProcessStepID -> Microcode (Broken v x t) -> ShowS -Show, Microcode (Broken v x t) -> Microcode (Broken v x t) -> Bool +Show, Microcode (Broken v x t) -> Microcode (Broken v x t) -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x t. Microcode (Broken v x t) -> Microcode (Broken v x t) -> Bool @@ -809,7 +809,7 @@ == :: Microcode (Broken v x t) -> Microcode (Broken v x t) -> Bool $c== :: forall v x t. Microcode (Broken v x t) -> Microcode (Broken v x t) -> Bool -Eq, Microcode (Broken v x t) -> Microcode (Broken v x t) -> Bool +Eq, Microcode (Broken v x t) -> Microcode (Broken v x t) -> Bool Microcode (Broken v x t) -> Microcode (Broken v x t) -> Ordering forall a. Eq a @@ -856,57 +856,57 @@ Microcode (Broken v x t) -> Microcode (Broken v x t) -> Ordering Ord) - zipSignalTagsAndValues :: Ports (Broken v x t) + zipSignalTagsAndValues :: Ports (Broken v x t) -> Microcode (Broken v x t) -> [(SignalTag, SignalValue)] -zipSignalTagsAndValues BrokenPorts{SignalTag +zipSignalTagsAndValues BrokenPorts{SignalTag $sel:oe:BrokenPorts :: forall v x t. Ports (Broken v x t) -> SignalTag $sel:wr:BrokenPorts :: forall v x t. Ports (Broken v x t) -> SignalTag oe :: SignalTag wr :: SignalTag -..} Microcode{Bool +..} Microcode{Bool oeSignal :: Bool wrSignal :: Bool $sel:oeSignal:Microcode :: forall v x t. Microcode (Broken v x t) -> Bool $sel:wrSignal:Microcode :: forall v x t. Microcode (Broken v x t) -> Bool -..} = +..} = [ (SignalTag -wr, Bool -> SignalValue +wr, Bool -> SignalValue Bool Bool -wrSignal) +wrSignal) , (SignalTag -oe, Bool -> SignalValue +oe, Bool -> SignalValue Bool Bool -oeSignal) +oeSignal) ] - usedPortTags :: Ports (Broken v x t) -> [SignalTag] -usedPortTags BrokenPorts{SignalTag + usedPortTags :: Ports (Broken v x t) -> [SignalTag] +usedPortTags BrokenPorts{SignalTag wr :: SignalTag $sel:wr:BrokenPorts :: forall v x t. Ports (Broken v x t) -> SignalTag -wr, SignalTag +wr, SignalTag oe :: SignalTag $sel:oe:BrokenPorts :: forall v x t. Ports (Broken v x t) -> SignalTag -oe} = [SignalTag -wr, SignalTag -oe] +oe} = [SignalTag +wr, SignalTag +oe] - takePortTags :: [SignalTag] -> Broken v x t -> Ports (Broken v x t) -takePortTags (SignalTag -wr : SignalTag -oe : [SignalTag] + takePortTags :: [SignalTag] -> Broken v x t -> Ports (Broken v x t) +takePortTags (SignalTag +wr : SignalTag +oe : [SignalTag] _) Broken v x t _ = forall v x t. SignalTag -> SignalTag -> Ports (Broken v x t) BrokenPorts SignalTag -wr SignalTag -oe +wr SignalTag +oe takePortTags [SignalTag] _ Broken v x t _ = forall a. HasCallStack => String -> a error String "can not take port tags, tags are over" -instance Default (Microcode (Broken v x t)) where - def :: Microcode (Broken v x t) +instance Default (Microcode (Broken v x t)) where + def :: Microcode (Broken v x t) def = Microcode { $sel:wrSignal:Microcode :: Bool @@ -917,9 +917,9 @@ False } -instance Time t => Default (Broken v x t) where - def :: Broken v x t -def = +instance Time t => Default (Broken v x t) where + def :: Broken v x t +def = Broken { $sel:remain:Broken :: [F v x] remain = [] @@ -973,10 +973,10 @@ False } -instance Default x => DefaultX (Broken v x t) x +instance Default x => DefaultX (Broken v x t) x -instance UnambiguouslyDecode (Broken v x t) where - decodeInstruction :: Instruction (Broken v x t) -> Microcode (Broken v x t) +instance UnambiguouslyDecode (Broken v x t) where + decodeInstruction :: Instruction (Broken v x t) -> Microcode (Broken v x t) decodeInstruction Instruction (Broken v x t) R:InstructionBroken v x t Load = forall a. Default a => a @@ -990,14 +990,14 @@ oeSignal = Bool True} -instance Connected (Broken v x t) where - data Ports (Broken v x t) = BrokenPorts +instance Connected (Broken v x t) where + data Ports (Broken v x t) = BrokenPorts { forall v x t. Ports (Broken v x t) -> SignalTag wr :: SignalTag , forall v x t. Ports (Broken v x t) -> SignalTag oe :: SignalTag } - deriving (ProcessStepID -> Ports (Broken v x t) -> ShowS + deriving (ProcessStepID -> Ports (Broken v x t) -> ShowS forall a. (ProcessStepID -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a @@ -1012,9 +1012,9 @@ $cshowsPrec :: forall v x t. ProcessStepID -> Ports (Broken v x t) -> ShowS Show) -instance IOConnected (Broken v x t) where - data IOPorts (Broken v x t) = BrokenIO - deriving (ProcessStepID -> IOPorts (Broken v x t) -> ShowS +instance IOConnected (Broken v x t) where + data IOPorts (Broken v x t) = BrokenIO + deriving (ProcessStepID -> IOPorts (Broken v x t) -> ShowS forall a. (ProcessStepID -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a @@ -1029,64 +1029,64 @@ $cshowsPrec :: forall v x t. ProcessStepID -> IOPorts (Broken v x t) -> ShowS Show) -instance VarValTime v x t => TargetSystemComponent (Broken v x t) where - moduleName :: Text -> Broken v x t -> Text -moduleName Text -_title Broken v x t -_pu = Text +instance VarValTime v x t => TargetSystemComponent (Broken v x t) where + moduleName :: Text -> Broken v x t -> Text +moduleName Text +_title Broken v x t +_pu = Text "pu_broken" - software :: Text -> Broken v x t -> Implementation + software :: Text -> Broken v x t -> Implementation software Text _ Broken v x t _ = Implementation Empty - hardware :: Text -> Broken v x t -> Implementation -hardware Text -_tag Broken v x t -_pu = Maybe String -> [Implementation] -> Implementation + hardware :: Text -> Broken v x t -> Implementation +hardware Text +_tag Broken v x t +_pu = Maybe String -> [Implementation] -> Implementation Aggregate forall a. Maybe a Nothing [String -> Implementation FromLibrary String "pu_broken.v"] - hardwareInstance :: Text -> Broken v x t -> UnitEnv (Broken v x t) -> Verilog + hardwareInstance :: Text -> Broken v x t -> UnitEnv (Broken v x t) -> Verilog hardwareInstance - Text -tag - pu :: Broken v x t -pu@Broken{Bool + Text +tag + pu :: Broken v x t +pu@Broken{Bool brokeVerilog :: Bool $sel:brokeVerilog:Broken :: forall v x t. Broken v x t -> Bool -brokeVerilog, Bool +brokeVerilog, Bool wrongVerilogSimulationValue :: Bool $sel:wrongVerilogSimulationValue:Broken :: forall v x t. Broken v x t -> Bool -wrongVerilogSimulationValue, Bool +wrongVerilogSimulationValue, Bool wrongAttr :: Bool $sel:wrongAttr:Broken :: forall v x t. Broken v x t -> Bool -wrongAttr, Bool +wrongAttr, Bool unknownDataOut :: Bool $sel:unknownDataOut:Broken :: forall v x t. Broken v x t -> Bool -unknownDataOut} +unknownDataOut} UnitEnv - { Text + { Text sigClk :: forall m. UnitEnv m -> Text sigClk :: Text sigClk , ctrlPorts :: forall m. UnitEnv m -> Maybe (Ports m) -ctrlPorts = Just BrokenPorts{SignalTag +ctrlPorts = Just BrokenPorts{SignalTag oe :: SignalTag wr :: SignalTag $sel:oe:BrokenPorts :: forall v x t. Ports (Broken v x t) -> SignalTag $sel:wr:BrokenPorts :: forall v x t. Ports (Broken v x t) -> SignalTag -..} +..} , valueIn :: forall m. UnitEnv m -> Maybe (Text, Text) -valueIn = Just (Text -dataIn, Text -attrIn) +valueIn = Just (Text +dataIn, Text +attrIn) , valueOut :: forall m. UnitEnv m -> Maybe (Text, Text) -valueOut = Just (Text -dataOut, Text -attrOut) +valueOut = Just (Text +dataOut, Text +attrOut) } = [__i| /* @@ -1109,50 +1109,50 @@ #{ if brokeVerilog then "WRONG VERILOG" else "" :: T.Text } ); |] - hardwareInstance Text -_title Broken v x t -_pu UnitEnv (Broken v x t) -_env = forall a. HasCallStack => String -> a + hardwareInstance Text +_title Broken v x t +_pu UnitEnv (Broken v x t) +_env = forall a. HasCallStack => String -> a error String "internal error" -instance IOTestBench (Broken v x t) v x +instance IOTestBench (Broken v x t) v x -instance Ord t => WithFunctions (Broken v x t) (F v x) where - functions :: Broken v x t -> [F v x] -functions Broken{Process t (StepInfo v x t) +instance Ord t => WithFunctions (Broken v x t) (F v x) where + functions :: Broken v x t -> [F v x] +functions Broken{Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Broken :: forall v x t. Broken v x t -> Process t (StepInfo v x t) -process_, [F v x] +process_, [F v x] remain :: [F v x] $sel:remain:Broken :: forall v x t. Broken v x t -> [F v x] -remain, Maybe (t, F v x) +remain, Maybe (t, F v x) currentWork :: Maybe (t, F v x) $sel:currentWork:Broken :: forall v x t. Broken v x t -> Maybe (t, F v x) -currentWork} = +currentWork} = forall a f. WithFunctions a f => a -> [f] functions Process t (StepInfo v x t) -process_ +process_ forall a. [a] -> [a] -> [a] ++ [F v x] -remain +remain forall a. [a] -> [a] -> [a] ++ case Maybe (t, F v x) -currentWork of +currentWork of Just (t -_, F v x -f) -> [F v x -f] +_, F v x +f) -> [F v x +f] Maybe (t, F v x) Nothing -> [] -instance VarValTime v x t => Testable (Broken v x t) v x where - testBenchImplementation :: Project (Broken v x t) v x -> Implementation -testBenchImplementation prj :: Project (Broken v x t) v x -prj@Project{Text +instance VarValTime v x t => Testable (Broken v x t) v x where + testBenchImplementation :: Project (Broken v x t) v x -> Implementation +testBenchImplementation prj :: Project (Broken v x t) v x +prj@Project{Text pName :: forall m v x. Project m v x -> Text pName :: Text -pName, Broken v x t +pName, Broken v x t pUnit :: forall m v x. Project m v x -> m pUnit :: Broken v x t pUnit} = @@ -1161,8 +1161,8 @@ toString forall a b. (a -> b) -> a -> b $ forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -pName Broken v x t -pUnit forall a. Semigroup a => a -> a -> a +pName Broken v x t +pUnit forall a. Semigroup a => a -> a -> a <> Text "_tb.v") forall a b. (a -> b) -> a -> b $ @@ -1173,14 +1173,14 @@ Project m v x -> SnippetTestBenchConf m -> Text snippetTestBench Project (Broken v x t) v x -prj +prj SnippetTestBenchConf { tbcSignals :: [Text] -tbcSignals = [Text +tbcSignals = [Text "oe", Text "wr"] , tbcPorts :: Ports (Broken v x t) -tbcPorts = +tbcPorts = BrokenPorts { $sel:oe:BrokenPorts :: SignalTag oe = Text -> SignalTag @@ -1192,13 +1192,13 @@ "wr" } , tbcMC2verilogLiteral :: Microcode (Broken v x t) -> Text -tbcMC2verilogLiteral = \Microcode{Bool +tbcMC2verilogLiteral = \Microcode{Bool oeSignal :: Bool $sel:oeSignal:Microcode :: forall v x t. Microcode (Broken v x t) -> Bool -oeSignal, Bool +oeSignal, Bool wrSignal :: Bool $sel:wrSignal:Microcode :: forall v x t. Microcode (Broken v x t) -> Bool -wrSignal} -> +wrSignal} -> [i|oe <= #{ bool2verilog oeSignal }; wr <= #{ bool2verilog wrSignal };|] } \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Divider.html b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Divider.html index be0eb0f14..f0f046e38 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Divider.html +++ b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Divider.html @@ -40,7 +40,7 @@ data InputDesc = Numer | Denom - deriving (Int -> InputDesc -> ShowS + deriving (Int -> InputDesc -> ShowS [InputDesc] -> ShowS InputDesc -> String forall a. @@ -51,7 +51,7 @@ $cshow :: InputDesc -> String showsPrec :: Int -> InputDesc -> ShowS $cshowsPrec :: Int -> InputDesc -> ShowS -Show, InputDesc -> InputDesc -> Bool +Show, InputDesc -> InputDesc -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: InputDesc -> InputDesc -> Bool $c/= :: InputDesc -> InputDesc -> Bool @@ -62,7 +62,7 @@ data OutputDesc = Quotient | Remain - deriving (Int -> OutputDesc -> ShowS + deriving (Int -> OutputDesc -> ShowS [OutputDesc] -> ShowS OutputDesc -> String forall a. @@ -73,7 +73,7 @@ $cshow :: OutputDesc -> String showsPrec :: Int -> OutputDesc -> ShowS $cshowsPrec :: Int -> OutputDesc -> ShowS -Show, OutputDesc -> OutputDesc -> Bool +Show, OutputDesc -> OutputDesc -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: OutputDesc -> OutputDesc -> Bool $c/= :: OutputDesc -> OutputDesc -> Bool @@ -81,32 +81,32 @@ $c== :: OutputDesc -> OutputDesc -> Bool Eq) -data Divider v x t = Divider +data Divider v x t = Divider { forall v x t. Divider v x t -> [Job v x t] -jobs :: [Job v x t] +jobs :: [Job v x t] , forall v x t. Divider v x t -> [F v x] -remains :: [F v x] +remains :: [F v x] , forall v x t. Divider v x t -> Process t (StepInfo v x t) -process_ :: Process t (StepInfo v x t) +process_ :: Process t (StepInfo v x t) , forall v x t. Divider v x t -> t -pipeline :: t +pipeline :: t , forall v x t. Divider v x t -> Bool mock :: Bool } -instance (Show v, Show t) => Show (Divider v x t) where - show :: Divider v x t -> String -show Divider{[Job v x t] +instance (Show v, Show t) => Show (Divider v x t) where + show :: Divider v x t -> String +show Divider{[Job v x t] jobs :: [Job v x t] $sel:jobs:Divider :: forall v x t. Divider v x t -> [Job v x t] -jobs} = forall a. Show a => a -> String +jobs} = forall a. Show a => a -> String show [Job v x t] -jobs +jobs divider :: t -> Bool -> Divider v x t -divider t -pipeline Bool -mock = +divider t +pipeline Bool +mock = Divider { $sel:jobs:Divider :: [Job v x t] jobs = [] @@ -118,70 +118,70 @@ , t pipeline :: t $sel:pipeline:Divider :: t -pipeline +pipeline , Bool mock :: Bool $sel:mock:Divider :: Bool -mock +mock } -instance Time t => Default (Divider v x t) where - def :: Divider v x t -def = forall {t} {v} {x}. Default t => t -> Bool -> Divider v x t +instance Time t => Default (Divider v x t) where + def :: Divider v x t +def = forall {t} {v} {x}. Default t => t -> Bool -> Divider v x t divider t 4 Bool True -instance Default x => DefaultX (Divider v x t) x +instance Default x => DefaultX (Divider v x t) x -instance Ord t => WithFunctions (Divider v x t) (F v x) where - functions :: Divider v x t -> [F v x] -functions Divider{Process t (StepInfo v x t) +instance Ord t => WithFunctions (Divider v x t) (F v x) where + functions :: Divider v x t -> [F v x] +functions Divider{Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Divider :: forall v x t. Divider v x t -> Process t (StepInfo v x t) -process_, [F v x] +process_, [F v x] remains :: [F v x] $sel:remains:Divider :: forall v x t. Divider v x t -> [F v x] -remains, [Job v x t] +remains, [Job v x t] jobs :: [Job v x t] $sel:jobs:Divider :: forall v x t. Divider v x t -> [Job v x t] -jobs} = +jobs} = forall a f. WithFunctions a f => a -> [f] functions Process t (StepInfo v x t) -process_ +process_ forall a. [a] -> [a] -> [a] ++ [F v x] -remains +remains forall a. [a] -> [a] -> [a] ++ forall a b. (a -> b) -> [a] -> [b] map forall v x t. Job v x t -> F v x function [Job v x t] -jobs +jobs -data Job v x t +data Job v x t = WaitArguments { forall v x t. Job v x t -> F v x -function :: F v x +function :: F v x , forall v x t. Job v x t -> [(InputDesc, v)] -arguments :: [(InputDesc, v)] +arguments :: [(InputDesc, v)] } | WaitResults - { function :: F v x + { function :: F v x , forall v x t. Job v x t -> t -readyAt :: t +readyAt :: t , forall v x t. Job v x t -> Maybe t -restrict :: Maybe t +restrict :: Maybe t , forall v x t. Job v x t -> [(OutputDesc, Set v)] -results :: [(OutputDesc, S.Set v)] +results :: [(OutputDesc, S.Set v)] } - deriving (Job v x t -> Job v x t -> Bool + deriving (Job v x t -> Job v x t -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x t. (Eq v, Eq t) => Job v x t -> Job v x t -> Bool /= :: Job v x t -> Job v x t -> Bool $c/= :: forall v x t. (Eq v, Eq t) => Job v x t -> Job v x t -> Bool == :: Job v x t -> Job v x t -> Bool $c== :: forall v x t. (Eq v, Eq t) => Job v x t -> Job v x t -> Bool -Eq, Int -> Job v x t -> ShowS +Eq, Int -> Job v x t -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. (Show v, Show t) => Int -> Job v x t -> ShowS @@ -195,26 +195,26 @@ $cshowsPrec :: forall v x t. (Show v, Show t) => Int -> Job v x t -> ShowS Show) -instance Ord v => Variables (Job v x t) v where - variables :: Job v x t -> Set v -variables WaitArguments{[(InputDesc, v)] +instance Ord v => Variables (Job v x t) v where + variables :: Job v x t -> Set v +variables WaitArguments{[(InputDesc, v)] arguments :: [(InputDesc, v)] $sel:arguments:WaitArguments :: forall v x t. Job v x t -> [(InputDesc, v)] -arguments} = forall a. Ord a => [a] -> Set a +arguments} = forall a. Ord a => [a] -> Set a S.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> b snd [(InputDesc, v)] -arguments - variables WaitResults{[(OutputDesc, Set v)] +arguments + variables WaitResults{[(OutputDesc, Set v)] results :: [(OutputDesc, Set v)] $sel:results:WaitArguments :: forall v x t. Job v x t -> [(OutputDesc, Set v)] -results} = forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a +results} = forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a S.unions forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> b snd [(OutputDesc, Set v)] -results +results isWaitArguments :: Job v x t -> Bool isWaitArguments WaitArguments{} = Bool @@ -230,30 +230,30 @@ _ = Bool False -instance VarValTime v x t => ProcessorUnit (Divider v x t) v x t where - tryBind :: F v x -> Divider v x t -> Either String (Divider v x t) -tryBind F v x -f pu :: Divider v x t -pu@Divider{[F v x] +instance VarValTime v x t => ProcessorUnit (Divider v x t) v x t where + tryBind :: F v x -> Divider v x t -> Either String (Divider v x t) +tryBind F v x +f pu :: Divider v x t +pu@Divider{[F v x] remains :: [F v x] $sel:remains:Divider :: forall v x t. Divider v x t -> [F v x] -remains} - | Just (F.Division (I v -_n) (I v -_d) (O Set v -_q) (O Set v -_r)) <- forall (f :: * -> * -> *) v x. +remains} + | Just (F.Division (I v +_n) (I v +_d) (O Set v +_q) (O Set v +_r)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = forall a b. b -> Either a b Right Divider v x t -pu{$sel:remains:Divider :: [F v x] +pu{$sel:remains:Divider :: [F v x] remains = F v x -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] : [F v x] -remains} +remains} | Bool otherwise = forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b @@ -261,155 +261,155 @@ "Unknown functional block: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show F v x -f - process :: Divider v x t -> Process t (StepInfo v x t) +f + process :: Divider v x t -> Process t (StepInfo v x t) process = forall v x t. Divider v x t -> Process t (StepInfo v x t) process_ - parallelismType :: Divider v x t -> ParallelismType + parallelismType :: Divider v x t -> ParallelismType parallelismType Divider v x t _ = ParallelismType Pipeline -instance (Var v, Time t) => Locks (Divider v x t) v where - locks :: Divider v x t -> [Lock v] -locks Divider{[Job v x t] +instance (Var v, Time t) => Locks (Divider v x t) v where + locks :: Divider v x t -> [Lock v] +locks Divider{[Job v x t] jobs :: [Job v x t] $sel:jobs:Divider :: forall v x t. Divider v x t -> [Job v x t] -jobs, [F v x] +jobs, [F v x] remains :: [F v x] $sel:remains:Divider :: forall v x t. Divider v x t -> [F v x] -remains} = forall a. Eq a => [a] -> [a] +remains} = forall a. Eq a => [a] -> [a] L.nub forall a b. (a -> b) -> a -> b $ [Lock v] -byArguments forall a. [a] -> [a] -> [a] +byArguments forall a. [a] -> [a] -> [a] ++ [Lock v] -byResults +byResults where - byArguments :: [Lock v] -byArguments - | Just wa :: Job v x t -wa@WaitArguments{F v x + byArguments :: [Lock v] +byArguments + | Just wa :: Job v x t +wa@WaitArguments{F v x function :: F v x $sel:function:WaitArguments :: forall v x t. Job v x t -> F v x -function} <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a +function} <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find forall {v} {x} {t}. Job v x t -> Bool isWaitArguments [Job v x t] -jobs = +jobs = [ Lock{v lockBy :: v lockBy :: v -lockBy, v +lockBy, v locked :: v locked :: v -locked} - | v -lockBy <- forall a. Set a -> [a] +locked} + | v +lockBy <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables Job v x t -wa - , v -locked <- forall a. Set a -> [a] +wa + , v +locked <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables [F v x] -remains +remains ] forall a. [a] -> [a] -> [a] ++ [ Lock{v lockBy :: v lockBy :: v -lockBy, v +lockBy, v locked :: v locked :: v -locked} - | v -lockBy <- forall a. Set a -> [a] +locked} + | v +lockBy <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables Job v x t -wa - , v -locked <- forall a. Set a -> [a] +wa + , v +locked <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v outputs F v x -function +function ] | Bool otherwise = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap forall x v. Locks x v => x -> [Lock v] locks [F v x] -remains - byResults :: [Lock v] -byResults - | Just Job v x t -wr <- forall {a} {v} {x}. Ord a => [Job v x a] -> Maybe (Job v x a) +remains + byResults :: [Lock v] +byResults + | Just Job v x t +wr <- forall {a} {v} {x}. Ord a => [Job v x a] -> Maybe (Job v x a) firstWaitResults [Job v x t] -jobs = - let blocked :: [Job v x t] -blocked = forall a. (a -> Bool) -> [a] -> [a] -filter (\Job v x t -j -> forall {v} {x} {t}. Job v x t -> Bool +jobs = + let blocked :: [Job v x t] +blocked = forall a. (a -> Bool) -> [a] -> [a] +filter (\Job v x t +j -> forall {v} {x} {t}. Job v x t -> Bool isWaitResults Job v x t -j Bool -> Bool -> Bool +j Bool -> Bool -> Bool && Job v x t -j forall a. Eq a => a -> a -> Bool +j forall a. Eq a => a -> a -> Bool /= Job v x t -wr) [Job v x t] -jobs +wr) [Job v x t] +jobs in [ Lock{v lockBy :: v lockBy :: v -lockBy, v +lockBy, v locked :: v locked :: v -locked} - | v -lockBy <- forall a. Set a -> [a] +locked} + | v +lockBy <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables Job v x t -wr - , v -locked <- forall a. Set a -> [a] +wr + , v +locked <- forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables [Job v x t] -blocked +blocked ] | Bool otherwise = [] -instance BreakLoopProblem (Divider v x t) v x -instance ConstantFoldingProblem (Divider v x t) v x -instance OptimizeAccumProblem (Divider v x t) v x -instance ResolveDeadlockProblem (Divider v x t) v x +instance BreakLoopProblem (Divider v x t) v x +instance ConstantFoldingProblem (Divider v x t) v x +instance OptimizeAccumProblem (Divider v x t) v x +instance ResolveDeadlockProblem (Divider v x t) v x function2WaitArguments :: F v x -> Job v x t -function2WaitArguments F v x -f +function2WaitArguments F v x +f | Just F.Division{$sel:denom:Division :: forall v x. Division v x -> I v -F.denom = I v -denom, $sel:numer:Division :: forall v x. Division v x -> I v -F.numer = I v -numer} <- forall (f :: * -> * -> *) v x. +F.denom = I v +denom, $sel:numer:Division :: forall v x. Division v x -> I v +F.numer = I v +numer} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = WaitArguments { $sel:function:WaitArguments :: F v x function = F v x -f +f , $sel:arguments:WaitArguments :: [(InputDesc, v)] arguments = [(InputDesc Denom, v -denom), (InputDesc +denom), (InputDesc Numer, v -numer)] +numer)] } | Bool otherwise = forall a. HasCallStack => String -> a @@ -418,29 +418,29 @@ "internal divider error: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show F v x -f +f function2WaitResults :: t -> F v x -> Job v x t -function2WaitResults t -readyAt F v x -f +function2WaitResults t +readyAt F v x +f | Just F.Division{$sel:quotient:Division :: forall v x. Division v x -> O v -F.quotient = O Set v -quotient, $sel:remain:Division :: forall v x. Division v x -> O v -F.remain = O Set v -remain} <- forall (f :: * -> * -> *) v x. +F.quotient = O Set v +quotient, $sel:remain:Division :: forall v x. Division v x -> O v +F.remain = O Set v +remain} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = WaitResults { $sel:function:WaitArguments :: F v x function = F v x -f +f , t readyAt :: t $sel:readyAt:WaitArguments :: t -readyAt +readyAt , $sel:restrict:WaitArguments :: Maybe t restrict = forall a. Maybe a Nothing @@ -450,9 +450,9 @@ [(a, t a)] -> [(a, t a)] filterEmptyResults [(OutputDesc Quotient, Set v -quotient), (OutputDesc +quotient), (OutputDesc Remain, Set v -remain)] +remain)] } | Bool otherwise = forall a. HasCallStack => String -> a @@ -460,27 +460,27 @@ "internal error" filterEmptyResults :: [(a, t a)] -> [(a, t a)] -filterEmptyResults [(a, t a)] -rs = forall a. (a -> Bool) -> [a] -> [a] +filterEmptyResults [(a, t a)] +rs = forall a. (a -> Bool) -> [a] -> [a] filter (Bool -> Bool not forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a. Foldable t => t a -> Bool null forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(a, t a)] -rs +rs firstWaitResults :: [Job v x a] -> Maybe (Job v x a) -firstWaitResults [Job v x a] -jobs = - let jobs' :: [Job v x a] -jobs' = forall a. (a -> Bool) -> [a] -> [a] +firstWaitResults [Job v x a] +jobs = + let jobs' :: [Job v x a] +jobs' = forall a. (a -> Bool) -> [a] -> [a] filter forall {v} {x} {t}. Job v x t -> Bool isWaitResults [Job v x a] -jobs +jobs in if forall (t :: * -> *) a. Foldable t => t a -> Bool null [Job v x a] -jobs' +jobs' then forall a. Maybe a Nothing else forall a. a -> Maybe a @@ -490,40 +490,40 @@ (t2 -> a) -> t1 t2 -> t2 minimumOn forall v x t. Job v x t -> t readyAt [Job v x a] -jobs' +jobs' -instance VarValTime v x t => EndpointProblem (Divider v x t) v t where - endpointOptions :: Divider v x t -> [EndpointSt v (TimeConstraint t)] -endpointOptions pu :: Divider v x t -pu@Divider{[F v x] +instance VarValTime v x t => EndpointProblem (Divider v x t) v t where + endpointOptions :: Divider v x t -> [EndpointSt v (TimeConstraint t)] +endpointOptions pu :: Divider v x t +pu@Divider{[F v x] remains :: [F v x] $sel:remains:Divider :: forall v x t. Divider v x t -> [F v x] -remains, [Job v x t] +remains, [Job v x t] jobs :: [Job v x t] $sel:jobs:Divider :: forall v x t. Divider v x t -> [Job v x t] -jobs} = - let executeNewFunction :: [EndpointSt v (TimeConstraint t)] -executeNewFunction +jobs} = + let executeNewFunction :: [EndpointSt v (TimeConstraint t)] +executeNewFunction | forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any forall {v} {x} {t}. Job v x t -> Bool isWaitArguments [Job v x t] -jobs = [] +jobs = [] | Bool otherwise = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (forall a b. (a -> b) -> [a] -> [b] map v -> EndpointSt v (TimeConstraint t) -target forall b c a. (b -> c) -> (a -> b) -> a -> c +target forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Set a -> [a] S.elems forall b c a. (b -> c) -> (a -> b) -> a -> c . forall f v. Function f v => f -> Set v inputs) [F v x] -remains - waitingArguments :: [EndpointSt v (TimeConstraint t)] -waitingArguments = +remains + waitingArguments :: [EndpointSt v (TimeConstraint t)] +waitingArguments = forall b a. b -> (a -> b) -> Maybe a -> b maybe [] (forall a b. (a -> b) -> [a] -> [b] map v -> EndpointSt v (TimeConstraint t) -target forall b c a. (b -> c) -> (a -> b) -> a -> c +target forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Set a -> [a] S.elems forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a v. Variables a v => a -> Set v @@ -531,372 +531,372 @@ $ forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find forall {v} {x} {t}. Job v x t -> Bool isWaitArguments [Job v x t] -jobs - waitResults :: [EndpointSt v (TimeConstraint t)] -waitResults - | Just WaitResults{t +jobs + waitResults :: [EndpointSt v (TimeConstraint t)] +waitResults + | Just WaitResults{t readyAt :: t $sel:readyAt:WaitArguments :: forall v x t. Job v x t -> t -readyAt, [(OutputDesc, Set v)] +readyAt, [(OutputDesc, Set v)] results :: [(OutputDesc, Set v)] $sel:results:WaitArguments :: forall v x t. Job v x t -> [(OutputDesc, Set v)] -results, Maybe t +results, Maybe t restrict :: Maybe t $sel:restrict:WaitArguments :: forall v x t. Job v x t -> Maybe t -restrict} <- forall {a} {v} {x}. Ord a => [Job v x a] -> Maybe (Job v x a) +restrict} <- forall {a} {v} {x}. Ord a => [Job v x a] -> Maybe (Job v x a) firstWaitResults [Job v x t] -jobs = - let at :: Interval t -at = forall a. Ord a => a -> a -> a +jobs = + let at :: Interval t +at = forall a. Ord a => a -> a -> a max t -readyAt (forall u t. NextTick u t => u -> t +readyAt (forall u t. NextTick u t => u -> t nextTick Divider v x t -pu) forall a. Ord a => a -> a -> Interval a +pu) forall a. Ord a => a -> a -> Interval a ... forall a. a -> Maybe a -> a fromMaybe forall a. Bounded a => a maxBound Maybe t -restrict +restrict in forall a b. (a -> b) -> [a] -> [b] map (forall {t} {v}. Num t => Interval t -> Set v -> EndpointSt v (TimeConstraint t) -sources Interval t -at forall b c a. (b -> c) -> (a -> b) -> a -> c +sources Interval t +at forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(OutputDesc, Set v)] -results +results | Bool otherwise = [] in forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [[EndpointSt v (TimeConstraint t)] -executeNewFunction, [EndpointSt v (TimeConstraint t)] -waitingArguments, [EndpointSt v (TimeConstraint t)] -waitResults] +executeNewFunction, [EndpointSt v (TimeConstraint t)] +waitingArguments, [EndpointSt v (TimeConstraint t)] +waitResults] where - target :: v -> EndpointSt v (TimeConstraint t) -target v -v = forall v tp. EndpointRole v -> tp -> EndpointSt v tp + target :: v -> EndpointSt v (TimeConstraint t) +target v +v = forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. v -> EndpointRole v Target v -v) forall a b. (a -> b) -> a -> b +v) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (forall u t. NextTick u t => u -> t nextTick Divider v x t -pu forall a. Ord a => a -> a -> Interval a +pu forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) (forall a. a -> Interval a singleton t 1) - sources :: Interval t -> Set v -> EndpointSt v (TimeConstraint t) -sources Interval t -at Set v -vs = forall v tp. EndpointRole v -> tp -> EndpointSt v tp + sources :: Interval t -> Set v -> EndpointSt v (TimeConstraint t) +sources Interval t +at Set v +vs = forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. Set v -> EndpointRole v Source Set v -vs) forall a b. (a -> b) -> a -> b +vs) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint Interval t -at (forall a. a -> Interval a +at (forall a. a -> Interval a singleton t 1) - endpointDecision :: Divider v x t -> EndpointSt v (Interval t) -> Divider v x t -endpointDecision pu :: Divider v x t -pu@Divider{[Job v x t] + endpointDecision :: Divider v x t -> EndpointSt v (Interval t) -> Divider v x t +endpointDecision pu :: Divider v x t +pu@Divider{[Job v x t] jobs :: [Job v x t] $sel:jobs:Divider :: forall v x t. Divider v x t -> [Job v x t] -jobs, [F v x] +jobs, [F v x] remains :: [F v x] $sel:remains:Divider :: forall v x t. Divider v x t -> [F v x] -remains, t +remains, t pipeline :: t $sel:pipeline:Divider :: forall v x t. Divider v x t -> t -pipeline} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Target v -v, Interval t +pipeline} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Target v +v, Interval t epAt :: forall v tp. EndpointSt v tp -> tp epAt :: Interval t epAt} - | ([F v x -f], [F v x] -remains') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) + | ([F v x +f], [F v x] +remains') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) partition (forall a. Ord a => a -> Set a -> Bool S.member v -v forall b c a. (b -> c) -> (a -> b) -> a -> c +v forall b c a. (b -> c) -> (a -> b) -> a -> c . forall f v. Function f v => f -> Set v inputs) [F v x] -remains = - let pu' :: Divider v x t -pu' = +remains = + let pu' :: Divider v x t +pu' = Divider v x t -pu +pu { $sel:jobs:Divider :: [Job v x t] jobs = forall {v} {x} {t}. (Typeable v, Typeable x) => F v x -> Job v x t function2WaitArguments F v x -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] : [Job v x t] -jobs +jobs , $sel:remains:Divider :: [F v x] remains = [F v x] -remains' +remains' } in forall u v t. EndpointProblem u v t => u -> EndpointSt v (Interval t) -> u endpointDecision Divider v x t -pu' EndpointSt v (Interval t) -d - | ([WaitArguments{F v x +pu' EndpointSt v (Interval t) +d + | ([WaitArguments{F v x function :: F v x $sel:function:WaitArguments :: forall v x t. Job v x t -> F v x -function, [(InputDesc, v)] +function, [(InputDesc, v)] arguments :: [(InputDesc, v)] $sel:arguments:WaitArguments :: forall v x t. Job v x t -> [(InputDesc, v)] -arguments}], [Job v x t] -jobs') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) +arguments}], [Job v x t] +jobs') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) partition (forall a. Ord a => a -> Set a -> Bool S.member v -v forall b c a. (b -> c) -> (a -> b) -> a -> c +v forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a v. Variables a v => a -> Set v variables) [Job v x t] -jobs = - let (InputDesc -tag, [(InputDesc, v)] -arguments') = case forall a. (a -> Bool) -> [a] -> ([a], [a]) +jobs = + let (InputDesc +tag, [(InputDesc, v)] +arguments') = case forall a. (a -> Bool) -> [a] -> ([a], [a]) partition ((forall a. Eq a => a -> a -> Bool == v -v) forall b c a. (b -> c) -> (a -> b) -> a -> c +v) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(InputDesc, v)] -arguments of - ([(InputDesc -tag', v -_v)], [(InputDesc, v)] -other) -> (InputDesc -tag', [(InputDesc, v)] -other) +arguments of + ([(InputDesc +tag', v +_v)], [(InputDesc, v)] +other) -> (InputDesc +tag', [(InputDesc, v)] +other) ([(InputDesc, v)], [(InputDesc, v)]) _ -> forall a. HasCallStack => String -> a error String "Divider: endpointDecision: internal error" - nextTick' :: t -nextTick' = forall a. Interval a -> a + nextTick' :: t +nextTick' = forall a. Interval a -> a sup Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a + t 1 in case [(InputDesc, v)] -arguments' of +arguments' of [] -> - let job' :: Job v x t -job' = forall {v} {x} {t}. + let job' :: Job v x t +job' = forall {v} {x} {t}. (Typeable v, Typeable x) => t -> F v x -> Job v x t function2WaitResults (t -nextTick' forall a. Num a => a -> a -> a +nextTick' forall a. Num a => a -> a -> a + t -pipeline forall a. Num a => a -> a -> a +pipeline forall a. Num a => a -> a -> a + t 1) F v x -function - restrictResults :: [Job v x t] -> [Job v x t] -restrictResults = +function + restrictResults :: [Job v x t] -> [Job v x t] +restrictResults = forall a b. (a -> b) -> [a] -> [b] map ( \case - wa :: Job v x t -wa@WaitResults{$sel:restrict:WaitArguments :: forall v x t. Job v x t -> Maybe t + wa :: Job v x t +wa@WaitResults{$sel:restrict:WaitArguments :: forall v x t. Job v x t -> Maybe t restrict = Maybe t Nothing} -> Job v x t -wa{$sel:restrict:WaitArguments :: Maybe t +wa{$sel:restrict:WaitArguments :: Maybe t restrict = forall a. a -> Maybe a Just (t -nextTick' forall a. Num a => a -> a -> a +nextTick' forall a. Num a => a -> a -> a + t -pipeline)} - Job v x t -other -> Job v x t -other +pipeline)} + Job v x t +other -> Job v x t +other ) in Divider v x t -pu +pu { $sel:jobs:Divider :: [Job v x t] jobs = Job v x t -job' forall a. a -> [a] -> [a] +job' forall a. a -> [a] -> [a] : [Job v x t] -> [Job v x t] -restrictResults [Job v x t] -jobs' +restrictResults [Job v x t] +jobs' , $sel:process_:Divider :: Process t (StepInfo v x t) process_ = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Divider v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do forall {f :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) f => EndpointSt v (Interval t) -> f [Int] -> f () scheduleEndpoint_ EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe Interval t -epAt forall a b. (a -> b) -> a -> b +epAt forall a b. (a -> b) -> a -> b $ forall v x t. InputDesc -> Instruction (Divider v x t) Load InputDesc -tag +tag forall {f :: * -> *} {pu} {v} {x} {t}. (MonadState (Schedule pu v x t) f, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> f () scheduleInstructionUnsafe_ (forall a. a -> Interval a singleton t -nextTick') forall v x t. Instruction (Divider v x t) +nextTick') forall v x t. Instruction (Divider v x t) Do } - [(InputDesc, v)] -_arguments' -> + [(InputDesc, v)] +_arguments' -> Divider v x t -pu +pu { $sel:jobs:Divider :: [Job v x t] jobs = WaitArguments{F v x function :: F v x $sel:function:WaitArguments :: F v x -function, $sel:arguments:WaitArguments :: [(InputDesc, v)] +function, $sel:arguments:WaitArguments :: [(InputDesc, v)] arguments = [(InputDesc, v)] -arguments'} forall a. a -> [a] -> [a] +arguments'} forall a. a -> [a] -> [a] : [Job v x t] -jobs' +jobs' , $sel:process_:Divider :: Process t (StepInfo v x t) process_ = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Divider v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do forall {f :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) f => EndpointSt v (Interval t) -> f [Int] -> f () scheduleEndpoint_ EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe Interval t -epAt forall a b. (a -> b) -> a -> b +epAt forall a b. (a -> b) -> a -> b $ forall v x t. InputDesc -> Instruction (Divider v x t) Load InputDesc -tag +tag } - endpointDecision pu :: Divider v x t -pu@Divider{[Job v x t] + endpointDecision pu :: Divider v x t +pu@Divider{[Job v x t] jobs :: [Job v x t] $sel:jobs:Divider :: forall v x t. Divider v x t -> [Job v x t] -jobs} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Source Set v -vs, Interval t +jobs} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Source Set v +vs, Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} - | ([job :: Job v x t -job@WaitResults{[(OutputDesc, Set v)] +epAt} + | ([job :: Job v x t +job@WaitResults{[(OutputDesc, Set v)] results :: [(OutputDesc, Set v)] $sel:results:WaitArguments :: forall v x t. Job v x t -> [(OutputDesc, Set v)] -results, F v x +results, F v x function :: F v x $sel:function:WaitArguments :: forall v x t. Job v x t -> F v x -function}], [Job v x t] -jobs') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) +function}], [Job v x t] +jobs') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) partition ((Set v -vs forall a. Ord a => Set a -> Set a -> Bool +vs forall a. Ord a => Set a -> Set a -> Bool `S.isSubsetOf`) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a v. Variables a v => a -> Set v variables) [Job v x t] -jobs = - let ((OutputDesc -tag, Set v -allVs), [(OutputDesc, Set v)] -results') = case forall a. (a -> Bool) -> [a] -> ([a], [a]) +jobs = + let ((OutputDesc +tag, Set v +allVs), [(OutputDesc, Set v)] +results') = case forall a. (a -> Bool) -> [a] -> ([a], [a]) partition ((Set v -vs forall a. Ord a => Set a -> Set a -> Bool +vs forall a. Ord a => Set a -> Set a -> Bool `S.isSubsetOf`) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(OutputDesc, Set v)] -results of - ([(OutputDesc -tag_, Set v -allVs_)], [(OutputDesc, Set v)] -other) -> ((OutputDesc -tag_, Set v -allVs_), [(OutputDesc, Set v)] -other) +results of + ([(OutputDesc +tag_, Set v +allVs_)], [(OutputDesc, Set v)] +other) -> ((OutputDesc +tag_, Set v +allVs_), [(OutputDesc, Set v)] +other) ([(OutputDesc, Set v)], [(OutputDesc, Set v)]) _ -> forall a. HasCallStack => String -> a error String "Divider: endpointDecision: internal error" - allVs' :: Set v -allVs' = Set v -allVs forall a. Ord a => Set a -> Set a -> Set a + allVs' :: Set v +allVs' = Set v +allVs forall a. Ord a => Set a -> Set a -> Set a S.\\ Set v -vs - results'' :: [(OutputDesc, Set v)] -results'' = forall {t :: * -> *} {a} {a}. +vs + results'' :: [(OutputDesc, Set v)] +results'' = forall {t :: * -> *} {a} {a}. Foldable t => [(a, t a)] -> [(a, t a)] filterEmptyResults forall a b. (a -> b) -> a -> b $ (OutputDesc -tag, Set v -allVs') forall a. a -> [a] -> [a] +tag, Set v +allVs') forall a. a -> [a] -> [a] : [(OutputDesc, Set v)] -results' - jobs'' :: [Job v x t] -jobs'' = +results' + jobs'' :: [Job v x t] +jobs'' = if forall (t :: * -> *) a. Foldable t => t a -> Bool null [(OutputDesc, Set v)] -results'' +results'' then [Job v x t] -jobs' +jobs' else Job v x t -job{$sel:results:WaitArguments :: [(OutputDesc, Set v)] +job{$sel:results:WaitArguments :: [(OutputDesc, Set v)] results = [(OutputDesc, Set v)] -results''} forall a. a -> [a] -> [a] +results''} forall a. a -> [a] -> [a] : [Job v x t] -jobs' +jobs' in Divider v x t -pu +pu { $sel:jobs:Divider :: [Job v x t] jobs = [Job v x t] -jobs'' +jobs'' , $sel:process_:Divider :: Process t (StepInfo v x t) process_ = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Divider v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do forall {f :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) f => EndpointSt v (Interval t) -> f [Int] -> f () scheduleEndpoint_ EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe Interval t -epAt forall a b. (a -> b) -> a -> b +epAt forall a b. (a -> b) -> a -> b $ forall v x t. OutputDesc -> Instruction (Divider v x t) Out OutputDesc -tag +tag forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [Job v x t] -jobs') forall a b. (a -> b) -> a -> b +jobs') forall a b. (a -> b) -> a -> b $ do forall {v} {x} {t} {pu}. (Ord v, Typeable v, IsString v, ToString v, Suffix v, @@ -904,24 +904,24 @@ [Int] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity () scheduleFunctionFinish_ [] F v x -function forall a b. (a -> b) -> a -> b +function forall a b. (a -> b) -> a -> b $ t 0 forall a. Ord a => a -> a -> Interval a ... forall a. Interval a -> a sup Interval t -epAt +epAt } - endpointDecision Divider v x t -_pu EndpointSt v (Interval t) -d = forall a. HasCallStack => String -> a + endpointDecision Divider v x t +_pu EndpointSt v (Interval t) +d = forall a. HasCallStack => String -> a error [i|incorrect decision #{ d } for Divider|] -instance Controllable (Divider v x t) where - data Instruction (Divider v x t) +instance Controllable (Divider v x t) where + data Instruction (Divider v x t) = Load InputDesc | Do | Out OutputDesc - deriving (Int -> Instruction (Divider v x t) -> ShowS + deriving (Int -> Instruction (Divider v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Instruction (Divider v x t) -> ShowS @@ -935,7 +935,7 @@ $cshowsPrec :: forall v x t. Int -> Instruction (Divider v x t) -> ShowS Show) - data Microcode (Divider v x t) = Microcode + data Microcode (Divider v x t) = Microcode { forall v x t. Microcode (Divider v x t) -> Bool selSignal :: Bool , forall v x t. Microcode (Divider v x t) -> Bool @@ -943,7 +943,7 @@ , forall v x t. Microcode (Divider v x t) -> Bool oeSignal :: Bool } - deriving (Int -> Microcode (Divider v x t) -> ShowS + deriving (Int -> Microcode (Divider v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Microcode (Divider v x t) -> ShowS @@ -955,7 +955,7 @@ $cshow :: forall v x t. Microcode (Divider v x t) -> String showsPrec :: Int -> Microcode (Divider v x t) -> ShowS $cshowsPrec :: forall v x t. Int -> Microcode (Divider v x t) -> ShowS -Show, Microcode (Divider v x t) -> Microcode (Divider v x t) -> Bool +Show, Microcode (Divider v x t) -> Microcode (Divider v x t) -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x t. Microcode (Divider v x t) -> Microcode (Divider v x t) -> Bool @@ -965,7 +965,7 @@ == :: Microcode (Divider v x t) -> Microcode (Divider v x t) -> Bool $c== :: forall v x t. Microcode (Divider v x t) -> Microcode (Divider v x t) -> Bool -Eq, Microcode (Divider v x t) -> Microcode (Divider v x t) -> Bool +Eq, Microcode (Divider v x t) -> Microcode (Divider v x t) -> Bool Microcode (Divider v x t) -> Microcode (Divider v x t) -> Ordering forall a. Eq a @@ -1012,73 +1012,73 @@ Microcode (Divider v x t) -> Microcode (Divider v x t) -> Ordering Ord) - zipSignalTagsAndValues :: Ports (Divider v x t) + zipSignalTagsAndValues :: Ports (Divider v x t) -> Microcode (Divider v x t) -> [(SignalTag, SignalValue)] -zipSignalTagsAndValues DividerPorts{SignalTag +zipSignalTagsAndValues DividerPorts{SignalTag $sel:oe:DividerPorts :: forall v x t. Ports (Divider v x t) -> SignalTag $sel:wr:DividerPorts :: forall v x t. Ports (Divider v x t) -> SignalTag $sel:sel:DividerPorts :: forall v x t. Ports (Divider v x t) -> SignalTag oe :: SignalTag wr :: SignalTag sel :: SignalTag -..} Microcode{Bool +..} Microcode{Bool oeSignal :: Bool wrSignal :: Bool selSignal :: Bool $sel:oeSignal:Microcode :: forall v x t. Microcode (Divider v x t) -> Bool $sel:wrSignal:Microcode :: forall v x t. Microcode (Divider v x t) -> Bool $sel:selSignal:Microcode :: forall v x t. Microcode (Divider v x t) -> Bool -..} = +..} = [ (SignalTag -sel, Bool -> SignalValue +sel, Bool -> SignalValue Bool Bool -selSignal) +selSignal) , (SignalTag -wr, Bool -> SignalValue +wr, Bool -> SignalValue Bool Bool -wrSignal) +wrSignal) , (SignalTag -oe, Bool -> SignalValue +oe, Bool -> SignalValue Bool Bool -oeSignal) +oeSignal) ] - usedPortTags :: Ports (Divider v x t) -> [SignalTag] -usedPortTags DividerPorts{SignalTag + usedPortTags :: Ports (Divider v x t) -> [SignalTag] +usedPortTags DividerPorts{SignalTag sel :: SignalTag $sel:sel:DividerPorts :: forall v x t. Ports (Divider v x t) -> SignalTag -sel, SignalTag +sel, SignalTag wr :: SignalTag $sel:wr:DividerPorts :: forall v x t. Ports (Divider v x t) -> SignalTag -wr, SignalTag +wr, SignalTag oe :: SignalTag $sel:oe:DividerPorts :: forall v x t. Ports (Divider v x t) -> SignalTag -oe} = [SignalTag -sel, SignalTag -wr, SignalTag -oe] +oe} = [SignalTag +sel, SignalTag +wr, SignalTag +oe] - takePortTags :: [SignalTag] -> Divider v x t -> Ports (Divider v x t) -takePortTags (SignalTag -sel : SignalTag -wr : SignalTag -oe : [SignalTag] + takePortTags :: [SignalTag] -> Divider v x t -> Ports (Divider v x t) +takePortTags (SignalTag +sel : SignalTag +wr : SignalTag +oe : [SignalTag] _) Divider v x t _ = forall v x t. SignalTag -> SignalTag -> SignalTag -> Ports (Divider v x t) DividerPorts SignalTag -sel SignalTag -wr SignalTag -oe +sel SignalTag +wr SignalTag +oe takePortTags [SignalTag] _ Divider v x t _ = forall a. HasCallStack => String -> a error String "can not take port tags, tags are over" -instance Default (Microcode (Divider v x t)) where - def :: Microcode (Divider v x t) -def = +instance Default (Microcode (Divider v x t)) where + def :: Microcode (Divider v x t) +def = Microcode { $sel:selSignal:Microcode :: Bool selSignal = Bool @@ -1090,8 +1090,8 @@ oeSignal = Bool False } -instance UnambiguouslyDecode (Divider v x t) where - decodeInstruction :: Instruction (Divider v x t) -> Microcode (Divider v x t) +instance UnambiguouslyDecode (Divider v x t) where + decodeInstruction :: Instruction (Divider v x t) -> Microcode (Divider v x t) decodeInstruction (Load InputDesc Numer) = forall a. Default a => a def{$sel:wrSignal:Microcode :: Bool @@ -1129,12 +1129,12 @@ selSignal = Bool True} -instance Connected (Divider v x t) where - data Ports (Divider v x t) = DividerPorts {forall v x t. Ports (Divider v x t) -> SignalTag +instance Connected (Divider v x t) where + data Ports (Divider v x t) = DividerPorts {forall v x t. Ports (Divider v x t) -> SignalTag sel, forall v x t. Ports (Divider v x t) -> SignalTag wr, forall v x t. Ports (Divider v x t) -> SignalTag oe :: SignalTag} - deriving (Int -> Ports (Divider v x t) -> ShowS + deriving (Int -> Ports (Divider v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Ports (Divider v x t) -> ShowS @@ -1148,9 +1148,9 @@ $cshowsPrec :: forall v x t. Int -> Ports (Divider v x t) -> ShowS Show) -instance IOConnected (Divider v x t) where - data IOPorts (Divider v x t) = DividerIO - deriving (Int -> IOPorts (Divider v x t) -> ShowS +instance IOConnected (Divider v x t) where + data IOPorts (Divider v x t) = DividerIO + deriving (Int -> IOPorts (Divider v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> IOPorts (Divider v x t) -> ShowS @@ -1164,29 +1164,29 @@ $cshowsPrec :: forall v x t. Int -> IOPorts (Divider v x t) -> ShowS Show) -instance (Val x, Show t) => TargetSystemComponent (Divider v x t) where - moduleName :: Text -> Divider v x t -> Text +instance (Val x, Show t) => TargetSystemComponent (Divider v x t) where + moduleName :: Text -> Divider v x t -> Text moduleName Text _ Divider v x t _ = Text "pu_div" - software :: Text -> Divider v x t -> Implementation + software :: Text -> Divider v x t -> Implementation software Text _ Divider v x t _ = Implementation Empty - hardware :: Text -> Divider v x t -> Implementation -hardware Text -_tag Divider{Bool + hardware :: Text -> Divider v x t -> Implementation +hardware Text +_tag Divider{Bool mock :: Bool $sel:mock:Divider :: forall v x t. Divider v x t -> Bool -mock} = +mock} = Maybe String -> [Implementation] -> Implementation Aggregate forall a. Maybe a Nothing [ if Bool -mock +mock then String -> Implementation FromLibrary String "div/div_mock.v" @@ -1197,46 +1197,46 @@ FromLibrary String "div/pu_div.v" ] - hardwareInstance :: Text -> Divider v x t -> UnitEnv (Divider v x t) -> Verilog + hardwareInstance :: Text -> Divider v x t -> UnitEnv (Divider v x t) -> Verilog hardwareInstance - Text -tag - _pu :: Divider v x t -_pu@Divider{Bool + Text +tag + _pu :: Divider v x t +_pu@Divider{Bool mock :: Bool $sel:mock:Divider :: forall v x t. Divider v x t -> Bool -mock, t +mock, t pipeline :: t $sel:pipeline:Divider :: forall v x t. Divider v x t -> t -pipeline} +pipeline} UnitEnv - { Text + { Text sigClk :: forall m. UnitEnv m -> Text sigClk :: Text sigClk - , Text + , Text sigRst :: forall m. UnitEnv m -> Text sigRst :: Text sigRst , valueIn :: forall m. UnitEnv m -> Maybe (Text, Text) -valueIn = Just (Text -dataIn, Text -attrIn) +valueIn = Just (Text +dataIn, Text +attrIn) , valueOut :: forall m. UnitEnv m -> Maybe (Text, Text) -valueOut = Just (Text -dataOut, Text -attrOut) +valueOut = Just (Text +dataOut, Text +attrOut) , ctrlPorts :: forall m. UnitEnv m -> Maybe (Ports m) -ctrlPorts = Just DividerPorts{SignalTag +ctrlPorts = Just DividerPorts{SignalTag sel :: SignalTag $sel:sel:DividerPorts :: forall v x t. Ports (Divider v x t) -> SignalTag -sel, SignalTag +sel, SignalTag wr :: SignalTag $sel:wr:DividerPorts :: forall v x t. Ports (Divider v x t) -> SignalTag -wr, SignalTag +wr, SignalTag oe :: SignalTag $sel:oe:DividerPorts :: forall v x t. Ports (Divider v x t) -> SignalTag -oe} +oe} } = [__i| pu_div \# @@ -1258,22 +1258,22 @@ , .attr_out( #{ attrOut } ) ); |] - hardwareInstance Text -_title Divider v x t -_pu UnitEnv (Divider v x t) -_env = forall a. HasCallStack => String -> a + hardwareInstance Text +_title Divider v x t +_pu UnitEnv (Divider v x t) +_env = forall a. HasCallStack => String -> a error String "internal error" -instance IOTestBench (Divider v x t) v x +instance IOTestBench (Divider v x t) v x -instance VarValTime v x t => Testable (Divider v x t) v x where - testBenchImplementation :: Project (Divider v x t) v x -> Implementation -testBenchImplementation prj :: Project (Divider v x t) v x -prj@Project{Text +instance VarValTime v x t => Testable (Divider v x t) v x where + testBenchImplementation :: Project (Divider v x t) v x -> Implementation +testBenchImplementation prj :: Project (Divider v x t) v x +prj@Project{Text pName :: forall m v x. Project m v x -> Text pName :: Text -pName, Divider v x t +pName, Divider v x t pUnit :: forall m v x. Project m v x -> m pUnit :: Divider v x t pUnit} = @@ -1282,8 +1282,8 @@ toString forall a b. (a -> b) -> a -> b $ forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -pName Divider v x t -pUnit forall a. Semigroup a => a -> a -> a +pName Divider v x t +pUnit forall a. Semigroup a => a -> a -> a <> Text "_tb.v") forall a b. (a -> b) -> a -> b $ @@ -1294,15 +1294,15 @@ Project m v x -> SnippetTestBenchConf m -> Text snippetTestBench Project (Divider v x t) v x -prj +prj SnippetTestBenchConf { tbcSignals :: [Text] -tbcSignals = [Text +tbcSignals = [Text "sel", Text "wr", Text "oe"] , tbcPorts :: Ports (Divider v x t) -tbcPorts = +tbcPorts = DividerPorts { $sel:sel:DividerPorts :: SignalTag sel = Text -> SignalTag @@ -1318,16 +1318,16 @@ "oe" } , tbcMC2verilogLiteral :: Microcode (Divider v x t) -> Text -tbcMC2verilogLiteral = \Microcode{Bool +tbcMC2verilogLiteral = \Microcode{Bool selSignal :: Bool $sel:selSignal:Microcode :: forall v x t. Microcode (Divider v x t) -> Bool -selSignal, Bool +selSignal, Bool wrSignal :: Bool $sel:wrSignal:Microcode :: forall v x t. Microcode (Divider v x t) -> Bool -wrSignal, Bool +wrSignal, Bool oeSignal :: Bool $sel:oeSignal:Microcode :: forall v x t. Microcode (Divider v x t) -> Bool -oeSignal} -> +oeSignal} -> [i|oe <= #{ bool2verilog oeSignal }; sel <= #{ bool2verilog selSignal }; wr <= #{ bool2verilog wrSignal }; |] } \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Fram.html b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Fram.html index 6fadd751f..c7f0501e1 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Fram.html +++ b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Fram.html @@ -42,26 +42,26 @@ import Numeric.Interval.NonEmpty (inf, singleton, sup, (...)) import Prettyprinter -data Fram v x t = Fram +data Fram v x t = Fram { forall v x t. Fram v x t -> Array Int (Cell v x t) -memory :: A.Array Int (Cell v x t) +memory :: A.Array Int (Cell v x t) -- ^ memory cell array , forall v x t. Fram v x t -> [(Buffer v x, Job v x t)] -remainBuffers :: [(Buffer v x, Job v x t)] +remainBuffers :: [(Buffer v x, Job v x t)] -- ^ register queue , forall v x t. Fram v x t -> Process t (StepInfo v x t) -process_ :: Process t (StepInfo v x t) +process_ :: Process t (StepInfo v x t) } framWithSize :: Int -> Fram v x t -framWithSize Int -size = +framWithSize Int +size = Fram { $sel:memory:Fram :: Array Int (Cell v x t) memory = forall i e. Ix i => (i, i) -> [e] -> Array i e A.listArray (Int 0, Int -size forall a. Num a => a -> a -> a +size forall a. Num a => a -> a -> a - Int 1) forall a b. (a -> b) -> a -> b $ forall a. a -> [a] @@ -74,27 +74,27 @@ def } -instance VarValTime v x t => Pretty (Fram v x t) where - pretty :: forall ann. Fram v x t -> Doc ann -pretty Fram{Array Int (Cell v x t) +instance VarValTime v x t => Pretty (Fram v x t) where + pretty :: forall ann. Fram v x t -> Doc ann +pretty Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} = +memory} = [__i| Fram: cells: #{ nest 8 $ vsep $ map (\(ix, c) -> viaShow ix <> ": " <> pretty (state c)) $ A.assocs memory } |] -instance (Default t, Default x) => Default (Fram v x t) where - def :: Fram v x t -def = +instance (Default t, Default x) => Default (Fram v x t) where + def :: Fram v x t +def = Fram { $sel:memory:Fram :: Array Int (Cell v x t) memory = forall i e. Ix i => (i, i) -> [e] -> Array i e A.listArray (Int 0, Int -defaultSize forall a. Num a => a -> a -> a +defaultSize forall a. Num a => a -> a -> a - Int 1) forall a b. (a -> b) -> a -> b $ forall a. a -> [a] @@ -107,21 +107,21 @@ def } where - defaultSize :: Int -defaultSize = Int + defaultSize :: Int +defaultSize = Int 16 -instance Default x => DefaultX (Fram v x t) x +instance Default x => DefaultX (Fram v x t) x -instance VarValTime v x t => WithFunctions (Fram v x t) (F v x) where - functions :: Fram v x t -> [F v x] -functions Fram{[(Buffer v x, Job v x t)] +instance VarValTime v x t => WithFunctions (Fram v x t) (F v x) where + functions :: Fram v x t -> [F v x] +functions Fram{[(Buffer v x, Job v x t)] remainBuffers :: [(Buffer v x, Job v x t)] $sel:remainBuffers:Fram :: forall v x t. Fram v x t -> [(Buffer v x, Job v x t)] -remainBuffers, Array Int (Cell v x t) +remainBuffers, Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} = +memory} = forall a b. (a -> b) -> [a] -> [b] map (forall {f} {v} {x}. (Function f v, Patch f (v, v), Locks f v, Show f, Label f, @@ -130,49 +130,49 @@ packF forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> a fst) [(Buffer v x, Job v x t)] -remainBuffers forall a. [a] -> [a] -> [a] +remainBuffers forall a. [a] -> [a] -> [a] ++ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap forall a f. WithFunctions a f => a -> [f] functions (forall i e. Array i e -> [e] A.elems Array Int (Cell v x t) -memory) +memory) -instance VarValTime v x t => Variables (Fram v x t) v where - variables :: Fram v x t -> Set v -variables Fram v x t -fram = forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a +instance VarValTime v x t => Variables (Fram v x t) v where + variables :: Fram v x t -> Set v +variables Fram v x t +fram = forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a S.unions forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall a v. Variables a v => a -> Set v variables forall a b. (a -> b) -> a -> b $ forall a f. WithFunctions a f => a -> [f] functions Fram v x t -fram +fram -- | Memory cell -data Cell v x t = Cell +data Cell v x t = Cell { forall v x t. Cell v x t -> CellState v x t -state :: CellState v x t +state :: CellState v x t , forall v x t. Cell v x t -> Maybe t -lastWrite :: Maybe t +lastWrite :: Maybe t , forall v x t. Cell v x t -> Maybe (Job v x t) -job :: Maybe (Job v x t) +job :: Maybe (Job v x t) -- ^ current job description , forall v x t. Cell v x t -> [F v x] -history :: [F v x] +history :: [F v x] , forall v x t. Cell v x t -> x -initialValue :: x +initialValue :: x } -data Job v x t = Job +data Job v x t = Job { forall v x t. Job v x t -> F v x -function :: F v x +function :: F v x , forall v x t. Job v x t -> Maybe t -startAt :: Maybe t +startAt :: Maybe t , forall v x t. Job v x t -> [Int] binds :: [ProcessStepID] } - deriving (Int -> Job v x t -> ShowS + deriving (Int -> Job v x t -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Show t => Int -> Job v x t -> ShowS @@ -184,7 +184,7 @@ $cshow :: forall v x t. Show t => Job v x t -> String showsPrec :: Int -> Job v x t -> ShowS $cshowsPrec :: forall v x t. Show t => Int -> Job v x t -> ShowS -Show, Job v x t -> Job v x t -> Bool +Show, Job v x t -> Job v x t -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x t. Eq t => Job v x t -> Job v x t -> Bool /= :: Job v x t -> Job v x t -> Bool @@ -194,12 +194,12 @@ Eq) defJob :: F v x -> Job v x t -defJob F v x -f = +defJob F v x +f = Job { $sel:function:Job :: F v x function = F v x -f +f , $sel:startAt:Job :: Maybe t startAt = forall a. Maybe a Nothing @@ -207,28 +207,28 @@ binds = [] } -instance WithFunctions (Cell v x t) (F v x) where - functions :: Cell v x t -> [F v x] -functions Cell{[F v x] +instance WithFunctions (Cell v x t) (F v x) where + functions :: Cell v x t -> [F v x] +functions Cell{[F v x] history :: [F v x] $sel:history:Cell :: forall v x t. Cell v x t -> [F v x] -history, $sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) -job = Just Job{F v x +history, $sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) +job = Just Job{F v x function :: F v x $sel:function:Job :: forall v x t. Job v x t -> F v x -function}} = F v x -function forall a. a -> [a] -> [a] +function}} = F v x +function forall a. a -> [a] -> [a] : [F v x] -history - functions Cell{[F v x] +history + functions Cell{[F v x] history :: [F v x] $sel:history:Cell :: forall v x t. Cell v x t -> [F v x] -history} = [F v x] -history +history} = [F v x] +history -instance Default x => Default (Cell v x t) where - def :: Cell v x t -def = +instance Default x => Default (Cell v x t) where + def :: Cell v x t +def = Cell { $sel:state:Cell :: CellState v x t state = forall v x t. CellState v x t @@ -271,16 +271,16 @@ \------------------/ @ -} -data CellState v x t +data CellState v x t = NotUsed | Done - | DoConstant [v] - | DoBuffer [v] + | DoConstant [v] + | DoBuffer [v] | ForBuffer | NotBrokenLoop - | DoLoopSource [v] (Job v x t) - | DoLoopTarget v - deriving (CellState v x t -> CellState v x t -> Bool + | DoLoopSource [v] (Job v x t) + | DoLoopTarget v + deriving (CellState v x t -> CellState v x t -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x t. (Eq v, Eq t) => @@ -295,52 +295,52 @@ CellState v x t -> CellState v x t -> Bool Eq) -instance VarValTime v x t => Pretty (CellState v x t) where - pretty :: forall ann. CellState v x t -> Doc ann -pretty CellState v x t +instance VarValTime v x t => Pretty (CellState v x t) where + pretty :: forall ann. CellState v x t -> Doc ann +pretty CellState v x t NotUsed = Doc ann "NotUsed" pretty CellState v x t Done = Doc ann "Done" - pretty (DoConstant [v] -vs) = Doc ann + pretty (DoConstant [v] +vs) = Doc ann "DoConstant " forall a. Semigroup a => a -> a -> a <> forall a ann. Show a => a -> Doc ann viaShow (forall a b. (a -> b) -> [a] -> [b] map forall a. ToString a => a -> String toString [v] -vs) - pretty (DoBuffer [v] -vs) = Doc ann +vs) + pretty (DoBuffer [v] +vs) = Doc ann "DoBuffer " forall a. Semigroup a => a -> a -> a <> forall a ann. Show a => a -> Doc ann viaShow (forall a b. (a -> b) -> [a] -> [b] map forall a. ToString a => a -> String toString [v] -vs) +vs) pretty CellState v x t ForBuffer = Doc ann "ForBuffer" pretty CellState v x t NotBrokenLoop = Doc ann "NotBrokenLoop" - pretty (DoLoopSource [v] -vs Job v x t -_job) = Doc ann + pretty (DoLoopSource [v] +vs Job v x t +_job) = Doc ann "DoLoopSource " forall a. Semigroup a => a -> a -> a <> forall a ann. Show a => a -> Doc ann viaShow (forall a b. (a -> b) -> [a] -> [b] map forall a. ToString a => a -> String toString [v] -vs) - pretty (DoLoopTarget v -v) = Doc ann +vs) + pretty (DoLoopTarget v +v) = Doc ann "DoLoopTarget " forall a. Semigroup a => a -> a -> a <> forall a ann. Show a => a -> Doc ann viaShow (forall a. ToString a => a -> String toString v -v) +v) isFree :: Cell v x t -> Bool isFree Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t @@ -361,54 +361,54 @@ False lockableNotUsedCell :: Fram v x t -> Maybe (Int, Cell v x t) -lockableNotUsedCell Fram{Array Int (Cell v x t) +lockableNotUsedCell Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory, [(Buffer v x, Job v x t)] +memory, [(Buffer v x, Job v x t)] remainBuffers :: [(Buffer v x, Job v x t)] $sel:remainBuffers:Fram :: forall v x t. Fram v x t -> [(Buffer v x, Job v x t)] -remainBuffers} = - let free :: [(Int, Cell v x t)] -free = forall a. (a -> Bool) -> [a] -> [a] +remainBuffers} = + let free :: [(Int, Cell v x t)] +free = forall a. (a -> Bool) -> [a] -> [a] filter (forall {v} {x} {t}. Cell v x t -> Bool isFree forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) forall a b. (a -> b) -> a -> b $ forall i e. Ix i => Array i e -> [(i, e)] A.assocs Array Int (Cell v x t) -memory - n :: Int -n = forall (t :: * -> *) a. Foldable t => t a -> Int +memory + n :: Int +n = forall (t :: * -> *) a. Foldable t => t a -> Int length [(Int, Cell v x t)] -free +free in if forall (t :: * -> *) a. Foldable t => t a -> Bool null [(Buffer v x, Job v x t)] -remainBuffers Bool -> Bool -> Bool +remainBuffers Bool -> Bool -> Bool && Int -n forall a. Ord a => a -> a -> Bool +n forall a. Ord a => a -> a -> Bool >= Int 1 Bool -> Bool -> Bool || Bool -> Bool not (forall (t :: * -> *) a. Foldable t => t a -> Bool null [(Buffer v x, Job v x t)] -remainBuffers) Bool -> Bool -> Bool +remainBuffers) Bool -> Bool -> Bool && Int -n forall a. Ord a => a -> a -> Bool +n forall a. Ord a => a -> a -> Bool >= Int 2 then forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [(Int, Cell v x t)] -free +free else forall a. Maybe a Nothing findForBufferCell :: Fram v x t -> Maybe (Int, Cell v x t) -findForBufferCell Fram{Array Int (Cell v x t) +findForBufferCell Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} = +memory} = case forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find (forall {v} {x} {t}. Cell v x t -> Bool isForBuffer forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -416,11 +416,11 @@ snd) forall a b. (a -> b) -> a -> b $ forall i e. Ix i => Array i e -> [(i, e)] A.assocs Array Int (Cell v x t) -memory of - x :: Maybe (Int, Cell v x t) -x@(Just (Int, Cell v x t) +memory of + x :: Maybe (Int, Cell v x t) +x@(Just (Int, Cell v x t) _) -> Maybe (Int, Cell v x t) -x +x Maybe (Int, Cell v x t) Nothing -> forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find (forall {v} {x} {t}. Cell v x t -> Bool @@ -429,38 +429,38 @@ snd) forall a b. (a -> b) -> a -> b $ forall i e. Ix i => Array i e -> [(i, e)] A.assocs Array Int (Cell v x t) -memory +memory oJobV :: Job v x t -> v -oJobV Job{F v x +oJobV Job{F v x function :: F v x $sel:function:Job :: forall v x t. Job v x t -> F v x -function} +function} | Just (LoopEnd Loop v x -_ (I v -v)) <- forall (f :: * -> * -> *) v x. +_ (I v +v)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -function = v -v +function = v +v | Bool otherwise = forall a. HasCallStack => a undefined -- | Function for calculating width of array in Fram addrWidth :: Fram v x t -> c -addrWidth Fram{Array Int (Cell v x t) +addrWidth Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} = Int -> c -log2 forall a b. (a -> b) -> a -> b +memory} = Int -> c +log2 forall a b. (a -> b) -> a -> b $ forall (a :: * -> * -> *) e i. (IArray a e, Ix i) => a i e -> Int numElements Array Int (Cell v x t) -memory +memory where - log2 :: Int -> c -log2 = forall a b. (RealFrac a, Integral b) => a -> b + log2 :: Int -> c +log2 = forall a b. (RealFrac a, Integral b) => a -> b ceiling forall b c a. (b -> c) -> (a -> b) -> a -> c . (forall a. Floating a => a -> a -> a logBase Double @@ -468,125 +468,125 @@ . forall a b. (Integral a, Num b) => a -> b fromIntegral -instance VarValTime v x t => ProcessorUnit (Fram v x t) v x t where - tryBind :: F v x -> Fram v x t -> Either String (Fram v x t) -tryBind F v x -f Fram v x t -fram +instance VarValTime v x t => ProcessorUnit (Fram v x t) v x t where + tryBind :: F v x -> Fram v x t -> Either String (Fram v x t) +tryBind F v x +f Fram v x t +fram | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null (forall a v. Variables a v => a -> Set v variables F v x -f forall a. Ord a => Set a -> Set a -> Set a +f forall a. Ord a => Set a -> Set a -> Set a `S.intersection` forall a v. Variables a v => a -> Set v variables Fram v x t -fram) = +fram) = forall a b. a -> Either a b Left String "can not bind (self transaction)" - tryBind F v x -f fram :: Fram v x t -fram@Fram{Array Int (Cell v x t) + tryBind F v x +f fram :: Fram v x t +fram@Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory, [(Buffer v x, Job v x t)] +memory, [(Buffer v x, Job v x t)] remainBuffers :: [(Buffer v x, Job v x t)] $sel:remainBuffers:Fram :: forall v x t. Fram v x t -> [(Buffer v x, Job v x t)] -remainBuffers} - | Just (Constant (X x -x) (O Set v -vs)) <- forall (f :: * -> * -> *) v x. +remainBuffers} + | Just (Constant (X x +x) (O Set v +vs)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f - , Just (Int -addr, Cell v x t +f + , Just (Int +addr, Cell v x t _) <- forall {v} {x} {t}. Fram v x t -> Maybe (Int, Cell v x t) lockableNotUsedCell Fram v x t -fram = - let ([Int] -binds, Process t (StepInfo v x t) -process_) = forall {u} {v} {x} {t} {a}. +fram = + let ([Int] +binds, Process t (StepInfo v x t) +process_) = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) runSchedule Fram v x t -fram forall a b. (a -> b) -> a -> b +fram forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *} {a}. (MonadState (Schedule pu v x t) m, Show a) => a -> m [Int] scheduleFunctionBind F v x -f - cell :: Cell v x t -cell = +f + cell :: Cell v x t +cell = Cell { $sel:state:Cell :: CellState v x t state = forall v x t. [v] -> CellState v x t DoConstant forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems Set v -vs +vs , $sel:job:Cell :: Maybe (Job v x t) job = forall a. a -> Maybe a Just (forall {v} {x} {t}. F v x -> Job v x t defJob F v x -f){[Int] +f){[Int] binds :: [Int] $sel:binds:Job :: [Int] -binds} +binds} , $sel:history:Cell :: [F v x] history = [F v x -f] +f] , $sel:lastWrite:Cell :: Maybe t lastWrite = forall a. Maybe a Nothing , $sel:initialValue:Cell :: x initialValue = x -x +x } in forall a b. b -> Either a b Right Fram v x t -fram +fram { $sel:memory:Fram :: Array Int (Cell v x t) memory = Array Int (Cell v x t) -memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e +memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e A.// [(Int -addr, Cell v x t -cell)] +addr, Cell v x t +cell)] , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Fram :: Process t (StepInfo v x t) -process_ +process_ } - | Just (Loop (X x -x) (O Set v + | Just (Loop (X x +x) (O Set v _) (I v _)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f - , Just (Int -addr, Cell v x t +f + , Just (Int +addr, Cell v x t _) <- forall {v} {x} {t}. Fram v x t -> Maybe (Int, Cell v x t) lockableNotUsedCell Fram v x t -fram = - let ([Int] -binds, Process t (StepInfo v x t) -process_) = forall {u} {v} {x} {t} {a}. +fram = + let ([Int] +binds, Process t (StepInfo v x t) +process_) = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) runSchedule Fram v x t -fram forall a b. (a -> b) -> a -> b +fram forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *} {a}. (MonadState (Schedule pu v x t) m, Show a) => a -> m [Int] scheduleFunctionBind F v x -f - cell :: Cell v x t -cell = +f + cell :: Cell v x t +cell = Cell { $sel:state:Cell :: CellState v x t state = forall v x t. CellState v x t @@ -595,41 +595,41 @@ job = forall a. a -> Maybe a Just (forall {v} {x} {t}. F v x -> Job v x t defJob F v x -f){[Int] +f){[Int] binds :: [Int] $sel:binds:Job :: [Int] -binds} +binds} , $sel:history:Cell :: [F v x] history = [F v x -f] +f] , $sel:lastWrite:Cell :: Maybe t lastWrite = forall a. Maybe a Nothing , $sel:initialValue:Cell :: x initialValue = x -x +x } in forall a b. b -> Either a b Right Fram v x t -fram +fram { $sel:memory:Fram :: Array Int (Cell v x t) memory = Array Int (Cell v x t) -memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e +memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e A.// [(Int -addr, Cell v x t -cell)] +addr, Cell v x t +cell)] , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Fram :: Process t (StepInfo v x t) -process_ +process_ } - | Just r :: Buffer v x -r@Buffer{} <- forall (f :: * -> * -> *) v x. + | Just r :: Buffer v x +r@Buffer{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f +f , forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any (\case ForBuffer{} -> Bool True; DoBuffer{} -> Bool @@ -642,40 +642,40 @@ state forall a b. (a -> b) -> a -> b $ forall i e. Array i e -> [e] A.elems Array Int (Cell v x t) -memory = - let ([Int] -binds, Process t (StepInfo v x t) -process_) = forall {u} {v} {x} {t} {a}. +memory = + let ([Int] +binds, Process t (StepInfo v x t) +process_) = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) runSchedule Fram v x t -fram forall a b. (a -> b) -> a -> b +fram forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *} {a}. (MonadState (Schedule pu v x t) m, Show a) => a -> m [Int] scheduleFunctionBind F v x -f - job :: Job v x t -job = (forall {v} {x} {t}. F v x -> Job v x t +f + job :: Job v x t +job = (forall {v} {x} {t}. F v x -> Job v x t defJob F v x -f){[Int] +f){[Int] binds :: [Int] $sel:binds:Job :: [Int] -binds} +binds} in forall a b. b -> Either a b Right Fram v x t -fram +fram { $sel:remainBuffers:Fram :: [(Buffer v x, Job v x t)] remainBuffers = (Buffer v x -r, Job v x t -job) forall a. a -> [a] -> [a] +r, Job v x t +job) forall a. a -> [a] -> [a] : [(Buffer v x, Job v x t)] -remainBuffers +remainBuffers , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Fram :: Process t (StepInfo v x t) -process_ +process_ } | Bool otherwise = forall a b. a -> Either a b @@ -684,76 +684,76 @@ "unsupport or cells over: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show F v x -f +f - process :: Fram v x t -> Process t (StepInfo v x t) -process Fram{Process t (StepInfo v x t) + process :: Fram v x t -> Process t (StepInfo v x t) +process Fram{Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Fram :: forall v x t. Fram v x t -> Process t (StepInfo v x t) -process_} = Process t (StepInfo v x t) -process_ - parallelismType :: Fram v x t -> ParallelismType +process_} = Process t (StepInfo v x t) +process_ + parallelismType :: Fram v x t -> ParallelismType parallelismType Fram v x t _ = ParallelismType Full -instance Var v => Locks (Fram v x t) v where +instance Var v => Locks (Fram v x t) v where -- FIXME: - locks :: Fram v x t -> [Lock v] + locks :: Fram v x t -> [Lock v] locks Fram v x t _ = [] -instance VarValTime v x t => BreakLoopProblem (Fram v x t) v x where - breakLoopOptions :: Fram v x t -> [BreakLoop v x] -breakLoopOptions Fram{Array Int (Cell v x t) +instance VarValTime v x t => BreakLoopProblem (Fram v x t) v x where + breakLoopOptions :: Fram v x t -> [BreakLoop v x] +breakLoopOptions Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} = +memory} = [ forall v x. x -> Set v -> v -> BreakLoop v x BreakLoop x -x Set v -o v -i_ +x Set v +o v +i_ | (Int _, Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t state = CellState v x t NotBrokenLoop, $sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) -job = Just Job{F v x +job = Just Job{F v x function :: F v x $sel:function:Job :: forall v x t. Job v x t -> F v x -function}}) <- forall i e. Ix i => Array i e -> [(i, e)] +function}}) <- forall i e. Ix i => Array i e -> [(i, e)] A.assocs Array Int (Cell v x t) -memory - , let (Loop (X x -x) (O Set v -o) (I v -i_)) = forall a. HasCallStack => Maybe a -> a +memory + , let (Loop (X x +x) (O Set v +o) (I v +i_)) = forall a. HasCallStack => Maybe a -> a fromJust forall a b. (a -> b) -> a -> b $ forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -function +function ] - breakLoopDecision :: Fram v x t -> BreakLoop v x -> Fram v x t -breakLoopDecision fram :: Fram v x t -fram@Fram{Array Int (Cell v x t) + breakLoopDecision :: Fram v x t -> BreakLoop v x -> Fram v x t +breakLoopDecision fram :: Fram v x t +fram@Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} bl :: BreakLoop v x -bl@BreakLoop{Set v +memory} bl :: BreakLoop v x +bl@BreakLoop{Set v loopO :: forall v x. BreakLoop v x -> Set v loopO :: Set v loopO} = - let (Int -addr, cell :: Cell v x t -cell@Cell{[F v x] + let (Int +addr, cell :: Cell v x t +cell@Cell{[F v x] history :: [F v x] $sel:history:Cell :: forall v x t. Cell v x t -> [F v x] -history, Maybe (Job v x t) +history, Maybe (Job v x t) job :: Maybe (Job v x t) $sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) -job}) = +job}) = forall a. HasCallStack => Maybe a -> a fromJust forall a b. (a -> b) -> a -> b @@ -762,17 +762,17 @@ ( \case (Int _, Cell{$sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) -job = Just Job{F v x +job = Just Job{F v x function :: F v x $sel:function:Job :: forall v x t. Job v x t -> F v x -function}}) -> F v x -function forall a. Eq a => a -> a -> Bool +function}}) -> F v x +function forall a. Eq a => a -> a -> Bool == forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoop BreakLoop v x -bl +bl (Int, Cell v x t) _ -> Bool False @@ -780,24 +780,24 @@ forall a b. (a -> b) -> a -> b $ forall i e. Ix i => Array i e -> [(i, e)] A.assocs Array Int (Cell v x t) -memory - Job{[Int] +memory + Job{[Int] binds :: [Int] $sel:binds:Job :: forall v x t. Job v x t -> [Int] -binds} = forall a. HasCallStack => Maybe a -> a +binds} = forall a. HasCallStack => Maybe a -> a fromJust Maybe (Job v x t) -job - (([Int] -iPid, [Int] -oPid), Process t (StepInfo v x t) -process_) = forall {u} {v} {x} {t} {a}. +job + (([Int] +iPid, [Int] +oPid), Process t (StepInfo v x t) +process_) = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) runSchedule Fram v x t -fram forall a b. (a -> b) -> a -> b +fram forall a b. (a -> b) -> a -> b $ do - [Int] -revoke <- forall {pu} {v} {x} {t} {m :: * -> *} {a}. + [Int] +revoke <- forall {pu} {v} {x} {t} {m :: * -> *} {a}. (MonadState (Schedule pu v x t) m, Show a) => a -> m [Int] scheduleFunctionRevoke forall a b. (a -> b) -> a -> b @@ -806,9 +806,9 @@ Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoop BreakLoop v x -bl - [Int] -f1 <- forall {pu} {v} {x} {t} {m :: * -> *} {a}. +bl + [Int] +f1 <- forall {pu} {v} {x} {t} {m :: * -> *} {a}. (MonadState (Schedule pu v x t) m, Show a) => a -> m [Int] scheduleFunctionBind forall a b. (a -> b) -> a -> b @@ -817,9 +817,9 @@ Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoopOut BreakLoop v x -bl - [Int] -f2 <- forall {pu} {v} {x} {t} {m :: * -> *} {a}. +bl + [Int] +f2 <- forall {pu} {v} {x} {t} {m :: * -> *} {a}. (MonadState (Schedule pu v x t) m, Show a) => a -> m [Int] scheduleFunctionBind forall a b. (a -> b) -> a -> b @@ -828,9 +828,9 @@ Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoopIn BreakLoop v x -bl - [Int] -ref <- forall {pu} {v} {x} {t} {m :: * -> *} {ref}. +bl + [Int] +ref <- forall {pu} {v} {x} {t} {m :: * -> *} {ref}. (MonadState (Schedule pu v x t) m, Typeable ref, Show ref, Eq ref) => Interval t -> ref -> m [Int] @@ -838,140 +838,140 @@ singleton forall a b. (a -> b) -> a -> b $ forall u t. NextTick u t => u -> t nextTick Fram v x t -fram) BreakLoop v x -bl +fram) BreakLoop v x +bl forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [Int] -> [Int] -> m () establishVerticalRelations [Int] -ref ([Int] -f1 forall a. [a] -> [a] -> [a] +ref ([Int] +f1 forall a. [a] -> [a] -> [a] ++ [Int] -f2 forall a. [a] -> [a] -> [a] +f2 forall a. [a] -> [a] -> [a] ++ [Int] -revoke) +revoke) forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [Int] -> [Int] -> m () establishVerticalRelations [Int] -binds [Int] -ref +binds [Int] +ref forall (m :: * -> *) a. Monad m => a -> m a return ([Int] -f1, [Int] -f2) - iJob :: Job v x t -iJob = (forall {v} {x} {t}. F v x -> Job v x t +f1, [Int] +f2) + iJob :: Job v x t +iJob = (forall {v} {x} {t}. F v x -> Job v x t defJob forall a b. (a -> b) -> a -> b $ forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoopOut BreakLoop v x -bl){$sel:binds:Job :: [Int] +bl){$sel:binds:Job :: [Int] binds = [Int] -iPid, $sel:startAt:Job :: Maybe t +iPid, $sel:startAt:Job :: Maybe t startAt = forall a. a -> Maybe a Just t 0} - oJob :: Job v x t -oJob = (forall {v} {x} {t}. F v x -> Job v x t + oJob :: Job v x t +oJob = (forall {v} {x} {t}. F v x -> Job v x t defJob forall a b. (a -> b) -> a -> b $ forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoopIn BreakLoop v x -bl){$sel:binds:Job :: [Int] +bl){$sel:binds:Job :: [Int] binds = [Int] -oPid} - cell' :: Cell v x t -cell' = +oPid} + cell' :: Cell v x t +cell' = Cell v x t -cell +cell { $sel:job:Cell :: Maybe (Job v x t) job = forall a. a -> Maybe a Just Job v x t -iJob +iJob , $sel:history:Cell :: [F v x] history = [forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoopOut BreakLoop v x -bl, forall {v} {x}. +bl, forall {v} {x}. (Hashable v, Suffix v, ToString v, IsString v, Ord v, Show x, Typeable v, Typeable x, Eq x) => BreakLoop v x -> F v x recLoopIn BreakLoop v x -bl] forall a. [a] -> [a] -> [a] +bl] forall a. [a] -> [a] -> [a] ++ [F v x] -history +history , $sel:state:Cell :: CellState v x t state = forall v x t. [v] -> Job v x t -> CellState v x t DoLoopSource (forall a. Set a -> [a] S.elems Set v -loopO) Job v x t -oJob +loopO) Job v x t +oJob } in Fram v x t -fram +fram { $sel:memory:Fram :: Array Int (Cell v x t) memory = Array Int (Cell v x t) -memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e +memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e A.// [(Int -addr, Cell v x t -cell')] +addr, Cell v x t +cell')] , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Fram :: Process t (StepInfo v x t) -process_ +process_ } -instance ConstantFoldingProblem (Fram v x t) v x -instance OptimizeAccumProblem (Fram v x t) v x -instance ResolveDeadlockProblem (Fram v x t) v x +instance ConstantFoldingProblem (Fram v x t) v x +instance OptimizeAccumProblem (Fram v x t) v x +instance ResolveDeadlockProblem (Fram v x t) v x -instance VarValTime v x t => EndpointProblem (Fram v x t) v t where - endpointOptions :: Fram v x t -> [EndpointSt v (TimeConstraint t)] -endpointOptions pu :: Fram v x t -pu@Fram{[(Buffer v x, Job v x t)] +instance VarValTime v x t => EndpointProblem (Fram v x t) v t where + endpointOptions :: Fram v x t -> [EndpointSt v (TimeConstraint t)] +endpointOptions pu :: Fram v x t +pu@Fram{[(Buffer v x, Job v x t)] remainBuffers :: [(Buffer v x, Job v x t)] $sel:remainBuffers:Fram :: forall v x t. Fram v x t -> [(Buffer v x, Job v x t)] -remainBuffers, Array Int (Cell v x t) +remainBuffers, Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} = - let target :: v -> EndpointSt v (TimeConstraint t) -target v -v = forall v tp. EndpointRole v -> tp -> EndpointSt v tp +memory} = + let target :: v -> EndpointSt v (TimeConstraint t) +target v +v = forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. v -> EndpointRole v Target v -v) forall a b. (a -> b) -> a -> b +v) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (t -a forall a. Ord a => a -> a -> Interval a +a forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) (t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) where - a :: t -a = forall u t. NextTick u t => u -> t + a :: t +a = forall u t. NextTick u t => u -> t nextTick Fram v x t -pu forall {a}. (Eq a, Num a) => a -> a -> a +pu forall {a}. (Eq a, Num a) => a -> a -> a `withShift` t 1 - source :: Bool -> [v] -> EndpointSt v (TimeConstraint t) -source Bool -True [v] -vs = forall v tp. EndpointRole v -> tp -> EndpointSt v tp + source :: Bool -> [v] -> EndpointSt v (TimeConstraint t) +source Bool +True [v] +vs = forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. Set v -> EndpointRole v Source forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a S.fromList [v] -vs) forall a b. (a -> b) -> a -> b +vs) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (t 1 forall a. Num a => a -> a -> a @@ -979,34 +979,34 @@ 1 forall a. Num a => a -> a -> a + forall u t. NextTick u t => u -> t nextTick Fram v x t -pu forall a. Ord a => a -> a -> Interval a +pu forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) (t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) - source Bool -False [v] -vs = forall v tp. EndpointRole v -> tp -> EndpointSt v tp + source Bool +False [v] +vs = forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. Set v -> EndpointRole v Source forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a S.fromList [v] -vs) forall a b. (a -> b) -> a -> b +vs) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (t 1 forall a. Num a => a -> a -> a + forall u t. NextTick u t => u -> t nextTick Fram v x t -pu forall a. Ord a => a -> a -> Interval a +pu forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) (t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) - fromRemain :: [EndpointSt v (TimeConstraint t)] -fromRemain = + fromRemain :: [EndpointSt v (TimeConstraint t)] +fromRemain = if forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any (\case ForBuffer{} -> Bool True; NotUsed{} -> Bool @@ -1018,138 +1018,138 @@ state forall a b. (a -> b) -> a -> b $ forall i e. Array i e -> [e] A.elems Array Int (Cell v x t) -memory +memory then forall a b. (a -> b) -> [a] -> [b] -map ((\(Buffer (I v -v) (O Set v +map ((\(Buffer (I v +v) (O Set v _)) -> v -> EndpointSt v (TimeConstraint t) -target v -v) forall b c a. (b -> c) -> (a -> b) -> a -> c +target v +v) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> a fst) [(Buffer v x, Job v x t)] -remainBuffers +remainBuffers else [] - foo :: Cell v x t -> Maybe (EndpointSt v (TimeConstraint t)) -foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t + foo :: Cell v x t -> Maybe (EndpointSt v (TimeConstraint t)) +foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t state = CellState v x t NotUsed} = forall a. Maybe a Nothing - foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t + foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t state = CellState v x t Done} = forall a. Maybe a Nothing - foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoConstant [v] -vs} = forall a. a -> Maybe a + foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t +state = DoConstant [v] +vs} = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ Bool -> [v] -> EndpointSt v (TimeConstraint t) -source Bool +source Bool False [v] -vs - foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoBuffer [v] -vs, Maybe t +vs + foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t +state = DoBuffer [v] +vs, Maybe t lastWrite :: Maybe t $sel:lastWrite:Cell :: forall v x t. Cell v x t -> Maybe t -lastWrite} = forall a. a -> Maybe a +lastWrite} = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ Bool -> [v] -> EndpointSt v (TimeConstraint t) -source (forall a. a -> Maybe a -> a +source (forall a. a -> Maybe a -> a fromMaybe t 0 Maybe t -lastWrite forall a. Eq a => a -> a -> Bool +lastWrite forall a. Eq a => a -> a -> Bool == forall u t. NextTick u t => u -> t nextTick Fram v x t -pu forall a. Num a => a -> a -> a +pu forall a. Num a => a -> a -> a - t 1) [v] -vs - foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t +vs + foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t state = CellState v x t ForBuffer} = forall a. Maybe a Nothing - foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t + foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t state = CellState v x t NotBrokenLoop} = forall a. Maybe a Nothing - foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoLoopSource [v] -vs Job v x t -_, Maybe t + foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t +state = DoLoopSource [v] +vs Job v x t +_, Maybe t lastWrite :: Maybe t $sel:lastWrite:Cell :: forall v x t. Cell v x t -> Maybe t -lastWrite} = forall a. a -> Maybe a +lastWrite} = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ Bool -> [v] -> EndpointSt v (TimeConstraint t) -source (forall a. a -> Maybe a -> a +source (forall a. a -> Maybe a -> a fromMaybe t 0 Maybe t -lastWrite forall a. Eq a => a -> a -> Bool +lastWrite forall a. Eq a => a -> a -> Bool == forall u t. NextTick u t => u -> t nextTick Fram v x t -pu forall a. Num a => a -> a -> a +pu forall a. Num a => a -> a -> a - t 1) [v] -vs - foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoLoopTarget v -v} = forall a. a -> Maybe a +vs + foo Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t +state = DoLoopTarget v +v} = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ v -> EndpointSt v (TimeConstraint t) -target v -v +target v +v - fromCells :: [EndpointSt v (TimeConstraint t)] -fromCells = forall a b. (a -> Maybe b) -> [a] -> [b] + fromCells :: [EndpointSt v (TimeConstraint t)] +fromCells = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe Cell v x t -> Maybe (EndpointSt v (TimeConstraint t)) -foo forall a b. (a -> b) -> a -> b +foo forall a b. (a -> b) -> a -> b $ forall i e. Array i e -> [e] A.elems Array Int (Cell v x t) -memory +memory in [EndpointSt v (TimeConstraint t)] -fromRemain forall a. [a] -> [a] -> [a] +fromRemain forall a. [a] -> [a] -> [a] ++ [EndpointSt v (TimeConstraint t)] -fromCells +fromCells -- Constant - endpointDecision :: Fram v x t -> EndpointSt v (Interval t) -> Fram v x t -endpointDecision fram :: Fram v x t -fram@Fram{Array Int (Cell v x t) + endpointDecision :: Fram v x t -> EndpointSt v (Interval t) -> Fram v x t +endpointDecision fram :: Fram v x t +fram@Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Source Set v -vs, Interval t +memory} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Source Set v +vs, Interval t epAt :: forall v tp. EndpointSt v tp -> tp epAt :: Interval t epAt} - | Just (Int -addr, cell :: Cell v x t -cell@Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoConstant [v] -vs', $sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) -job = Just Job{F v x + | Just (Int +addr, cell :: Cell v x t +cell@Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t +state = DoConstant [v] +vs', $sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) +job = Just Job{F v x function :: F v x $sel:function:Job :: forall v x t. Job v x t -> F v x -function, [Int] +function, [Int] binds :: [Int] $sel:binds:Job :: forall v x t. Job v x t -> [Int] -binds}}) <- +binds}}) <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find ( \case (Int _, Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoConstant [v] -vs'}) -> ([v] -vs' forall a. Eq a => [a] -> [a] -> [a] +state = DoConstant [v] +vs'}) -> ([v] +vs' forall a. Eq a => [a] -> [a] -> [a] L.\\ forall a. Set a -> [a] S.elems Set v -vs) forall a. Eq a => a -> a -> Bool +vs) forall a. Eq a => a -> a -> Bool /= [v] -vs' +vs' (Int, Cell v x t) _ -> Bool False @@ -1157,19 +1157,19 @@ forall a b. (a -> b) -> a -> b $ forall i e. Ix i => Array i e -> [(i, e)] A.assocs Array Int (Cell v x t) -memory = - let vsRemain :: [v] -vsRemain = [v] -vs' forall a. Eq a => [a] -> [a] -> [a] +memory = + let vsRemain :: [v] +vsRemain = [v] +vs' forall a. Eq a => [a] -> [a] -> [a] L.\\ forall a. Set a -> [a] S.elems Set v -vs - process_' :: Process t (StepInfo v x t) -process_' = forall {u} {v} {x} {t} {a}. +vs + process_' :: Process t (StepInfo v x t) +process_' = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Fram v x t -fram forall a b. (a -> b) -> a -> b +fram forall a b. (a -> b) -> a -> b $ do forall (f :: * -> *) a. Functor f => f a -> f () void forall a b. (a -> b) -> a -> b @@ -1177,7 +1177,7 @@ MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => @@ -1185,14 +1185,14 @@ scheduleInstructionUnsafe (forall {a}. (Num a, Ord a) => a -> Interval a -> Interval a shiftI (-t 1) Interval t -epAt) forall a b. (a -> b) -> a -> b +epAt) forall a b. (a -> b) -> a -> b $ forall v x t. Int -> Instruction (Fram v x t) PrepareRead Int -addr +addr forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -vsRemain) forall a b. (a -> b) -> a -> b +vsRemain) forall a b. (a -> b) -> a -> b $ forall {v} {x} {t} {pu}. (Ord v, Typeable v, IsString v, ToString v, Suffix v, @@ -1200,20 +1200,20 @@ [Int] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity () scheduleFunctionFinish_ [Int] -binds F v x -function forall a b. (a -> b) -> a -> b +binds F v x +function forall a b. (a -> b) -> a -> b $ t 0 forall a. Ord a => a -> a -> Interval a ... forall a. Interval a -> a sup Interval t -epAt - cell' :: Cell v x t -cell' = case [v] -vsRemain of +epAt + cell' :: Cell v x t +cell' = case [v] +vsRemain of [] -> Cell v x t -cell +cell { $sel:job:Cell :: Maybe (Job v x t) job = forall a. Maybe a Nothing @@ -1224,67 +1224,67 @@ [v] _ -> Cell v x t -cell +cell { $sel:state:Cell :: CellState v x t state = forall v x t. [v] -> CellState v x t DoConstant [v] -vsRemain +vsRemain } in Fram v x t -fram +fram { $sel:memory:Fram :: Array Int (Cell v x t) memory = Array Int (Cell v x t) -memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e +memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e A.// [(Int -addr, Cell v x t -cell')] +addr, Cell v x t +cell')] , $sel:process_:Fram :: Process t (StepInfo v x t) process_ = Process t (StepInfo v x t) -process_' +process_' } -- Loop - endpointDecision fram :: Fram v x t -fram@Fram{Array Int (Cell v x t) + endpointDecision fram :: Fram v x t +fram@Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Source Set v -vs, Interval t +memory} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Source Set v +vs, Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} - | Just (Int -addr, cell :: Cell v x t -cell@Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoLoopSource [v] -vs' Job v x t -oJob, $sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) -job = Just job :: Job v x t -job@Job{[Int] +epAt} + | Just (Int +addr, cell :: Cell v x t +cell@Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t +state = DoLoopSource [v] +vs' Job v x t +oJob, $sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) +job = Just job :: Job v x t +job@Job{[Int] binds :: [Int] $sel:binds:Job :: forall v x t. Job v x t -> [Int] -binds, F v x +binds, F v x function :: F v x $sel:function:Job :: forall v x t. Job v x t -> F v x -function, Maybe t +function, Maybe t startAt :: Maybe t $sel:startAt:Job :: forall v x t. Job v x t -> Maybe t -startAt}}) <- +startAt}}) <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find ( \case (Int _, Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoLoopSource [v] -vs' Job v x t +state = DoLoopSource [v] +vs' Job v x t _}) -> ([v] -vs' forall a. Eq a => [a] -> [a] -> [a] +vs' forall a. Eq a => [a] -> [a] -> [a] L.\\ forall a. Set a -> [a] S.elems Set v -vs) forall a. Eq a => a -> a -> Bool +vs) forall a. Eq a => a -> a -> Bool /= [v] -vs' +vs' (Int, Cell v x t) _ -> Bool False @@ -1292,26 +1292,26 @@ forall a b. (a -> b) -> a -> b $ forall i e. Ix i => Array i e -> [(i, e)] A.assocs Array Int (Cell v x t) -memory = - let vsRemain :: [v] -vsRemain = [v] -vs' forall a. Eq a => [a] -> [a] -> [a] +memory = + let vsRemain :: [v] +vsRemain = [v] +vs' forall a. Eq a => [a] -> [a] -> [a] L.\\ forall a. Set a -> [a] S.elems Set v -vs - process_ :: Process t (StepInfo v x t) -process_ = forall {u} {v} {x} {t} {a}. +vs + process_ :: Process t (StepInfo v x t) +process_ = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Fram v x t -fram forall a b. (a -> b) -> a -> b +fram forall a b. (a -> b) -> a -> b $ do - [Int] -eps <- forall {m :: * -> *} {pu} {v} {x} {t}. + [Int] +eps <- forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => @@ -1319,14 +1319,14 @@ scheduleInstructionUnsafe (forall {a}. (Num a, Ord a) => a -> Interval a -> Interval a shiftI (-t 1) Interval t -epAt) forall a b. (a -> b) -> a -> b +epAt) forall a b. (a -> b) -> a -> b $ forall v x t. Int -> Instruction (Fram v x t) PrepareRead Int -addr +addr forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -vsRemain) forall a b. (a -> b) -> a -> b +vsRemain) forall a b. (a -> b) -> a -> b $ forall {v} {x} {t} {pu}. (Ord v, Typeable v, IsString v, ToString v, Suffix v, @@ -1334,58 +1334,58 @@ [Int] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity () scheduleFunctionFinish_ [Int] -binds F v x -function forall a b. (a -> b) -> a -> b +binds F v x +function forall a b. (a -> b) -> a -> b $ t 0 forall a. Ord a => a -> a -> Interval a ... forall a. Interval a -> a sup Interval t -epAt +epAt forall (m :: * -> *) a. Monad m => a -> m a return [Int] -eps - cell' :: Cell v x t -cell' = +eps + cell' :: Cell v x t +cell' = if Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -vsRemain +vsRemain then Cell v x t -cell +cell { $sel:job:Cell :: Maybe (Job v x t) job = forall a. a -> Maybe a Just Job v x t -job{$sel:startAt:Job :: Maybe t +job{$sel:startAt:Job :: Maybe t startAt = Maybe t -startAt forall (f :: * -> *) a. Alternative f => f a -> f a -> f a +startAt forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> forall a. a -> Maybe a Just (forall a. Interval a -> a inf Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a - t 1)} , $sel:state:Cell :: CellState v x t state = forall v x t. [v] -> Job v x t -> CellState v x t DoLoopSource [v] -vsRemain Job v x t -oJob +vsRemain Job v x t +oJob } else Cell v x t -cell +cell { $sel:job:Cell :: Maybe (Job v x t) job = forall a. a -> Maybe a Just Job v x t -oJob{$sel:startAt:Job :: Maybe t +oJob{$sel:startAt:Job :: Maybe t startAt = Maybe t -startAt forall (f :: * -> *) a. Alternative f => f a -> f a -> f a +startAt forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> forall a. a -> Maybe a Just (forall a. Interval a -> a inf Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a - t 1)} , $sel:state:Cell :: CellState v x t @@ -1393,58 +1393,58 @@ DoLoopTarget forall a b. (a -> b) -> a -> b $ forall {v} {x} {t}. (Typeable v, Typeable x) => Job v x t -> v oJobV Job v x t -oJob +oJob } in Fram v x t -fram{Process t (StepInfo v x t) +fram{Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Fram :: Process t (StepInfo v x t) -process_, $sel:memory:Fram :: Array Int (Cell v x t) +process_, $sel:memory:Fram :: Array Int (Cell v x t) memory = Array Int (Cell v x t) -memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e +memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e A.// [(Int -addr, Cell v x t -cell')]} - endpointDecision fram :: Fram v x t -fram@Fram{Array Int (Cell v x t) +addr, Cell v x t +cell')]} + endpointDecision fram :: Fram v x t +fram@Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Target v -v, Interval t +memory} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Target v +v, Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} - | Just (Int -addr, cell :: Cell v x t -cell@Cell{$sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) -job = Just Job{F v x +epAt} + | Just (Int +addr, cell :: Cell v x t +cell@Cell{$sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) +job = Just Job{F v x function :: F v x $sel:function:Job :: forall v x t. Job v x t -> F v x -function, [Int] +function, [Int] binds :: [Int] $sel:binds:Job :: forall v x t. Job v x t -> [Int] -binds}}) <- +binds}}) <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find (\case (Int _, Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoLoopTarget v -v'}) -> v -v forall a. Eq a => a -> a -> Bool +state = DoLoopTarget v +v'}) -> v +v forall a. Eq a => a -> a -> Bool == v -v'; (Int, Cell v x t) +v'; (Int, Cell v x t) _ -> Bool False) forall a b. (a -> b) -> a -> b $ forall i e. Ix i => Array i e -> [(i, e)] A.assocs Array Int (Cell v x t) -memory = - let process_ :: Process t (StepInfo v x t) -process_ = forall {u} {v} {x} {t} {a}. +memory = + let process_ :: Process t (StepInfo v x t) +process_ = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Fram v x t -fram forall a b. (a -> b) -> a -> b +fram forall a b. (a -> b) -> a -> b $ do forall (f :: * -> *) a. Functor f => f a -> f () void forall a b. (a -> b) -> a -> b @@ -1452,29 +1452,29 @@ MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe Interval t -epAt forall a b. (a -> b) -> a -> b +epAt forall a b. (a -> b) -> a -> b $ forall v x t. Int -> Instruction (Fram v x t) Write Int -addr +addr forall {v} {x} {t} {pu}. (Ord v, Typeable v, IsString v, ToString v, Suffix v, Hashable v) => [Int] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity [Int] scheduleFunctionFinish [Int] -binds F v x -function Interval t -epAt - cell' :: Cell v x t -cell' = +binds F v x +function Interval t +epAt + cell' :: Cell v x t +cell' = Cell v x t -cell +cell { $sel:job:Cell :: Maybe (Job v x t) job = forall a. Maybe a Nothing @@ -1483,163 +1483,163 @@ Done } in Fram v x t -fram +fram { $sel:memory:Fram :: Array Int (Cell v x t) memory = Array Int (Cell v x t) -memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e +memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e A.// [(Int -addr, Cell v x t -cell')] +addr, Cell v x t +cell')] , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Fram :: Process t (StepInfo v x t) -process_ +process_ } -- Buffer Target - endpointDecision fram :: Fram v x t -fram@Fram{Array Int (Cell v x t) + endpointDecision fram :: Fram v x t +fram@Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory, [(Buffer v x, Job v x t)] +memory, [(Buffer v x, Job v x t)] remainBuffers :: [(Buffer v x, Job v x t)] $sel:remainBuffers:Fram :: forall v x t. Fram v x t -> [(Buffer v x, Job v x t)] -remainBuffers} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Target v -v, Interval t +remainBuffers} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Target v +v, Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} - | Just (Int -addr, cell :: Cell v x t -cell@Cell{[F v x] +epAt} + | Just (Int +addr, cell :: Cell v x t +cell@Cell{[F v x] history :: [F v x] $sel:history:Cell :: forall v x t. Cell v x t -> [F v x] -history}) <- forall {v} {x} {t}. Fram v x t -> Maybe (Int, Cell v x t) +history}) <- forall {v} {x} {t}. Fram v x t -> Maybe (Int, Cell v x t) findForBufferCell Fram v x t -fram +fram , ([(Buffer (I v -_) (O Set v -vs), j :: Job v x t -j@Job{F v x +_) (O Set v +vs), j :: Job v x t +j@Job{F v x function :: F v x $sel:function:Job :: forall v x t. Job v x t -> F v x -function})], [(Buffer v x, Job v x t)] -remainBuffers') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) -L.partition (\(Buffer (I v -v') (O Set v +function})], [(Buffer v x, Job v x t)] +remainBuffers') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) +L.partition (\(Buffer (I v +v') (O Set v _), Job v x t _) -> v -v' forall a. Eq a => a -> a -> Bool +v' forall a. Eq a => a -> a -> Bool == v -v) [(Buffer v x, Job v x t)] -remainBuffers = - let process_ :: Process t (StepInfo v x t) -process_ = forall {u} {v} {x} {t} {a}. +v) [(Buffer v x, Job v x t)] +remainBuffers = + let process_ :: Process t (StepInfo v x t) +process_ = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Fram v x t -fram forall a b. (a -> b) -> a -> b +fram forall a b. (a -> b) -> a -> b $ do forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe Interval t -epAt forall a b. (a -> b) -> a -> b +epAt forall a b. (a -> b) -> a -> b $ forall v x t. Int -> Instruction (Fram v x t) Write Int -addr - cell' :: Cell v x t -cell' = +addr + cell' :: Cell v x t +cell' = Cell v x t -cell +cell { $sel:job:Cell :: Maybe (Job v x t) job = forall a. a -> Maybe a Just Job v x t -j{$sel:startAt:Job :: Maybe t +j{$sel:startAt:Job :: Maybe t startAt = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall a. Interval a -> a inf Interval t -epAt} +epAt} , $sel:state:Cell :: CellState v x t state = forall v x t. [v] -> CellState v x t DoBuffer forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems Set v -vs +vs , $sel:lastWrite:Cell :: Maybe t lastWrite = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall a. Interval a -> a sup Interval t -epAt +epAt , $sel:history:Cell :: [F v x] history = F v x -function forall a. a -> [a] -> [a] +function forall a. a -> [a] -> [a] : [F v x] -history +history } in Fram v x t -fram +fram { $sel:memory:Fram :: Array Int (Cell v x t) memory = Array Int (Cell v x t) -memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e +memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e A.// [(Int -addr, Cell v x t -cell')] +addr, Cell v x t +cell')] , $sel:remainBuffers:Fram :: [(Buffer v x, Job v x t)] remainBuffers = [(Buffer v x, Job v x t)] -remainBuffers' +remainBuffers' , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Fram :: Process t (StepInfo v x t) -process_ +process_ } - endpointDecision fram :: Fram v x t -fram@Fram{Array Int (Cell v x t) + endpointDecision fram :: Fram v x t +fram@Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Source Set v -vs, Interval t +memory} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Source Set v +vs, Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} - | Just (Int -addr, cell :: Cell v x t -cell@Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoBuffer [v] -vs', $sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) -job = Just Job{F v x +epAt} + | Just (Int +addr, cell :: Cell v x t +cell@Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t +state = DoBuffer [v] +vs', $sel:job:Cell :: forall v x t. Cell v x t -> Maybe (Job v x t) +job = Just Job{F v x function :: F v x $sel:function:Job :: forall v x t. Job v x t -> F v x -function, $sel:startAt:Job :: forall v x t. Job v x t -> Maybe t -startAt = Just t -fBegin, [Int] +function, $sel:startAt:Job :: forall v x t. Job v x t -> Maybe t +startAt = Just t +fBegin, [Int] binds :: [Int] $sel:binds:Job :: forall v x t. Job v x t -> [Int] -binds}}) <- +binds}}) <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find ( \case (Int _, Cell{$sel:state:Cell :: forall v x t. Cell v x t -> CellState v x t -state = DoBuffer [v] -vs'}) -> ([v] -vs' forall a. Eq a => [a] -> [a] -> [a] +state = DoBuffer [v] +vs'}) -> ([v] +vs' forall a. Eq a => [a] -> [a] -> [a] L.\\ forall a. Set a -> [a] S.elems Set v -vs) forall a. Eq a => a -> a -> Bool +vs) forall a. Eq a => a -> a -> Bool /= [v] -vs' +vs' (Int, Cell v x t) _ -> Bool False @@ -1647,19 +1647,19 @@ forall a b. (a -> b) -> a -> b $ forall i e. Ix i => Array i e -> [(i, e)] A.assocs Array Int (Cell v x t) -memory = - let vsRemain :: [v] -vsRemain = [v] -vs' forall a. Eq a => [a] -> [a] -> [a] +memory = + let vsRemain :: [v] +vsRemain = [v] +vs' forall a. Eq a => [a] -> [a] -> [a] L.\\ forall a. Set a -> [a] S.elems Set v -vs - process_ :: Process t (StepInfo v x t) -process_ = forall {u} {v} {x} {t} {a}. +vs + process_ :: Process t (StepInfo v x t) +process_ = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Fram v x t -fram forall a b. (a -> b) -> a -> b +fram forall a b. (a -> b) -> a -> b $ do forall (f :: * -> *) a. Functor f => f a -> f () void forall a b. (a -> b) -> a -> b @@ -1667,7 +1667,7 @@ MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => @@ -1675,14 +1675,14 @@ scheduleInstructionUnsafe (forall {a}. (Num a, Ord a) => a -> Interval a -> Interval a shiftI (-t 1) Interval t -epAt) forall a b. (a -> b) -> a -> b +epAt) forall a b. (a -> b) -> a -> b $ forall v x t. Int -> Instruction (Fram v x t) PrepareRead Int -addr +addr forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -vsRemain) forall a b. (a -> b) -> a -> b +vsRemain) forall a b. (a -> b) -> a -> b $ forall {v} {x} {t} {pu}. (Ord v, Typeable v, IsString v, ToString v, Suffix v, @@ -1690,20 +1690,20 @@ [Int] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity () scheduleFunctionFinish_ [Int] -binds F v x -function forall a b. (a -> b) -> a -> b +binds F v x +function forall a b. (a -> b) -> a -> b $ t -fBegin forall a. Ord a => a -> a -> Interval a +fBegin forall a. Ord a => a -> a -> Interval a ... forall a. Interval a -> a sup Interval t -epAt - cell' :: Cell v x t -cell' = case [v] -vsRemain of +epAt + cell' :: Cell v x t +cell' = case [v] +vsRemain of [] -> Cell v x t -cell +cell { $sel:job:Cell :: Maybe (Job v x t) job = forall a. Maybe a Nothing @@ -1714,37 +1714,37 @@ [v] _ -> Cell v x t -cell +cell { $sel:state:Cell :: CellState v x t state = forall v x t. [v] -> CellState v x t DoBuffer [v] -vsRemain +vsRemain } in Fram v x t -fram +fram { $sel:memory:Fram :: Array Int (Cell v x t) memory = Array Int (Cell v x t) -memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e +memory forall i e. Ix i => Array i e -> [(i, e)] -> Array i e A.// [(Int -addr, Cell v x t -cell')] +addr, Cell v x t +cell')] , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Fram :: Process t (StepInfo v x t) -process_ +process_ } - endpointDecision Fram v x t -pu EndpointSt v (Interval t) -d = forall a. HasCallStack => String -> a + endpointDecision Fram v x t +pu EndpointSt v (Interval t) +d = forall a. HasCallStack => String -> a error [i|incorrect decision #{ d } for #{ pretty pu }|] --------------------------------------------------------------------- -instance Controllable (Fram v x t) where - data Instruction (Fram v x t) +instance Controllable (Fram v x t) where + data Instruction (Fram v x t) = PrepareRead Int | Write Int - deriving (Int -> Instruction (Fram v x t) -> ShowS + deriving (Int -> Instruction (Fram v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Instruction (Fram v x t) -> ShowS @@ -1758,7 +1758,7 @@ $cshowsPrec :: forall v x t. Int -> Instruction (Fram v x t) -> ShowS Show) - data Microcode (Fram v x t) = Microcode + data Microcode (Fram v x t) = Microcode { forall v x t. Microcode (Fram v x t) -> Bool oeSignal :: Bool , forall v x t. Microcode (Fram v x t) -> Bool @@ -1766,7 +1766,7 @@ , forall v x t. Microcode (Fram v x t) -> Maybe Int addrSignal :: Maybe Int } - deriving (Int -> Microcode (Fram v x t) -> ShowS + deriving (Int -> Microcode (Fram v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Microcode (Fram v x t) -> ShowS @@ -1778,7 +1778,7 @@ $cshow :: forall v x t. Microcode (Fram v x t) -> String showsPrec :: Int -> Microcode (Fram v x t) -> ShowS $cshowsPrec :: forall v x t. Int -> Microcode (Fram v x t) -> ShowS -Show, Microcode (Fram v x t) -> Microcode (Fram v x t) -> Bool +Show, Microcode (Fram v x t) -> Microcode (Fram v x t) -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x t. Microcode (Fram v x t) -> Microcode (Fram v x t) -> Bool @@ -1788,7 +1788,7 @@ == :: Microcode (Fram v x t) -> Microcode (Fram v x t) -> Bool $c== :: forall v x t. Microcode (Fram v x t) -> Microcode (Fram v x t) -> Bool -Eq, Microcode (Fram v x t) -> Microcode (Fram v x t) -> Bool +Eq, Microcode (Fram v x t) -> Microcode (Fram v x t) -> Bool Microcode (Fram v x t) -> Microcode (Fram v x t) -> Ordering forall a. Eq a @@ -1835,116 +1835,116 @@ Microcode (Fram v x t) -> Microcode (Fram v x t) -> Ordering Ord) - zipSignalTagsAndValues :: Ports (Fram v x t) + zipSignalTagsAndValues :: Ports (Fram v x t) -> Microcode (Fram v x t) -> [(SignalTag, SignalValue)] -zipSignalTagsAndValues FramPorts{SignalTag +zipSignalTagsAndValues FramPorts{SignalTag $sel:oe:FramPorts :: forall v x t. Ports (Fram v x t) -> SignalTag oe :: SignalTag -oe, SignalTag +oe, SignalTag $sel:wr:FramPorts :: forall v x t. Ports (Fram v x t) -> SignalTag wr :: SignalTag -wr, [SignalTag] +wr, [SignalTag] $sel:addr:FramPorts :: forall v x t. Ports (Fram v x t) -> [SignalTag] addr :: [SignalTag] -addr} Microcode{Bool +addr} Microcode{Bool oeSignal :: Bool $sel:oeSignal:Microcode :: forall v x t. Microcode (Fram v x t) -> Bool -oeSignal, Bool +oeSignal, Bool wrSignal :: Bool $sel:wrSignal:Microcode :: forall v x t. Microcode (Fram v x t) -> Bool -wrSignal, Maybe Int +wrSignal, Maybe Int addrSignal :: Maybe Int $sel:addrSignal:Microcode :: forall v x t. Microcode (Fram v x t) -> Maybe Int -addrSignal} = +addrSignal} = [ (SignalTag -oe, Bool -> SignalValue +oe, Bool -> SignalValue Bool Bool -oeSignal) +oeSignal) , (SignalTag -wr, Bool -> SignalValue +wr, Bool -> SignalValue Bool Bool -wrSignal) +wrSignal) ] forall a. [a] -> [a] -> [a] ++ [(SignalTag, SignalValue)] -addrs +addrs where - addrs :: [(SignalTag, SignalValue)] -addrs = + addrs :: [(SignalTag, SignalValue)] +addrs = forall a b. (a -> b) -> [a] -> [b] map - ( \(SignalTag -linkId, Int -ix) -> + ( \(SignalTag +linkId, Int +ix) -> ( SignalTag -linkId +linkId , forall b a. b -> (a -> b) -> Maybe a -> b maybe SignalValue Undef (Bool -> SignalValue Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . (forall a. Bits a => a -> Int -> Bool `testBit` Int -ix)) Maybe Int -addrSignal +ix)) Maybe Int +addrSignal ) ) forall a b. (a -> b) -> a -> b $ forall a b. [a] -> [b] -> [(a, b)] zip (forall a. [a] -> [a] reverse [SignalTag] -addr) [Int +addr) [Int 0 ..] - usedPortTags :: Ports (Fram v x t) -> [SignalTag] -usedPortTags FramPorts{SignalTag + usedPortTags :: Ports (Fram v x t) -> [SignalTag] +usedPortTags FramPorts{SignalTag oe :: SignalTag $sel:oe:FramPorts :: forall v x t. Ports (Fram v x t) -> SignalTag -oe, SignalTag +oe, SignalTag wr :: SignalTag $sel:wr:FramPorts :: forall v x t. Ports (Fram v x t) -> SignalTag -wr, [SignalTag] +wr, [SignalTag] addr :: [SignalTag] $sel:addr:FramPorts :: forall v x t. Ports (Fram v x t) -> [SignalTag] -addr} = SignalTag -oe forall a. a -> [a] -> [a] +addr} = SignalTag +oe forall a. a -> [a] -> [a] : SignalTag -wr forall a. a -> [a] -> [a] +wr forall a. a -> [a] -> [a] : [SignalTag] -addr +addr - takePortTags :: [SignalTag] -> Fram v x t -> Ports (Fram v x t) -takePortTags (SignalTag -oe : SignalTag -wr : [SignalTag] -xs) Fram v x t -pu = forall v x t. + takePortTags :: [SignalTag] -> Fram v x t -> Ports (Fram v x t) +takePortTags (SignalTag +oe : SignalTag +wr : [SignalTag] +xs) Fram v x t +pu = forall v x t. SignalTag -> SignalTag -> [SignalTag] -> Ports (Fram v x t) FramPorts SignalTag -oe SignalTag -wr [SignalTag] -addr +oe SignalTag +wr [SignalTag] +addr where - addr :: [SignalTag] -addr = forall a. Int -> [a] -> [a] + addr :: [SignalTag] +addr = forall a. Int -> [a] -> [a] take (forall {c} {v} {x} {t}. Integral c => Fram v x t -> c addrWidth Fram v x t -pu) [SignalTag] -xs +pu) [SignalTag] +xs takePortTags [SignalTag] _ Fram v x t _ = forall a. HasCallStack => String -> a error String "can not take port tags, tags are over" -instance Connected (Fram v x t) where - data Ports (Fram v x t) = FramPorts +instance Connected (Fram v x t) where + data Ports (Fram v x t) = FramPorts { forall v x t. Ports (Fram v x t) -> SignalTag oe, forall v x t. Ports (Fram v x t) -> SignalTag wr :: SignalTag , forall v x t. Ports (Fram v x t) -> [SignalTag] addr :: [SignalTag] } - deriving (Int -> Ports (Fram v x t) -> ShowS + deriving (Int -> Ports (Fram v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Ports (Fram v x t) -> ShowS @@ -1958,9 +1958,9 @@ $cshowsPrec :: forall v x t. Int -> Ports (Fram v x t) -> ShowS Show) -instance IOConnected (Fram v x t) where - data IOPorts (Fram v x t) = FramIO - deriving (Int -> IOPorts (Fram v x t) -> ShowS +instance IOConnected (Fram v x t) where + data IOPorts (Fram v x t) = FramIO + deriving (Int -> IOPorts (Fram v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> IOPorts (Fram v x t) -> ShowS @@ -1974,59 +1974,59 @@ $cshowsPrec :: forall v x t. Int -> IOPorts (Fram v x t) -> ShowS Show) -instance Default (Microcode (Fram v x t)) where - def :: Microcode (Fram v x t) -def = forall v x t. Bool -> Bool -> Maybe Int -> Microcode (Fram v x t) +instance Default (Microcode (Fram v x t)) where + def :: Microcode (Fram v x t) +def = forall v x t. Bool -> Bool -> Maybe Int -> Microcode (Fram v x t) Microcode Bool False Bool False forall a. Maybe a Nothing -instance UnambiguouslyDecode (Fram v x t) where - decodeInstruction :: Instruction (Fram v x t) -> Microcode (Fram v x t) -decodeInstruction (PrepareRead Int -addr) = forall v x t. Bool -> Bool -> Maybe Int -> Microcode (Fram v x t) +instance UnambiguouslyDecode (Fram v x t) where + decodeInstruction :: Instruction (Fram v x t) -> Microcode (Fram v x t) +decodeInstruction (PrepareRead Int +addr) = forall v x t. Bool -> Bool -> Maybe Int -> Microcode (Fram v x t) Microcode Bool True Bool False forall a b. (a -> b) -> a -> b $ forall a. a -> Maybe a Just Int -addr - decodeInstruction (Write Int -addr) = forall v x t. Bool -> Bool -> Maybe Int -> Microcode (Fram v x t) +addr + decodeInstruction (Write Int +addr) = forall v x t. Bool -> Bool -> Maybe Int -> Microcode (Fram v x t) Microcode Bool False Bool True forall a b. (a -> b) -> a -> b $ forall a. a -> Maybe a Just Int -addr +addr -instance VarValTime v x t => Testable (Fram v x t) v x where - testBenchImplementation :: Project (Fram v x t) v x -> Implementation -testBenchImplementation prj :: Project (Fram v x t) v x -prj@Project{Text +instance VarValTime v x t => Testable (Fram v x t) v x where + testBenchImplementation :: Project (Fram v x t) v x -> Implementation +testBenchImplementation prj :: Project (Fram v x t) v x +prj@Project{Text pName :: forall m v x. Project m v x -> Text pName :: Text -pName, Fram v x t +pName, Fram v x t pUnit :: forall m v x. Project m v x -> m pUnit :: Fram v x t pUnit} = - let tbcSignalsConst :: [Text] -tbcSignalsConst = [Text + let tbcSignalsConst :: [Text] +tbcSignalsConst = [Text "oe", Text "wr", Text "[3:0] addr"] - showMicrocode :: Microcode (Fram v x t) -> a -showMicrocode Microcode{Bool + showMicrocode :: Microcode (Fram v x t) -> a +showMicrocode Microcode{Bool oeSignal :: Bool $sel:oeSignal:Microcode :: forall v x t. Microcode (Fram v x t) -> Bool -oeSignal, Bool +oeSignal, Bool wrSignal :: Bool $sel:wrSignal:Microcode :: forall v x t. Microcode (Fram v x t) -> Bool -wrSignal, Maybe Int +wrSignal, Maybe Int addrSignal :: Maybe Int $sel:addrSignal:Microcode :: forall v x t. Microcode (Fram v x t) -> Maybe Int -addrSignal} = +addrSignal} = [i|oe <= #{ bool2verilog oeSignal };|] forall a. Semigroup a => a -> a -> a <> [i| wr <= #{ bool2verilog wrSignal };|] @@ -2037,8 +2037,8 @@ toString forall a b. (a -> b) -> a -> b $ forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -pName Fram v x t -pUnit forall a. Semigroup a => a -> a -> a +pName Fram v x t +pUnit forall a. Semigroup a => a -> a -> a <> Text "_tb.v") forall a b. (a -> b) -> a -> b $ @@ -2049,13 +2049,13 @@ Project m v x -> SnippetTestBenchConf m -> Text snippetTestBench Project (Fram v x t) v x -prj +prj SnippetTestBenchConf { tbcSignals :: [Text] -tbcSignals = [Text] -tbcSignalsConst +tbcSignals = [Text] +tbcSignalsConst , tbcPorts :: Ports (Fram v x t) -tbcPorts = +tbcPorts = FramPorts { $sel:oe:FramPorts :: SignalTag oe = Text -> SignalTag @@ -2075,55 +2075,55 @@ "addr[0]"] } , tbcMC2verilogLiteral :: Microcode (Fram v x t) -> Text -tbcMC2verilogLiteral = forall {a} {v} {x} {t}. +tbcMC2verilogLiteral = forall {a} {v} {x} {t}. (Builder (IsCustomSink a) a ~ Builder (IsCustomSink a) a, Semigroup a, Interpolatable (IsCustomSink a) String a, Interpolatable (IsCustomSink a) Text a) => Microcode (Fram v x t) -> a -showMicrocode +showMicrocode } softwareFile :: Text -> pu -> Text -softwareFile Text -tag pu -pu = forall pu. TargetSystemComponent pu => Text -> pu -> Text +softwareFile Text +tag pu +pu = forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -tag pu -pu forall a. Semigroup a => a -> a -> a +tag pu +pu forall a. Semigroup a => a -> a -> a <> Text "." forall a. Semigroup a => a -> a -> a <> Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text ".dump" -instance VarValTime v x t => TargetSystemComponent (Fram v x t) where - moduleName :: Text -> Fram v x t -> Text -moduleName Text +instance VarValTime v x t => TargetSystemComponent (Fram v x t) where + moduleName :: Text -> Fram v x t -> Text +moduleName Text _ Fram v x t _ = Text "pu_fram" - hardware :: Text -> Fram v x t -> Implementation -hardware Text -_tag Fram v x t -_pu = String -> Implementation + hardware :: Text -> Fram v x t -> Implementation +hardware Text +_tag Fram v x t +_pu = String -> Implementation FromLibrary String "pu_fram.v" - software :: Text -> Fram v x t -> Implementation -software Text -tag fram :: Fram v x t -fram@Fram{Array Int (Cell v x t) + software :: Text -> Fram v x t -> Implementation +software Text +tag fram :: Fram v x t +fram@Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} = +memory} = String -> Text -> Implementation Immediate (forall a. ToString a => a -> String toString forall a b. (a -> b) -> a -> b $ forall pu. TargetSystemComponent pu => Text -> pu -> Text softwareFile Text -tag Fram v x t -fram) +tag Fram v x t +fram) forall a b. (a -> b) -> a -> b $ [Text] -> Text T.unlines @@ -2131,30 +2131,30 @@ $ forall a b. (a -> b) -> [a] -> [b] map (\Cell{$sel:initialValue:Cell :: forall v x t. Cell v x t -> x -initialValue = x -initialValue} -> forall {p}. Val p => p -> Text +initialValue = x +initialValue} -> forall {p}. Val p => p -> Text hdlValDump x -initialValue) +initialValue) forall a b. (a -> b) -> a -> b $ forall i e. Array i e -> [e] A.elems Array Int (Cell v x t) -memory - hardwareInstance :: Text -> Fram v x t -> UnitEnv (Fram v x t) -> Verilog +memory + hardwareInstance :: Text -> Fram v x t -> UnitEnv (Fram v x t) -> Verilog hardwareInstance - Text -tag - fram :: Fram v x t -fram@Fram{Array Int (Cell v x t) + Text +tag + fram :: Fram v x t +fram@Fram{Array Int (Cell v x t) memory :: Array Int (Cell v x t) $sel:memory:Fram :: forall v x t. Fram v x t -> Array Int (Cell v x t) -memory} +memory} UnitEnv - { Text + { Text sigClk :: forall m. UnitEnv m -> Text sigClk :: Text sigClk , ctrlPorts :: forall m. UnitEnv m -> Maybe (Ports m) -ctrlPorts = Just FramPorts{[SignalTag] +ctrlPorts = Just FramPorts{[SignalTag] SignalTag addr :: [SignalTag] wr :: SignalTag @@ -2162,15 +2162,15 @@ $sel:addr:FramPorts :: forall v x t. Ports (Fram v x t) -> [SignalTag] $sel:wr:FramPorts :: forall v x t. Ports (Fram v x t) -> SignalTag $sel:oe:FramPorts :: forall v x t. Ports (Fram v x t) -> SignalTag -..} +..} , valueIn :: forall m. UnitEnv m -> Maybe (Text, Text) -valueIn = Just (Text -dataIn, Text -attrIn) +valueIn = Just (Text +dataIn, Text +attrIn) , valueOut :: forall m. UnitEnv m -> Maybe (Text, Text) -valueOut = Just (Text -dataOut, Text -attrOut) +valueOut = Just (Text +dataOut, Text +attrOut) } = [__i| pu_fram \# @@ -2189,12 +2189,12 @@ , .attr_out( #{ attrOut } ) ); |] - hardwareInstance Text -_title Fram v x t -_pu UnitEnv (Fram v x t) -_env = forall a. HasCallStack => String -> a + hardwareInstance Text +_title Fram v x t +_pu UnitEnv (Fram v x t) +_env = forall a. HasCallStack => String -> a error String "internal error" -instance IOTestBench (Fram v x t) v x +instance IOTestBench (Fram v x t) v x \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.I2C.html b/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.I2C.html index e9df00092..2a529a49e 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.I2C.html +++ b/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.I2C.html @@ -35,12 +35,12 @@ instance SimpleIOInterface I2Cinterface -type I2C v x t = SimpleIO I2Cinterface v x t +type I2C v x t = SimpleIO I2Cinterface v x t -i2cUnit :: Time t => Int -> I2C v x t +i2cUnit :: Time t => Int -> I2C v x t i2cUnit :: forall t v x. Time t => Int -> I2C v x t -i2cUnit Int -bounceFilter = +i2cUnit Int +bounceFilter = SimpleIO { Int $sel:bounceFilter:SimpleIO :: Int @@ -68,8 +68,8 @@ def } -instance IOConnected (I2C v x t) where - data IOPorts (I2C v x t) +instance IOConnected (I2C v x t) where + data IOPorts (I2C v x t) = I2CMaster { forall v x t. IOPorts (I2C v x t) -> InoutPortTag masterSDA :: InoutPortTag @@ -82,7 +82,7 @@ , forall v x t. IOPorts (I2C v x t) -> InputPortTag slaveSCL :: InputPortTag } - deriving (Int -> IOPorts (I2C v x t) -> ShowS + deriving (Int -> IOPorts (I2C v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> IOPorts (I2C v x t) -> ShowS @@ -96,62 +96,62 @@ $cshowsPrec :: forall v x t. Int -> IOPorts (I2C v x t) -> ShowS Show) - inputPorts :: IOPorts (I2C v x t) -> Set InputPortTag + inputPorts :: IOPorts (I2C v x t) -> Set InputPortTag inputPorts I2CMaster{} = forall a. Set a S.empty - inputPorts I2CSlave{InoutPortTag + inputPorts I2CSlave{InoutPortTag InputPortTag slaveSCL :: InputPortTag slaveSDA :: InoutPortTag $sel:slaveSCL:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> InputPortTag $sel:slaveSDA:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> InoutPortTag -..} = forall a. Ord a => [a] -> Set a +..} = forall a. Ord a => [a] -> Set a S.fromList [InputPortTag -slaveSCL] +slaveSCL] - outputPorts :: IOPorts (I2C v x t) -> Set OutputPortTag -outputPorts I2CMaster{InoutPortTag + outputPorts :: IOPorts (I2C v x t) -> Set OutputPortTag +outputPorts I2CMaster{InoutPortTag OutputPortTag masterSCL :: OutputPortTag masterSDA :: InoutPortTag $sel:masterSCL:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> OutputPortTag $sel:masterSDA:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> InoutPortTag -..} = forall a. Ord a => [a] -> Set a +..} = forall a. Ord a => [a] -> Set a S.fromList [OutputPortTag -masterSCL] +masterSCL] outputPorts I2CSlave{} = forall a. Set a S.empty - inoutPorts :: IOPorts (I2C v x t) -> Set InoutPortTag -inoutPorts I2CMaster{InoutPortTag + inoutPorts :: IOPorts (I2C v x t) -> Set InoutPortTag +inoutPorts I2CMaster{InoutPortTag OutputPortTag masterSCL :: OutputPortTag masterSDA :: InoutPortTag $sel:masterSCL:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> OutputPortTag $sel:masterSDA:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> InoutPortTag -..} = forall a. Ord a => [a] -> Set a +..} = forall a. Ord a => [a] -> Set a S.fromList [InoutPortTag -masterSDA] - inoutPorts I2CSlave{InoutPortTag +masterSDA] + inoutPorts I2CSlave{InoutPortTag InputPortTag slaveSCL :: InputPortTag slaveSDA :: InoutPortTag $sel:slaveSCL:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> InputPortTag $sel:slaveSDA:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> InoutPortTag -..} = forall a. Ord a => [a] -> Set a +..} = forall a. Ord a => [a] -> Set a S.fromList [InoutPortTag -slaveSDA] +slaveSDA] -instance (ToJSON v, VarValTime v x t) => TargetSystemComponent (I2C v x t) where - moduleName :: Text -> I2C v x t -> Text +instance (ToJSON v, VarValTime v x t) => TargetSystemComponent (I2C v x t) where + moduleName :: Text -> I2C v x t -> Text moduleName Text _ I2C v x t _ = Text "pu_i2c" - hardware :: Text -> I2C v x t -> Implementation -hardware Text -_tag I2C v x t -_pu = + hardware :: Text -> I2C v x t -> Implementation +hardware Text +_tag I2C v x t +_pu = Maybe String -> [Implementation] -> Implementation Aggregate forall a. Maybe a @@ -185,40 +185,40 @@ "i2c/pu_slave_i2c.v" ] - software :: Text -> I2C v x t -> Implementation -software Text -tag I2C v x t -pu = forall i v x t. + software :: Text -> I2C v x t -> Implementation +software Text +tag I2C v x t +pu = forall i v x t. (VarValTime v x t, SimpleIOInterface i, ToJSON v) => Text -> SimpleIO i v x t -> Text -> Implementation protocolDescription Text -tag I2C v x t -pu Text +tag I2C v x t +pu Text "I2C Processor Unit" - hardwareInstance :: Text -> I2C v x t -> UnitEnv (I2C v x t) -> Verilog + hardwareInstance :: Text -> I2C v x t -> UnitEnv (I2C v x t) -> Verilog hardwareInstance - Text -tag - SimpleIO{Int + Text +tag + SimpleIO{Int bounceFilter :: Int $sel:bounceFilter:SimpleIO :: forall i v x t. SimpleIO i v x t -> Int -bounceFilter} +bounceFilter} UnitEnv - { Text + { Text sigClk :: forall m. UnitEnv m -> Text sigClk :: Text sigClk - , Text + , Text sigRst :: forall m. UnitEnv m -> Text sigRst :: Text sigRst - , Text + , Text sigCycleBegin :: forall m. UnitEnv m -> Text sigCycleBegin :: Text sigCycleBegin , ctrlPorts :: forall m. UnitEnv m -> Maybe (Ports m) -ctrlPorts = Just SimpleIOPorts{String +ctrlPorts = Just SimpleIOPorts{String SignalTag $sel:stop:SimpleIOPorts :: forall i v x t. Ports (SimpleIO i v x t) -> String $sel:oe:SimpleIOPorts :: forall i v x t. Ports (SimpleIO i v x t) -> SignalTag @@ -228,16 +228,16 @@ wr :: SignalTag ..} , ioPorts :: forall m. UnitEnv m -> Maybe (IOPorts m) -ioPorts = Just IOPorts (I2C v x t) -ioPorts +ioPorts = Just IOPorts (I2C v x t) +ioPorts , valueIn :: forall m. UnitEnv m -> Maybe (Text, Text) -valueIn = Just (Text -dataIn, Text -attrIn) +valueIn = Just (Text +dataIn, Text +attrIn) , valueOut :: forall m. UnitEnv m -> Maybe (Text, Text) -valueOut = Just (Text -dataOut, Text -attrOut) +valueOut = Just (Text +dataOut, Text +attrOut) } = [__i| #{ module_ ioPorts } \# @@ -257,38 +257,38 @@ ); |] where - module_ :: IOPorts (I2C v x t) -> Text -module_ I2CMaster{} = Text + module_ :: IOPorts (I2C v x t) -> Text +module_ I2CMaster{} = Text "pu_master_i2c" :: T.Text - module_ I2CSlave{} = Text + module_ I2CSlave{} = Text "pu_slave_i2c" - extIO :: IOPorts (I2C v x t) -> dst -extIO I2CMaster{InoutPortTag + extIO :: IOPorts (I2C v x t) -> dst +extIO I2CMaster{InoutPortTag OutputPortTag masterSCL :: OutputPortTag masterSDA :: InoutPortTag $sel:masterSCL:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> OutputPortTag $sel:masterSDA:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> InoutPortTag -..} = +..} = [__i| , .scl( #{ masterSCL } ) , .sda( #{ masterSDA } ) |] - extIO I2CSlave{InoutPortTag + extIO I2CSlave{InoutPortTag InputPortTag slaveSCL :: InputPortTag slaveSDA :: InoutPortTag $sel:slaveSCL:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> InputPortTag $sel:slaveSDA:I2CMaster :: forall v x t. IOPorts (I2C v x t) -> InoutPortTag -..} = +..} = [__i| , .scl( #{ slaveSCL } ) , .sda( #{ slaveSDA } ) |] - hardwareInstance Text -_title I2C v x t -_pu UnitEnv (I2C v x t) -_env = forall a. HasCallStack => String -> a + hardwareInstance Text +_title I2C v x t +_pu UnitEnv (I2C v x t) +_env = forall a. HasCallStack => String -> a error String "internal error" \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.SPI.html b/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.SPI.html index e1cc3d41b..af72e2b10 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.SPI.html +++ b/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.SPI.html @@ -42,13 +42,13 @@ instance SimpleIOInterface SPIinterface -type SPI v x t = SimpleIO SPIinterface v x t +type SPI v x t = SimpleIO SPIinterface v x t -anySPI :: Time t => Int -> Maybe Int -> SPI v x t +anySPI :: Time t => Int -> Maybe Int -> SPI v x t anySPI :: forall t v x. Time t => Int -> Maybe Int -> SPI v x t -anySPI Int -bounceFilter Maybe Int -bufferSize = +anySPI Int +bounceFilter Maybe Int +bufferSize = SimpleIO { Int $sel:bounceFilter:SimpleIO :: Int @@ -76,8 +76,8 @@ def } -instance IOConnected (SPI v x t) where - data IOPorts (SPI v x t) +instance IOConnected (SPI v x t) where + data IOPorts (SPI v x t) = SPIMaster { forall v x t. IOPorts (SPI v x t) -> OutputPortTag master_mosi :: OutputPortTag @@ -98,7 +98,7 @@ , forall v x t. IOPorts (SPI v x t) -> InputPortTag slave_cs :: InputPortTag } - deriving (Int -> IOPorts (SPI v x t) -> ShowS + deriving (Int -> IOPorts (SPI v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> IOPorts (SPI v x t) -> ShowS @@ -112,8 +112,8 @@ $cshowsPrec :: forall v x t. Int -> IOPorts (SPI v x t) -> ShowS Show) - inputPorts :: IOPorts (SPI v x t) -> Set InputPortTag -inputPorts SPISlave{OutputPortTag + inputPorts :: IOPorts (SPI v x t) -> Set InputPortTag +inputPorts SPISlave{OutputPortTag InputPortTag slave_cs :: InputPortTag slave_sclk :: InputPortTag @@ -123,12 +123,12 @@ $sel:slave_sclk:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag $sel:slave_miso:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag $sel:slave_mosi:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag -..} = forall a. Ord a => [a] -> Set a +..} = forall a. Ord a => [a] -> Set a S.fromList [InputPortTag -slave_mosi, InputPortTag -slave_sclk, InputPortTag -slave_cs] - inputPorts SPIMaster{OutputPortTag +slave_mosi, InputPortTag +slave_sclk, InputPortTag +slave_cs] + inputPorts SPIMaster{OutputPortTag InputPortTag master_cs :: OutputPortTag master_sclk :: OutputPortTag @@ -138,12 +138,12 @@ $sel:master_sclk:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag $sel:master_miso:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag $sel:master_mosi:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag -..} = forall a. Ord a => [a] -> Set a +..} = forall a. Ord a => [a] -> Set a S.fromList [InputPortTag -master_miso] +master_miso] - outputPorts :: IOPorts (SPI v x t) -> Set OutputPortTag -outputPorts SPISlave{OutputPortTag + outputPorts :: IOPorts (SPI v x t) -> Set OutputPortTag +outputPorts SPISlave{OutputPortTag InputPortTag slave_cs :: InputPortTag slave_sclk :: InputPortTag @@ -153,10 +153,10 @@ $sel:slave_sclk:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag $sel:slave_miso:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag $sel:slave_mosi:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag -..} = forall a. Ord a => [a] -> Set a +..} = forall a. Ord a => [a] -> Set a S.fromList [OutputPortTag -slave_miso] - outputPorts SPIMaster{OutputPortTag +slave_miso] + outputPorts SPIMaster{OutputPortTag InputPortTag master_cs :: OutputPortTag master_sclk :: OutputPortTag @@ -166,99 +166,99 @@ $sel:master_sclk:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag $sel:master_miso:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag $sel:master_mosi:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag -..} = forall a. Ord a => [a] -> Set a +..} = forall a. Ord a => [a] -> Set a S.fromList [OutputPortTag -master_mosi, OutputPortTag -master_sclk, OutputPortTag -master_cs] +master_mosi, OutputPortTag +master_sclk, OutputPortTag +master_cs] spiMasterPorts :: Text -> IOPorts (SPI v x t) -spiMasterPorts Text -tag = +spiMasterPorts Text +tag = SPIMaster { $sel:master_mosi:SPIMaster :: OutputPortTag master_mosi = Text -> OutputPortTag OutputPortTag forall a b. (a -> b) -> a -> b $ Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_mosi" , $sel:master_miso:SPIMaster :: InputPortTag master_miso = Text -> InputPortTag InputPortTag forall a b. (a -> b) -> a -> b $ Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_miso" , $sel:master_sclk:SPIMaster :: OutputPortTag master_sclk = Text -> OutputPortTag OutputPortTag forall a b. (a -> b) -> a -> b $ Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_sclk" , $sel:master_cs:SPIMaster :: OutputPortTag master_cs = Text -> OutputPortTag OutputPortTag forall a b. (a -> b) -> a -> b $ Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_cs" } spiSlavePorts :: Text -> IOPorts (SPI v x t) -spiSlavePorts Text -tag = +spiSlavePorts Text +tag = SPISlave { $sel:slave_mosi:SPIMaster :: InputPortTag slave_mosi = Text -> InputPortTag InputPortTag forall a b. (a -> b) -> a -> b $ Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_mosi" , $sel:slave_miso:SPIMaster :: OutputPortTag slave_miso = Text -> OutputPortTag OutputPortTag forall a b. (a -> b) -> a -> b $ Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_miso" , $sel:slave_sclk:SPIMaster :: InputPortTag slave_sclk = Text -> InputPortTag InputPortTag forall a b. (a -> b) -> a -> b $ Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_sclk" , $sel:slave_cs:SPIMaster :: InputPortTag slave_cs = Text -> InputPortTag InputPortTag forall a b. (a -> b) -> a -> b $ Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_cs" } -instance Time t => Default (SPI v x t) where - def :: SPI v x t -def = forall t v x. Time t => Int -> Maybe Int -> SPI v x t +instance Time t => Default (SPI v x t) where + def :: SPI v x t +def = forall t v x. Time t => Int -> Maybe Int -> SPI v x t anySPI Int 0 forall a b. (a -> b) -> a -> b $ forall a. a -> Maybe a Just Int 6 -instance (ToJSON v, VarValTime v x t) => TargetSystemComponent (SPI v x t) where - moduleName :: Text -> SPI v x t -> Text +instance (ToJSON v, VarValTime v x t) => TargetSystemComponent (SPI v x t) where + moduleName :: Text -> SPI v x t -> Text moduleName Text _ SPI v x t _ = Text "pu_spi" - hardware :: Text -> SPI v x t -> Implementation -hardware Text -_tag SPI v x t -_pu = + hardware :: Text -> SPI v x t -> Implementation +hardware Text +_tag SPI v x t +_pu = Maybe String -> [Implementation] -> Implementation Aggregate forall a. Maybe a @@ -292,62 +292,62 @@ "spi/pu_master_spi.v" ] - software :: Text -> SPI v x t -> Implementation -software Text -tag SPI v x t -pu = forall i v x t. + software :: Text -> SPI v x t -> Implementation +software Text +tag SPI v x t +pu = forall i v x t. (VarValTime v x t, SimpleIOInterface i, ToJSON v) => Text -> SimpleIO i v x t -> Text -> Implementation protocolDescription Text -tag SPI v x t -pu Text +tag SPI v x t +pu Text "SPI Processor Unit" - hardwareInstance :: Text -> SPI v x t -> UnitEnv (SPI v x t) -> Verilog + hardwareInstance :: Text -> SPI v x t -> UnitEnv (SPI v x t) -> Verilog hardwareInstance - Text -tag - SimpleIO{Int + Text +tag + SimpleIO{Int bounceFilter :: Int $sel:bounceFilter:SimpleIO :: forall i v x t. SimpleIO i v x t -> Int -bounceFilter, Int +bounceFilter, Int sendN :: Int $sel:sendN:SimpleIO :: forall i v x t. SimpleIO i v x t -> Int -sendN, Int +sendN, Int receiveN :: Int $sel:receiveN:SimpleIO :: forall i v x t. SimpleIO i v x t -> Int -receiveN} +receiveN} UnitEnv - { Text + { Text sigClk :: forall m. UnitEnv m -> Text sigClk :: Text sigClk - , Text + , Text sigRst :: forall m. UnitEnv m -> Text sigRst :: Text sigRst - , Text + , Text sigCycleBegin :: forall m. UnitEnv m -> Text sigCycleBegin :: Text sigCycleBegin - , Text + , Text sigInCycle :: forall m. UnitEnv m -> Text sigInCycle :: Text sigInCycle - , Text + , Text sigCycleEnd :: forall m. UnitEnv m -> Text sigCycleEnd :: Text sigCycleEnd , valueIn :: forall m. UnitEnv m -> Maybe (Text, Text) -valueIn = Just (Text -dataIn, Text -attrIn) +valueIn = Just (Text +dataIn, Text +attrIn) , valueOut :: forall m. UnitEnv m -> Maybe (Text, Text) -valueOut = Just (Text -dataOut, Text -attrOut) +valueOut = Just (Text +dataOut, Text +attrOut) , ctrlPorts :: forall m. UnitEnv m -> Maybe (Ports m) -ctrlPorts = Just SimpleIOPorts{String +ctrlPorts = Just SimpleIOPorts{String SignalTag $sel:stop:SimpleIOPorts :: forall i v x t. Ports (SimpleIO i v x t) -> String $sel:oe:SimpleIOPorts :: forall i v x t. Ports (SimpleIO i v x t) -> SignalTag @@ -357,8 +357,8 @@ wr :: SignalTag ..} , ioPorts :: forall m. UnitEnv m -> Maybe (IOPorts m) -ioPorts = Just IOPorts (SPI v x t) -ioPorts +ioPorts = Just IOPorts (SPI v x t) +ioPorts } = [__i| #{ module_ ioPorts } \# @@ -381,13 +381,13 @@ ); |] where - module_ :: IOPorts (SPI v x t) -> Verilog -module_ SPISlave{} = Verilog + module_ :: IOPorts (SPI v x t) -> Verilog +module_ SPISlave{} = Verilog "pu_slave_spi" :: Verilog - module_ SPIMaster{} = Verilog + module_ SPIMaster{} = Verilog "pu_master_spi" - extIO :: IOPorts (SPI v x t) -> Verilog -extIO SPISlave{OutputPortTag + extIO :: IOPorts (SPI v x t) -> Verilog +extIO SPISlave{OutputPortTag InputPortTag slave_cs :: InputPortTag slave_sclk :: InputPortTag @@ -397,7 +397,7 @@ $sel:slave_sclk:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag $sel:slave_miso:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag $sel:slave_mosi:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag -..} = +..} = [__i| , .mosi( #{ slave_mosi } ) , .miso( #{ slave_miso } ) @@ -405,7 +405,7 @@ , .cs( #{ slave_cs } ) |] :: Verilog - extIO SPIMaster{OutputPortTag + extIO SPIMaster{OutputPortTag InputPortTag master_cs :: OutputPortTag master_sclk :: OutputPortTag @@ -415,91 +415,91 @@ $sel:master_sclk:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag $sel:master_miso:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag $sel:master_mosi:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag -..} = +..} = [__i| , .mosi( #{ master_mosi } ) , .miso( #{ master_miso } ) , .sclk( #{ master_sclk } ) , .cs( #{ master_cs } ) |] - hardwareInstance Text -_title SPI v x t -_pu UnitEnv (SPI v x t) -_env = forall a. HasCallStack => String -> a + hardwareInstance Text +_title SPI v x t +_pu UnitEnv (SPI v x t) +_env = forall a. HasCallStack => String -> a error String "internal error" -instance VarValTime v x t => IOTestBench (SPI v x t) v x where - testEnvironmentInitFlag :: Text -> SPI v x t -> Maybe Text -testEnvironmentInitFlag Text -tag SPI v x t -_pu = forall a. a -> Maybe a +instance VarValTime v x t => IOTestBench (SPI v x t) v x where + testEnvironmentInitFlag :: Text -> SPI v x t -> Maybe Text +testEnvironmentInitFlag Text +tag SPI v x t +_pu = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text "_env_init_flag" - testEnvironment :: Text + testEnvironment :: Text -> SPI v x t -> UnitEnv (SPI v x t) -> TestEnvironment v x -> Maybe Verilog testEnvironment - Text -tag - sio :: SPI v x t -sio@SimpleIO{Process t (StepInfo v x t) + Text +tag + sio :: SPI v x t +sio@SimpleIO{Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:SimpleIO :: forall i v x t. SimpleIO i v x t -> Process t (StepInfo v x t) -process_, Int +process_, Int bounceFilter :: Int $sel:bounceFilter:SimpleIO :: forall i v x t. SimpleIO i v x t -> Int -bounceFilter} +bounceFilter} UnitEnv - { Text + { Text sigClk :: Text sigClk :: forall m. UnitEnv m -> Text -sigClk - , Text +sigClk + , Text sigRst :: Text sigRst :: forall m. UnitEnv m -> Text -sigRst +sigRst , ctrlPorts :: forall m. UnitEnv m -> Maybe (Ports m) ctrlPorts = Just SimpleIOPorts{} , ioPorts :: forall m. UnitEnv m -> Maybe (IOPorts m) -ioPorts = Just IOPorts (SPI v x t) -ioPorts +ioPorts = Just IOPorts (SPI v x t) +ioPorts } TestEnvironment{teCntx :: forall v x. TestEnvironment v x -> Cntx v x -teCntx = cntx :: Cntx v x -cntx@Cntx{Int +teCntx = cntx :: Cntx v x +cntx@Cntx{Int cntxCycleNumber :: forall v x. Cntx v x -> Int cntxCycleNumber :: Int -cntxCycleNumber, [CycleCntx v x] +cntxCycleNumber, [CycleCntx v x] cntxProcess :: forall v x. Cntx v x -> [CycleCntx v x] cntxProcess :: [CycleCntx v x] -cntxProcess}, Int +cntxProcess}, Int teComputationDuration :: forall v x. TestEnvironment v x -> Int teComputationDuration :: Int teComputationDuration} = - let receivedVariablesSeq :: [v] -receivedVariablesSeq = + let receivedVariablesSeq :: [v] +receivedVariablesSeq = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe - ( \F v x -f -> case forall (f :: * -> * -> *) v x. + ( \F v x +f -> case forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f of +f of Just Receive{} -> forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall {c}. Set c -> c oneOf forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables F v x -f +f Maybe (Receive v x) _ -> forall a. Maybe a Nothing @@ -507,23 +507,23 @@ forall a b. (a -> b) -> a -> b $ forall a f. WithFunctions a f => a -> [f] functions Process t (StepInfo v x t) -process_ - receivedVarsValues :: [Map v x] -receivedVarsValues = forall a. Int -> [a] -> [a] +process_ + receivedVarsValues :: [Map v x] +receivedVarsValues = forall a. Int -> [a] -> [a] take Int -cntxCycleNumber forall a b. (a -> b) -> a -> b +cntxCycleNumber forall a b. (a -> b) -> a -> b $ forall v x. Ord v => Cntx v x -> [Map v x] cntxReceivedBySlice Cntx v x -cntx - sendedVariableSeq :: [v] -sendedVariableSeq = +cntx + sendedVariableSeq :: [v] +sendedVariableSeq = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe ( \case - (Target v -v) -> forall a. a -> Maybe a + (Target v +v) -> forall a. a -> Maybe a Just v -v +v EndpointRole v _ -> forall a. Maybe a Nothing @@ -533,88 +533,88 @@ Ord b => Process b (StepInfo v x t) -> [EndpointRole v] getEndpoints Process t (StepInfo v x t) -process_ - sendedVarsValues :: [HashMap v x] -sendedVarsValues = forall a. Int -> [a] -> [a] +process_ + sendedVarsValues :: [HashMap v x] +sendedVarsValues = forall a. Int -> [a] -> [a] take Int -cntxCycleNumber forall a b. (a -> b) -> a -> b +cntxCycleNumber forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall v x. CycleCntx v x -> HashMap v x cycleCntx [CycleCntx v x] -cntxProcess - wordWidth :: Int -wordWidth = forall x. Val x => x -> Int +cntxProcess + wordWidth :: Int +wordWidth = forall x. Val x => x -> Int dataWidth (forall a. Default a => a -def :: x) - frameWordCount :: Int -frameWordCount = forall a. Ord a => a -> a -> a +def :: x) + frameWordCount :: Int +frameWordCount = forall a. Ord a => a -> a -> a max (forall (t :: * -> *) a. Foldable t => t a -> Int length [v] -receivedVariablesSeq) forall a b. (a -> b) -> a -> b +receivedVariablesSeq) forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Int length [v] -sendedVariableSeq - frameWidth :: Int -frameWidth = Int -frameWordCount forall a. Num a => a -> a -> a +sendedVariableSeq + frameWidth :: Int +frameWidth = Int +frameWordCount forall a. Num a => a -> a -> a * Int -wordWidth - timeLag :: Int -timeLag = Int +wordWidth + timeLag :: Int +timeLag = Int 10 :: Int - sendingDuration :: Int -sendingDuration = + sendingDuration :: Int +sendingDuration = forall a. Ord a => a -> a -> a max (Int -teComputationDuration forall a. Num a => a -> a -> a +teComputationDuration forall a. Num a => a -> a -> a + Int 2) (Int -frameWidth forall a. Num a => a -> a -> a +frameWidth forall a. Num a => a -> a -> a * Int 2 forall a. Num a => a -> a -> a + Int -bounceFilter forall a. Num a => a -> a -> a +bounceFilter forall a. Num a => a -> a -> a + Int 2) - toVerilogLiteral :: [x] -> Doc Any -toVerilogLiteral [x] -xs = - let xs' :: [Doc Any] -xs' = forall a b. (a -> b) -> [a] -> [b] + toVerilogLiteral :: [x] -> Doc Any +toVerilogLiteral [x] +xs = + let xs' :: [Doc Any] +xs' = forall a b. (a -> b) -> [a] -> [b] map x -> Doc Any -toVerilogLiteral' [x] -xs - placeholder :: [Doc Any] -placeholder = forall a. Int -> a -> [a] +toVerilogLiteral' [x] +xs + placeholder :: [Doc Any] +placeholder = forall a. Int -> a -> [a] replicate (Int -frameWordCount forall a. Num a => a -> a -> a +frameWordCount forall a. Num a => a -> a -> a - forall (t :: * -> *) a. Foldable t => t a -> Int length [x] -xs) [i|#{ wordWidth }'d00|] +xs) [i|#{ wordWidth }'d00|] in forall ann. [Doc ann] -> Doc ann hsep forall a b. (a -> b) -> a -> b $ forall ann. Doc ann -> [Doc ann] -> [Doc ann] punctuate Doc Any ", " ([Doc Any] -xs' forall a. Semigroup a => a -> a -> a +xs' forall a. Semigroup a => a -> a -> a <> [Doc Any] -placeholder) - toVerilogLiteral' :: x -> Doc Any -toVerilogLiteral' x -x +placeholder) + toVerilogLiteral' :: x -> Doc Any +toVerilogLiteral' x +x | forall a. Num a => a -> a abs x -x forall a. Eq a => a -> a -> Bool +x forall a. Eq a => a -> a -> Bool /= x -x = [i|-#{ wordWidth }'sd#{ dataLiteral (-x) }|] +x = [i|-#{ wordWidth }'sd#{ dataLiteral (-x) }|] | Bool otherwise = [i|#{ wordWidth }'sd#{ dataLiteral x }|] - disable :: Verilog -disable = + disable :: Verilog +disable = [__i| initial begin @(negedge #{ sigRst }); @@ -622,8 +622,8 @@ end |] - envInitFlagName :: Text -envInitFlagName = + envInitFlagName :: Text +envInitFlagName = forall a. a -> Maybe a -> a fromMaybe (forall a. HasCallStack => String -> a error String @@ -631,11 +631,11 @@ $ forall pu v x. IOTestBench pu v x => Text -> pu -> Maybe Text testEnvironmentInitFlag Text -tag SPI v x t -sio +tag SPI v x t +sio in case IOPorts (SPI v x t) -ioPorts of - SPISlave{OutputPortTag +ioPorts of + SPISlave{OutputPortTag InputPortTag slave_cs :: InputPortTag slave_sclk :: InputPortTag @@ -645,21 +645,21 @@ $sel:slave_sclk:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag $sel:slave_miso:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag $sel:slave_mosi:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag -..} -> - let receiveCycle :: Map v x -> Doc Any -receiveCycle Map v x -transmit = - let xs :: [x] -xs = forall a b. (a -> b) -> [a] -> [b] -map (\v -v -> forall a. a -> Maybe a -> a +..} -> + let receiveCycle :: Map v x -> Doc Any +receiveCycle Map v x +transmit = + let xs :: [x] +xs = forall a b. (a -> b) -> [a] -> [b] +map (\v +v -> forall a. a -> Maybe a -> a fromMaybe forall a. Default a => a def forall a b. (a -> b) -> a -> b $ Map v x -transmit forall k a. Ord k => Map k a -> k -> Maybe a +transmit forall k a. Ord k => Map k a -> k -> Maybe a M.!? v -v) [v] -receivedVariablesSeq +v) [v] +receivedVariablesSeq in [__i| $display( "set data for sending #{ viaShow xs } by #{ tag }_io_test_input" ); #{ tag }_io_test_input = { #{ toVerilogLiteral xs } }; // #{ viaShow xs } @@ -669,20 +669,20 @@ |] - sendingAssert :: HashMap v x -> Doc Any -sendingAssert HashMap v x -transmit = - let xs :: [x] -xs = forall a b. (a -> b) -> [a] -> [b] -map (\v -v -> forall a. a -> Maybe a -> a + sendingAssert :: HashMap v x -> Doc Any +sendingAssert HashMap v x +transmit = + let xs :: [x] +xs = forall a b. (a -> b) -> [a] -> [b] +map (\v +v -> forall a. a -> Maybe a -> a fromMaybe forall a. Default a => a def forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup v -v HashMap v x -transmit) [v] -sendedVariableSeq +v HashMap v x +transmit) [v] +sendedVariableSeq in [__i| @(posedge #{ tag }_io_test_start_transaction); $write( "#{ tag }_io_test_output actual: %H except: %H ({ #{ toVerilogLiteral xs } })", @@ -692,8 +692,8 @@ |] - endDeviceInstance :: Verilog -endDeviceInstance = + endDeviceInstance :: Verilog +endDeviceInstance = [__i| /* #{ pretty sio } @@ -721,8 +721,8 @@ initial #{ tag }_io_test.inner.shiftreg <= 0; |] - envDeviceControl :: Verilog -envDeviceControl = + envDeviceControl :: Verilog +envDeviceControl = [__i| initial begin #{ tag }_io_test_start_transaction <= 0; @@ -738,8 +738,8 @@ // $finish; // DON'T DO THAT (with this line test can pass without data checking) end |] - envDeviceCheck :: Verilog -envDeviceCheck = + envDeviceCheck :: Verilog +envDeviceCheck = [__i| initial begin @(negedge #{ sigRst }); @@ -776,7 +776,7 @@ spi_env_init_flag <= 1; end |] - SPIMaster{OutputPortTag + SPIMaster{OutputPortTag InputPortTag master_cs :: OutputPortTag master_sclk :: OutputPortTag @@ -786,40 +786,40 @@ $sel:master_sclk:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag $sel:master_miso:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> InputPortTag $sel:master_mosi:SPIMaster :: forall v x t. IOPorts (SPI v x t) -> OutputPortTag -..} -> - let receiveCycle :: Map v x -> Doc Any -receiveCycle Map v x -transmit = - let xs :: [x] -xs = forall a b. (a -> b) -> [a] -> [b] -map (\v -v -> forall a. a -> Maybe a -> a +..} -> + let receiveCycle :: Map v x -> Doc Any +receiveCycle Map v x +transmit = + let xs :: [x] +xs = forall a b. (a -> b) -> [a] -> [b] +map (\v +v -> forall a. a -> Maybe a -> a fromMaybe forall a. Default a => a def forall a b. (a -> b) -> a -> b $ Map v x -transmit forall k a. Ord k => Map k a -> k -> Maybe a +transmit forall k a. Ord k => Map k a -> k -> Maybe a M.!? v -v) [v] -receivedVariablesSeq +v) [v] +receivedVariablesSeq in [__i| #{ tag }_io_test_input = { #{ toVerilogLiteral xs } }; // #{ xs } @(posedge #{ tag }_io_test_ready); |] - sendingAssert :: HashMap v x -> Doc Any -sendingAssert HashMap v x -transmit = - let xs :: [x] -xs = forall a b. (a -> b) -> [a] -> [b] -map (\v -v -> forall a. a -> Maybe a -> a + sendingAssert :: HashMap v x -> Doc Any +sendingAssert HashMap v x +transmit = + let xs :: [x] +xs = forall a b. (a -> b) -> [a] -> [b] +map (\v +v -> forall a. a -> Maybe a -> a fromMaybe forall a. Default a => a def forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup v -v HashMap v x -transmit) [v] -sendedVariableSeq +v HashMap v x +transmit) [v] +sendedVariableSeq in [__i| @(posedge #{ tag }_io_test_ready); $display( "#{ tag }_io_test_output except: %H ({ #{ toVerilogLiteral xs } })", { #{ toVerilogLiteral xs } } ); @@ -829,8 +829,8 @@ $display(); |] - envInstance :: Verilog -envInstance = + envInstance :: Verilog +envInstance = [__i| /* #{ pretty sio } @@ -855,8 +855,8 @@ ); |] - interactions :: Verilog -interactions = + interactions :: Verilog +interactions = [__i| // SPI Input signal generation initial begin @@ -878,22 +878,22 @@ |] in forall a. a -> Maybe a Just (Verilog -envInstance forall a. Semigroup a => a -> a -> a +envInstance forall a. Semigroup a => a -> a -> a <> forall ann. Doc ann line forall a. Semigroup a => a -> a -> a <> forall ann. Doc ann line forall a. Semigroup a => a -> a -> a <> if Int -frameWordCount forall a. Eq a => a -> a -> Bool +frameWordCount forall a. Eq a => a -> a -> Bool == Int 0 then Verilog -disable else Verilog -interactions) - testEnvironment Text -_title SPI v x t -_pu UnitEnv (SPI v x t) -_env TestEnvironment v x -_tEnv = forall a. HasCallStack => String -> a +disable else Verilog +interactions) + testEnvironment Text +_title SPI v x t +_pu UnitEnv (SPI v x t) +_env TestEnvironment v x +_tEnv = forall a. HasCallStack => String -> a error String "internal error" \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.SimpleIO.html b/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.SimpleIO.html index 1abb36e27..9e4e5b82f 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.SimpleIO.html +++ b/haddock/nitta/src/NITTA.Model.ProcessorUnits.IO.SimpleIO.html @@ -45,33 +45,33 @@ import Numeric.Interval.NonEmpty qualified as I import Prettyprinter -class Typeable i => SimpleIOInterface i +class Typeable i => SimpleIOInterface i -data SimpleIO i v x t = SimpleIO +data SimpleIO i v x t = SimpleIO { forall i v x t. SimpleIO i v x t -> Int bounceFilter :: Int , forall i v x t. SimpleIO i v x t -> Maybe Int bufferSize :: Maybe Int -- ^ if 'Nothing' then size should defined by algorithm , forall i v x t. SimpleIO i v x t -> [Q v x] -receiveQueue :: [Q v x] +receiveQueue :: [Q v x] , forall i v x t. SimpleIO i v x t -> Int receiveN :: Int , forall i v x t. SimpleIO i v x t -> Bool isReceiveOver :: Bool -- ^ set if send buffer overlap receive buffer , forall i v x t. SimpleIO i v x t -> [Q v x] -sendQueue :: [Q v x] +sendQueue :: [Q v x] , forall i v x t. SimpleIO i v x t -> Int sendN :: Int , forall i v x t. SimpleIO i v x t -> Process t (StepInfo v x t) -process_ :: Process t (StepInfo v x t) +process_ :: Process t (StepInfo v x t) } -instance (VarValTime v x t, SimpleIOInterface i) => Pretty (SimpleIO i v x t) where - pretty :: forall ann. SimpleIO i v x t -> Doc ann -pretty SimpleIO i v x t -io = +instance (VarValTime v x t, SimpleIOInterface i) => Pretty (SimpleIO i v x t) where + pretty :: forall ann. SimpleIO i v x t -> Doc ann +pretty SimpleIO i v x t +io = [__i| SimpleIO: bounceFilter: #{ bounceFilter io } @@ -84,23 +84,23 @@ #{ indent 4 $ pretty $ process_ io } |] -data Q v x = Q {forall v x. Q v x -> [v] -vars :: [v], forall v x. Q v x -> F v x -function :: F v x, forall v x. Q v x -> [Int] +data Q v x = Q {forall v x. Q v x -> [v] +vars :: [v], forall v x. Q v x -> F v x +function :: F v x, forall v x. Q v x -> [Int] cads :: [ProcessStepID]} -instance (Var v, Val x) => Show (Q v x) where - show :: Q v x -> String -show Q{[v] +instance (Var v, Val x) => Show (Q v x) where + show :: Q v x -> String +show Q{[v] vars :: [v] $sel:vars:Q :: forall v x. Q v x -> [v] -vars, F v x +vars, F v x function :: F v x $sel:function:Q :: forall v x. Q v x -> F v x -function, [Int] +function, [Int] cads :: [Int] $sel:cads:Q :: forall v x. Q v x -> [Int] -cads} = +cads} = forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ String @@ -110,59 +110,59 @@ <> forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap forall a. ToString a => a -> String toString [v] -vars forall a. Semigroup a => a -> a -> a +vars forall a. Semigroup a => a -> a -> a <> String "," , String "function: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show F v x -function forall a. Semigroup a => a -> a -> a +function forall a. Semigroup a => a -> a -> a <> String "," , String "cads : " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show [Int] -cads forall a. Semigroup a => a -> a -> a +cads forall a. Semigroup a => a -> a -> a <> String "}" ] instance - (VarValTime v x t, SimpleIOInterface i) => - ProcessorUnit (SimpleIO i v x t) v x t + (VarValTime v x t, SimpleIOInterface i) => + ProcessorUnit (SimpleIO i v x t) v x t where - tryBind :: F v x -> SimpleIO i v x t -> Either String (SimpleIO i v x t) -tryBind F v x -f sio :: SimpleIO i v x t -sio@SimpleIO{[Q v x] + tryBind :: F v x -> SimpleIO i v x t -> Either String (SimpleIO i v x t) +tryBind F v x +f sio :: SimpleIO i v x t +sio@SimpleIO{[Q v x] sendQueue :: [Q v x] $sel:sendQueue:SimpleIO :: forall i v x t. SimpleIO i v x t -> [Q v x] -sendQueue, [Q v x] +sendQueue, [Q v x] receiveQueue :: [Q v x] $sel:receiveQueue:SimpleIO :: forall i v x t. SimpleIO i v x t -> [Q v x] -receiveQueue, Int +receiveQueue, Int receiveN :: Int $sel:receiveN:SimpleIO :: forall i v x t. SimpleIO i v x t -> Int -receiveN, Int +receiveN, Int sendN :: Int $sel:sendN:SimpleIO :: forall i v x t. SimpleIO i v x t -> Int -sendN, Maybe Int +sendN, Maybe Int bufferSize :: Maybe Int $sel:bufferSize:SimpleIO :: forall i v x t. SimpleIO i v x t -> Maybe Int -bufferSize} +bufferSize} | Just F.Receive{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f +f , forall a. a -> Maybe a -> a fromMaybe forall a. Bounded a => a maxBound Maybe Int -bufferSize forall a. Eq a => a -> a -> Bool +bufferSize forall a. Eq a => a -> a -> Bool == Int -receiveN = +receiveN = forall a b. a -> Either a b Left String "IO process unit to small buffer size" @@ -170,102 +170,102 @@ (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f +f , forall a. a -> Maybe a -> a fromMaybe forall a. Bounded a => a maxBound Maybe Int -bufferSize forall a. Eq a => a -> a -> Bool +bufferSize forall a. Eq a => a -> a -> Bool == Int -sendN = +sendN = forall a b. a -> Either a b Left String "IO process unit to small buffer size" - | Just (F.Receive (O Set v -vs)) <- forall (f :: * -> * -> *) v x. + | Just (F.Receive (O Set v +vs)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f - , let ([Int] -cads, Process t (StepInfo v x t) -process_) = forall {u} {v} {x} {t} {a}. +f + , let ([Int] +cads, Process t (StepInfo v x t) +process_) = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) runSchedule SimpleIO i v x t -sio forall a b. (a -> b) -> a -> b +sio forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *} {a}. (MonadState (Schedule pu v x t) m, Show a) => a -> m [Int] scheduleFunctionBind F v x -f = +f = forall a b. b -> Either a b Right SimpleIO i v x t -sio +sio { $sel:receiveQueue:SimpleIO :: [Q v x] receiveQueue = Q{$sel:vars:Q :: [v] vars = forall a. Set a -> [a] S.elems Set v -vs, $sel:function:Q :: F v x +vs, $sel:function:Q :: F v x function = F v x -f, [Int] +f, [Int] cads :: [Int] $sel:cads:Q :: [Int] -cads} forall a. a -> [a] -> [a] +cads} forall a. a -> [a] -> [a] : [Q v x] -receiveQueue +receiveQueue , $sel:receiveN:SimpleIO :: Int receiveN = Int -receiveN forall a. Num a => a -> a -> a +receiveN forall a. Num a => a -> a -> a + Int 1 , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:SimpleIO :: Process t (StepInfo v x t) -process_ +process_ } - | Just (F.Send (I v -v)) <- forall (f :: * -> * -> *) v x. + | Just (F.Send (I v +v)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f - , let ([Int] -cads, Process t (StepInfo v x t) -process_) = forall {u} {v} {x} {t} {a}. +f + , let ([Int] +cads, Process t (StepInfo v x t) +process_) = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) runSchedule SimpleIO i v x t -sio forall a b. (a -> b) -> a -> b +sio forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *} {a}. (MonadState (Schedule pu v x t) m, Show a) => a -> m [Int] scheduleFunctionBind F v x -f = +f = forall a b. b -> Either a b Right SimpleIO i v x t -sio +sio { $sel:sendQueue:SimpleIO :: [Q v x] sendQueue = Q{$sel:vars:Q :: [v] vars = [v -v], $sel:function:Q :: F v x +v], $sel:function:Q :: F v x function = F v x -f, [Int] +f, [Int] cads :: [Int] $sel:cads:Q :: [Int] -cads} forall a. a -> [a] -> [a] +cads} forall a. a -> [a] -> [a] : [Q v x] -sendQueue +sendQueue , $sel:sendN:SimpleIO :: Int sendN = Int -sendN forall a. Num a => a -> a -> a +sendN forall a. Num a => a -> a -> a + Int 1 , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:SimpleIO :: Process t (StepInfo v x t) -process_ +process_ } | Bool otherwise = forall a b. a -> Either a b @@ -274,42 +274,42 @@ "IO processor unit do not support: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show F v x -f +f - process :: SimpleIO i v x t -> Process t (StepInfo v x t) + process :: SimpleIO i v x t -> Process t (StepInfo v x t) process = forall i v x t. SimpleIO i v x t -> Process t (StepInfo v x t) process_ -instance BreakLoopProblem (SimpleIO i v x t) v x -instance ConstantFoldingProblem (SimpleIO i v x t) v x -instance OptimizeAccumProblem (SimpleIO i v x t) v x -instance ResolveDeadlockProblem (SimpleIO i v x t) v x +instance BreakLoopProblem (SimpleIO i v x t) v x +instance ConstantFoldingProblem (SimpleIO i v x t) v x +instance OptimizeAccumProblem (SimpleIO i v x t) v x +instance ResolveDeadlockProblem (SimpleIO i v x t) v x instance - (VarValTime v x t, SimpleIOInterface i) => - EndpointProblem (SimpleIO i v x t) v t + (VarValTime v x t, SimpleIOInterface i) => + EndpointProblem (SimpleIO i v x t) v t where - endpointOptions :: SimpleIO i v x t -> [EndpointSt v (TimeConstraint t)] -endpointOptions pu :: SimpleIO i v x t -pu@SimpleIO{[Q v x] + endpointOptions :: SimpleIO i v x t -> [EndpointSt v (TimeConstraint t)] +endpointOptions pu :: SimpleIO i v x t +pu@SimpleIO{[Q v x] receiveQueue :: [Q v x] $sel:receiveQueue:SimpleIO :: forall i v x t. SimpleIO i v x t -> [Q v x] -receiveQueue, [Q v x] +receiveQueue, [Q v x] sendQueue :: [Q v x] $sel:sendQueue:SimpleIO :: forall i v x t. SimpleIO i v x t -> [Q v x] -sendQueue} = - let source :: [v] -> EndpointSt v (TimeConstraint t) -source [v] -vs = forall v tp. EndpointRole v -> tp -> EndpointSt v tp +sendQueue} = + let source :: [v] -> EndpointSt v (TimeConstraint t) +source [v] +vs = forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. Set v -> EndpointRole v Source forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a S.fromList [v] -vs) forall a b. (a -> b) -> a -> b +vs) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (forall u t. NextTick u t => u -> t nextTick SimpleIO i v x t -pu forall a. Num a => a -> a -> a +pu forall a. Num a => a -> a -> a + t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a @@ -317,83 +317,83 @@ 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) - receiveOpts :: [EndpointSt v (TimeConstraint t)] -receiveOpts = forall a b. (a -> b) -> [a] -> [b] + receiveOpts :: [EndpointSt v (TimeConstraint t)] +receiveOpts = forall a b. (a -> b) -> [a] -> [b] map ([v] -> EndpointSt v (TimeConstraint t) -source forall b c a. (b -> c) -> (a -> b) -> a -> c +source forall b c a. (b -> c) -> (a -> b) -> a -> c . forall v x. Q v x -> [v] vars) [Q v x] -receiveQueue +receiveQueue - target :: v -> EndpointSt v (TimeConstraint t) -target v -v = forall v tp. EndpointRole v -> tp -> EndpointSt v tp + target :: v -> EndpointSt v (TimeConstraint t) +target v +v = forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. v -> EndpointRole v Target v -v) forall a b. (a -> b) -> a -> b +v) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (forall u t. NextTick u t => u -> t nextTick SimpleIO i v x t -pu forall a. Ord a => a -> a -> Interval a +pu forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) (forall a. a -> Interval a I.singleton t 1) - sendOpts :: [EndpointSt v (TimeConstraint t)] -sendOpts = forall a b. (a -> b) -> [a] -> [b] + sendOpts :: [EndpointSt v (TimeConstraint t)] +sendOpts = forall a b. (a -> b) -> [a] -> [b] map (v -> EndpointSt v (TimeConstraint t) -target forall b c a. (b -> c) -> (a -> b) -> a -> c +target forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [a] -> a head forall b c a. (b -> c) -> (a -> b) -> a -> c . forall v x. Q v x -> [v] vars) [Q v x] -sendQueue +sendQueue in [EndpointSt v (TimeConstraint t)] -receiveOpts forall a. [a] -> [a] -> [a] +receiveOpts forall a. [a] -> [a] -> [a] ++ [EndpointSt v (TimeConstraint t)] -sendOpts +sendOpts - endpointDecision :: SimpleIO i v x t -> EndpointSt v (Interval t) -> SimpleIO i v x t -endpointDecision sio :: SimpleIO i v x t -sio@SimpleIO{[Q v x] + endpointDecision :: SimpleIO i v x t -> EndpointSt v (Interval t) -> SimpleIO i v x t +endpointDecision sio :: SimpleIO i v x t +sio@SimpleIO{[Q v x] receiveQueue :: [Q v x] $sel:receiveQueue:SimpleIO :: forall i v x t. SimpleIO i v x t -> [Q v x] -receiveQueue} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Source Set v -vs, Interval t +receiveQueue} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Source Set v +vs, Interval t epAt :: forall v tp. EndpointSt v tp -> tp epAt :: Interval t epAt} - | ([q :: Q v x -q@Q{F v x + | ([q :: Q v x +q@Q{F v x function :: F v x $sel:function:Q :: forall v x. Q v x -> F v x -function, $sel:vars:Q :: forall v x. Q v x -> [v] -vars = [v] -allVars}], [Q v x] -receiveQueue') <- +function, $sel:vars:Q :: forall v x. Q v x -> [v] +vars = [v] +allVars}], [Q v x] +receiveQueue') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) L.partition ((Set v -vs forall a. Ord a => Set a -> Set a -> Bool +vs forall a. Ord a => Set a -> Set a -> Bool `S.isSubsetOf`) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Ord a => [a] -> Set a S.fromList forall b c a. (b -> c) -> (a -> b) -> a -> c . forall v x. Q v x -> [v] vars) [Q v x] -receiveQueue - , let remainVars :: [v] -remainVars = [v] -allVars forall a. Eq a => [a] -> [a] -> [a] +receiveQueue + , let remainVars :: [v] +remainVars = [v] +allVars forall a. Eq a => [a] -> [a] -> [a] L.\\ forall a. Set a -> [a] S.elems Set v -vs - process_ :: Process t (StepInfo v x t) -process_ = forall {u} {v} {x} {t} {a}. +vs + process_ :: Process t (StepInfo v x t) +process_ = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule SimpleIO i v x t -sio forall a b. (a -> b) -> a -> b +sio forall a b. (a -> b) -> a -> b $ do forall (f :: * -> *) a. Functor f => f a -> f () void forall a b. (a -> b) -> a -> b @@ -401,89 +401,89 @@ MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe Interval t -epAt forall a b. (a -> b) -> a -> b +epAt forall a b. (a -> b) -> a -> b $ forall i v x t. Bool -> Instruction (SimpleIO i v x t) Receiving forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -remainVars +remainVars forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -remainVars) forall a b. (a -> b) -> a -> b +remainVars) forall a b. (a -> b) -> a -> b $ forall (f :: * -> *) a. Functor f => f a -> f () void forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => Interval t -> F v x -> m [Int] scheduleFunction Interval t -epAt F v x -function - receiveQueue'' :: [Q v x] -receiveQueue'' = +epAt F v x +function + receiveQueue'' :: [Q v x] +receiveQueue'' = if forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -remainVars +remainVars then [Q v x] -receiveQueue' +receiveQueue' else Q v x -q{$sel:vars:Q :: [v] +q{$sel:vars:Q :: [v] vars = [v] -remainVars} forall a. a -> [a] -> [a] +remainVars} forall a. a -> [a] -> [a] : [Q v x] -receiveQueue' = +receiveQueue' = SimpleIO i v x t -sio{$sel:receiveQueue:SimpleIO :: [Q v x] +sio{$sel:receiveQueue:SimpleIO :: [Q v x] receiveQueue = [Q v x] -receiveQueue'', Process t (StepInfo v x t) +receiveQueue'', Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:SimpleIO :: Process t (StepInfo v x t) -process_} - endpointDecision sio :: SimpleIO i v x t -sio@SimpleIO{[Q v x] +process_} + endpointDecision sio :: SimpleIO i v x t +sio@SimpleIO{[Q v x] sendQueue :: [Q v x] $sel:sendQueue:SimpleIO :: forall i v x t. SimpleIO i v x t -> [Q v x] -sendQueue, Int +sendQueue, Int sendN :: Int $sel:sendN:SimpleIO :: forall i v x t. SimpleIO i v x t -> Int -sendN, [Q v x] +sendN, [Q v x] receiveQueue :: [Q v x] $sel:receiveQueue:SimpleIO :: forall i v x t. SimpleIO i v x t -> [Q v x] -receiveQueue, Int +receiveQueue, Int receiveN :: Int $sel:receiveN:SimpleIO :: forall i v x t. SimpleIO i v x t -> Int -receiveN} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Target v -v, Interval t +receiveN} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Target v +v, Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} - | ([Q{F v x +epAt} + | ([Q{F v x function :: F v x $sel:function:Q :: forall v x. Q v x -> F v x -function}], [Q v x] -sendQueue') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) +function}], [Q v x] +sendQueue') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) L.partition ((v -v forall a. Eq a => a -> a -> Bool +v forall a. Eq a => a -> a -> Bool ==) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [a] -> a head forall b c a. (b -> c) -> (a -> b) -> a -> c . forall v x. Q v x -> [v] vars) [Q v x] -sendQueue - , let process_ :: Process t (StepInfo v x t) -process_ = forall {u} {v} {x} {t} {a}. +sendQueue + , let process_ :: Process t (StepInfo v x t) +process_ = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule SimpleIO i v x t -sio forall a b. (a -> b) -> a -> b +sio forall a b. (a -> b) -> a -> b $ do forall (f :: * -> *) a. Functor f => f a -> f () void forall a b. (a -> b) -> a -> b @@ -491,44 +491,44 @@ MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe Interval t -epAt forall i v x t. Instruction (SimpleIO i v x t) +epAt forall i v x t. Instruction (SimpleIO i v x t) Sending forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => Interval t -> F v x -> m [Int] scheduleFunction Interval t -epAt F v x -function = +epAt F v x +function = SimpleIO i v x t -sio +sio { $sel:sendQueue:SimpleIO :: [Q v x] sendQueue = [Q v x] -sendQueue' +sendQueue' , $sel:isReceiveOver:SimpleIO :: Bool isReceiveOver = (Int -sendN forall a. Num a => a -> a -> a +sendN forall a. Num a => a -> a -> a - forall (t :: * -> *) a. Foldable t => t a -> Int length [Q v x] -sendQueue) forall a. Ord a => a -> a -> Bool +sendQueue) forall a. Ord a => a -> a -> Bool >= (Int -receiveN forall a. Num a => a -> a -> a +receiveN forall a. Num a => a -> a -> a - forall (t :: * -> *) a. Foldable t => t a -> Int length [Q v x] -receiveQueue) +receiveQueue) , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:SimpleIO :: Process t (StepInfo v x t) -process_ +process_ } - endpointDecision SimpleIO i v x t -pu EndpointSt v (Interval t) -d = forall a. HasCallStack => String -> a + endpointDecision SimpleIO i v x t +pu EndpointSt v (Interval t) +d = forall a. HasCallStack => String -> a error [i|incorrect decision #{ d } for #{ pretty pu }|] {- | Access to received data buffer was implemented like a queue. OE signal read @@ -554,11 +554,11 @@ 6. Receive True (OE and WR signal) - write a value to data_bus from receive buffer[0] with pointer increment. -} -instance Controllable (SimpleIO i v x t) where - data Instruction (SimpleIO i v x t) +instance Controllable (SimpleIO i v x t) where + data Instruction (SimpleIO i v x t) = Receiving Bool | Sending - deriving (Int -> Instruction (SimpleIO i v x t) -> ShowS + deriving (Int -> Instruction (SimpleIO i v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall i v x t. Int -> Instruction (SimpleIO i v x t) -> ShowS @@ -572,13 +572,13 @@ $cshowsPrec :: forall i v x t. Int -> Instruction (SimpleIO i v x t) -> ShowS Show) - data Microcode (SimpleIO i v x t) = Microcode + data Microcode (SimpleIO i v x t) = Microcode { forall i v x t. Microcode (SimpleIO i v x t) -> Bool wrSignal :: Bool , forall i v x t. Microcode (SimpleIO i v x t) -> Bool oeSignal :: Bool } - deriving (Int -> Microcode (SimpleIO i v x t) -> ShowS + deriving (Int -> Microcode (SimpleIO i v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall i v x t. Int -> Microcode (SimpleIO i v x t) -> ShowS @@ -590,7 +590,7 @@ $cshow :: forall i v x t. Microcode (SimpleIO i v x t) -> String showsPrec :: Int -> Microcode (SimpleIO i v x t) -> ShowS $cshowsPrec :: forall i v x t. Int -> Microcode (SimpleIO i v x t) -> ShowS -Show, Microcode (SimpleIO i v x t) +Show, Microcode (SimpleIO i v x t) -> Microcode (SimpleIO i v x t) -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall i v x t. @@ -606,7 +606,7 @@ $c== :: forall i v x t. Microcode (SimpleIO i v x t) -> Microcode (SimpleIO i v x t) -> Bool -Eq, Microcode (SimpleIO i v x t) +Eq, Microcode (SimpleIO i v x t) -> Microcode (SimpleIO i v x t) -> Bool Microcode (SimpleIO i v x t) -> Microcode (SimpleIO i v x t) -> Ordering @@ -667,9 +667,9 @@ -> Microcode (SimpleIO i v x t) -> Ordering Ord) - zipSignalTagsAndValues :: Ports (SimpleIO i v x t) + zipSignalTagsAndValues :: Ports (SimpleIO i v x t) -> Microcode (SimpleIO i v x t) -> [(SignalTag, SignalValue)] -zipSignalTagsAndValues SimpleIOPorts{String +zipSignalTagsAndValues SimpleIOPorts{String SignalTag $sel:stop:SimpleIOPorts :: forall i v x t. Ports (SimpleIO i v x t) -> String $sel:oe:SimpleIOPorts :: forall i v x t. Ports (SimpleIO i v x t) -> SignalTag @@ -677,43 +677,43 @@ stop :: String oe :: SignalTag wr :: SignalTag -..} Microcode{Bool +..} Microcode{Bool oeSignal :: Bool wrSignal :: Bool $sel:oeSignal:Microcode :: forall i v x t. Microcode (SimpleIO i v x t) -> Bool $sel:wrSignal:Microcode :: forall i v x t. Microcode (SimpleIO i v x t) -> Bool -..} = +..} = [ (SignalTag -wr, Bool -> SignalValue +wr, Bool -> SignalValue Bool Bool -wrSignal) +wrSignal) , (SignalTag -oe, Bool -> SignalValue +oe, Bool -> SignalValue Bool Bool -oeSignal) +oeSignal) ] - usedPortTags :: Ports (SimpleIO i v x t) -> [SignalTag] -usedPortTags SimpleIOPorts{SignalTag + usedPortTags :: Ports (SimpleIO i v x t) -> [SignalTag] +usedPortTags SimpleIOPorts{SignalTag wr :: SignalTag $sel:wr:SimpleIOPorts :: forall i v x t. Ports (SimpleIO i v x t) -> SignalTag -wr, SignalTag +wr, SignalTag oe :: SignalTag $sel:oe:SimpleIOPorts :: forall i v x t. Ports (SimpleIO i v x t) -> SignalTag -oe} = [SignalTag -wr, SignalTag -oe] +oe} = [SignalTag +wr, SignalTag +oe] - takePortTags :: [SignalTag] -> SimpleIO i v x t -> Ports (SimpleIO i v x t) -takePortTags (SignalTag -wr : SignalTag -oe : [SignalTag] + takePortTags :: [SignalTag] -> SimpleIO i v x t -> Ports (SimpleIO i v x t) +takePortTags (SignalTag +wr : SignalTag +oe : [SignalTag] _) SimpleIO i v x t _ = forall i v x t. SignalTag -> SignalTag -> String -> Ports (SimpleIO i v x t) SimpleIOPorts SignalTag -wr SignalTag -oe String +wr SignalTag +oe String "stop" takePortTags [SignalTag] _ SimpleIO i v x t @@ -721,8 +721,8 @@ error String "can not take port tags, tags are over" -instance Default (Microcode (SimpleIO i v x t)) where - def :: Microcode (SimpleIO i v x t) +instance Default (Microcode (SimpleIO i v x t)) where + def :: Microcode (SimpleIO i v x t) def = Microcode { $sel:wrSignal:Microcode :: Bool @@ -733,24 +733,24 @@ False } -instance UnambiguouslyDecode (SimpleIO i v x t) where - decodeInstruction :: Instruction (SimpleIO i v x t) -> Microcode (SimpleIO i v x t) +instance UnambiguouslyDecode (SimpleIO i v x t) where + decodeInstruction :: Instruction (SimpleIO i v x t) -> Microcode (SimpleIO i v x t) decodeInstruction Instruction (SimpleIO i v x t) R:InstructionSimpleIO i v x t Sending = forall a. Default a => a def{$sel:wrSignal:Microcode :: Bool wrSignal = Bool True} - decodeInstruction (Receiving Bool -next) = forall a. Default a => a + decodeInstruction (Receiving Bool +next) = forall a. Default a => a def{$sel:oeSignal:Microcode :: Bool oeSignal = Bool True, $sel:wrSignal:Microcode :: Bool wrSignal = Bool -next} +next} -instance Connected (SimpleIO i v x t) where - data Ports (SimpleIO i v x t) = SimpleIOPorts +instance Connected (SimpleIO i v x t) where + data Ports (SimpleIO i v x t) = SimpleIOPorts { forall i v x t. Ports (SimpleIO i v x t) -> SignalTag wr, forall i v x t. Ports (SimpleIO i v x t) -> SignalTag oe :: SignalTag @@ -760,7 +760,7 @@ forall i v x t. Ports (SimpleIO i v x t) -> String stop :: String } - deriving (Int -> Ports (SimpleIO i v x t) -> ShowS + deriving (Int -> Ports (SimpleIO i v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall i v x t. Int -> Ports (SimpleIO i v x t) -> ShowS @@ -774,11 +774,11 @@ $cshowsPrec :: forall i v x t. Int -> Ports (SimpleIO i v x t) -> ShowS Show) -instance Var v => Locks (SimpleIO i v x t) v where - locks :: SimpleIO i v x t -> [Lock v] +instance Var v => Locks (SimpleIO i v x t) v where + locks :: SimpleIO i v x t -> [Lock v] locks SimpleIO{} = [] -data ProtocolDescription v = ProtocolDescription +data ProtocolDescription v = ProtocolDescription { forall v. ProtocolDescription v -> Text description :: T.Text , forall v. ProtocolDescription v -> Text @@ -786,9 +786,9 @@ , forall v. ProtocolDescription v -> Text dataType :: T.Text , forall v. ProtocolDescription v -> [v] -toNitta :: [v] +toNitta :: [v] , forall v. ProtocolDescription v -> [v] -fromNitta :: [v] +fromNitta :: [v] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -798,22 +798,22 @@ $cfrom :: forall v x. ProtocolDescription v -> Rep (ProtocolDescription v) x Generic) -instance ToJSON v => ToJSON (ProtocolDescription v) +instance ToJSON v => ToJSON (ProtocolDescription v) protocolDescription :: - forall i v x t. - (VarValTime v x t, SimpleIOInterface i, ToJSON v) => + forall i v x t. + (VarValTime v x t, SimpleIOInterface i, ToJSON v) => T.Text -> - SimpleIO i v x t -> + SimpleIO i v x t -> T.Text -> Implementation protocolDescription :: forall i v x t. (VarValTime v x t, SimpleIOInterface i, ToJSON v) => Text -> SimpleIO i v x t -> Text -> Implementation -protocolDescription Text -tag SimpleIO i v x t -io Text -d +protocolDescription Text +tag SimpleIO i v x t +io Text +d | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool @@ -822,29 +822,29 @@ EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] endpointOptions SimpleIO i v x t -io = forall a. HasCallStack => String -> a +io = forall a. HasCallStack => String -> a error String "EndpointProblem is not completed" | Bool otherwise = - let impFile :: String -impFile = forall a. ToString a => a -> String + let impFile :: String +impFile = forall a. ToString a => a -> String toString forall a b. (a -> b) -> a -> b $ Text -tag forall a. Semigroup a => a -> a -> a +tag forall a. Semigroup a => a -> a -> a <> Text ".json" - fbs :: [F v x] -fbs = forall {b} {v} {x} {t}. + fbs :: [F v x] +fbs = forall {b} {v} {x} {t}. Ord b => Process b (StepInfo v x t) -> [F v x] getIntermediates forall a b. (a -> b) -> a -> b $ forall i v x t. SimpleIO i v x t -> Process t (StepInfo v x t) process_ SimpleIO i v x t -io +io in String -> Text -> Implementation Immediate String -impFile forall a b. (a -> b) -> a -> b +impFile forall a b. (a -> b) -> a -> b $ Text -> Text toStrict forall a b. (a -> b) -> a -> b @@ -860,7 +860,7 @@ ProtocolDescription { $sel:description:ProtocolDescription :: Text description = Text -d +d , $sel:interface:ProtocolDescription :: Text interface = forall {a}. Show a => a -> Text showText forall a b. (a -> b) -> a -> b @@ -868,7 +868,7 @@ Typeable a => proxy a -> TypeRep typeRep (forall {k} (t :: k). Proxy t -Proxy :: Proxy i) +Proxy :: Proxy i) , $sel:dataType:ProtocolDescription :: Text dataType = forall {a}. Show a => a -> Text showText forall a b. (a -> b) -> a -> b @@ -876,7 +876,7 @@ Typeable a => proxy a -> TypeRep typeRep (forall {k} (t :: k). Proxy t -Proxy :: Proxy x) +Proxy :: Proxy x) , $sel:toNitta:ProtocolDescription :: [v] toNitta = forall a b. (a -> b) -> [a] -> [b] map (forall {c}. Set c -> c @@ -886,7 +886,7 @@ $ forall a. (a -> Bool) -> [a] -> [a] filter forall v x. (Typeable v, Typeable x) => F v x -> Bool isReceive [F v x] -fbs +fbs , $sel:fromNitta:ProtocolDescription :: [v] fromNitta = forall a b. (a -> b) -> [a] -> [b] map (forall {c}. Set c -> c @@ -896,32 +896,32 @@ $ forall a. (a -> Bool) -> [a] -> [a] filter forall v x. (Typeable v, Typeable x) => F v x -> Bool isSend [F v x] -fbs +fbs } -isReceive :: (Typeable v, Typeable x) => F v x -> Bool +isReceive :: (Typeable v, Typeable x) => F v x -> Bool isReceive :: forall v x. (Typeable v, Typeable x) => F v x -> Bool -isReceive F v x -f +isReceive F v x +f | Just F.Receive{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = Bool +f = Bool True | Bool otherwise = Bool False -isSend :: (Typeable v, Typeable x) => F v x -> Bool +isSend :: (Typeable v, Typeable x) => F v x -> Bool isSend :: forall v x. (Typeable v, Typeable x) => F v x -> Bool -isSend F v x -f +isSend F v x +f | Just F.Send{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = Bool +f = Bool True | Bool otherwise = Bool diff --git a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Multiplier.html b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Multiplier.html index ab15175e4..0513990a5 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Multiplier.html +++ b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Multiplier.html @@ -353,9 +353,9 @@ {- | It is a PU model state representation, which describes each state of synthesis model for that PU. -} -data Multiplier v x t = Multiplier +data Multiplier v x t = Multiplier { forall v x t. Multiplier v x t -> [F v x] -remain :: [F v x] +remain :: [F v x] -- ^ List of the assigned but not processed functions. To execute a -- function: -- @@ -366,19 +366,19 @@ -- -- An assigned function can be executed in random order. , forall v x t. Multiplier v x t -> [v] -targets :: [v] +targets :: [v] -- ^ List of variables, which is needed to push to the PU for current -- function evaluation. , forall v x t. Multiplier v x t -> [v] -sources :: [v] +sources :: [v] -- ^ List of variables, which is needed to pull from PU for current -- function evaluation. Pull order is arbitrary. All pulled variables -- correspond to the same value (same result). , forall v x t. Multiplier v x t -> Maybe (F v x) -currentWork :: Maybe (F v x) +currentWork :: Maybe (F v x) -- ^ Current work, if some function is executed. , forall v x t. Multiplier v x t -> Process t (StepInfo v x t) -process_ :: Process t (StepInfo v x t) +process_ :: Process t (StepInfo v x t) -- ^ Description of scheduled computation process -- ('NITTA.Model.ProcessorUnits.Types'). , forall v x t. Multiplier v x t -> Bool @@ -389,27 +389,27 @@ -- IP-core. } -instance VarValTime v x t => Pretty (Multiplier v x t) where - pretty :: forall ann. Multiplier v x t -> Doc ann -pretty Multiplier{[F v x] +instance VarValTime v x t => Pretty (Multiplier v x t) where + pretty :: forall ann. Multiplier v x t -> Doc ann +pretty Multiplier{[F v x] remain :: [F v x] $sel:remain:Multiplier :: forall v x t. Multiplier v x t -> [F v x] -remain, [v] +remain, [v] targets :: [v] $sel:targets:Multiplier :: forall v x t. Multiplier v x t -> [v] -targets, [v] +targets, [v] sources :: [v] $sel:sources:Multiplier :: forall v x t. Multiplier v x t -> [v] -sources, Maybe (F v x) +sources, Maybe (F v x) currentWork :: Maybe (F v x) $sel:currentWork:Multiplier :: forall v x t. Multiplier v x t -> Maybe (F v x) -currentWork, Process t (StepInfo v x t) +currentWork, Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Multiplier :: forall v x t. Multiplier v x t -> Process t (StepInfo v x t) -process_, Bool +process_, Bool isMocked :: Bool $sel:isMocked:Multiplier :: forall v x t. Multiplier v x t -> Bool -isMocked} = +isMocked} = [__i| Multiplier: remain: #{ remain } @@ -425,8 +425,8 @@ more information, look hardware function in 'TargetSystemComponent' class. -} multiplier :: Bool -> Multiplier v x t -multiplier Bool -mock = +multiplier Bool +mock = Multiplier { $sel:remain:Multiplier :: [F v x] remain = [] @@ -442,44 +442,44 @@ def , $sel:isMocked:Multiplier :: Bool isMocked = Bool -mock +mock } -- | Default initial state of multiplier PU model. -instance Time t => Default (Multiplier v x t) where - def :: Multiplier v x t -def = forall {t} {v} {x}. Default t => Bool -> Multiplier v x t +instance Time t => Default (Multiplier v x t) where + def :: Multiplier v x t +def = forall {t} {v} {x}. Default t => Bool -> Multiplier v x t multiplier Bool True -instance Default x => DefaultX (Multiplier v x t) x +instance Default x => DefaultX (Multiplier v x t) x {- | This class is allowed to extract all bound functions. It has a very simple implementation: we take process description (all planned functions), and function in progress, if it is. -} -instance Ord t => WithFunctions (Multiplier v x t) (F v x) where - functions :: Multiplier v x t -> [F v x] -functions Multiplier{Process t (StepInfo v x t) +instance Ord t => WithFunctions (Multiplier v x t) (F v x) where + functions :: Multiplier v x t -> [F v x] +functions Multiplier{Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Multiplier :: forall v x t. Multiplier v x t -> Process t (StepInfo v x t) -process_, [F v x] +process_, [F v x] remain :: [F v x] $sel:remain:Multiplier :: forall v x t. Multiplier v x t -> [F v x] -remain, Maybe (F v x) +remain, Maybe (F v x) currentWork :: Maybe (F v x) $sel:currentWork:Multiplier :: forall v x t. Multiplier v x t -> Maybe (F v x) -currentWork} = +currentWork} = forall a f. WithFunctions a f => a -> [f] functions Process t (StepInfo v x t) -process_ +process_ forall a. [a] -> [a] -> [a] ++ [F v x] -remain +remain forall a. [a] -> [a] -> [a] ++ forall a. Maybe a -> [a] maybeToList Maybe (F v x) -currentWork +currentWork {- | Tracking internal dependencies on the processed variables. It includes: @@ -488,69 +488,69 @@ - dependencies of all remain functions from the currently evaluated function (if it is). -} -instance Var v => Locks (Multiplier v x t) v where - locks :: Multiplier v x t -> [Lock v] -locks Multiplier{[F v x] +instance Var v => Locks (Multiplier v x t) v where + locks :: Multiplier v x t -> [Lock v] +locks Multiplier{[F v x] remain :: [F v x] $sel:remain:Multiplier :: forall v x t. Multiplier v x t -> [F v x] -remain, [v] +remain, [v] sources :: [v] $sel:sources:Multiplier :: forall v x t. Multiplier v x t -> [v] -sources, [v] +sources, [v] targets :: [v] $sel:targets:Multiplier :: forall v x t. Multiplier v x t -> [v] -targets} = +targets} = [ Lock{v lockBy :: v lockBy :: v -lockBy, v +lockBy, v locked :: v locked :: v -locked} - | v -locked <- [v] -sources - , v -lockBy <- [v] -targets +locked} + | v +locked <- [v] +sources + , v +lockBy <- [v] +targets ] forall a. [a] -> [a] -> [a] ++ [ Lock{v lockBy :: v lockBy :: v -lockBy, v +lockBy, v locked :: v locked :: v -locked} - | v -locked <- forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +locked} + | v +locked <- forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (forall a. Set a -> [a] S.elems forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a v. Variables a v => a -> Set v variables) [F v x] -remain - , v -lockBy <- [v] -sources forall a. [a] -> [a] -> [a] +remain + , v +lockBy <- [v] +sources forall a. [a] -> [a] -> [a] ++ [v] -targets +targets ] forall a. [a] -> [a] -> [a] ++ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap forall x v. Locks x v => x -> [Lock v] locks [F v x] -remain +remain {- | That type classes ('BreakLoopProblem', 'OptimizeAccumProblem', 'ResolveDeadlockProblem', 'ConstantFoldingProblem') describes the possibility of PU to modify an algorithm. Empty implementation means that multiplier PU doesn't have such possibilities. -} -instance BreakLoopProblem (Multiplier v x t) v x +instance BreakLoopProblem (Multiplier v x t) v x -instance ConstantFoldingProblem (Multiplier v x t) v x -instance OptimizeAccumProblem (Multiplier v x t) v x -instance ResolveDeadlockProblem (Multiplier v x t) v x +instance ConstantFoldingProblem (Multiplier v x t) v x +instance OptimizeAccumProblem (Multiplier v x t) v x +instance ResolveDeadlockProblem (Multiplier v x t) v x {- | This type class specifies how to bind functions to the PU. If it is possible, @tryBind@ function will return @Right@ value with a new PU model @@ -567,25 +567,25 @@ Binding can be done either gradually due synthesis process at the start. -} -instance VarValTime v x t => ProcessorUnit (Multiplier v x t) v x t where - tryBind :: F v x -> Multiplier v x t -> Either String (Multiplier v x t) -tryBind F v x -f pu :: Multiplier v x t -pu@Multiplier{[F v x] +instance VarValTime v x t => ProcessorUnit (Multiplier v x t) v x t where + tryBind :: F v x -> Multiplier v x t -> Either String (Multiplier v x t) +tryBind F v x +f pu :: Multiplier v x t +pu@Multiplier{[F v x] remain :: [F v x] $sel:remain:Multiplier :: forall v x t. Multiplier v x t -> [F v x] -remain} +remain} | Just F.Multiply{} <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = forall a b. b -> Either a b +f = forall a b. b -> Either a b Right Multiplier v x t -pu{$sel:remain:Multiplier :: [F v x] +pu{$sel:remain:Multiplier :: [F v x] remain = F v x -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] : [F v x] -remain} +remain} | Bool otherwise = forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b @@ -593,50 +593,50 @@ "The function is unsupported by Multiplier: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show F v x -f +f -- Unified interface for getting computation process description. - process :: Multiplier v x t -> Process t (StepInfo v x t) + process :: Multiplier v x t -> Process t (StepInfo v x t) process = forall v x t. Multiplier v x t -> Process t (StepInfo v x t) process_ -- | Execute function (set as current and remove from remain). execution :: Multiplier v x t -> F v x -> Multiplier v x t -execution pu :: Multiplier v x t -pu@Multiplier{$sel:targets:Multiplier :: forall v x t. Multiplier v x t -> [v] +execution pu :: Multiplier v x t +pu@Multiplier{$sel:targets:Multiplier :: forall v x t. Multiplier v x t -> [v] targets = [], $sel:sources:Multiplier :: forall v x t. Multiplier v x t -> [v] -sources = [], [F v x] +sources = [], [F v x] remain :: [F v x] $sel:remain:Multiplier :: forall v x t. Multiplier v x t -> [F v x] -remain} F v x -f - | Just (F.Multiply (I v -a) (I v -b) (O Set v -c)) <- forall (f :: * -> * -> *) v x. +remain} F v x +f + | Just (F.Multiply (I v +a) (I v +b) (O Set v +c)) <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = Multiplier v x t -pu +pu { $sel:targets:Multiplier :: [v] targets = [v -a, v -b] +a, v +b] , $sel:currentWork:Multiplier :: Maybe (F v x) currentWork = forall a. a -> Maybe a Just F v x -f +f , $sel:sources:Multiplier :: [v] sources = forall a. Set a -> [a] S.elems Set v -c +c , $sel:remain:Multiplier :: [F v x] remain = [F v x] -remain forall a. Eq a => [a] -> [a] -> [a] +remain forall a. Eq a => [a] -> [a] -> [a] \\ [F v x -f] +f] } execution Multiplier v x t _ F v x @@ -683,73 +683,73 @@ find the selected function, 'execute' it, and do a recursive call with the same decision. -} -instance VarValTime v x t => EndpointProblem (Multiplier v x t) v t where - endpointOptions :: Multiplier v x t -> [EndpointSt v (TimeConstraint t)] -endpointOptions pu :: Multiplier v x t -pu@Multiplier{[v] +instance VarValTime v x t => EndpointProblem (Multiplier v x t) v t where + endpointOptions :: Multiplier v x t -> [EndpointSt v (TimeConstraint t)] +endpointOptions pu :: Multiplier v x t +pu@Multiplier{[v] targets :: [v] $sel:targets:Multiplier :: forall v x t. Multiplier v x t -> [v] -targets} +targets} | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -targets = - let at :: Interval t -at = forall u t. NextTick u t => u -> t +targets = + let at :: Interval t +at = forall u t. NextTick u t => u -> t nextTick Multiplier v x t -pu forall a. Ord a => a -> a -> Interval a +pu forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound - duration :: Interval t -duration = t + duration :: Interval t +duration = t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound in forall a b. (a -> b) -> [a] -> [b] -map (\v -v -> forall v tp. EndpointRole v -> tp -> EndpointSt v tp +map (\v +v -> forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. v -> EndpointRole v Target v -v) forall a b. (a -> b) -> a -> b +v) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint Interval t -at Interval t -duration) [v] -targets - endpointOptions Multiplier{[v] +at Interval t +duration) [v] +targets + endpointOptions Multiplier{[v] sources :: [v] $sel:sources:Multiplier :: forall v x t. Multiplier v x t -> [v] -sources, $sel:currentWork:Multiplier :: forall v x t. Multiplier v x t -> Maybe (F v x) -currentWork = Just F v x -f, Process t (StepInfo v x t) +sources, $sel:currentWork:Multiplier :: forall v x t. Multiplier v x t -> Maybe (F v x) +currentWork = Just F v x +f, Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Multiplier :: forall v x t. Multiplier v x t -> Process t (StepInfo v x t) -process_} +process_} | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources = - let doneAt :: t -doneAt = forall {a1} {a2} {f} {x} {t2}. +sources = + let doneAt :: t +doneAt = forall {a1} {a2} {f} {x} {t2}. (Ord a1, Ord a2, Function f a2) => Process a1 (StepInfo a2 x t2) -> f -> a1 inputsPushedAt Process t (StepInfo v x t) -process_ F v x -f forall a. Num a => a -> a -> a +process_ F v x +f forall a. Num a => a -> a -> a + t 3 - at :: Interval t -at = forall a. Ord a => a -> a -> a + at :: Interval t +at = forall a. Ord a => a -> a -> a max t -doneAt (forall u t. NextTick u t => u -> t +doneAt (forall u t. NextTick u t => u -> t nextTick Process t (StepInfo v x t) -process_) forall a. Ord a => a -> a -> Interval a +process_) forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound - duration :: Interval t -duration = t + duration :: Interval t +duration = t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound @@ -758,16 +758,16 @@ Source forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a S.fromList [v] -sources) forall a b. (a -> b) -> a -> b +sources) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint Interval t -at Interval t -duration] - endpointOptions pu :: Multiplier v x t -pu@Multiplier{[F v x] +at Interval t +duration] + endpointOptions pu :: Multiplier v x t +pu@Multiplier{[F v x] remain :: [F v x] $sel:remain:Multiplier :: forall v x t. Multiplier v x t -> [F v x] -remain} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +remain} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (forall u v t. EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] @@ -776,18 +776,18 @@ (Typeable v, Typeable x) => Multiplier v x t -> F v x -> Multiplier v x t execution Multiplier v x t -pu) [F v x] -remain +pu) [F v x] +remain - endpointDecision :: Multiplier v x t -> EndpointSt v (Interval t) -> Multiplier v x t -endpointDecision pu :: Multiplier v x t -pu@Multiplier{[v] + endpointDecision :: Multiplier v x t -> EndpointSt v (Interval t) -> Multiplier v x t +endpointDecision pu :: Multiplier v x t +pu@Multiplier{[v] targets :: [v] $sel:targets:Multiplier :: forall v x t. Multiplier v x t -> [v] -targets} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Target v -v, Interval t +targets} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Target v +v, Interval t epAt :: forall v tp. EndpointSt v tp -> tp epAt :: Interval t epAt} @@ -795,21 +795,21 @@ not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -targets +targets , ([v -_], [v] -targets') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) +_], [v] +targets') <- forall a. (a -> Bool) -> [a] -> ([a], [a]) partition (forall a. Eq a => a -> a -> Bool == v -v) [v] -targets +v) [v] +targets , -- Computation process planning is carried out. - let process_' :: Process t (StepInfo v x t) -process_' = forall {u} {v} {x} {t} {a}. + let process_' :: Process t (StepInfo v x t) +process_' = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Multiplier v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do -- this is required for correct work of automatically generated tests, -- that takes information about time from Process @@ -817,58 +817,58 @@ MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe Interval t -epAt forall v x t. Instruction (Multiplier v x t) +epAt forall v x t. Instruction (Multiplier v x t) Load = Multiplier v x t -pu +pu { $sel:process_:Multiplier :: Process t (StepInfo v x t) process_ = Process t (StepInfo v x t) -process_' +process_' , -- The remainder of the work is saved for the next loop $sel:targets:Multiplier :: [v] targets = [v] -targets' +targets' } - endpointDecision pu :: Multiplier v x t -pu@Multiplier{$sel:targets:Multiplier :: forall v x t. Multiplier v x t -> [v] -targets = [], [v] + endpointDecision pu :: Multiplier v x t +pu@Multiplier{$sel:targets:Multiplier :: forall v x t. Multiplier v x t -> [v] +targets = [], [v] sources :: [v] $sel:sources:Multiplier :: forall v x t. Multiplier v x t -> [v] -sources, $sel:currentWork:Multiplier :: forall v x t. Multiplier v x t -> Maybe (F v x) -currentWork = Just F v x -f, Process t (StepInfo v x t) +sources, $sel:currentWork:Multiplier :: forall v x t. Multiplier v x t -> Maybe (F v x) +currentWork = Just F v x +f, Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) $sel:process_:Multiplier :: forall v x t. Multiplier v x t -> Process t (StepInfo v x t) -process_} d :: EndpointSt v (Interval t) -d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Source Set v -v, Interval t +process_} d :: EndpointSt v (Interval t) +d@EndpointSt{epRole :: forall v tp. EndpointSt v tp -> EndpointRole v +epRole = Source Set v +v, Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt} +epAt} | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources - , let sources' :: [v] -sources' = [v] -sources forall a. Eq a => [a] -> [a] -> [a] +sources + , let sources' :: [v] +sources' = [v] +sources forall a. Eq a => [a] -> [a] -> [a] \\ forall a. Set a -> [a] S.elems Set v -v +v , [v] -sources' forall a. Eq a => a -> a -> Bool +sources' forall a. Eq a => a -> a -> Bool /= [v] -sources - , let a :: t -a = forall a. Interval a -> a +sources + , let a :: t +a = forall a. Interval a -> a inf forall a b. (a -> b) -> a -> b $ forall {a} {i}. Ord a => [Step a i] -> Interval a stepsInterval forall a b. (a -> b) -> a -> b @@ -877,35 +877,35 @@ Process t1 (StepInfo a x t2) -> Set a -> [Step t1 (StepInfo a x t2)] relatedEndpoints Process t (StepInfo v x t) -process_ forall a b. (a -> b) -> a -> b +process_ forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables F v x -f +f , -- Compututation process planning is carring on. - let process_' :: Process t (StepInfo v x t) -process_' = forall {u} {v} {x} {t} {a}. + let process_' :: Process t (StepInfo v x t) +process_' = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Multiplier v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do - [Int] -endpoints <- forall {m :: * -> *} {pu} {v} {x} {t}. + [Int] +endpoints <- forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe Interval t -epAt forall v x t. Instruction (Multiplier v x t) +epAt forall v x t. Instruction (Multiplier v x t) Out forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources') forall a b. (a -> b) -> a -> b +sources') forall a b. (a -> b) -> a -> b $ do -- Set up the vertical relantions between functional unit -- and related to that data sending. @@ -918,59 +918,59 @@ [Int] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity () scheduleFunctionFinish_ [] F v x -f forall a b. (a -> b) -> a -> b +f forall a b. (a -> b) -> a -> b $ t -a forall a. Ord a => a -> a -> Interval a +a forall a. Ord a => a -> a -> Interval a ... forall a. Interval a -> a sup Interval t -epAt +epAt -- this is needed to correct work of automatically generated tests -- that takes time about time from Process forall (m :: * -> *) a. Monad m => a -> m a return [Int] -endpoints = +endpoints = Multiplier v x t -pu +pu { $sel:process_:Multiplier :: Process t (StepInfo v x t) process_ = Process t (StepInfo v x t) -process_' +process_' , -- In case if not all variables what asked - remaining are saved. $sel:sources:Multiplier :: [v] sources = [v] -sources' +sources' , -- if all of works is done, then time when result is ready, -- current work and data transfering, what is done is the current function is reset. $sel:currentWork:Multiplier :: Maybe (F v x) currentWork = if forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources' then forall a. Maybe a +sources' then forall a. Maybe a Nothing else forall a. a -> Maybe a Just F v x -f +f } - endpointDecision pu :: Multiplier v x t -pu@Multiplier{$sel:targets:Multiplier :: forall v x t. Multiplier v x t -> [v] + endpointDecision pu :: Multiplier v x t +pu@Multiplier{$sel:targets:Multiplier :: forall v x t. Multiplier v x t -> [v] targets = [], $sel:sources:Multiplier :: forall v x t. Multiplier v x t -> [v] -sources = [], [F v x] +sources = [], [F v x] remain :: [F v x] $sel:remain:Multiplier :: forall v x t. Multiplier v x t -> [F v x] -remain} EndpointSt v (Interval t) -d - | let v :: v -v = forall {c}. Set c -> c +remain} EndpointSt v (Interval t) +d + | let v :: v +v = forall {c}. Set c -> c oneOf forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables EndpointSt v (Interval t) -d - , Just F v x -f <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a -find (\F v x -f -> v -v forall a. Ord a => a -> Set a -> Bool +d + , Just F v x +f <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a +find (\F v x +f -> v +v forall a. Ord a => a -> Set a -> Bool `S.member` forall a v. Variables a v => a -> Set v variables F v x -f) [F v x] -remain = +f) [F v x] +remain = forall u v t. EndpointProblem u v t => u -> EndpointSt v (Interval t) -> u @@ -978,13 +978,13 @@ (Typeable v, Typeable x) => Multiplier v x t -> F v x -> Multiplier v x t execution Multiplier v x t -pu F v x -f) EndpointSt v (Interval t) -d +pu F v x +f) EndpointSt v (Interval t) +d -- If something went wrong. - endpointDecision Multiplier v x t -pu EndpointSt v (Interval t) -d = forall a. HasCallStack => String -> a + endpointDecision Multiplier v x t +pu EndpointSt v (Interval t) +d = forall a. HasCallStack => String -> a error [i|incorrect decision #{ d } for #{ pretty pu }|] {- | For each PU, we can specify the instruction set and microcode, which allows @@ -999,11 +999,11 @@ data in the unit, without any specification of argument position. It will be always a sequence of the first and second arguments. -} -instance Controllable (Multiplier v x t) where - data Instruction (Multiplier v x t) +instance Controllable (Multiplier v x t) where + data Instruction (Multiplier v x t) = Load | Out - deriving (Int -> Instruction (Multiplier v x t) -> ShowS + deriving (Int -> Instruction (Multiplier v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Instruction (Multiplier v x t) -> ShowS @@ -1017,7 +1017,7 @@ $cshowsPrec :: forall v x t. Int -> Instruction (Multiplier v x t) -> ShowS Show) - data Microcode (Multiplier v x t) = Microcode + data Microcode (Multiplier v x t) = Microcode { -- \| Write to mUnit signal. forall v x t. Microcode (Multiplier v x t) -> Bool wrSignal :: Bool @@ -1025,7 +1025,7 @@ forall v x t. Microcode (Multiplier v x t) -> Bool oeSignal :: Bool } - deriving (Int -> Microcode (Multiplier v x t) -> ShowS + deriving (Int -> Microcode (Multiplier v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Microcode (Multiplier v x t) -> ShowS @@ -1037,7 +1037,7 @@ $cshow :: forall v x t. Microcode (Multiplier v x t) -> String showsPrec :: Int -> Microcode (Multiplier v x t) -> ShowS $cshowsPrec :: forall v x t. Int -> Microcode (Multiplier v x t) -> ShowS -Show, Microcode (Multiplier v x t) +Show, Microcode (Multiplier v x t) -> Microcode (Multiplier v x t) -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x t. @@ -1053,7 +1053,7 @@ $c== :: forall v x t. Microcode (Multiplier v x t) -> Microcode (Multiplier v x t) -> Bool -Eq, Microcode (Multiplier v x t) +Eq, Microcode (Multiplier v x t) -> Microcode (Multiplier v x t) -> Bool Microcode (Multiplier v x t) -> Microcode (Multiplier v x t) -> Ordering @@ -1114,49 +1114,49 @@ -> Microcode (Multiplier v x t) -> Ordering Ord) - zipSignalTagsAndValues :: Ports (Multiplier v x t) + zipSignalTagsAndValues :: Ports (Multiplier v x t) -> Microcode (Multiplier v x t) -> [(SignalTag, SignalValue)] -zipSignalTagsAndValues MultiplierPorts{SignalTag +zipSignalTagsAndValues MultiplierPorts{SignalTag $sel:oe:MultiplierPorts :: forall v x t. Ports (Multiplier v x t) -> SignalTag $sel:wr:MultiplierPorts :: forall v x t. Ports (Multiplier v x t) -> SignalTag oe :: SignalTag wr :: SignalTag -..} Microcode{Bool +..} Microcode{Bool oeSignal :: Bool wrSignal :: Bool $sel:oeSignal:Microcode :: forall v x t. Microcode (Multiplier v x t) -> Bool $sel:wrSignal:Microcode :: forall v x t. Microcode (Multiplier v x t) -> Bool -..} = +..} = [ (SignalTag -wr, Bool -> SignalValue +wr, Bool -> SignalValue Bool Bool -wrSignal) +wrSignal) , (SignalTag -oe, Bool -> SignalValue +oe, Bool -> SignalValue Bool Bool -oeSignal) +oeSignal) ] - usedPortTags :: Ports (Multiplier v x t) -> [SignalTag] -usedPortTags MultiplierPorts{SignalTag + usedPortTags :: Ports (Multiplier v x t) -> [SignalTag] +usedPortTags MultiplierPorts{SignalTag wr :: SignalTag $sel:wr:MultiplierPorts :: forall v x t. Ports (Multiplier v x t) -> SignalTag -wr, SignalTag +wr, SignalTag oe :: SignalTag $sel:oe:MultiplierPorts :: forall v x t. Ports (Multiplier v x t) -> SignalTag -oe} = [SignalTag -wr, SignalTag -oe] +oe} = [SignalTag +wr, SignalTag +oe] - takePortTags :: [SignalTag] -> Multiplier v x t -> Ports (Multiplier v x t) -takePortTags (SignalTag -wr : SignalTag -oe : [SignalTag] + takePortTags :: [SignalTag] -> Multiplier v x t -> Ports (Multiplier v x t) +takePortTags (SignalTag +wr : SignalTag +oe : [SignalTag] _) Multiplier v x t _ = forall v x t. SignalTag -> SignalTag -> Ports (Multiplier v x t) MultiplierPorts SignalTag -wr SignalTag -oe +wr SignalTag +oe takePortTags [SignalTag] _ Multiplier v x t _ = forall a. HasCallStack => String -> a @@ -1166,9 +1166,9 @@ {- | Default microcode state should be equal to @nop@ function, which should be a safe way to do nothing (not take a bus, not change internal PU state, etc.). -} -instance Default (Microcode (Multiplier v x t)) where - def :: Microcode (Multiplier v x t) -def = +instance Default (Microcode (Multiplier v x t)) where + def :: Microcode (Multiplier v x t) +def = Microcode { $sel:wrSignal:Microcode :: Bool wrSignal = Bool @@ -1181,8 +1181,8 @@ {- | Instruction and microcode should have exact matching, which allows us to translate PU instructions to microcode value. -} -instance UnambiguouslyDecode (Multiplier v x t) where - decodeInstruction :: Instruction (Multiplier v x t) -> Microcode (Multiplier v x t) +instance UnambiguouslyDecode (Multiplier v x t) where + decodeInstruction :: Instruction (Multiplier v x t) -> Microcode (Multiplier v x t) decodeInstruction Instruction (Multiplier v x t) R:InstructionMultiplier v x t Load = forall a. Default a => a @@ -1200,8 +1200,8 @@ 'NITTA.Model.Networks.Bus.BusNetwork', these ports are directly connecting to @ControlUnit@. -} -instance Connected (Multiplier v x t) where - data Ports (Multiplier v x t) = MultiplierPorts +instance Connected (Multiplier v x t) where + data Ports (Multiplier v x t) = MultiplierPorts { -- \|get data from the bus (data_in) forall v x t. Ports (Multiplier v x t) -> SignalTag wr :: SignalTag @@ -1209,7 +1209,7 @@ forall v x t. Ports (Multiplier v x t) -> SignalTag oe :: SignalTag } - deriving (Int -> Ports (Multiplier v x t) -> ShowS + deriving (Int -> Ports (Multiplier v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Ports (Multiplier v x t) -> ShowS @@ -1223,9 +1223,9 @@ $cshowsPrec :: forall v x t. Int -> Ports (Multiplier v x t) -> ShowS Show) -instance IOConnected (Multiplier v x t) where - data IOPorts (Multiplier v x t) = MultiplierIO - deriving (Int -> IOPorts (Multiplier v x t) -> ShowS +instance IOConnected (Multiplier v x t) where + data IOPorts (Multiplier v x t) = MultiplierIO + deriving (Int -> IOPorts (Multiplier v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> IOPorts (Multiplier v x t) -> ShowS @@ -1248,25 +1248,25 @@ - Hardware instance in the upper structure element. -} -instance VarValTime v x t => TargetSystemComponent (Multiplier v x t) where - moduleName :: Text -> Multiplier v x t -> Text -moduleName Text -_title Multiplier v x t -_pu = Text +instance VarValTime v x t => TargetSystemComponent (Multiplier v x t) where + moduleName :: Text -> Multiplier v x t -> Text +moduleName Text +_title Multiplier v x t +_pu = Text "pu_multiplier" - hardware :: Text -> Multiplier v x t -> Implementation -hardware Text -_tag Multiplier{Bool + hardware :: Text -> Multiplier v x t -> Implementation +hardware Text +_tag Multiplier{Bool isMocked :: Bool $sel:isMocked:Multiplier :: forall v x t. Multiplier v x t -> Bool -isMocked} = +isMocked} = Maybe String -> [Implementation] -> Implementation Aggregate forall a. Maybe a Nothing [ if Bool -isMocked +isMocked then String -> Implementation FromLibrary String "multiplier/mult_mock.v" @@ -1278,42 +1278,42 @@ "multiplier/pu_multiplier.v" ] - software :: Text -> Multiplier v x t -> Implementation + software :: Text -> Multiplier v x t -> Implementation software Text _ Multiplier v x t _ = Implementation Empty - hardwareInstance :: Text -> Multiplier v x t -> UnitEnv (Multiplier v x t) -> Verilog + hardwareInstance :: Text -> Multiplier v x t -> UnitEnv (Multiplier v x t) -> Verilog hardwareInstance - Text -tag - Multiplier v x t -_pu + Text +tag + Multiplier v x t +_pu UnitEnv - { Text + { Text sigClk :: forall m. UnitEnv m -> Text sigClk :: Text sigClk - , Text + , Text sigRst :: forall m. UnitEnv m -> Text sigRst :: Text sigRst , ctrlPorts :: forall m. UnitEnv m -> Maybe (Ports m) -ctrlPorts = Just MultiplierPorts{SignalTag +ctrlPorts = Just MultiplierPorts{SignalTag oe :: SignalTag wr :: SignalTag $sel:oe:MultiplierPorts :: forall v x t. Ports (Multiplier v x t) -> SignalTag $sel:wr:MultiplierPorts :: forall v x t. Ports (Multiplier v x t) -> SignalTag -..} +..} , valueIn :: forall m. UnitEnv m -> Maybe (Text, Text) -valueIn = Just (Text -dataIn, Text -attrIn) +valueIn = Just (Text +dataIn, Text +attrIn) , valueOut :: forall m. UnitEnv m -> Maybe (Text, Text) -valueOut = Just (Text -dataOut, Text -attrOut) +valueOut = Just (Text +dataOut, Text +attrOut) } = [__i| pu_multiplier \# @@ -1332,17 +1332,17 @@ , .attr_out( #{ attrOut } ) ); |] - hardwareInstance Text -_title Multiplier v x t -_pu UnitEnv (Multiplier v x t) -_env = forall a. HasCallStack => String -> a + hardwareInstance Text +_title Multiplier v x t +_pu UnitEnv (Multiplier v x t) +_env = forall a. HasCallStack => String -> a error String "internal error" {- | Empty implementation of 'NITTA.Project.TestBench.IOTestBench' class means that multiplier, as expected, doesn't have any IO. -} -instance IOTestBench (Multiplier v x t) v x +instance IOTestBench (Multiplier v x t) v x {- | The main purpose of this class is to generate autotests for PU. It allows to generate testbench for the PU according to its model and scheduled computational @@ -1353,13 +1353,13 @@ - The sequence of bus state checks in which we compare actual values with the results of the functional simulation. -} -instance VarValTime v x t => Testable (Multiplier v x t) v x where - testBenchImplementation :: Project (Multiplier v x t) v x -> Implementation -testBenchImplementation prj :: Project (Multiplier v x t) v x -prj@Project{Text +instance VarValTime v x t => Testable (Multiplier v x t) v x where + testBenchImplementation :: Project (Multiplier v x t) v x -> Implementation +testBenchImplementation prj :: Project (Multiplier v x t) v x +prj@Project{Text pName :: forall m v x. Project m v x -> Text pName :: Text -pName, Multiplier v x t +pName, Multiplier v x t pUnit :: forall m v x. Project m v x -> m pUnit :: Multiplier v x t pUnit} = @@ -1368,8 +1368,8 @@ toString forall a b. (a -> b) -> a -> b $ forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -pName Multiplier v x t -pUnit forall a. Semigroup a => a -> a -> a +pName Multiplier v x t +pUnit forall a. Semigroup a => a -> a -> a <> Text "_tb.v") forall a b. (a -> b) -> a -> b $ @@ -1380,12 +1380,12 @@ Project m v x -> SnippetTestBenchConf m -> Text snippetTestBench Project (Multiplier v x t) v x -prj +prj SnippetTestBenchConf { -- List of control signals. It is needed to initialize -- registers with the same names. tbcSignals :: [Text] -tbcSignals = [Text +tbcSignals = [Text "oe", Text "wr"] , -- A processor unit connects to the environment by signal @@ -1394,7 +1394,7 @@ -- 'NITTA.Project.TestBench.tbcSignalConnect' how -- abstract numbers are translate to source code. tbcPorts :: Ports (Multiplier v x t) -tbcPorts = +tbcPorts = MultiplierPorts { $sel:oe:MultiplierPorts :: SignalTag oe = Text -> SignalTag @@ -1407,13 +1407,13 @@ } , -- Map microcode to registers in the testbench. tbcMC2verilogLiteral :: Microcode (Multiplier v x t) -> Text -tbcMC2verilogLiteral = \Microcode{Bool +tbcMC2verilogLiteral = \Microcode{Bool oeSignal :: Bool $sel:oeSignal:Microcode :: forall v x t. Microcode (Multiplier v x t) -> Bool -oeSignal, Bool +oeSignal, Bool wrSignal :: Bool $sel:wrSignal:Microcode :: forall v x t. Microcode (Multiplier v x t) -> Bool -wrSignal} -> +wrSignal} -> [i|oe <= #{bool2verilog oeSignal};|] forall a. Semigroup a => a -> a -> a <> [i| wr <= #{bool2verilog wrSignal};|] diff --git a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Shift.html b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Shift.html index 7e223a877..5a5f116ef 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Shift.html +++ b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Shift.html @@ -35,15 +35,15 @@ import Numeric.Interval.NonEmpty (inf, singleton, sup, (...)) import Prelude hiding (init) -data Shift v x t = Shift +data Shift v x t = Shift { forall v x t. Shift v x t -> [F v x] -remain :: [F v x] +remain :: [F v x] -- ^ list of FU, that will be bound later , forall v x t. Shift v x t -> Maybe v -target :: Maybe v +target :: Maybe v -- ^ current input value, that we want to shift , forall v x t. Shift v x t -> [v] -sources :: [v] +sources :: [v] -- ^ list of output values , forall v x t. Shift v x t -> Bool sRight :: Bool @@ -55,38 +55,38 @@ byteShiftMod :: Int -- ^ shift mod 8 (is used for bit shift) , forall v x t. Shift v x t -> Maybe (F v x) -currentWork :: Maybe (F v x) +currentWork :: Maybe (F v x) -- ^ current function in PU , forall v x t. Shift v x t -> Process t (StepInfo v x t) -process_ :: Process t (StepInfo v x t) +process_ :: Process t (StepInfo v x t) -- ^ description of target computation process } -instance Var v => Locks (Shift v x t) v where - locks :: Shift v x t -> [Lock v] -locks Shift{[v] +instance Var v => Locks (Shift v x t) v where + locks :: Shift v x t -> [Lock v] +locks Shift{[v] sources :: [v] sources :: forall v x t. Shift v x t -> [v] -sources, target :: forall v x t. Shift v x t -> Maybe v -target = Just v -t} = +sources, target :: forall v x t. Shift v x t -> Maybe v +target = Just v +t} = [ Lock{lockBy :: v -lockBy = v -t, v +lockBy = v +t, v locked :: v locked :: v -locked} - | v -locked <- [v] -sources +locked} + | v +locked <- [v] +sources ] locks Shift{target :: forall v x t. Shift v x t -> Maybe v target = Maybe v Nothing} = [] shift :: Bool -> Shift v x t -shift Bool -sRight = +shift Bool +sRight = Shift { remain :: [F v x] remain = [] @@ -98,7 +98,7 @@ , Bool sRight :: Bool sRight :: Bool -sRight +sRight , byteShiftDiv :: Int byteShiftDiv = Int 0 @@ -113,47 +113,47 @@ def } -instance Default t => Default (Shift v x t) where - def :: Shift v x t -def = forall {t} {v} {x}. Default t => Bool -> Shift v x t +instance Default t => Default (Shift v x t) where + def :: Shift v x t +def = forall {t} {v} {x}. Default t => Bool -> Shift v x t shift Bool True -instance BreakLoopProblem (Shift v x t) v x -instance ConstantFoldingProblem (Shift v x t) v x -instance OptimizeAccumProblem (Shift v x t) v x -instance ResolveDeadlockProblem (Shift v x t) v x +instance BreakLoopProblem (Shift v x t) v x +instance ConstantFoldingProblem (Shift v x t) v x +instance OptimizeAccumProblem (Shift v x t) v x +instance ResolveDeadlockProblem (Shift v x t) v x -instance VarValTime v x t => ProcessorUnit (Shift v x t) v x t where - tryBind :: F v x -> Shift v x t -> Either String (Shift v x t) -tryBind F v x -f pu :: Shift v x t -pu@Shift{[F v x] +instance VarValTime v x t => ProcessorUnit (Shift v x t) v x t where + tryBind :: F v x -> Shift v x t -> Either String (Shift v x t) +tryBind F v x +f pu :: Shift v x t +pu@Shift{[F v x] remain :: [F v x] remain :: forall v x t. Shift v x t -> [F v x] -remain} - | Just ShiftLR v x -f' <- forall (f :: * -> * -> *) v x. +remain} + | Just ShiftLR v x +f' <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = case ShiftLR v x -f' of +f' of ShiftL{} -> forall a b. b -> Either a b Right Shift v x t -pu{remain :: [F v x] +pu{remain :: [F v x] remain = F v x -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] : [F v x] -remain} +remain} ShiftR{} -> forall a b. b -> Either a b Right Shift v x t -pu{remain :: [F v x] +pu{remain :: [F v x] remain = F v x -f forall a. a -> [a] -> [a] +f forall a. a -> [a] -> [a] : [F v x] -remain} +remain} | Bool otherwise = forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b @@ -161,85 +161,85 @@ "The function is unsupported by Shift: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show F v x -f - process :: Shift v x t -> Process t (StepInfo v x t) +f + process :: Shift v x t -> Process t (StepInfo v x t) process = forall v x t. Shift v x t -> Process t (StepInfo v x t) process_ -- | This function carry out actual take functional block to work. execution :: Shift v x t -> F v x -> Shift v x t -execution pu :: Shift v x t -pu@Shift{target :: forall v x t. Shift v x t -> Maybe v +execution pu :: Shift v x t +pu@Shift{target :: forall v x t. Shift v x t -> Maybe v target = Maybe v Nothing, sources :: forall v x t. Shift v x t -> [v] -sources = [], [F v x] +sources = [], [F v x] remain :: [F v x] remain :: forall v x t. Shift v x t -> [F v x] -remain} F v x -f - | Just ShiftLR v x -f' <- forall (f :: * -> * -> *) v x. +remain} F v x +f + | Just ShiftLR v x +f' <- forall (f :: * -> * -> *) v x. (Typeable f, Typeable v, Typeable x) => F v x -> Maybe (f v x) castF F v x -f = +f = case ShiftLR v x -f' of - ShiftL Int -s (I v -i_) (O Set v -o) -> v -> Set v -> Bool -> Int -> Shift v x t -toPU v -i_ Set v -o Bool +f' of + ShiftL Int +s (I v +i_) (O Set v +o) -> v -> Set v -> Bool -> Int -> Shift v x t +toPU v +i_ Set v +o Bool False Int -s - ShiftR Int -s (I v -i_) (O Set v -o) -> v -> Set v -> Bool -> Int -> Shift v x t -toPU v -i_ Set v -o Bool +s + ShiftR Int +s (I v +i_) (O Set v +o) -> v -> Set v -> Bool -> Int -> Shift v x t +toPU v +i_ Set v +o Bool True Int -s +s where - toPU :: v -> Set v -> Bool -> Int -> Shift v x t -toPU v -inp Set v -out Bool -sRight Int -step = + toPU :: v -> Set v -> Bool -> Int -> Shift v x t +toPU v +inp Set v +out Bool +sRight Int +step = Shift v x t -pu +pu { target :: Maybe v target = forall a. a -> Maybe a Just v -inp +inp , currentWork :: Maybe (F v x) currentWork = forall a. a -> Maybe a Just F v x -f +f , sources :: [v] sources = forall a. Set a -> [a] elems Set v -out +out , remain :: [F v x] remain = [F v x] -remain forall a. Eq a => [a] -> [a] -> [a] +remain forall a. Eq a => [a] -> [a] -> [a] \\ [F v x -f] +f] , sRight :: Bool sRight = Bool -sRight +sRight , byteShiftDiv :: Int byteShiftDiv = Int -step forall a. Integral a => a -> a -> a +step forall a. Integral a => a -> a -> a `div` Int 8 , byteShiftMod :: Int byteShiftMod = Int -step forall a. Integral a => a -> a -> a +step forall a. Integral a => a -> a -> a `mod` Int 8 } @@ -249,60 +249,60 @@ error String "Not right arguments in execution function in shift module" -instance VarValTime v x t => EndpointProblem (Shift v x t) v t where - endpointOptions :: Shift v x t -> [EndpointSt v (TimeConstraint t)] -endpointOptions pu :: Shift v x t -pu@Shift{target :: forall v x t. Shift v x t -> Maybe v -target = Just v -t} = +instance VarValTime v x t => EndpointProblem (Shift v x t) v t where + endpointOptions :: Shift v x t -> [EndpointSt v (TimeConstraint t)] +endpointOptions pu :: Shift v x t +pu@Shift{target :: forall v x t. Shift v x t -> Maybe v +target = Just v +t} = [forall v tp. EndpointRole v -> tp -> EndpointSt v tp EndpointSt (forall v. v -> EndpointRole v Target v -t) forall a b. (a -> b) -> a -> b +t) forall a b. (a -> b) -> a -> b $ forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (forall u t. NextTick u t => u -> t nextTick Shift v x t -pu forall a. Ord a => a -> a -> Interval a +pu forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) (forall a. a -> Interval a singleton t 1)] - endpointOptions pu :: Shift v x t -pu@Shift{[v] + endpointOptions pu :: Shift v x t +pu@Shift{[v] sources :: [v] sources :: forall v x t. Shift v x t -> [v] -sources, Int +sources, Int byteShiftDiv :: Int byteShiftDiv :: forall v x t. Shift v x t -> Int -byteShiftDiv, Int +byteShiftDiv, Int byteShiftMod :: Int byteShiftMod :: forall v x t. Shift v x t -> Int -byteShiftMod} +byteShiftMod} | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources +sources , Int -byteShiftDiv forall a. Eq a => a -> a -> Bool +byteShiftDiv forall a. Eq a => a -> a -> Bool == Int 0 = - let timeConstrain :: TimeConstraint t -timeConstrain = forall t. Interval t -> Interval t -> TimeConstraint t + let timeConstrain :: TimeConstraint t +timeConstrain = forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (t -startTime forall a. Ord a => a -> a -> Interval a +startTime forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) (t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) - startTime :: t -startTime = forall u t. NextTick u t => u -> t + startTime :: t +startTime = forall u t. NextTick u t => u -> t nextTick Shift v x t -pu forall a. Num a => a -> a -> a +pu forall a. Num a => a -> a -> a + forall a b. (Integral a, Num b) => a -> b fromIntegral Int -byteShiftMod forall a. Num a => a -> a -> a +byteShiftMod forall a. Num a => a -> a -> a + t 2 in [forall v tp. EndpointRole v -> tp -> EndpointSt v tp @@ -310,35 +310,35 @@ Source forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -sources) TimeConstraint t -timeConstrain] +sources) TimeConstraint t +timeConstrain] | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources = - let endByteShift :: t -endByteShift = forall u t. NextTick u t => u -> t +sources = + let endByteShift :: t +endByteShift = forall u t. NextTick u t => u -> t nextTick Shift v x t -pu forall a. Num a => a -> a -> a +pu forall a. Num a => a -> a -> a + forall a b. (Integral a, Num b) => a -> b fromIntegral Int -byteShiftDiv - timeConstrain :: TimeConstraint t -timeConstrain = forall t. Interval t -> Interval t -> TimeConstraint t +byteShiftDiv + timeConstrain :: TimeConstraint t +timeConstrain = forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (t -startTime forall a. Ord a => a -> a -> Interval a +startTime forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) (t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Bounded a => a maxBound) - startTime :: t -startTime = t -endByteShift forall a. Num a => a -> a -> a + startTime :: t +startTime = t +endByteShift forall a. Num a => a -> a -> a + forall a b. (Integral a, Num b) => a -> b fromIntegral Int -byteShiftMod forall a. Num a => a -> a -> a +byteShiftMod forall a. Num a => a -> a -> a + t 2 in [forall v tp. EndpointRole v -> tp -> EndpointSt v tp @@ -346,13 +346,13 @@ Source forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a fromList [v] -sources) TimeConstraint t -timeConstrain] - endpointOptions pu :: Shift v x t -pu@Shift{[F v x] +sources) TimeConstraint t +timeConstrain] + endpointOptions pu :: Shift v x t +pu@Shift{[F v x] remain :: [F v x] remain :: forall v x t. Shift v x t -> [F v x] -remain} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +remain} = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (forall u v t. EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] @@ -361,79 +361,79 @@ (Typeable v, Typeable x) => Shift v x t -> F v x -> Shift v x t execution Shift v x t -pu) [F v x] -remain +pu) [F v x] +remain - endpointDecision :: Shift v x t -> EndpointSt v (Interval t) -> Shift v x t + endpointDecision :: Shift v x t -> EndpointSt v (Interval t) -> Shift v x t endpointDecision - pu :: Shift v x t -pu@Shift + pu :: Shift v x t +pu@Shift { target :: forall v x t. Shift v x t -> Maybe v target = (Just v _) - , Bool + , Bool sRight :: Bool sRight :: forall v x t. Shift v x t -> Bool -sRight - , Int +sRight + , Int byteShiftDiv :: Int byteShiftDiv :: forall v x t. Shift v x t -> Int -byteShiftDiv - , Int +byteShiftDiv + , Int byteShiftMod :: Int byteShiftMod :: forall v x t. Shift v x t -> Int -byteShiftMod +byteShiftMod } - d :: EndpointSt v (Interval t) -d@EndpointSt + d :: EndpointSt v (Interval t) +d@EndpointSt { epRole :: forall v tp. EndpointSt v tp -> EndpointRole v epRole = Target v _ - , Interval t + , Interval t epAt :: forall v tp. EndpointSt v tp -> tp epAt :: Interval t epAt } = - let startByteShift :: t -startByteShift = forall a. Interval a -> a + let startByteShift :: t +startByteShift = forall a. Interval a -> a inf Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a + t 1 - numByteShiftMod :: t -numByteShiftMod = forall a b. (Integral a, Num b) => a -> b + numByteShiftMod :: t +numByteShiftMod = forall a b. (Integral a, Num b) => a -> b fromIntegral Int -byteShiftMod - endByteShift :: t -endByteShift = forall a. Interval a -> a +byteShiftMod + endByteShift :: t +endByteShift = forall a. Interval a -> a sup Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a + forall a b. (Integral a, Num b) => a -> b fromIntegral Int -byteShiftDiv - process_' :: Process t (StepInfo v x t) -process_' = forall {u} {v} {x} {t} {a}. +byteShiftDiv + process_' :: Process t (StepInfo v x t) +process_' = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Shift v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ do forall {f :: * -> *} {pu} {v} {x} {t}. (MonadState (Schedule pu v x t) f, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> f () scheduleInstructionUnsafe_ Interval t -epAt forall v x t. Instruction (Shift v x t) +epAt forall v x t. Instruction (Shift v x t) Init case (Int -byteShiftDiv, Int -byteShiftMod) of +byteShiftDiv, Int +byteShiftMod) of (Int 0, Int _) -> @@ -444,17 +444,17 @@ scheduleInstructionUnsafe (forall a. Interval a -> a inf Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a + t 1 forall a. Ord a => a -> a -> Interval a ... forall a. Interval a -> a sup Interval t -epAt forall a. Num a => a -> a -> a +epAt forall a. Num a => a -> a -> a + t -numByteShiftMod) +numByteShiftMod) Work{shiftRight :: Bool shiftRight = Bool -sRight, stepByte :: Bool +sRight, stepByte :: Bool stepByte = Bool False, shiftType :: Mode shiftType = Mode @@ -468,12 +468,12 @@ Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe (t -startByteShift forall a. Ord a => a -> a -> Interval a +startByteShift forall a. Ord a => a -> a -> Interval a ... t -endByteShift) +endByteShift) Work{shiftRight :: Bool shiftRight = Bool -sRight, stepByte :: Bool +sRight, stepByte :: Bool stepByte = Bool True, shiftType :: Mode shiftType = Mode @@ -489,12 +489,12 @@ Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe (t -startByteShift forall a. Ord a => a -> a -> Interval a +startByteShift forall a. Ord a => a -> a -> Interval a ... t -endByteShift) +endByteShift) Work{shiftRight :: Bool shiftRight = Bool -sRight, stepByte :: Bool +sRight, stepByte :: Bool stepByte = Bool True, shiftType :: Mode shiftType = Mode @@ -505,70 +505,70 @@ Interval t -> Instruction pu -> m [Int] scheduleInstructionUnsafe (t -endByteShift forall a. Num a => a -> a -> a +endByteShift forall a. Num a => a -> a -> a + t 1 forall a. Ord a => a -> a -> Interval a ... t -endByteShift forall a. Num a => a -> a -> a +endByteShift forall a. Num a => a -> a -> a + t -numByteShiftMod) +numByteShiftMod) Work{shiftRight :: Bool shiftRight = Bool -sRight, stepByte :: Bool +sRight, stepByte :: Bool stepByte = Bool False, shiftType :: Mode shiftType = Mode Logic} in Shift v x t -pu +pu { process_ :: Process t (StepInfo v x t) process_ = Process t (StepInfo v x t) -process_' +process_' , target :: Maybe v target = forall a. Maybe a Nothing } endpointDecision - pu :: Shift v x t -pu@Shift + pu :: Shift v x t +pu@Shift { target :: forall v x t. Shift v x t -> Maybe v target = Maybe v Nothing - , [v] + , [v] sources :: [v] sources :: forall v x t. Shift v x t -> [v] -sources +sources , currentWork :: forall v x t. Shift v x t -> Maybe (F v x) -currentWork = Just F v x -f - , Process t (StepInfo v x t) +currentWork = Just F v x +f + , Process t (StepInfo v x t) process_ :: Process t (StepInfo v x t) process_ :: forall v x t. Shift v x t -> Process t (StepInfo v x t) -process_ +process_ } - d :: EndpointSt v (Interval t) -d@EndpointSt + d :: EndpointSt v (Interval t) +d@EndpointSt { epRole :: forall v tp. EndpointSt v tp -> EndpointRole v -epRole = Source Set v -v - , Interval t +epRole = Source Set v +v + , Interval t epAt :: Interval t epAt :: forall v tp. EndpointSt v tp -> tp -epAt +epAt } | Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources - , let sources' :: [v] -sources' = [v] -sources forall a. Eq a => [a] -> [a] -> [a] +sources + , let sources' :: [v] +sources' = [v] +sources forall a. Eq a => [a] -> [a] -> [a] \\ forall a. Set a -> [a] elems Set v -v - , let a :: t -a = forall a. Interval a -> a +v + , let a :: t +a = forall a. Interval a -> a inf forall a b. (a -> b) -> a -> b $ forall {a} {i}. Ord a => [Step a i] -> Interval a stepsInterval forall a b. (a -> b) -> a -> b @@ -577,27 +577,27 @@ Process t1 (StepInfo a x t2) -> Set a -> [Step t1 (StepInfo a x t2)] relatedEndpoints Process t (StepInfo v x t) -process_ forall a b. (a -> b) -> a -> b +process_ forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables F v x -f +f , [v] -sources' forall a. Eq a => a -> a -> Bool +sources' forall a. Eq a => a -> a -> Bool /= [v] -sources = - let process_' :: Process t (StepInfo v x t) -process_' = forall {u} {v} {x} {t} {a}. +sources = + let process_' :: Process t (StepInfo v x t) +process_' = forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) execSchedule Shift v x t -pu forall a b. (a -> b) -> a -> b +pu forall a b. (a -> b) -> a -> b $ do - [Int] -endpoints <- forall {m :: * -> *} {pu} {v} {x} {t}. + [Int] +endpoints <- forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [Int] -> m [Int] scheduleEndpoint EndpointSt v (Interval t) -d forall a b. (a -> b) -> a -> b +d forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => @@ -605,12 +605,12 @@ scheduleInstructionUnsafe (forall {a}. (Num a, Ord a) => a -> Interval a -> Interval a shiftI (-t 1) Interval t -epAt) forall v x t. Instruction (Shift v x t) +epAt) forall v x t. Instruction (Shift v x t) Out forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources') forall a b. (a -> b) -> a -> b +sources') forall a b. (a -> b) -> a -> b $ do -- FIXME: here ([]) you can see the source of error. -- Function don't connected to bind step. It should be fixed. @@ -620,55 +620,55 @@ [Int] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity () scheduleFunctionFinish_ [] F v x -f forall a b. (a -> b) -> a -> b +f forall a b. (a -> b) -> a -> b $ t -a forall a. Ord a => a -> a -> Interval a +a forall a. Ord a => a -> a -> Interval a ... forall a. Interval a -> a sup Interval t -epAt +epAt forall (m :: * -> *) a. Monad m => a -> m a return [Int] -endpoints +endpoints in Shift v x t -pu +pu { process_ :: Process t (StepInfo v x t) process_ = Process t (StepInfo v x t) -process_' +process_' , sources :: [v] sources = [v] -sources' +sources' , currentWork :: Maybe (F v x) currentWork = if forall (t :: * -> *) a. Foldable t => t a -> Bool null [v] -sources' then forall a. Maybe a +sources' then forall a. Maybe a Nothing else forall a. a -> Maybe a Just F v x -f +f } - endpointDecision pu :: Shift v x t -pu@Shift{target :: forall v x t. Shift v x t -> Maybe v + endpointDecision pu :: Shift v x t +pu@Shift{target :: forall v x t. Shift v x t -> Maybe v target = Maybe v Nothing, sources :: forall v x t. Shift v x t -> [v] -sources = [], [F v x] +sources = [], [F v x] remain :: [F v x] remain :: forall v x t. Shift v x t -> [F v x] -remain} EndpointSt v (Interval t) -d - | let v :: v -v = forall {c}. Set c -> c +remain} EndpointSt v (Interval t) +d + | let v :: v +v = forall {c}. Set c -> c oneOf forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables EndpointSt v (Interval t) -d - , Just F v x -f <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a -find (\F v x -f -> v -v forall a. Ord a => a -> Set a -> Bool +d + , Just F v x +f <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a +find (\F v x +f -> v +v forall a. Ord a => a -> Set a -> Bool `member` forall a v. Variables a v => a -> Set v variables F v x -f) [F v x] -remain = +f) [F v x] +remain = forall u v t. EndpointProblem u v t => u -> EndpointSt v (Interval t) -> u @@ -676,15 +676,15 @@ (Typeable v, Typeable x) => Shift v x t -> F v x -> Shift v x t execution Shift v x t -pu F v x -f) EndpointSt v (Interval t) -d - endpointDecision Shift v x t -_pu EndpointSt v (Interval t) -d = forall a. HasCallStack => String -> a +pu F v x +f) EndpointSt v (Interval t) +d + endpointDecision Shift v x t +_pu EndpointSt v (Interval t) +d = forall a. HasCallStack => String -> a error [i|incorrect decision #{ d } for Shift|] -data Mode = Logic | Arithmetic deriving (Int -> Mode -> ShowS +data Mode = Logic | Arithmetic deriving (Int -> Mode -> ShowS [Mode] -> ShowS Mode -> String forall a. @@ -695,7 +695,7 @@ $cshow :: Mode -> String showsPrec :: Int -> Mode -> ShowS $cshowsPrec :: Int -> Mode -> ShowS -Show, Mode -> Mode -> Bool +Show, Mode -> Mode -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Mode -> Mode -> Bool $c/= :: Mode -> Mode -> Bool @@ -703,8 +703,8 @@ $c== :: Mode -> Mode -> Bool Eq) -instance Controllable (Shift v x t) where - data Instruction (Shift v x t) +instance Controllable (Shift v x t) where + data Instruction (Shift v x t) = Init | Work { forall v x t. Instruction (Shift v x t) -> Bool @@ -715,7 +715,7 @@ shiftType :: Mode } | Out - deriving (Int -> Instruction (Shift v x t) -> ShowS + deriving (Int -> Instruction (Shift v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Instruction (Shift v x t) -> ShowS @@ -729,7 +729,7 @@ $cshowsPrec :: forall v x t. Int -> Instruction (Shift v x t) -> ShowS Show) - data Microcode (Shift v x t) = Microcode + data Microcode (Shift v x t) = Microcode { forall v x t. Microcode (Shift v x t) -> Bool workSignal :: Bool , forall v x t. Microcode (Shift v x t) -> Bool @@ -743,7 +743,7 @@ , forall v x t. Microcode (Shift v x t) -> Bool oeSignal :: Bool } - deriving (Int -> Microcode (Shift v x t) -> ShowS + deriving (Int -> Microcode (Shift v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Microcode (Shift v x t) -> ShowS @@ -755,7 +755,7 @@ $cshow :: forall v x t. Microcode (Shift v x t) -> String showsPrec :: Int -> Microcode (Shift v x t) -> ShowS $cshowsPrec :: forall v x t. Int -> Microcode (Shift v x t) -> ShowS -Show, Microcode (Shift v x t) -> Microcode (Shift v x t) -> Bool +Show, Microcode (Shift v x t) -> Microcode (Shift v x t) -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall v x t. Microcode (Shift v x t) -> Microcode (Shift v x t) -> Bool @@ -765,7 +765,7 @@ == :: Microcode (Shift v x t) -> Microcode (Shift v x t) -> Bool $c== :: forall v x t. Microcode (Shift v x t) -> Microcode (Shift v x t) -> Bool -Eq, Microcode (Shift v x t) -> Microcode (Shift v x t) -> Bool +Eq, Microcode (Shift v x t) -> Microcode (Shift v x t) -> Bool Microcode (Shift v x t) -> Microcode (Shift v x t) -> Ordering forall a. Eq a @@ -812,9 +812,9 @@ Microcode (Shift v x t) -> Microcode (Shift v x t) -> Ordering Ord) - zipSignalTagsAndValues :: Ports (Shift v x t) + zipSignalTagsAndValues :: Ports (Shift v x t) -> Microcode (Shift v x t) -> [(SignalTag, SignalValue)] -zipSignalTagsAndValues ShiftPorts{SignalTag +zipSignalTagsAndValues ShiftPorts{SignalTag oe :: forall v x t. Ports (Shift v x t) -> SignalTag init :: forall v x t. Ports (Shift v x t) -> SignalTag step :: forall v x t. Ports (Shift v x t) -> SignalTag @@ -827,7 +827,7 @@ mode :: SignalTag direction :: SignalTag work :: SignalTag -..} Microcode{Bool +..} Microcode{Bool oeSignal :: Bool initSignal :: Bool stepSignal :: Bool @@ -840,69 +840,69 @@ modeSignal :: forall v x t. Microcode (Shift v x t) -> Bool directionSignal :: forall v x t. Microcode (Shift v x t) -> Bool workSignal :: forall v x t. Microcode (Shift v x t) -> Bool -..} = +..} = [ (SignalTag -work, Bool -> SignalValue +work, Bool -> SignalValue Bool Bool -workSignal) +workSignal) , (SignalTag -direction, Bool -> SignalValue +direction, Bool -> SignalValue Bool Bool -directionSignal) +directionSignal) , (SignalTag -mode, Bool -> SignalValue +mode, Bool -> SignalValue Bool Bool -modeSignal) +modeSignal) , (SignalTag -step, Bool -> SignalValue +step, Bool -> SignalValue Bool Bool -stepSignal) +stepSignal) , (SignalTag -init, Bool -> SignalValue +init, Bool -> SignalValue Bool Bool -initSignal) +initSignal) , (SignalTag -oe, Bool -> SignalValue +oe, Bool -> SignalValue Bool Bool -oeSignal) +oeSignal) ] - usedPortTags :: Ports (Shift v x t) -> [SignalTag] -usedPortTags ShiftPorts{SignalTag + usedPortTags :: Ports (Shift v x t) -> [SignalTag] +usedPortTags ShiftPorts{SignalTag work :: SignalTag work :: forall v x t. Ports (Shift v x t) -> SignalTag -work, SignalTag +work, SignalTag direction :: SignalTag direction :: forall v x t. Ports (Shift v x t) -> SignalTag -direction, SignalTag +direction, SignalTag mode :: SignalTag mode :: forall v x t. Ports (Shift v x t) -> SignalTag -mode, SignalTag +mode, SignalTag step :: SignalTag step :: forall v x t. Ports (Shift v x t) -> SignalTag -step, SignalTag +step, SignalTag init :: SignalTag init :: forall v x t. Ports (Shift v x t) -> SignalTag -init, SignalTag +init, SignalTag oe :: SignalTag oe :: forall v x t. Ports (Shift v x t) -> SignalTag -oe} = +oe} = [SignalTag -work, SignalTag -direction, SignalTag -mode, SignalTag -step, SignalTag -init, SignalTag -oe] +work, SignalTag +direction, SignalTag +mode, SignalTag +step, SignalTag +init, SignalTag +oe] - takePortTags :: [SignalTag] -> Shift v x t -> Ports (Shift v x t) -takePortTags (SignalTag -work : SignalTag -direction : SignalTag -mode : SignalTag -step : SignalTag -init : SignalTag -oe : [SignalTag] + takePortTags :: [SignalTag] -> Shift v x t -> Ports (Shift v x t) +takePortTags (SignalTag +work : SignalTag +direction : SignalTag +mode : SignalTag +step : SignalTag +init : SignalTag +oe : [SignalTag] _) Shift v x t _ = forall v x t. SignalTag @@ -913,21 +913,21 @@ -> SignalTag -> Ports (Shift v x t) ShiftPorts SignalTag -work SignalTag -direction SignalTag -mode SignalTag -step SignalTag -init SignalTag -oe +work SignalTag +direction SignalTag +mode SignalTag +step SignalTag +init SignalTag +oe takePortTags [SignalTag] _ Shift v x t _ = forall a. HasCallStack => String -> a error String "can not take port tags, tags are over" -instance Default (Microcode (Shift v x t)) where - def :: Microcode (Shift v x t) -def = +instance Default (Microcode (Shift v x t)) where + def :: Microcode (Shift v x t) +def = Microcode { workSignal :: Bool workSignal = Bool @@ -949,8 +949,8 @@ False } -instance UnambiguouslyDecode (Shift v x t) where - decodeInstruction :: Instruction (Shift v x t) -> Microcode (Shift v x t) +instance UnambiguouslyDecode (Shift v x t) where + decodeInstruction :: Instruction (Shift v x t) -> Microcode (Shift v x t) decodeInstruction Instruction (Shift v x t) R:InstructionShift v x t Init = forall a. Default a => a @@ -963,10 +963,10 @@ def{oeSignal :: Bool oeSignal = Bool True} - decodeInstruction (Work Bool -toRight Bool -step Mode -mode) = + decodeInstruction (Work Bool +toRight Bool +step Mode +mode) = forall a. Default a => a def { workSignal :: Bool @@ -975,26 +975,26 @@ , directionSignal :: Bool directionSignal = Bool -> Bool not Bool -toRight +toRight , modeSignal :: Bool modeSignal = Mode -mode forall a. Eq a => a -> a -> Bool +mode forall a. Eq a => a -> a -> Bool == Mode Arithmetic , stepSignal :: Bool stepSignal = Bool -step +step } -instance Connected (Shift v x t) where - data Ports (Shift v x t) = ShiftPorts {forall v x t. Ports (Shift v x t) -> SignalTag +instance Connected (Shift v x t) where + data Ports (Shift v x t) = ShiftPorts {forall v x t. Ports (Shift v x t) -> SignalTag work, forall v x t. Ports (Shift v x t) -> SignalTag direction, forall v x t. Ports (Shift v x t) -> SignalTag mode, forall v x t. Ports (Shift v x t) -> SignalTag step, forall v x t. Ports (Shift v x t) -> SignalTag init, forall v x t. Ports (Shift v x t) -> SignalTag oe :: SignalTag} - deriving (Int -> Ports (Shift v x t) -> ShowS + deriving (Int -> Ports (Shift v x t) -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall v x t. Int -> Ports (Shift v x t) -> ShowS @@ -1008,39 +1008,39 @@ $cshowsPrec :: forall v x t. Int -> Ports (Shift v x t) -> ShowS Show) -instance IOConnected (Shift v x t) where - data IOPorts (Shift v x t) = ShiftIO +instance IOConnected (Shift v x t) where + data IOPorts (Shift v x t) = ShiftIO -instance Val x => TargetSystemComponent (Shift v x t) where - moduleName :: Text -> Shift v x t -> Text +instance Val x => TargetSystemComponent (Shift v x t) where + moduleName :: Text -> Shift v x t -> Text moduleName Text _ Shift v x t _ = Text "pu_shift" - hardware :: Text -> Shift v x t -> Implementation -hardware Text -_tag Shift v x t -_pu = String -> Implementation + hardware :: Text -> Shift v x t -> Implementation +hardware Text +_tag Shift v x t +_pu = String -> Implementation FromLibrary String "pu_shift.v" - software :: Text -> Shift v x t -> Implementation + software :: Text -> Shift v x t -> Implementation software Text _ Shift v x t _ = Implementation Empty - hardwareInstance :: Text -> Shift v x t -> UnitEnv (Shift v x t) -> Verilog + hardwareInstance :: Text -> Shift v x t -> UnitEnv (Shift v x t) -> Verilog hardwareInstance - Text -tag - Shift v x t -_pu + Text +tag + Shift v x t +_pu UnitEnv - { Text + { Text sigClk :: forall m. UnitEnv m -> Text sigClk :: Text sigClk , ctrlPorts :: forall m. UnitEnv m -> Maybe (Ports m) -ctrlPorts = Just ShiftPorts{SignalTag +ctrlPorts = Just ShiftPorts{SignalTag oe :: SignalTag init :: SignalTag step :: SignalTag @@ -1053,15 +1053,15 @@ mode :: forall v x t. Ports (Shift v x t) -> SignalTag direction :: forall v x t. Ports (Shift v x t) -> SignalTag work :: forall v x t. Ports (Shift v x t) -> SignalTag -..} +..} , valueIn :: forall m. UnitEnv m -> Maybe (Text, Text) -valueIn = Just (Text -dataIn, Text -attrIn) +valueIn = Just (Text +dataIn, Text +attrIn) , valueOut :: forall m. UnitEnv m -> Maybe (Text, Text) -valueOut = Just (Text -dataOut, Text -attrOut) +valueOut = Just (Text +dataOut, Text +attrOut) } = [__i| pu_shift \# @@ -1078,12 +1078,12 @@ , .attr_out( #{ attrOut } ) ); |] - hardwareInstance Text -_title Shift v x t -_pu UnitEnv (Shift v x t) -_env = forall a. HasCallStack => String -> a + hardwareInstance Text +_title Shift v x t +_pu UnitEnv (Shift v x t) +_env = forall a. HasCallStack => String -> a error String "internal error" -instance IOTestBench (Shift v x t) v x +instance IOTestBench (Shift v x t) v x \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Types.html b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Types.html index 5a1b2d014..d23629557 100644 --- a/haddock/nitta/src/NITTA.Model.ProcessorUnits.Types.html +++ b/haddock/nitta/src/NITTA.Model.ProcessorUnits.Types.html @@ -73,57 +73,57 @@ import Prettyprinter -- | Class for processor unit tag or "name" -class (Typeable tag, Ord tag, ToString tag, IsString tag, Semigroup tag) => UnitTag tag where +class (Typeable tag, Ord tag, ToString tag, IsString tag, Semigroup tag) => UnitTag tag where -- | Whether the value can be used as a template or not - isTemplate :: tag -> Bool + isTemplate :: tag -> Bool -- | Create tag from the template and index - fromTemplate :: tag -> String -> tag + fromTemplate :: tag -> String -> tag instance UnitTag T.Text where - isTemplate :: Text -> Bool -isTemplate Text -tag = Text -> Text -> Bool + isTemplate :: Text -> Bool +isTemplate Text +tag = Text -> Text -> Bool T.isInfixOf (String -> Text T.pack String "{x}") Text -tag - fromTemplate :: Text -> String -> Text -fromTemplate Text -tag String -index = Text -> Text -> Text -> Text +tag + fromTemplate :: Text -> String -> Text +fromTemplate Text +tag String +index = Text -> Text -> Text -> Text T.replace (String -> Text T.pack String "{x}") (String -> Text T.pack String -index) Text -tag +index) Text +tag instance UnitTag String where - isTemplate :: String -> Bool -isTemplate String -tag = String + isTemplate :: String -> Bool +isTemplate String +tag = String "{x}" forall a. Eq a => [a] -> [a] -> Bool `L.isInfixOf` String -tag - fromTemplate :: String -> String -> String -fromTemplate String -tag String -index = forall a. Eq a => [a] -> [a] -> [a] -> [a] +tag + fromTemplate :: String -> String -> String +fromTemplate String +tag String +index = forall a. Eq a => [a] -> [a] -> [a] -> [a] replace String "{x}" String -index String -tag +index String +tag -- | Processor unit parallelism type -data ParallelismType +data ParallelismType = -- | All operations can be performed in parallel mode Full | -- | All operations can be performed in pipeline mode Pipeline | -- | Other processor units None - deriving (ProcessStepID -> ParallelismType -> String -> String + deriving (ProcessStepID -> ParallelismType -> String -> String [ParallelismType] -> String -> String ParallelismType -> String forall a. @@ -141,7 +141,7 @@ (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep ParallelismType x -> ParallelismType $cfrom :: forall x. ParallelismType -> Rep ParallelismType x -Generic, ParallelismType -> ParallelismType -> Bool +Generic, ParallelismType -> ParallelismType -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ParallelismType -> ParallelismType -> Bool $c/= :: ParallelismType -> ParallelismType -> Bool @@ -149,7 +149,7 @@ $c== :: ParallelismType -> ParallelismType -> Bool Eq) -instance ToJSON ParallelismType +instance ToJSON ParallelismType {- | Process unit - part of NITTA process with can execute a function from intermediate representation: @@ -161,70 +161,70 @@ 3. other features implemented by different type classes (see above and in "NITTA.Model.Problems"). -} -class VarValTime v x t => ProcessorUnit u v x t | u -> v x t where +class VarValTime v x t => ProcessorUnit u v x t | u -> v x t where -- If the processor unit can execute a function, then it will return the PU -- model with already bound function (only registeration, actual scheduling -- will be happening later). If not, it will return @Left@ value with a -- specific reason (e.g., not support or all internal resources is over). - tryBind :: F v x -> u -> Either String u + tryBind :: F v x -> u -> Either String u -- Get a computational process description. If the processor unit embedded -- another PUs (like "NITTA.Model.Networks.Bus"), the description should -- contain process steps for all PUs. -- -- 'ProcessStepID' may change from one call to another. - process :: u -> Process t (StepInfo v x t) + process :: u -> Process t (StepInfo v x t) -- | Indicates what type of parallelism is supported by 'ProcessorUnit' - parallelismType :: u -> ParallelismType - parallelismType u + parallelismType :: u -> ParallelismType + parallelismType u _ = ParallelismType None -- | Provide the processor unit size. At the moment it's just the number of subprocessors - puSize :: u -> Float - puSize u + puSize :: u -> Float + puSize u _ = Float 1 bind :: F v x -> u -> u -bind F v x -f u -pu = case forall u v x t. +bind F v x +f u +pu = case forall u v x t. ProcessorUnit u v x t => F v x -> u -> Either String u tryBind F v x -f u -pu of - Right u -pu' -> u -pu' - Left String -err -> forall a. HasCallStack => String -> a +f u +pu of + Right u +pu' -> u +pu' + Left String +err -> forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b $ String "can't bind function: " forall a. Semigroup a => a -> a -> a <> String -err +err allowToProcess :: F v x -> b -> Bool -allowToProcess F v x -f b -pu = forall a b. Either a b -> Bool +allowToProcess F v x +f b +pu = forall a b. Either a b -> Bool isRight forall a b. (a -> b) -> a -> b $ forall u v x t. ProcessorUnit u v x t => F v x -> u -> Either String u tryBind F v x -f b -pu +f b +pu -class NextTick u t | u -> t where - nextTick :: u -> t +class NextTick u t | u -> t where + nextTick :: u -> t -instance ProcessorUnit u v x t => NextTick u t where - nextTick :: u -> t -nextTick = forall u t. NextTick u t => u -> t +instance ProcessorUnit u v x t => NextTick u t where + nextTick :: u -> t +nextTick = forall u t. NextTick u t => u -> t nextTick forall b c a. (b -> c) -> (a -> b) -> a -> c . forall u v x t. ProcessorUnit u v x t => @@ -236,15 +236,15 @@ {- | Computational process description. It was designed in ISO 15926 style, with separated data and relations storage. -} -data Process t i = Process +data Process t i = Process { forall t i. Process t i -> [Step t i] -steps :: [Step t i] +steps :: [Step t i] -- ^ All process steps desctiption. , forall t i. Process t i -> [Relation] relations :: [Relation] -- ^ List of relationships between process steps (see 'Relation'). , forall t i. Process t i -> t -nextTick_ :: t +nextTick_ :: t -- ^ Next tick for instruction. Note: instruction /= endpoint. , forall t i. Process t i -> ProcessStepID nextUid :: ProcessStepID @@ -258,10 +258,10 @@ $cfrom :: forall t i x. Process t i -> Rep (Process t i) x Generic) -instance (Time t, Show i) => Pretty (Process t i) where - pretty :: forall ann. Process t i -> Doc ann -pretty Process t i -p = +instance (Time t, Show i) => Pretty (Process t i) where + pretty :: forall ann. Process t i -> Doc ann +pretty Process t i +p = [__i| Process: steps: #{ showList' $ reverse $ steps p } @@ -270,37 +270,37 @@ nextUid: #{ nextUid p } |] where - showList' :: [src] -> Doc ann -showList' [] = forall a ann. Pretty a => a -> Doc ann + showList' :: [src] -> Doc ann +showList' [] = forall a ann. Pretty a => a -> Doc ann pretty String "" - showList' [src] -xs = forall ann. Doc ann + showList' [src] +xs = forall ann. Doc ann line forall a. Semigroup a => a -> a -> a <> forall ann. ProcessStepID -> Doc ann -> Doc ann indent ProcessStepID 8 (forall ann. [Doc ann] -> Doc ann vsep [Doc ann] -lst) +lst) where - lst :: [Doc ann] -lst = + lst :: [Doc ann] +lst = forall a b. (a -> b) -> [a] -> [b] map (forall a ann. Pretty a => a -> Doc ann pretty forall b c a. (b -> c) -> (a -> b) -> a -> c -. (\(ProcessStepID -ix, src -value) -> [i|#{ ix }) #{ value }|] :: T.Text)) forall a b. (a -> b) -> a -> b +. (\(ProcessStepID +ix, src +value) -> [i|#{ ix }) #{ value }|] :: T.Text)) forall a b. (a -> b) -> a -> b $ forall a b. [a] -> [b] -> [(a, b)] zip [ProcessStepID 0 :: Int ..] [src] -xs +xs -instance (ToJSON t, ToJSON i) => ToJSON (Process t i) +instance (ToJSON t, ToJSON i) => ToJSON (Process t i) -instance Default t => Default (Process t i) where - def :: Process t i +instance Default t => Default (Process t i) where + def :: Process t i def = Process{steps :: [Step t i] steps = [], relations :: [Relation] relations = [], nextTick_ :: t @@ -309,37 +309,37 @@ nextUid = forall a. Default a => a def} -instance {-# OVERLAPS #-} NextTick (Process t si) t where - nextTick :: Process t si -> t -nextTick = forall t i. Process t i -> t +instance {-# OVERLAPS #-} NextTick (Process t si) t where + nextTick :: Process t si -> t +nextTick = forall t i. Process t i -> t nextTick_ -instance Ord t => WithFunctions (Process t (StepInfo v x t)) (F v x) where - functions :: Process t (StepInfo v x t) -> [F v x] -functions Process{[Step t (StepInfo v x t)] +instance Ord t => WithFunctions (Process t (StepInfo v x t)) (F v x) where + functions :: Process t (StepInfo v x t) -> [F v x] +functions Process{[Step t (StepInfo v x t)] steps :: [Step t (StepInfo v x t)] steps :: forall t i. Process t i -> [Step t i] -steps} = forall a b. (a -> Maybe b) -> [a] -> [b] +steps} = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe forall {t} {v} {x} {t}. Step t (StepInfo v x t) -> Maybe (F v x) -get forall a b. (a -> b) -> a -> b +get forall a b. (a -> b) -> a -> b $ forall b a. Ord b => (a -> b) -> [a] -> [a] L.sortOn (forall a. Interval a -> a I.inf forall b c a. (b -> c) -> (a -> b) -> a -> c . forall t i. Step t i -> Interval t pInterval) [Step t (StepInfo v x t)] -steps +steps where - get :: Step t (StepInfo v x t) -> Maybe (F v x) -get Step{StepInfo v x t + get :: Step t (StepInfo v x t) -> Maybe (F v x) +get Step{StepInfo v x t pDesc :: forall t i. Step t i -> i pDesc :: StepInfo v x t -pDesc} | IntermediateStep F v x -f <- forall {v} {x} {t}. StepInfo v x t -> StepInfo v x t +pDesc} | IntermediateStep F v x +f <- forall {v} {x} {t}. StepInfo v x t -> StepInfo v x t descent StepInfo v x t -pDesc = forall a. a -> Maybe a +pDesc = forall a. a -> Maybe a Just F v x -f - get Step t (StepInfo v x t) +f + get Step t (StepInfo v x t) _ = forall a. Maybe a Nothing @@ -347,18 +347,18 @@ type ProcessStepID = Int -- | Process step representation -data Step t i = Step +data Step t i = Step { forall t i. Step t i -> ProcessStepID pID :: ProcessStepID -- ^ uniq (inside single the process unit) step ID , forall t i. Step t i -> Interval t -pInterval :: Interval t +pInterval :: Interval t -- ^ step time , forall t i. Step t i -> i -pDesc :: i +pDesc :: i -- ^ step description } - deriving (ProcessStepID -> Step t i -> String -> String + deriving (ProcessStepID -> Step t i -> String -> String forall a. (ProcessStepID -> a -> String -> String) -> (a -> String) -> ([a] -> String -> String) -> Show a @@ -383,55 +383,55 @@ $cfrom :: forall t i x. Step t i -> Rep (Step t i) x Generic) -instance (ToJSON t, ToJSON i) => ToJSON (Step t i) +instance (ToJSON t, ToJSON i) => ToJSON (Step t i) -instance Ord v => Patch (Step t (StepInfo v x t)) (Changeset v) where - patch :: Changeset v -> Step t (StepInfo v x t) -> Step t (StepInfo v x t) -patch Changeset v -diff step :: Step t (StepInfo v x t) -step@Step{StepInfo v x t +instance Ord v => Patch (Step t (StepInfo v x t)) (Changeset v) where + patch :: Changeset v -> Step t (StepInfo v x t) -> Step t (StepInfo v x t) +patch Changeset v +diff step :: Step t (StepInfo v x t) +step@Step{StepInfo v x t pDesc :: StepInfo v x t pDesc :: forall t i. Step t i -> i -pDesc} = Step t (StepInfo v x t) -step{pDesc :: StepInfo v x t +pDesc} = Step t (StepInfo v x t) +step{pDesc :: StepInfo v x t pDesc = forall f diff. Patch f diff => diff -> f -> f patch Changeset v -diff StepInfo v x t -pDesc} +diff StepInfo v x t +pDesc} -- | Informative process step description at a specific process level. -data StepInfo v x t where +data StepInfo v x t where -- | CAD level step - CADStep :: String -> StepInfo v x t + CADStep :: String -> StepInfo v x t -- | Apply refactoring - RefactorStep :: (Typeable ref, Show ref, Eq ref) => ref -> StepInfo v x t + RefactorStep :: (Typeable ref, Show ref, Eq ref) => ref -> StepInfo v x t -- | intermidiate level step (function execution) - IntermediateStep :: F v x -> StepInfo v x t + IntermediateStep :: F v x -> StepInfo v x t -- | endpoint level step (source or target) - EndpointRoleStep :: EndpointRole v -> StepInfo v x t + EndpointRoleStep :: EndpointRole v -> StepInfo v x t -- | process unit instruction (depends on process unit type) - InstructionStep :: - (Show (Instruction pu), Typeable (Instruction pu)) => - Instruction pu -> - StepInfo v x t + InstructionStep :: + (Show (Instruction pu), Typeable (Instruction pu)) => + Instruction pu -> + StepInfo v x t -- | wrapper for nested process unit step (used for networks) - NestedStep :: UnitTag tag => {() -nTitle :: tag, forall t v x. StepInfo v x t -> Step t (StepInfo v x t) -nStep :: Step t (StepInfo v x t)} -> StepInfo v x t + NestedStep :: UnitTag tag => {() +nTitle :: tag, forall t v x. StepInfo v x t -> Step t (StepInfo v x t) +nStep :: Step t (StepInfo v x t)} -> StepInfo v x t -- | Process unit allocation step - AllocationStep :: (Typeable a, Show a, Eq a) => a -> StepInfo v x t + AllocationStep :: (Typeable a, Show a, Eq a) => a -> StepInfo v x t descent :: StepInfo v x t -> StepInfo v x t descent (NestedStep tag -_ Step t (StepInfo v x t) -step) = StepInfo v x t -> StepInfo v x t +_ Step t (StepInfo v x t) +step) = StepInfo v x t -> StepInfo v x t descent forall a b. (a -> b) -> a -> b $ forall t i. Step t i -> i pDesc Step t (StepInfo v x t) -step -descent StepInfo v x t -desc = StepInfo v x t -desc +step +descent StepInfo v x t +desc = StepInfo v x t +desc isRefactorStep :: StepInfo v x t -> Bool isRefactorStep RefactorStep{} = Bool @@ -447,100 +447,100 @@ _ = Bool False -instance (Var v, Show (Step t (StepInfo v x t))) => Show (StepInfo v x t) where - show :: StepInfo v x t -> String -show (CADStep String -msg) = String +instance (Var v, Show (Step t (StepInfo v x t))) => Show (StepInfo v x t) where + show :: StepInfo v x t -> String +show (CADStep String +msg) = String "CAD: " forall a. Semigroup a => a -> a -> a <> String -msg - show (AllocationStep a -alloc) = String +msg + show (AllocationStep a +alloc) = String "Allocation: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show a -alloc - show (RefactorStep ref -ref) = String +alloc + show (RefactorStep ref +ref) = String "Refactor: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show ref -ref - show (IntermediateStep F{f +ref + show (IntermediateStep F{f fun :: () fun :: f fun}) = String "Intermediate: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show f -fun - show (EndpointRoleStep EndpointRole v -eff) = String +fun + show (EndpointRoleStep EndpointRole v +eff) = String "Endpoint: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show EndpointRole v -eff - show (InstructionStep Instruction pu -instr) = String +eff + show (InstructionStep Instruction pu +instr) = String "Instruction: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show Instruction pu -instr - show NestedStep{tag +instr + show NestedStep{tag nTitle :: tag nTitle :: () -nTitle, nStep :: forall t v x. StepInfo v x t -> Step t (StepInfo v x t) -nStep = Step{StepInfo v x t +nTitle, nStep :: forall t v x. StepInfo v x t -> Step t (StepInfo v x t) +nStep = Step{StepInfo v x t pDesc :: StepInfo v x t pDesc :: forall t i. Step t i -> i -pDesc}} = String +pDesc}} = String "@" forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString tag -nTitle forall a. Semigroup a => a -> a -> a +nTitle forall a. Semigroup a => a -> a -> a <> String " " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show StepInfo v x t -pDesc +pDesc -instance Ord v => Patch (StepInfo v x t) (Changeset v) where - patch :: Changeset v -> StepInfo v x t -> StepInfo v x t -patch Changeset v -diff (IntermediateStep F v x -f) = forall v x t. F v x -> StepInfo v x t +instance Ord v => Patch (StepInfo v x t) (Changeset v) where + patch :: Changeset v -> StepInfo v x t -> StepInfo v x t +patch Changeset v +diff (IntermediateStep F v x +f) = forall v x t. F v x -> StepInfo v x t IntermediateStep forall a b. (a -> b) -> a -> b $ forall f diff. Patch f diff => diff -> f -> f patch Changeset v -diff F v x -f - patch Changeset v -diff (EndpointRoleStep EndpointRole v -ep) = forall v x t. EndpointRole v -> StepInfo v x t +diff F v x +f + patch Changeset v +diff (EndpointRoleStep EndpointRole v +ep) = forall v x t. EndpointRole v -> StepInfo v x t EndpointRoleStep forall a b. (a -> b) -> a -> b $ forall f diff. Patch f diff => diff -> f -> f patch Changeset v -diff EndpointRole v -ep - patch Changeset v -diff (NestedStep tag -tag Step t (StepInfo v x t) -nStep) = forall tag t v x. +diff EndpointRole v +ep + patch Changeset v +diff (NestedStep tag +tag Step t (StepInfo v x t) +nStep) = forall tag t v x. UnitTag tag => tag -> Step t (StepInfo v x t) -> StepInfo v x t NestedStep tag -tag forall a b. (a -> b) -> a -> b +tag forall a b. (a -> b) -> a -> b $ forall f diff. Patch f diff => diff -> f -> f patch Changeset v -diff Step t (StepInfo v x t) -nStep +diff Step t (StepInfo v x t) +nStep patch Changeset v -_ StepInfo v x t -instr = StepInfo v x t -instr +_ StepInfo v x t +instr = StepInfo v x t +instr -- | Relations between process steps. -data Relation +data Relation = -- | Vertical relationships (up and down). For example, the intermediate -- step (function execution) can be translated to a sequence of endpoint -- steps (receiving and sending variable), and process unit instructions. @@ -553,7 +553,7 @@ Horizontal {Relation -> ProcessStepID hPrev, Relation -> ProcessStepID hNext :: ProcessStepID} - deriving (ProcessStepID -> Relation -> String -> String + deriving (ProcessStepID -> Relation -> String -> String [Relation] -> String -> String Relation -> String forall a. @@ -571,7 +571,7 @@ (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep Relation x -> Relation $cfrom :: forall x. Relation -> Rep Relation x -Generic, Eq Relation +Generic, Eq Relation Relation -> Relation -> Bool Relation -> Relation -> Ordering Relation -> Relation -> Relation @@ -599,7 +599,7 @@ $c< :: Relation -> Relation -> Bool compare :: Relation -> Relation -> Ordering $ccompare :: Relation -> Relation -> Ordering -Ord, Relation -> Relation -> Bool +Ord, Relation -> Relation -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Relation -> Relation -> Bool $c/= :: Relation -> Relation -> Bool @@ -607,58 +607,58 @@ $c== :: Relation -> Relation -> Bool Eq) -instance ToJSON Relation +instance ToJSON Relation whatsHappen :: a -> Process a i -> [Step a i] -whatsHappen a -t Process{[Step a i] +whatsHappen a +t Process{[Step a i] steps :: [Step a i] steps :: forall t i. Process t i -> [Step t i] -steps} = forall a. (a -> Bool) -> [a] -> [a] +steps} = forall a. (a -> Bool) -> [a] -> [a] filter (forall {a}. Ord a => a -> Interval a -> Bool -atSameTime a -t forall b c a. (b -> c) -> (a -> b) -> a -> c +atSameTime a +t forall b c a. (b -> c) -> (a -> b) -> a -> c . forall t i. Step t i -> Interval t pInterval) [Step a i] -steps +steps where - atSameTime :: a -> Interval a -> Bool -atSameTime a -a Interval a -ti = a -a forall {a}. Ord a => a -> Interval a -> Bool + atSameTime :: a -> Interval a -> Bool +atSameTime a +a Interval a +ti = a +a forall {a}. Ord a => a -> Interval a -> Bool `member` Interval a -ti +ti extractInstructionAt :: u -> t -> [Instruction u] -extractInstructionAt u -pu t -t = forall a b. (a -> Maybe b) -> [a] -> [b] +extractInstructionAt u +pu t +t = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe (forall pu t v x. Typeable (Instruction pu) => pu -> Step t (StepInfo v x t) -> Maybe (Instruction pu) -inst u -pu) forall a b. (a -> b) -> a -> b +inst u +pu) forall a b. (a -> b) -> a -> b $ forall {a} {i}. Ord a => a -> Process a i -> [Step a i] whatsHappen t -t forall a b. (a -> b) -> a -> b +t forall a b. (a -> b) -> a -> b $ forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -pu +pu where - inst :: Typeable (Instruction pu) => pu -> Step t (StepInfo v x t) -> Maybe (Instruction pu) - inst :: forall pu t v x. + inst :: Typeable (Instruction pu) => pu -> Step t (StepInfo v x t) -> Maybe (Instruction pu) + inst :: forall pu t v x. Typeable (Instruction pu) => pu -> Step t (StepInfo v x t) -> Maybe (Instruction pu) -inst pu +inst pu _ Step{pDesc :: forall t i. Step t i -> i -pDesc = InstructionStep Instruction pu -instr} = forall a b. (Typeable a, Typeable b) => a -> Maybe b +pDesc = InstructionStep Instruction pu +instr} = forall a b. (Typeable a, Typeable b) => a -> Maybe b cast Instruction pu -instr - inst pu +instr + inst pu _ Step t (StepInfo v x t) _ = forall a. Maybe a Nothing @@ -685,78 +685,78 @@ -} a 0 withShift :: a -> a -> a -`withShift` a -_offset = a +`withShift` a +_offset = a 0 -a -tick `withShift` a -offset = a -tick forall a. Num a => a -> a -> a +a +tick `withShift` a +offset = a +tick forall a. Num a => a -> a -> a + a -offset +offset --------------------------------------------------------------------- {- | Type class for controllable units. Defines two level of a unit behaviour representation (see ahead). -} -class Controllable pu where +class Controllable pu where -- Instruction describe unit behaviour on each mUnit cycle. If instruction -- not defined for some cycles - it should be interpreted as NOP. - data Instruction pu :: Type + data Instruction pu :: Type -- | Microcode desctibe controll signals on each mUnit cycle (without exclusion). - data Microcode pu :: Type + data Microcode pu :: Type -- | Zip port signal tags and value. - zipSignalTagsAndValues :: Ports pu -> Microcode pu -> [(SignalTag, SignalValue)] + zipSignalTagsAndValues :: Ports pu -> Microcode pu -> [(SignalTag, SignalValue)] -- | Get list of used control signal tags. - usedPortTags :: Ports pu -> [SignalTag] + usedPortTags :: Ports pu -> [SignalTag] -- | Take signal tags from inifinite list of tags. - takePortTags :: [SignalTag] -> pu -> Ports pu + takePortTags :: [SignalTag] -> pu -> Ports pu -- | Getting microcode value at a specific time. -class ByTime pu t | pu -> t where - microcodeAt :: pu -> t -> Microcode pu +class ByTime pu t | pu -> t where + microcodeAt :: pu -> t -> Microcode pu instance - ( Show (Instruction pu) - , Default (Microcode pu) - , ProcessorUnit pu v x t - , UnambiguouslyDecode pu - , Typeable pu + ( Show (Instruction pu) + , Default (Microcode pu) + , ProcessorUnit pu v x t + , UnambiguouslyDecode pu + , Typeable pu ) => - ByTime pu t + ByTime pu t where - microcodeAt :: pu -> t -> Microcode pu -microcodeAt pu -pu t -t = case forall {u} {v} {x} {t}. + microcodeAt :: pu -> t -> Microcode pu +microcodeAt pu +pu t +t = case forall {u} {v} {x} {t}. (ProcessorUnit u v x t, Typeable u) => u -> t -> [Instruction u] extractInstructionAt pu -pu t -t of +pu t +t of [] -> forall a. Default a => a def - [Instruction pu -instr] -> forall pu. UnambiguouslyDecode pu => Instruction pu -> Microcode pu + [Instruction pu +instr] -> forall pu. UnambiguouslyDecode pu => Instruction pu -> Microcode pu decodeInstruction Instruction pu -instr - [Instruction pu] -is -> forall a. HasCallStack => String -> a +instr + [Instruction pu] +is -> forall a. HasCallStack => String -> a error [i|instruction collision at #{ t } tick: #{ is } #{ pretty $ process pu }|] newtype SignalTag = SignalTag {SignalTag -> Text -signalTag :: T.Text} deriving (SignalTag -> SignalTag -> Bool +signalTag :: T.Text} deriving (SignalTag -> SignalTag -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: SignalTag -> SignalTag -> Bool $c/= :: SignalTag -> SignalTag -> Bool == :: SignalTag -> SignalTag -> Bool $c== :: SignalTag -> SignalTag -> Bool -Eq, Eq SignalTag +Eq, Eq SignalTag SignalTag -> SignalTag -> Bool SignalTag -> SignalTag -> Ordering SignalTag -> SignalTag -> SignalTag @@ -786,25 +786,25 @@ $ccompare :: SignalTag -> SignalTag -> Ordering Ord) -instance Show SignalTag where - show :: SignalTag -> String -show = forall a. ToString a => a -> String +instance Show SignalTag where + show :: SignalTag -> String +show = forall a. ToString a => a -> String toString forall b c a. (b -> c) -> (a -> b) -> a -> c . SignalTag -> Text signalTag -- | Type class of processor units with control ports. -class Connected pu where +class Connected pu where -- | A processor unit control ports (signals, flags). - data Ports pu :: Type + data Ports pu :: Type {- | Decoding microcode from a simple instruction (microcode don't change over time). TODO: Generalize that class for all process units, including networks. -} -class UnambiguouslyDecode pu where - decodeInstruction :: Instruction pu -> Microcode pu +class UnambiguouslyDecode pu where + decodeInstruction :: Instruction pu -> Microcode pu -- | Control line value. data SignalValue @@ -814,7 +814,7 @@ Bool Bool | -- | broken value (`x`) by data colision BrokenSignal - deriving (SignalValue -> SignalValue -> Bool + deriving (SignalValue -> SignalValue -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: SignalValue -> SignalValue -> Bool $c/= :: SignalValue -> SignalValue -> Bool @@ -823,13 +823,13 @@ Eq) instance Default SignalValue where - def :: SignalValue -def = SignalValue + def :: SignalValue +def = SignalValue Undef -instance Show SignalValue where - show :: SignalValue -> String -show SignalValue +instance Show SignalValue where + show :: SignalValue -> String +show SignalValue Undef = String "x" show (Bool Bool @@ -844,13 +844,13 @@ SignalValue Undef +++ :: SignalValue -> SignalValue -> SignalValue -+++ SignalValue -v = SignalValue -v -SignalValue -v +++ SignalValue ++++ SignalValue +v = SignalValue +v +SignalValue +v +++ SignalValue Undef = SignalValue -v +v SignalValue _ +++ SignalValue _ = SignalValue @@ -859,35 +859,35 @@ ------------------------------------------------------------ -- | Type class of processor units with IO ports. -class IOConnected pu where - data IOPorts pu :: Type +class IOConnected pu where + data IOPorts pu :: Type -- | External input ports, which go outside of NITTA mUnit. - inputPorts :: IOPorts pu -> S.Set InputPortTag - inputPorts IOPorts pu + inputPorts :: IOPorts pu -> S.Set InputPortTag + inputPorts IOPorts pu _ = forall a. Set a S.empty -- | External output ports, which go outside of NITTA mUnit. - outputPorts :: IOPorts pu -> S.Set OutputPortTag - outputPorts IOPorts pu + outputPorts :: IOPorts pu -> S.Set OutputPortTag + outputPorts IOPorts pu _ = forall a. Set a S.empty -- | External output ports, which go outside of NITTA mUnit. - inoutPorts :: IOPorts pu -> S.Set InoutPortTag - inoutPorts IOPorts pu + inoutPorts :: IOPorts pu -> S.Set InoutPortTag + inoutPorts IOPorts pu _ = forall a. Set a S.empty newtype InputPortTag = InputPortTag {InputPortTag -> Text -inputPortTag :: T.Text} deriving (InputPortTag -> InputPortTag -> Bool +inputPortTag :: T.Text} deriving (InputPortTag -> InputPortTag -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: InputPortTag -> InputPortTag -> Bool $c/= :: InputPortTag -> InputPortTag -> Bool == :: InputPortTag -> InputPortTag -> Bool $c== :: InputPortTag -> InputPortTag -> Bool -Eq, Eq InputPortTag +Eq, Eq InputPortTag InputPortTag -> InputPortTag -> Bool InputPortTag -> InputPortTag -> Ordering InputPortTag -> InputPortTag -> InputPortTag @@ -916,20 +916,20 @@ compare :: InputPortTag -> InputPortTag -> Ordering $ccompare :: InputPortTag -> InputPortTag -> Ordering Ord) -instance Show InputPortTag where show :: InputPortTag -> String -show = forall a. ToString a => a -> String +instance Show InputPortTag where show :: InputPortTag -> String +show = forall a. ToString a => a -> String toString forall b c a. (b -> c) -> (a -> b) -> a -> c . InputPortTag -> Text inputPortTag newtype OutputPortTag = OutputPortTag {OutputPortTag -> Text -outputPortTag :: T.Text} deriving (OutputPortTag -> OutputPortTag -> Bool +outputPortTag :: T.Text} deriving (OutputPortTag -> OutputPortTag -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: OutputPortTag -> OutputPortTag -> Bool $c/= :: OutputPortTag -> OutputPortTag -> Bool == :: OutputPortTag -> OutputPortTag -> Bool $c== :: OutputPortTag -> OutputPortTag -> Bool -Eq, Eq OutputPortTag +Eq, Eq OutputPortTag OutputPortTag -> OutputPortTag -> Bool OutputPortTag -> OutputPortTag -> Ordering OutputPortTag -> OutputPortTag -> OutputPortTag @@ -958,20 +958,20 @@ compare :: OutputPortTag -> OutputPortTag -> Ordering $ccompare :: OutputPortTag -> OutputPortTag -> Ordering Ord) -instance Show OutputPortTag where show :: OutputPortTag -> String -show = forall a. ToString a => a -> String +instance Show OutputPortTag where show :: OutputPortTag -> String +show = forall a. ToString a => a -> String toString forall b c a. (b -> c) -> (a -> b) -> a -> c . OutputPortTag -> Text outputPortTag newtype InoutPortTag = InoutPortTag {InoutPortTag -> Text -inoutPortTag :: T.Text} deriving (InoutPortTag -> InoutPortTag -> Bool +inoutPortTag :: T.Text} deriving (InoutPortTag -> InoutPortTag -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: InoutPortTag -> InoutPortTag -> Bool $c/= :: InoutPortTag -> InoutPortTag -> Bool == :: InoutPortTag -> InoutPortTag -> Bool $c== :: InoutPortTag -> InoutPortTag -> Bool -Eq, Eq InoutPortTag +Eq, Eq InoutPortTag InoutPortTag -> InoutPortTag -> Bool InoutPortTag -> InoutPortTag -> Ordering InoutPortTag -> InoutPortTag -> InoutPortTag @@ -1000,8 +1000,8 @@ compare :: InoutPortTag -> InoutPortTag -> Ordering $ccompare :: InoutPortTag -> InoutPortTag -> Ordering Ord) -instance Show InoutPortTag where show :: InoutPortTag -> String -show = forall a. ToString a => a -> String +instance Show InoutPortTag where show :: InoutPortTag -> String +show = forall a. ToString a => a -> String toString forall b c a. (b -> c) -> (a -> b) -> a -> c . InoutPortTag -> Text inoutPortTag diff --git a/haddock/nitta/src/NITTA.Model.TargetSystem.html b/haddock/nitta/src/NITTA.Model.TargetSystem.html index e47aa6860..936866193 100644 --- a/haddock/nitta/src/NITTA.Model.TargetSystem.html +++ b/haddock/nitta/src/NITTA.Model.TargetSystem.html @@ -27,12 +27,12 @@ {- | Model of target unit, which is a main subject of synthesis process and synthesis graph. -} -data TargetSystem u tag v x t = TargetSystem +data TargetSystem u tag v x t = TargetSystem { forall u tag v x t. TargetSystem u tag v x t -> u -mUnit :: u +mUnit :: u -- ^ model of target unit , forall u tag v x t. TargetSystem u tag v x t -> DataFlowGraph v x -mDataFlowGraph :: DataFlowGraph v x +mDataFlowGraph :: DataFlowGraph v x -- ^ whole application algorithm } deriving (forall a. @@ -47,331 +47,331 @@ TargetSystem u tag v x t -> Rep (TargetSystem u tag v x t) x Generic) -instance Default u => Default (TargetSystem u tag v x t) where - def :: TargetSystem u tag v x t +instance Default u => Default (TargetSystem u tag v x t) where + def :: TargetSystem u tag v x t def = forall u tag v x t. u -> DataFlowGraph v x -> TargetSystem u tag v x t TargetSystem forall a. Default a => a def forall a. Default a => a def -instance WithFunctions u (F v x) => WithFunctions (TargetSystem u tag v x t) (F v x) where - functions :: TargetSystem u tag v x t -> [F v x] -functions TargetSystem{u +instance WithFunctions u (F v x) => WithFunctions (TargetSystem u tag v x t) (F v x) where + functions :: TargetSystem u tag v x t -> [F v x] +functions TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit, DataFlowGraph v x +mUnit, DataFlowGraph v x mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph :: forall u tag v x t. TargetSystem u tag v x t -> DataFlowGraph v x -mDataFlowGraph} = +mDataFlowGraph} = forall a. (?callStack::CallStack) => Bool -> a -> a assert (forall a. Ord a => [a] -> Set a S.fromList (forall a f. WithFunctions a f => a -> [f] functions u -mUnit) forall a. Eq a => a -> a -> Bool +mUnit) forall a. Eq a => a -> a -> Bool == forall a. Ord a => [a] -> Set a S.fromList (forall a f. WithFunctions a f => a -> [f] functions DataFlowGraph v x -mDataFlowGraph)) forall a b. (a -> b) -> a -> b +mDataFlowGraph)) forall a b. (a -> b) -> a -> b $ -- inconsistent TargetSystem forall a f. WithFunctions a f => a -> [f] functions u -mUnit +mUnit processDuration :: TargetSystem u tag v x t -> a -processDuration TargetSystem{u +processDuration TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u t. NextTick u t => u -> t +mUnit} = forall u t. NextTick u t => u -> t nextTick u -mUnit forall a. Num a => a -> a -> a +mUnit forall a. Num a => a -> a -> a - a 1 -isSynthesisComplete :: ProcessorUnit u v x t => TargetSystem u tag v x t -> Bool +isSynthesisComplete :: ProcessorUnit u v x t => TargetSystem u tag v x t -> Bool isSynthesisComplete :: forall u v x t tag. ProcessorUnit u v x t => TargetSystem u tag v x t -> Bool -isSynthesisComplete TargetSystem{u +isSynthesisComplete TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit, DataFlowGraph v x +mUnit, DataFlowGraph v x mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph :: forall u tag v x t. TargetSystem u tag v x t -> DataFlowGraph v x -mDataFlowGraph} = +mDataFlowGraph} = forall {u} {a1} {x} {t}. ProcessorUnit u a1 x t => u -> Set a1 transferred u -mUnit forall a. Eq a => a -> a -> Bool +mUnit forall a. Eq a => a -> a -> Bool == forall a v. Variables a v => a -> Set v variables DataFlowGraph v x -mDataFlowGraph +mDataFlowGraph -instance ProcessorUnit u v x t => ProcessorUnit (TargetSystem u tag v x t) v x t where - tryBind :: F v x +instance ProcessorUnit u v x t => ProcessorUnit (TargetSystem u tag v x t) v x t where + tryBind :: F v x -> TargetSystem u tag v x t -> Either String (TargetSystem u tag v x t) -tryBind F v x -f ts :: TargetSystem u tag v x t -ts@TargetSystem{u +tryBind F v x +f ts :: TargetSystem u tag v x t +ts@TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = (\u -u -> TargetSystem u tag v x t -ts{mUnit :: u +mUnit} = (\u +u -> TargetSystem u tag v x t +ts{mUnit :: u mUnit = u -u}) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +u}) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall u v x t. ProcessorUnit u v x t => F v x -> u -> Either String u tryBind F v x -f u -mUnit - process :: TargetSystem u tag v x t -> Process t (StepInfo v x t) -process TargetSystem{u +f u +mUnit + process :: TargetSystem u tag v x t -> Process t (StepInfo v x t) +process TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u v x t. +mUnit} = forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -mUnit - parallelismType :: TargetSystem u tag v x t -> ParallelismType -parallelismType TargetSystem{u +mUnit + parallelismType :: TargetSystem u tag v x t -> ParallelismType +parallelismType TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u v x t. ProcessorUnit u v x t => u -> ParallelismType +mUnit} = forall u v x t. ProcessorUnit u v x t => u -> ParallelismType parallelismType u -mUnit - puSize :: TargetSystem u tag v x t -> Float -puSize TargetSystem{u +mUnit + puSize :: TargetSystem u tag v x t -> Float +puSize TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u v x t. ProcessorUnit u v x t => u -> Float +mUnit} = forall u v x t. ProcessorUnit u v x t => u -> Float puSize u -mUnit +mUnit -instance BindProblem u tag v x => BindProblem (TargetSystem u tag v x t) tag v x where - bindOptions :: TargetSystem u tag v x t -> [Bind tag v x] -bindOptions TargetSystem{u +instance BindProblem u tag v x => BindProblem (TargetSystem u tag v x t) tag v x where + bindOptions :: TargetSystem u tag v x t -> [Bind tag v x] +bindOptions TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u tag v x. BindProblem u tag v x => u -> [Bind tag v x] +mUnit} = forall u tag v x. BindProblem u tag v x => u -> [Bind tag v x] bindOptions u -mUnit +mUnit - bindDecision :: TargetSystem u tag v x t + bindDecision :: TargetSystem u tag v x t -> Bind tag v x -> TargetSystem u tag v x t -bindDecision ts :: TargetSystem u tag v x t -ts@TargetSystem{u +bindDecision ts :: TargetSystem u tag v x t +ts@TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} Bind tag v x -d = TargetSystem u tag v x t -ts{mUnit :: u +mUnit} Bind tag v x +d = TargetSystem u tag v x t +ts{mUnit :: u mUnit = forall u tag v x. BindProblem u tag v x => u -> Bind tag v x -> u bindDecision u -mUnit Bind tag v x -d} +mUnit Bind tag v x +d} -instance DataflowProblem u tag v t => DataflowProblem (TargetSystem u tag v x t) tag v t where - dataflowOptions :: TargetSystem u tag v x t -> [DataflowSt tag v (TimeConstraint t)] -dataflowOptions TargetSystem{u +instance DataflowProblem u tag v t => DataflowProblem (TargetSystem u tag v x t) tag v t where + dataflowOptions :: TargetSystem u tag v x t -> [DataflowSt tag v (TimeConstraint t)] +dataflowOptions TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u tag v t. +mUnit} = forall u tag v t. DataflowProblem u tag v t => u -> [DataflowSt tag v (TimeConstraint t)] dataflowOptions u -mUnit +mUnit - dataflowDecision :: TargetSystem u tag v x t + dataflowDecision :: TargetSystem u tag v x t -> DataflowSt tag v (Interval t) -> TargetSystem u tag v x t -dataflowDecision f :: TargetSystem u tag v x t -f@TargetSystem{u +dataflowDecision f :: TargetSystem u tag v x t +f@TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} DataflowSt tag v (Interval t) -d = TargetSystem u tag v x t -f{mUnit :: u +mUnit} DataflowSt tag v (Interval t) +d = TargetSystem u tag v x t +f{mUnit :: u mUnit = forall u tag v t. DataflowProblem u tag v t => u -> DataflowSt tag v (Interval t) -> u dataflowDecision u -mUnit DataflowSt tag v (Interval t) -d} +mUnit DataflowSt tag v (Interval t) +d} instance - (Var v, Val x, BreakLoopProblem u v x) => - BreakLoopProblem (TargetSystem u tag v x t) v x + (Var v, Val x, BreakLoopProblem u v x) => + BreakLoopProblem (TargetSystem u tag v x t) v x where - breakLoopOptions :: TargetSystem u tag v x t -> [BreakLoop v x] -breakLoopOptions TargetSystem{u + breakLoopOptions :: TargetSystem u tag v x t -> [BreakLoop v x] +breakLoopOptions TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u v x. BreakLoopProblem u v x => u -> [BreakLoop v x] +mUnit} = forall u v x. BreakLoopProblem u v x => u -> [BreakLoop v x] breakLoopOptions u -mUnit +mUnit - breakLoopDecision :: TargetSystem u tag v x t + breakLoopDecision :: TargetSystem u tag v x t -> BreakLoop v x -> TargetSystem u tag v x t -breakLoopDecision TargetSystem{u +breakLoopDecision TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit, DataFlowGraph v x +mUnit, DataFlowGraph v x mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph :: forall u tag v x t. TargetSystem u tag v x t -> DataFlowGraph v x -mDataFlowGraph} BreakLoop v x -d = +mDataFlowGraph} BreakLoop v x +d = TargetSystem { mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph = forall u v x. BreakLoopProblem u v x => u -> BreakLoop v x -> u breakLoopDecision DataFlowGraph v x -mDataFlowGraph BreakLoop v x -d +mDataFlowGraph BreakLoop v x +d , mUnit :: u mUnit = forall u v x. BreakLoopProblem u v x => u -> BreakLoop v x -> u breakLoopDecision u -mUnit BreakLoop v x -d +mUnit BreakLoop v x +d } instance - (Var v, Val x, OptimizeAccumProblem u v x) => - OptimizeAccumProblem (TargetSystem u tag v x t) v x + (Var v, Val x, OptimizeAccumProblem u v x) => + OptimizeAccumProblem (TargetSystem u tag v x t) v x where - optimizeAccumOptions :: TargetSystem u tag v x t -> [OptimizeAccum v x] -optimizeAccumOptions TargetSystem{u + optimizeAccumOptions :: TargetSystem u tag v x t -> [OptimizeAccum v x] +optimizeAccumOptions TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u v x. +mUnit} = forall u v x. OptimizeAccumProblem u v x => u -> [OptimizeAccum v x] optimizeAccumOptions u -mUnit +mUnit - optimizeAccumDecision :: TargetSystem u tag v x t + optimizeAccumDecision :: TargetSystem u tag v x t -> OptimizeAccum v x -> TargetSystem u tag v x t -optimizeAccumDecision TargetSystem{u +optimizeAccumDecision TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit, DataFlowGraph v x +mUnit, DataFlowGraph v x mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph :: forall u tag v x t. TargetSystem u tag v x t -> DataFlowGraph v x -mDataFlowGraph} OptimizeAccum v x -d = +mDataFlowGraph} OptimizeAccum v x +d = TargetSystem { mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph = forall u v x. OptimizeAccumProblem u v x => u -> OptimizeAccum v x -> u optimizeAccumDecision DataFlowGraph v x -mDataFlowGraph OptimizeAccum v x -d +mDataFlowGraph OptimizeAccum v x +d , mUnit :: u mUnit = forall u v x. OptimizeAccumProblem u v x => u -> OptimizeAccum v x -> u optimizeAccumDecision u -mUnit OptimizeAccum v x -d +mUnit OptimizeAccum v x +d } -instance (Var v, Val x, ConstantFoldingProblem u v x) => ConstantFoldingProblem (TargetSystem u tag v x t) v x where - constantFoldingOptions :: TargetSystem u tag v x t -> [ConstantFolding v x] -constantFoldingOptions TargetSystem{u +instance (Var v, Val x, ConstantFoldingProblem u v x) => ConstantFoldingProblem (TargetSystem u tag v x t) v x where + constantFoldingOptions :: TargetSystem u tag v x t -> [ConstantFolding v x] +constantFoldingOptions TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u v x. +mUnit} = forall u v x. ConstantFoldingProblem u v x => u -> [ConstantFolding v x] constantFoldingOptions u -mUnit +mUnit - constantFoldingDecision :: TargetSystem u tag v x t + constantFoldingDecision :: TargetSystem u tag v x t -> ConstantFolding v x -> TargetSystem u tag v x t -constantFoldingDecision TargetSystem{u +constantFoldingDecision TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit, DataFlowGraph v x +mUnit, DataFlowGraph v x mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph :: forall u tag v x t. TargetSystem u tag v x t -> DataFlowGraph v x -mDataFlowGraph} ConstantFolding v x -d = +mDataFlowGraph} ConstantFolding v x +d = TargetSystem { mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph = forall u v x. ConstantFoldingProblem u v x => u -> ConstantFolding v x -> u constantFoldingDecision DataFlowGraph v x -mDataFlowGraph ConstantFolding v x -d +mDataFlowGraph ConstantFolding v x +d , mUnit :: u mUnit = forall u v x. ConstantFoldingProblem u v x => u -> ConstantFolding v x -> u constantFoldingDecision u -mUnit ConstantFolding v x -d +mUnit ConstantFolding v x +d } -instance (Var v, ResolveDeadlockProblem u v x) => ResolveDeadlockProblem (TargetSystem u tag v x t) v x where - resolveDeadlockOptions :: TargetSystem u tag v x t -> [ResolveDeadlock v x] -resolveDeadlockOptions TargetSystem{u +instance (Var v, ResolveDeadlockProblem u v x) => ResolveDeadlockProblem (TargetSystem u tag v x t) v x where + resolveDeadlockOptions :: TargetSystem u tag v x t -> [ResolveDeadlock v x] +resolveDeadlockOptions TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u v x. +mUnit} = forall u v x. ResolveDeadlockProblem u v x => u -> [ResolveDeadlock v x] resolveDeadlockOptions u -mUnit +mUnit - resolveDeadlockDecision :: TargetSystem u tag v x t + resolveDeadlockDecision :: TargetSystem u tag v x t -> ResolveDeadlock v x -> TargetSystem u tag v x t -resolveDeadlockDecision TargetSystem{u +resolveDeadlockDecision TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit, DataFlowGraph v x +mUnit, DataFlowGraph v x mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph :: forall u tag v x t. TargetSystem u tag v x t -> DataFlowGraph v x -mDataFlowGraph} ResolveDeadlock v x -d = +mDataFlowGraph} ResolveDeadlock v x +d = TargetSystem { mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph = forall u v x. ResolveDeadlockProblem u v x => u -> ResolveDeadlock v x -> u resolveDeadlockDecision DataFlowGraph v x -mDataFlowGraph ResolveDeadlock v x -d +mDataFlowGraph ResolveDeadlock v x +d , mUnit :: u mUnit = forall u v x. ResolveDeadlockProblem u v x => u -> ResolveDeadlock v x -> u resolveDeadlockDecision u -mUnit ResolveDeadlock v x -d +mUnit ResolveDeadlock v x +d } -instance AllocationProblem u tag => AllocationProblem (TargetSystem u tag v x t) tag where - allocationOptions :: TargetSystem u tag v x t -> [Allocation tag] -allocationOptions TargetSystem{u +instance AllocationProblem u tag => AllocationProblem (TargetSystem u tag v x t) tag where + allocationOptions :: TargetSystem u tag v x t -> [Allocation tag] +allocationOptions TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} = forall u tag. AllocationProblem u tag => u -> [Allocation tag] +mUnit} = forall u tag. AllocationProblem u tag => u -> [Allocation tag] allocationOptions u -mUnit +mUnit - allocationDecision :: TargetSystem u tag v x t + allocationDecision :: TargetSystem u tag v x t -> Allocation tag -> TargetSystem u tag v x t -allocationDecision f :: TargetSystem u tag v x t -f@TargetSystem{u +allocationDecision f :: TargetSystem u tag v x t +f@TargetSystem{u mUnit :: u mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit} Allocation tag -d = TargetSystem u tag v x t -f{mUnit :: u +mUnit} Allocation tag +d = TargetSystem u tag v x t +f{mUnit :: u mUnit = forall u tag. AllocationProblem u tag => u -> Allocation tag -> u allocationDecision u -mUnit Allocation tag -d} +mUnit Allocation tag +d} \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Model.Time.html b/haddock/nitta/src/NITTA.Model.Time.html index f6fbd9022..02976e375 100644 --- a/haddock/nitta/src/NITTA.Model.Time.html +++ b/haddock/nitta/src/NITTA.Model.Time.html @@ -27,25 +27,25 @@ import Numeric.Interval.NonEmpty -- | Shortcut for variable ('v'), value ('x') and time ('t') type constrains. -type VarValTime v x t = (Var v, Val x, Time t) +type VarValTime v x t = (Var v, Val x, Time t) -type VarValTimeJSON v x t = (VarValTime v x t, ToJSONKey v, ToJSON v, ToJSON x, ToJSON t) +type VarValTimeJSON v x t = (VarValTime v x t, ToJSONKey v, ToJSON v, ToJSON x, ToJSON t) -- | Shortcut for time type constrain. -type Time t = (Default t, Num t, Bounded t, Ord t, Show t, Typeable t, Enum t, Integral t) +type Time t = (Default t, Num t, Bounded t, Ord t, Show t, Typeable t, Enum t, Integral t) -instance ToJSON t => ToJSON (Interval t) +instance ToJSON t => ToJSON (Interval t) -- | Time constrain for processor activity. -data TimeConstraint t = TimeConstraint +data TimeConstraint t = TimeConstraint { forall t. TimeConstraint t -> Interval t -tcAvailable :: Interval t +tcAvailable :: Interval t -- ^ Inclusive interval, when value available to transfer. , forall t. TimeConstraint t -> Interval t -tcDuration :: Interval t +tcDuration :: Interval t -- ^ Inclusive interval, possible for value transfers. } - deriving (TimeConstraint t -> TimeConstraint t -> Bool + deriving (TimeConstraint t -> TimeConstraint t -> Bool forall t. Eq t => TimeConstraint t -> TimeConstraint t -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: TimeConstraint t -> TimeConstraint t -> Bool @@ -60,60 +60,60 @@ $cfrom :: forall t x. TimeConstraint t -> Rep (TimeConstraint t) x Generic) -instance (Show t, Eq t, Bounded t) => Show (TimeConstraint t) where - show :: TimeConstraint t -> String -show TimeConstraint{Interval t +instance (Show t, Eq t, Bounded t) => Show (TimeConstraint t) where + show :: TimeConstraint t -> String +show TimeConstraint{Interval t tcAvailable :: Interval t tcAvailable :: forall t. TimeConstraint t -> Interval t -tcAvailable, Interval t +tcAvailable, Interval t tcDuration :: Interval t tcDuration :: forall t. TimeConstraint t -> Interval t -tcDuration} = forall {a}. (Eq a, Bounded a, Show a) => Interval a -> String -showInf Interval t -tcAvailable forall a. [a] -> [a] -> [a] +tcDuration} = forall {a}. (Eq a, Bounded a, Show a) => Interval a -> String +showInf Interval t +tcAvailable forall a. [a] -> [a] -> [a] ++ String " /P " forall a. [a] -> [a] -> [a] ++ forall {a}. (Eq a, Bounded a, Show a) => Interval a -> String -showInf Interval t -tcDuration +showInf Interval t +tcDuration where - showInf :: Interval a -> String -showInf Interval a -i = - let a :: a -a = forall a. Interval a -> a + showInf :: Interval a -> String +showInf Interval a +i = + let a :: a +a = forall a. Interval a -> a inf Interval a -i - b :: a -b = forall a. Interval a -> a +i + b :: a +b = forall a. Interval a -> a sup Interval a -i +i in if a -b forall a. Eq a => a -> a -> Bool +b forall a. Eq a => a -> a -> Bool == forall a. Bounded a => a maxBound then forall a. Show a => a -> String show a -a forall a. [a] -> [a] -> [a] +a forall a. [a] -> [a] -> [a] ++ String "..INF" else forall a. Show a => a -> String show a -a forall a. [a] -> [a] -> [a] +a forall a. [a] -> [a] -> [a] ++ String ".." forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show a -b +b -instance ToJSON tp => ToJSON (TimeConstraint tp) +instance ToJSON tp => ToJSON (TimeConstraint tp) -- | Forgoten implementation of tagged time for speculative if statement. Current - dead code. -data TaggedTime tag t = TaggedTime +data TaggedTime tag t = TaggedTime { forall tag t. TaggedTime tag t -> Maybe tag -tTag :: Maybe tag +tTag :: Maybe tag , forall tag t. TaggedTime tag t -> t -tClock :: t +tClock :: t } deriving (Typeable, forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -123,20 +123,20 @@ $cfrom :: forall tag t x. TaggedTime tag t -> Rep (TaggedTime tag t) x Generic) -instance Default t => Default (TaggedTime tag t) where - def :: TaggedTime tag t +instance Default t => Default (TaggedTime tag t) where + def :: TaggedTime tag t def = forall tag t. Maybe tag -> t -> TaggedTime tag t TaggedTime forall a. Maybe a Nothing forall a. Default a => a def -instance (Time t, Show tag) => Show (TaggedTime tag t) where - show :: TaggedTime tag t -> String -show (TaggedTime Maybe tag -tag t -t) = forall a. Show a => a -> String +instance (Time t, Show tag) => Show (TaggedTime tag t) where + show :: TaggedTime tag t -> String +show (TaggedTime Maybe tag +tag t +t) = forall a. Show a => a -> String show t -t forall a. [a] -> [a] -> [a] +t forall a. [a] -> [a] -> [a] ++ forall b a. b -> (a -> b) -> Maybe a -> b maybe String "" ((String @@ -144,120 +144,120 @@ ++) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Show a => a -> String show) Maybe tag -tag +tag -instance {-# OVERLAPS #-} Time t => Show (TaggedTime String t) where - show :: TaggedTime String t -> String -show (TaggedTime Maybe String -tag t -t) = forall a. Show a => a -> String +instance {-# OVERLAPS #-} Time t => Show (TaggedTime String t) where + show :: TaggedTime String t -> String +show (TaggedTime Maybe String +tag t +t) = forall a. Show a => a -> String show t -t forall a. [a] -> [a] -> [a] +t forall a. [a] -> [a] -> [a] ++ forall b a. b -> (a -> b) -> Maybe a -> b maybe String "" (String "!" forall a. [a] -> [a] -> [a] ++) Maybe String -tag +tag -instance Eq t => Eq (TaggedTime tag t) where +instance Eq t => Eq (TaggedTime tag t) where (TaggedTime Maybe tag -_ t -a) == :: TaggedTime tag t -> TaggedTime tag t -> Bool +_ t +a) == :: TaggedTime tag t -> TaggedTime tag t -> Bool == (TaggedTime Maybe tag -_ t -b) = t -a forall a. Eq a => a -> a -> Bool +_ t +b) = t +a forall a. Eq a => a -> a -> Bool == t -b +b -instance Ord t => Ord (TaggedTime tag t) where +instance Ord t => Ord (TaggedTime tag t) where (TaggedTime Maybe tag -_ t -a) compare :: TaggedTime tag t -> TaggedTime tag t -> Ordering +_ t +a) compare :: TaggedTime tag t -> TaggedTime tag t -> Ordering `compare` (TaggedTime Maybe tag -_ t -b) = t -a forall a. Ord a => a -> a -> Ordering +_ t +b) = t +a forall a. Ord a => a -> a -> Ordering `compare` t -b +b -instance Enum t => Enum (TaggedTime tag t) where - toEnum :: Int -> TaggedTime tag t -toEnum Int -i = forall tag t. Maybe tag -> t -> TaggedTime tag t +instance Enum t => Enum (TaggedTime tag t) where + toEnum :: Int -> TaggedTime tag t +toEnum Int +i = forall tag t. Maybe tag -> t -> TaggedTime tag t TaggedTime forall a. Maybe a Nothing forall a b. (a -> b) -> a -> b $ forall a. Enum a => Int -> a toEnum Int -i - fromEnum :: TaggedTime tag t -> Int +i + fromEnum :: TaggedTime tag t -> Int fromEnum (TaggedTime Maybe tag -_ t -i) = forall a. Enum a => a -> Int +_ t +i) = forall a. Enum a => a -> Int fromEnum t -i +i -instance Num t => Bounded (TaggedTime tag t) where - minBound :: TaggedTime tag t +instance Num t => Bounded (TaggedTime tag t) where + minBound :: TaggedTime tag t minBound = forall tag t. Maybe tag -> t -> TaggedTime tag t TaggedTime forall a. Maybe a Nothing t 0 - maxBound :: TaggedTime tag t -maxBound = forall tag t. Maybe tag -> t -> TaggedTime tag t + maxBound :: TaggedTime tag t +maxBound = forall tag t. Maybe tag -> t -> TaggedTime tag t TaggedTime forall a. Maybe a Nothing t 1000 -instance (Num t, Show tag, Eq tag) => Num (TaggedTime tag t) where +instance (Num t, Show tag, Eq tag) => Num (TaggedTime tag t) where (TaggedTime Maybe tag -Nothing t -a) + :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t +Nothing t +a) + :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t + (TaggedTime Maybe tag -Nothing t -b) = forall tag t. Maybe tag -> t -> TaggedTime tag t +Nothing t +b) = forall tag t. Maybe tag -> t -> TaggedTime tag t TaggedTime forall a. Maybe a Nothing (t -a forall a. Num a => a -> a -> a +a forall a. Num a => a -> a -> a + t -b) - (TaggedTime (Just tag -tag) t -a) + (TaggedTime Maybe tag -Nothing t -b) = forall tag t. Maybe tag -> t -> TaggedTime tag t +b) + (TaggedTime (Just tag +tag) t +a) + (TaggedTime Maybe tag +Nothing t +b) = forall tag t. Maybe tag -> t -> TaggedTime tag t TaggedTime (forall a. a -> Maybe a Just tag -tag) (t -a forall a. Num a => a -> a -> a +tag) (t +a forall a. Num a => a -> a -> a + t -b) +b) (TaggedTime Maybe tag -Nothing t -a) + (TaggedTime (Just tag -tag) t -b) = forall tag t. Maybe tag -> t -> TaggedTime tag t +Nothing t +a) + (TaggedTime (Just tag +tag) t +b) = forall tag t. Maybe tag -> t -> TaggedTime tag t TaggedTime (forall a. a -> Maybe a Just tag -tag) (t -a forall a. Num a => a -> a -> a +tag) (t +a forall a. Num a => a -> a -> a + t -b) - (TaggedTime Maybe tag -tag_a t -a) + (TaggedTime Maybe tag -tag_b t -b) +b) + (TaggedTime Maybe tag +tag_a t +a) + (TaggedTime Maybe tag +tag_b t +b) | Maybe tag -tag_a forall a. Eq a => a -> a -> Bool +tag_a forall a. Eq a => a -> a -> Bool == Maybe tag -tag_b = forall tag t. Maybe tag -> t -> TaggedTime tag t +tag_b = forall tag t. Maybe tag -> t -> TaggedTime tag t TaggedTime Maybe tag -tag_a (t -a forall a. Num a => a -> a -> a +tag_a (t +a forall a. Num a => a -> a -> a + t -b) +b) | Bool otherwise = forall a. HasCallStack => String -> a error forall a b. (a -> b) -> a -> b @@ -265,34 +265,34 @@ "Not equal time tag! " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show Maybe tag -tag_a forall a. [a] -> [a] -> [a] +tag_a forall a. [a] -> [a] -> [a] ++ String " " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show Maybe tag -tag_b - fromInteger :: Integer -> TaggedTime tag t +tag_b + fromInteger :: Integer -> TaggedTime tag t fromInteger = forall tag t. Maybe tag -> t -> TaggedTime tag t TaggedTime forall a. Maybe a Nothing forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Num a => Integer -> a fromInteger - negate :: TaggedTime tag t -> TaggedTime tag t -negate TaggedTime tag t -t = TaggedTime tag t -t{tClock :: t + negate :: TaggedTime tag t -> TaggedTime tag t +negate TaggedTime tag t +t = TaggedTime tag t +t{tClock :: t tClock = forall a. Num a => a -> a negate forall a b. (a -> b) -> a -> b $ forall tag t. TaggedTime tag t -> t tClock TaggedTime tag t -t} - * :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t +t} + * :: TaggedTime tag t -> TaggedTime tag t -> TaggedTime tag t (*) = forall a. HasCallStack => a undefined - abs :: TaggedTime tag t -> TaggedTime tag t + abs :: TaggedTime tag t -> TaggedTime tag t abs = forall a. HasCallStack => a undefined - signum :: TaggedTime tag t -> TaggedTime tag t + signum :: TaggedTime tag t -> TaggedTime tag t signum = forall a. HasCallStack => a undefined \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Project.Context.html b/haddock/nitta/src/NITTA.Project.Context.html index b8a35e8f9..3d6157a73 100644 --- a/haddock/nitta/src/NITTA.Project.Context.html +++ b/haddock/nitta/src/NITTA.Project.Context.html @@ -22,33 +22,33 @@ nittaContextDict :: Project m v x -> GVal m nittaContextDict - prj :: Project m v x -prj@Project - { Text + prj :: Project m v x +prj@Project + { Text pName :: forall m v x. Project m v x -> Text pName :: Text pName - , m + , m pUnit :: forall m v x. Project m v x -> m pUnit :: m pUnit - , UnitEnv m + , UnitEnv m pUnitEnv :: forall m v x. Project m v x -> UnitEnv m pUnitEnv :: UnitEnv m pUnitEnv - , FilePath + , FilePath pTargetProjectPath :: forall m v x. Project m v x -> FilePath pTargetProjectPath :: FilePath pTargetProjectPath - , FilePath + , FilePath pInProjectNittaPath :: forall m v x. Project m v x -> FilePath pInProjectNittaPath :: FilePath pInProjectNittaPath - , FilePath + , FilePath pAbsTargetProjectPath :: forall m v x. Project m v x -> FilePath pAbsTargetProjectPath :: FilePath pAbsTargetProjectPath - , FilePath + , FilePath pAbsNittaPath :: forall m v x. Project m v x -> FilePath pAbsNittaPath :: FilePath pAbsNittaPath @@ -65,10 +65,10 @@ Text -> pu -> UnitEnv pu -> Verilog hardwareInstance (forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -pName m -pUnit) m -pUnit UnitEnv m -pUnitEnv) +pName m +pUnit) m +pUnit UnitEnv m +pUnitEnv) , ( Text "paths" @@ -77,19 +77,19 @@ [ (Text "abs_project", forall (m :: * -> *) a. ToGVal m a => a -> GVal m toGVal FilePath -pAbsTargetProjectPath) +pAbsTargetProjectPath) , (Text "project", forall (m :: * -> *) a. ToGVal m a => a -> GVal m toGVal FilePath -pTargetProjectPath) +pTargetProjectPath) , (Text "abs_nitta", forall (m :: * -> *) a. ToGVal m a => a -> GVal m toGVal FilePath -pAbsNittaPath) +pAbsNittaPath) , (Text "nitta", forall (m :: * -> *) a. ToGVal m a => a -> GVal m toGVal FilePath -pInProjectNittaPath) +pInProjectNittaPath) ] ) , (Text @@ -99,7 +99,7 @@ (TargetSystemComponent m, Testable m v x) => Project m v x -> [FilePath] verilogProjectFiles Project m v x -prj) +prj) , ( Text "testbench" @@ -112,15 +112,15 @@ (TargetSystemComponent m, Testable m v x) => Project m v x -> FilePath testBenchTopModuleName Project m v x -prj) +prj) ] ) ] -- | projectContext - used for template generation projectContext :: Project m v x -> GingerContext p (Writer Text) Text -projectContext Project m v x -prj = forall p. +projectContext Project m v x +prj = forall p. (Text -> GVal (Run p (Writer Text) Text)) -> GingerContext p (Writer Text) Text makeContextText forall a b. (a -> b) -> a -> b @@ -130,23 +130,23 @@ (TargetSystemComponent m, Testable m v x) => Project m v x -> GVal m nittaContextDict Project m v x -prj - Text -unknown -> forall a. HasCallStack => FilePath -> a +prj + Text +unknown -> forall a. HasCallStack => FilePath -> a error forall a b. (a -> b) -> a -> b $ FilePath "template error, variable '" forall a. Semigroup a => a -> a -> a <> Text -> FilePath T.unpack Text -unknown forall a. Semigroup a => a -> a -> a +unknown forall a. Semigroup a => a -> a -> a <> FilePath "' not defined (see 'NITTA.Project.Template')" -- | projectContext - used for Implementation generation implementationContext :: Project m v x -> a -> GingerContext p (Writer Text) Text -implementationContext Project m v x -prj a -nest = forall p. +implementationContext Project m v x +prj a +nest = forall p. (Text -> GVal (Run p (Writer Text) Text)) -> GingerContext p (Writer Text) Text makeContextText forall a b. (a -> b) -> a -> b @@ -156,7 +156,7 @@ (TargetSystemComponent m, Testable m v x) => Project m v x -> GVal m nittaContextDict Project m v x -prj +prj Text "impl" -> forall (m :: * -> *). [Pair m] -> GVal m dict [(Text @@ -164,15 +164,15 @@ dict [(Text "nest", forall (m :: * -> *) a. ToGVal m a => a -> GVal m toGVal a -nest)])] - Text -unknown -> forall a. HasCallStack => FilePath -> a +nest)])] + Text +unknown -> forall a. HasCallStack => FilePath -> a error forall a b. (a -> b) -> a -> b $ FilePath "template error, variable '" forall a. Semigroup a => a -> a -> a <> Text -> FilePath T.unpack Text -unknown forall a. Semigroup a => a -> a -> a +unknown forall a. Semigroup a => a -> a -> a <> FilePath "' not defined (see 'NITTA.Project.Template')" \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Project.Template.html b/haddock/nitta/src/NITTA.Project.Template.html index 88acbd63f..dd17262f3 100644 --- a/haddock/nitta/src/NITTA.Project.Template.html +++ b/haddock/nitta/src/NITTA.Project.Template.html @@ -47,7 +47,7 @@ , Conf -> HashMap Text Text signals :: M.HashMap T.Text T.Text } - deriving (Int -> Conf -> ShowS + deriving (Int -> Conf -> ShowS [Conf] -> ShowS Conf -> FilePath forall a. @@ -60,7 +60,7 @@ $cshowsPrec :: Int -> Conf -> ShowS Show) -data TemplateConf = TemplateConf +data TemplateConf = TemplateConf { TemplateConf -> Maybe FilePath nittaPath :: Maybe FilePath , TemplateConf -> Maybe [FilePath] @@ -72,7 +72,7 @@ (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep TemplateConf x -> TemplateConf $cfrom :: forall x. TemplateConf -> Rep TemplateConf x -Generic, Int -> TemplateConf -> ShowS +Generic, Int -> TemplateConf -> ShowS [TemplateConf] -> ShowS TemplateConf -> FilePath forall a. @@ -93,7 +93,7 @@ "template.toml" instance Default TemplateConf where - def :: TemplateConf + def :: TemplateConf def = TemplateConf { nittaPath :: Maybe FilePath @@ -106,76 +106,76 @@ templateConfFileName] } -instance Hashable k => Default (M.HashMap k v) where - def :: HashMap k v -def = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v +instance Hashable k => Default (M.HashMap k v) where + def :: HashMap k v +def = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v M.fromList [] -instance FromJSON TemplateConf -instance ToJSON TemplateConf +instance FromJSON TemplateConf +instance ToJSON TemplateConf {- | collectNittaPath - read nittaPath from all provided target templates and return it if all of them are the same. -} collectNittaPath :: [FilePath] -> IO (Either T.Text FilePath) collectNittaPath :: [FilePath] -> IO (Either Text FilePath) -collectNittaPath [FilePath] -templates = do - [(FilePath, FilePath)] -paths <- forall (t :: * -> *) (m :: * -> *) a b. +collectNittaPath [FilePath] +templates = do + [(FilePath, FilePath)] +paths <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) -mapM (\FilePath -fn -> (FilePath -fn,) forall b c a. (b -> c) -> (a -> b) -> a -> c +mapM (\FilePath +fn -> (FilePath +fn,) forall b c a. (b -> c) -> (a -> b) -> a -> c . Conf -> FilePath -getNittaPath forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +getNittaPath forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> FilePath -> IO Conf readTemplateConfDef (FilePath -fn FilePath -> ShowS +fn FilePath -> ShowS </> forall {a}. IsString a => a templateConfFileName)) [FilePath] -templates - let path :: FilePath -path = if forall (t :: * -> *) a. Foldable t => t a -> Bool +templates + let path :: FilePath +path = if forall (t :: * -> *) a. Foldable t => t a -> Bool null [(FilePath, FilePath)] -paths then forall {a}. IsString a => a +paths then forall {a}. IsString a => a defNittaPath else forall a b. (a, b) -> b snd forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [(FilePath, FilePath)] -paths - err :: Text -err = +paths + err :: Text +err = Text "inconsistency of nittaPath: " forall a. Semigroup a => a -> a -> a <> Text -> [Text] -> Text T.intercalate Text ", " (forall a b. (a -> b) -> [a] -> [b] -map (\(FilePath -f, FilePath -p) -> [i|#{f} -> '#{p}'|]) [(FilePath, FilePath)] -paths) +map (\(FilePath +f, FilePath +p) -> [i|#{f} -> '#{p}'|]) [(FilePath, FilePath)] +paths) forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ if forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all ((forall a. Eq a => a -> a -> Bool == FilePath -path) forall b c a. (b -> c) -> (a -> b) -> a -> c +path) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(FilePath, FilePath)] -paths +paths then forall a b. b -> Either a b Right FilePath -path +path else forall a b. a -> Either a b Left Text -err +err where - getNittaPath :: Conf -> FilePath -getNittaPath = forall a. a -> Maybe a -> a + getNittaPath :: Conf -> FilePath +getNittaPath = forall a. a -> Maybe a -> a fromMaybe (forall a. HasCallStack => FilePath -> a error FilePath "internal error") forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -185,24 +185,24 @@ template readTemplateConfDef :: FilePath -> IO Conf -readTemplateConfDef FilePath -fn = do - Text -text <- +readTemplateConfDef FilePath +fn = do + Text +text <- FilePath -> IO Bool doesFileExist FilePath -fn forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +fn forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case Bool True -> FilePath -> IO Text T.readFile FilePath -fn +fn Bool False -> forall (m :: * -> *) a. Monad m => a -> m a return Text "" - let conf :: Table -conf = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c + let conf :: Table +conf = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (forall a. HasCallStack => FilePath -> a error forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Show a => a -> FilePath @@ -210,10 +210,10 @@ id forall a b. (a -> b) -> a -> b $ FilePath -> Text -> Either ParseError Table parseTomlDoc (FilePath -fn forall a. Semigroup a => a -> a -> a +fn forall a. Semigroup a => a -> a -> a <> FilePath ": parse error: ") Text -text +text forall (m :: * -> *) a. Monad m => a -> m a return Conf @@ -222,36 +222,36 @@ (Default b, FromJSON b, ToJSON a) => FilePath -> Text -> HashMap Text a -> b confLookup FilePath -fn Text +fn Text "template" Table -conf +conf , signals :: HashMap Text Text signals = forall {b} {a}. (Default b, FromJSON b, ToJSON a) => FilePath -> Text -> HashMap Text a -> b confLookup FilePath -fn Text +fn Text "signals" Table -conf +conf } confLookup :: FilePath -> Text -> HashMap Text a -> b -confLookup FilePath -fn Text -sec HashMap Text a -conf = +confLookup FilePath +fn Text +sec HashMap Text a +conf = forall b a. b -> (a -> b) -> Maybe a -> b maybe forall a. Default a => a def (forall {a}. FilePath -> Result a -> a -unwrap (FilePath -fn forall a. Semigroup a => a -> a -> a +unwrap (FilePath +fn forall a. Semigroup a => a -> a -> a <> FilePath " in section [" forall a. Semigroup a => a -> a -> a <> Text -> FilePath T.unpack Text -sec forall a. Semigroup a => a -> a -> a +sec forall a. Semigroup a => a -> a -> a <> FilePath "]: ") forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. FromJSON a => Value -> Result a @@ -261,171 +261,171 @@ forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v M.lookup Text -sec HashMap Text a -conf +sec HashMap Text a +conf where - unwrap :: FilePath -> Result a -> a -unwrap FilePath -_prefix (Success a -a) = a -a - unwrap FilePath -prefix (Error FilePath -msg) = forall a. HasCallStack => FilePath -> a + unwrap :: FilePath -> Result a -> a +unwrap FilePath +_prefix (Success a +a) = a +a + unwrap FilePath +prefix (Error FilePath +msg) = forall a. HasCallStack => FilePath -> a error forall a b. (a -> b) -> a -> b $ FilePath -prefix forall a. Semigroup a => a -> a -> a +prefix forall a. Semigroup a => a -> a -> a <> FilePath -msg +msg applyCustomSignal :: HashMap k Text -> UnitEnv m -> UnitEnv m applyCustomSignal - HashMap k Text -signals - env :: UnitEnv m -env@UnitEnv{Text + HashMap k Text +signals + env :: UnitEnv m +env@UnitEnv{Text sigClk :: forall m. UnitEnv m -> Text sigClk :: Text -sigClk, Text +sigClk, Text sigRst :: forall m. UnitEnv m -> Text sigRst :: Text sigRst} = UnitEnv m -env +env { sigClk :: Text sigClk = forall a. a -> Maybe a -> a fromMaybe Text -sigClk forall a b. (a -> b) -> a -> b +sigClk forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v M.lookup k "clk" HashMap k Text -signals +signals , sigRst :: Text sigRst = forall a. a -> Maybe a -> a fromMaybe Text -sigRst forall a b. (a -> b) -> a -> b +sigRst forall a b. (a -> b) -> a -> b $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v M.lookup k "rst" HashMap k Text -signals +signals -- , sigCycleBegin = fromMaybe sigCycleBegin $ M.lookup "cycleBegin" signals -- , sigInCycle = fromMaybe sigInCycle $ M.lookup "inCycle" signals -- , sigCycleEnd = fromMaybe sigCycleEnd $ M.lookup "cycleEnd" signals } writeRenderedTemplates :: Project m v x -> IO () -writeRenderedTemplates prj :: Project m v x -prj@Project{FilePath +writeRenderedTemplates prj :: Project m v x +prj@Project{FilePath pTargetProjectPath :: forall m v x. Project m v x -> FilePath pTargetProjectPath :: FilePath -pTargetProjectPath, [FilePath] +pTargetProjectPath, [FilePath] pTemplates :: forall m v x. Project m v x -> [FilePath] pTemplates :: [FilePath] -pTemplates, UnitEnv m +pTemplates, UnitEnv m pUnitEnv :: forall m v x. Project m v x -> UnitEnv m pUnitEnv :: UnitEnv m pUnitEnv} = do Bool -> FilePath -> IO () createDirectoryIfMissing Bool True FilePath -pTargetProjectPath +pTargetProjectPath forall (t :: * -> *) (f :: * -> *) a b. (Foldable t, Applicative f) => t a -> (a -> f b) -> f () for_ [FilePath] -pTemplates forall a b. (a -> b) -> a -> b -$ \FilePath -tPath -> do +pTemplates forall a b. (a -> b) -> a -> b +$ \FilePath +tPath -> do FilePath -> FilePath -> IO () infoM FilePath "NITTA" forall a b. (a -> b) -> a -> b $ FilePath "process template: " forall a. Semigroup a => a -> a -> a <> FilePath -tPath +tPath Conf { template :: Conf -> TemplateConf -template = TemplateConf{Maybe [FilePath] +template = TemplateConf{Maybe [FilePath] ignore :: Maybe [FilePath] ignore :: TemplateConf -> Maybe [FilePath] -ignore} - , HashMap Text Text +ignore} + , HashMap Text Text signals :: HashMap Text Text signals :: Conf -> HashMap Text Text -signals +signals } <- FilePath -> IO Conf readTemplateConfDef forall a b. (a -> b) -> a -> b $ FilePath -tPath FilePath -> ShowS +tPath FilePath -> ShowS </> forall {a}. IsString a => a templateConfFileName - let notIgnored :: FilePath -> Bool -notIgnored FilePath -fn = Bool -> Bool + let notIgnored :: FilePath -> Bool +notIgnored FilePath +fn = Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool -all (\FilePath -wc -> FilePath -> FilePath -> Bool +all (\FilePath +wc -> FilePath -> FilePath -> Bool wildCheckCase FilePath -wc FilePath -fn) forall a b. (a -> b) -> a -> b +wc FilePath +fn) forall a b. (a -> b) -> a -> b $ forall a. a -> Maybe a -> a fromMaybe [] Maybe [FilePath] -ignore - context :: GingerContext p (Writer Text) Text -context = forall {m} {v} {x} {p}. +ignore + context :: GingerContext p (Writer Text) Text +context = forall {m} {v} {x} {p}. (TargetSystemComponent m, Testable m v x) => Project m v x -> GingerContext p (Writer Text) Text projectContext forall a b. (a -> b) -> a -> b $ Project m v x -prj{pUnitEnv :: UnitEnv m +prj{pUnitEnv :: UnitEnv m pUnitEnv = forall {k} {m}. (Hashable k, IsString k) => HashMap k Text -> UnitEnv m -> UnitEnv m applyCustomSignal HashMap Text Text -signals UnitEnv m -pUnitEnv} - [FilePath] -tFiles <- forall a. (a -> Bool) -> [a] -> [a] +signals UnitEnv m +pUnitEnv} + [FilePath] +tFiles <- forall a. (a -> Bool) -> [a] -> [a] filter FilePath -> Bool -notIgnored forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +notIgnored forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> FilePath -> IO [FilePath] findAllFiles FilePath -tPath +tPath forall (t :: * -> *) (f :: * -> *) a b. (Foldable t, Applicative f) => t a -> (a -> f b) -> f () for_ [FilePath] -tFiles forall a b. (a -> b) -> a -> b -$ \FilePath -tFile -> do +tFiles forall a b. (a -> b) -> a -> b +$ \FilePath +tFile -> do GingerContext SourcePos (Writer Text) Text -> FilePath -> FilePath -> FilePath -> IO () writeRendedTemplate forall {p}. GingerContext p (Writer Text) Text -context FilePath -pTargetProjectPath FilePath -tPath FilePath -tFile +context FilePath +pTargetProjectPath FilePath +tPath FilePath +tFile writeRendedTemplate :: GingerContext SourcePos (Writer Text) Text -> FilePath -> FilePath -> FilePath -> IO () -writeRendedTemplate GingerContext SourcePos (Writer Text) Text -context FilePath -opath FilePath -tPath FilePath -tFile = do +writeRendedTemplate GingerContext SourcePos (Writer Text) Text +context FilePath +opath FilePath +tPath FilePath +tFile = do -- Why we use Text and unpack it immidiatly? We need to avoid lazyness. forall e a. Exception e => IO a -> IO (Either e a) try (FilePath -> IO Text T.readFile forall a b. (a -> b) -> a -> b $ FilePath -tPath FilePath -> ShowS +tPath FilePath -> ShowS </> FilePath -tFile) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +tFile) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - Left (IOException -e :: IOException) -> + Left (IOException +e :: IOException) -> FilePath -> FilePath -> IO () warningM FilePath "NITTA" forall a b. (a -> b) -> a -> b @@ -433,47 +433,47 @@ "template problem SKIP: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> FilePath show IOException -e - Right Text -src -> GingerContext SourcePos (Writer Text) Text +e + Right Text +src -> GingerContext SourcePos (Writer Text) Text -> FilePath -> FilePath -> FilePath -> FilePath -> IO () writeRendedTemplate' GingerContext SourcePos (Writer Text) Text -context FilePath -opath FilePath -tPath FilePath -tFile forall a b. (a -> b) -> a -> b +context FilePath +opath FilePath +tPath FilePath +tFile forall a b. (a -> b) -> a -> b $ Text -> FilePath T.unpack Text -src +src writeRendedTemplate' :: GingerContext SourcePos (Writer Text) Text -> FilePath -> FilePath -> FilePath -> FilePath -> IO () -writeRendedTemplate' GingerContext SourcePos (Writer Text) Text -context FilePath -opath FilePath -tPath FilePath -tFile FilePath -src = do - let raiseError :: ParserError -> a -raiseError ParserError -err = forall a. HasCallStack => FilePath -> a +writeRendedTemplate' GingerContext SourcePos (Writer Text) Text +context FilePath +opath FilePath +tPath FilePath +tFile FilePath +src = do + let raiseError :: ParserError -> a +raiseError ParserError +err = forall a. HasCallStack => FilePath -> a error forall a b. (a -> b) -> a -> b $ FilePath -tPath FilePath -> ShowS +tPath FilePath -> ShowS </> FilePath -tFile forall a. Semigroup a => a -> a -> a +tFile forall a. Semigroup a => a -> a -> a <> FilePath ": " forall a. Semigroup a => a -> a -> a <> Maybe FilePath -> ParserError -> FilePath formatParserError (forall a. a -> Maybe a Just FilePath -src) ParserError -err - Template SourcePos -template <- +src) ParserError +err + Template SourcePos +template <- forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either forall {a}. ParserError -> a -raiseError forall (m :: * -> *) a. Monad m => a -> m a +raiseError forall (m :: * -> *) a. Monad m => a -> m a return forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. Identity a -> a runIdentity forall a b. (a -> b) -> a -> b @@ -490,48 +490,48 @@ return forall a. Maybe a Nothing) forall a. Maybe a Nothing FilePath -src +src Bool -> FilePath -> IO () createDirectoryIfMissing Bool True forall a b. (a -> b) -> a -> b $ FilePath -opath FilePath -> ShowS +opath FilePath -> ShowS </> ShowS takeDirectory FilePath -tFile +tFile FilePath -> Text -> IO () T.writeFile (FilePath -opath FilePath -> ShowS +opath FilePath -> ShowS </> FilePath -tFile) forall a b. (a -> b) -> a -> b +tFile) forall a b. (a -> b) -> a -> b $ forall p h. (ToGVal (Run p (Writer h) h) h, ToGVal (Run p (Writer h) h) p, Monoid h) => GingerContext p (Writer h) h -> Template p -> h runGinger GingerContext SourcePos (Writer Text) Text -context Template SourcePos -template +context Template SourcePos +template -- | List all files inside path findAllFiles :: FilePath -> IO [FilePath] -findAllFiles FilePath -root = FilePath -> IO [FilePath] -findAllFiles' FilePath +findAllFiles FilePath +root = FilePath -> IO [FilePath] +findAllFiles' FilePath "" where - findAllFiles' :: FilePath -> IO [FilePath] -findAllFiles' FilePath -path = do - [FilePath] -items <- forall a b. (a -> b) -> [a] -> [b] + findAllFiles' :: FilePath -> IO [FilePath] +findAllFiles' FilePath +path = do + [FilePath] +items <- forall a b. (a -> b) -> [a] -> [b] map (FilePath -path FilePath -> ShowS +path FilePath -> ShowS </>) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> FilePath -> IO [FilePath] listDirectory (FilePath -root FilePath -> ShowS +root FilePath -> ShowS </> FilePath -path) +path) forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -539,23 +539,23 @@ (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM - ( \FilePath -item -> do - Bool -isDir <- FilePath -> IO Bool + ( \FilePath +item -> do + Bool +isDir <- FilePath -> IO Bool doesDirectoryExist (FilePath -root FilePath -> ShowS +root FilePath -> ShowS </> FilePath -item) +item) if Bool -isDir +isDir then FilePath -> IO [FilePath] -findAllFiles' FilePath -item +findAllFiles' FilePath +item else forall (m :: * -> *) a. Monad m => a -> m a return [FilePath -item] +item] ) [FilePath] -items +items \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Project.TestBench.html b/haddock/nitta/src/NITTA.Project.TestBench.html index 2ddad4b19..0ab8b37e2 100644 --- a/haddock/nitta/src/NITTA.Project.TestBench.html +++ b/haddock/nitta/src/NITTA.Project.TestBench.html @@ -42,38 +42,38 @@ import System.FilePath.Posix (joinPath, (</>)) -- | Type class for all testable parts of a target system. -class Testable m v x | m -> v x where - testBenchImplementation :: Project m v x -> Implementation +class Testable m v x | m -> v x where + testBenchImplementation :: Project m v x -> Implementation {- | Processor units with input/output ports should be tested by generation external input ports signals and checking output port signals. -} -class IOTestBench pu v x | pu -> v x where - testEnvironmentInitFlag :: T.Text -> pu -> Maybe T.Text - testEnvironmentInitFlag Text -_title pu -_pu = forall a. Maybe a +class IOTestBench pu v x | pu -> v x where + testEnvironmentInitFlag :: T.Text -> pu -> Maybe T.Text + testEnvironmentInitFlag Text +_title pu +_pu = forall a. Maybe a Nothing - testEnvironment :: T.Text -> pu -> UnitEnv pu -> TestEnvironment v x -> Maybe Verilog - testEnvironment Text -_title pu -_pu UnitEnv pu -_env TestEnvironment v x -_tEnv = forall a. Maybe a + testEnvironment :: T.Text -> pu -> UnitEnv pu -> TestEnvironment v x -> Maybe Verilog + testEnvironment Text +_title pu +_pu UnitEnv pu +_env TestEnvironment v x +_tEnv = forall a. Maybe a Nothing -- | Information required for testbench generation. -data TestEnvironment v x = TestEnvironment +data TestEnvironment v x = TestEnvironment { forall v x. TestEnvironment v x -> Cntx v x -teCntx :: Cntx v x +teCntx :: Cntx v x -- ^ expected data , forall v x. TestEnvironment v x -> Int teComputationDuration :: Int -- ^ duration of computational process } -data TestbenchReport v x = TestbenchReport +data TestbenchReport v x = TestbenchReport { forall v x. TestbenchReport v x -> Bool tbStatus :: Bool , forall v x. TestbenchReport v x -> FilePath @@ -89,9 +89,9 @@ , forall v x. TestbenchReport v x -> Text tbSimulationDump :: T.Text , forall v x. TestbenchReport v x -> [HashMap v x] -tbFunctionalSimulationLog :: [HM.HashMap v x] +tbFunctionalSimulationLog :: [HM.HashMap v x] , forall v x. TestbenchReport v x -> [HashMap v x] -tbLogicalSimulationLog :: [HM.HashMap v x] +tbLogicalSimulationLog :: [HM.HashMap v x] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -101,34 +101,34 @@ $cfrom :: forall v x x. TestbenchReport v x -> Rep (TestbenchReport v x) x Generic) -instance (ToString v, Show x) => Show (TestbenchReport v x) where - show :: TestbenchReport v x -> FilePath +instance (ToString v, Show x) => Show (TestbenchReport v x) where + show :: TestbenchReport v x -> FilePath show TestbenchReport - { FilePath + { FilePath tbPath :: FilePath tbPath :: forall v x. TestbenchReport v x -> FilePath -tbPath - , [FilePath] +tbPath + , [FilePath] tbFiles :: [FilePath] tbFiles :: forall v x. TestbenchReport v x -> [FilePath] -tbFiles - , [Text] +tbFiles + , [Text] tbFunctions :: [Text] tbFunctions :: forall v x. TestbenchReport v x -> [Text] -tbFunctions - , [Text] +tbFunctions + , [Text] tbSynthesisSteps :: [Text] tbSynthesisSteps :: forall v x. TestbenchReport v x -> [Text] -tbSynthesisSteps - , Text +tbSynthesisSteps + , Text tbCompilerDump :: Text tbCompilerDump :: forall v x. TestbenchReport v x -> Text -tbCompilerDump - , Text +tbCompilerDump + , Text tbSimulationDump :: Text tbSimulationDump :: forall v x. TestbenchReport v x -> Text -tbSimulationDump +tbSimulationDump } = (forall a. Show a => a -> FilePath show :: Doc () -> String) @@ -147,13 +147,13 @@ |] -- | Get name of testbench top module. -testBenchTopModuleName :: - (TargetSystemComponent m, Testable m v x) => Project m v x -> FilePath +testBenchTopModuleName :: + (TargetSystemComponent m, Testable m v x) => Project m v x -> FilePath testBenchTopModuleName :: forall m v x. (TargetSystemComponent m, Testable m v x) => Project m v x -> FilePath -testBenchTopModuleName Project m v x -prj = forall a. Eq a => [a] -> [a] -> [a] -> [a] +testBenchTopModuleName Project m v x +prj = forall a. Eq a => [a] -> [a] -> [a] -> [a] S.replace FilePath ".v" FilePath "" forall a b. (a -> b) -> a -> b @@ -163,25 +163,25 @@ (TargetSystemComponent m, Testable m v x) => Project m v x -> [FilePath] verilogProjectFiles Project m v x -prj +prj -- | Generate list of project verilog files (including testbench). verilogProjectFiles :: Project m v x -> [FilePath] -verilogProjectFiles prj :: Project m v x -prj@Project{Text +verilogProjectFiles prj :: Project m v x +prj@Project{Text pName :: forall m v x. Project m v x -> Text pName :: Text -pName, m +pName, m pUnit :: forall m v x. Project m v x -> m pUnit :: m -pUnit, FilePath +pUnit, FilePath pInProjectNittaPath :: forall m v x. Project m v x -> FilePath pInProjectNittaPath :: FilePath pInProjectNittaPath} = forall a b. (a -> b) -> [a] -> [b] map (FilePath -pInProjectNittaPath FilePath -> ShowS +pInProjectNittaPath FilePath -> ShowS </>) forall a b. (a -> b) -> a -> b $ forall a. Eq a => [a] -> [a] @@ -195,77 +195,77 @@ $ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (FilePath -> Implementation -> [FilePath] -addPath FilePath +addPath FilePath "") [forall pu. TargetSystemComponent pu => Text -> pu -> Implementation hardware Text -pName m -pUnit, forall m v x. Testable m v x => Project m v x -> Implementation +pName m +pUnit, forall m v x. Testable m v x => Project m v x -> Implementation testBenchImplementation Project m v x -prj] +prj] where - addPath :: FilePath -> Implementation -> [FilePath] -addPath FilePath -p (Aggregate (Just FilePath -p') [Implementation] -subInstances) = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] + addPath :: FilePath -> Implementation -> [FilePath] +addPath FilePath +p (Aggregate (Just FilePath +p') [Implementation] +subInstances) = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (FilePath -> Implementation -> [FilePath] -addPath forall a b. (a -> b) -> a -> b +addPath forall a b. (a -> b) -> a -> b $ [FilePath] -> FilePath joinPath [FilePath -p, FilePath -p']) [Implementation] -subInstances - addPath FilePath -p (Aggregate Maybe FilePath -Nothing [Implementation] -subInstances) = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +p, FilePath +p']) [Implementation] +subInstances + addPath FilePath +p (Aggregate Maybe FilePath +Nothing [Implementation] +subInstances) = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (FilePath -> Implementation -> [FilePath] -addPath forall a b. (a -> b) -> a -> b +addPath forall a b. (a -> b) -> a -> b $ [FilePath] -> FilePath joinPath [FilePath -p]) [Implementation] -subInstances - addPath FilePath -p (Immediate FilePath -fn Text +p]) [Implementation] +subInstances + addPath FilePath +p (Immediate FilePath +fn Text _) = [[FilePath] -> FilePath joinPath [FilePath -p, FilePath -fn]] - addPath FilePath -_ (FromLibrary FilePath -fn) = [[FilePath] -> FilePath +p, FilePath +fn]] + addPath FilePath +_ (FromLibrary FilePath +fn) = [[FilePath] -> FilePath joinPath [FilePath "lib", FilePath -fn]] - addPath FilePath +fn]] + addPath FilePath _ Implementation Empty = [] -- | Data Type for SnippetTestBench function -data SnippetTestBenchConf m = SnippetTestBenchConf +data SnippetTestBenchConf m = SnippetTestBenchConf { forall m. SnippetTestBenchConf m -> [Text] tbcSignals :: [T.Text] , forall m. SnippetTestBenchConf m -> Ports m -tbcPorts :: Ports m +tbcPorts :: Ports m , forall m. SnippetTestBenchConf m -> Microcode m -> Text -tbcMC2verilogLiteral :: Microcode m -> T.Text +tbcMC2verilogLiteral :: Microcode m -> T.Text } -- | Function for testBench PU test snippetTestBench :: - forall m v x t. - ( WithFunctions m (F v x) - , ProcessorUnit m v x t - , TargetSystemComponent m - , UnambiguouslyDecode m - , Typeable m - , Show (Instruction m) - , Default (Microcode m) + forall m v x t. + ( WithFunctions m (F v x) + , ProcessorUnit m v x t + , TargetSystemComponent m + , UnambiguouslyDecode m + , Typeable m + , Show (Instruction m) + , Default (Microcode m) ) => - Project m v x -> - SnippetTestBenchConf m -> + Project m v x -> + SnippetTestBenchConf m -> T.Text snippetTestBench :: forall m v x t. (WithFunctions m (F v x), ProcessorUnit m v x t, @@ -273,68 +273,68 @@ Show (Instruction m), Default (Microcode m)) => Project m v x -> SnippetTestBenchConf m -> Text snippetTestBench - Project{Text + Project{Text pName :: Text pName :: forall m v x. Project m v x -> Text -pName, m +pName, m pUnit :: m pUnit :: forall m v x. Project m v x -> m -pUnit, pTestCntx :: forall m v x. Project m v x -> Cntx v x -pTestCntx = Cntx{[CycleCntx v x] +pUnit, pTestCntx :: forall m v x. Project m v x -> Cntx v x +pTestCntx = Cntx{[CycleCntx v x] cntxProcess :: forall v x. Cntx v x -> [CycleCntx v x] cntxProcess :: [CycleCntx v x] -cntxProcess}, UnitEnv m +cntxProcess}, UnitEnv m pUnitEnv :: forall m v x. Project m v x -> UnitEnv m pUnitEnv :: UnitEnv m pUnitEnv} - SnippetTestBenchConf{[Text] + SnippetTestBenchConf{[Text] tbcSignals :: [Text] tbcSignals :: forall m. SnippetTestBenchConf m -> [Text] -tbcSignals, Ports m +tbcSignals, Ports m tbcPorts :: Ports m tbcPorts :: forall m. SnippetTestBenchConf m -> Ports m -tbcPorts, Microcode m -> Text +tbcPorts, Microcode m -> Text tbcMC2verilogLiteral :: Microcode m -> Text tbcMC2verilogLiteral :: forall m. SnippetTestBenchConf m -> Microcode m -> Text -tbcMC2verilogLiteral} = - let cycleCntx :: CycleCntx v x -cycleCntx = forall a. [a] -> a +tbcMC2verilogLiteral} = + let cycleCntx :: CycleCntx v x +cycleCntx = forall a. [a] -> a head [CycleCntx v x] -cntxProcess - name :: Text -name = forall pu. TargetSystemComponent pu => Text -> pu -> Text +cntxProcess + name :: Text +name = forall pu. TargetSystemComponent pu => Text -> pu -> Text moduleName Text -pName m -pUnit - p :: Process t (StepInfo v x t) -p@Process{[Step t (StepInfo v x t)] +pName m +pUnit + p :: Process t (StepInfo v x t) +p@Process{[Step t (StepInfo v x t)] steps :: forall t i. Process t i -> [Step t i] steps :: [Step t (StepInfo v x t)] steps} = forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process m -pUnit - fs :: [F v x] -fs = forall a f. WithFunctions a f => a -> [f] +pUnit + fs :: [F v x] +fs = forall a f. WithFunctions a f => a -> [f] functions m -pUnit - inst :: Verilog -inst = +pUnit + inst :: Verilog +inst = forall pu. TargetSystemComponent pu => Text -> pu -> UnitEnv pu -> Verilog hardwareInstance Text -pName +pName m -pUnit +pUnit UnitEnv m -pUnitEnv +pUnitEnv { ctrlPorts :: Maybe (Ports m) ctrlPorts = forall a. a -> Maybe a Just Ports m -tbcPorts +tbcPorts , valueIn :: Maybe (Text, Text) valueIn = forall a. a -> Maybe a Just (Text @@ -346,96 +346,96 @@ "data_out", Text "attr_out") } - controlSignals :: [Doc Any] -controlSignals = + controlSignals :: [Doc Any] +controlSignals = forall a b. (a -> b) -> [a] -> [b] map - ( \t -t -> - let setSignals :: Doc Any -setSignals = forall a ann. Pretty a => a -> Doc ann + ( \t +t -> + let setSignals :: Doc Any +setSignals = forall a ann. Pretty a => a -> Doc ann pretty forall a b. (a -> b) -> a -> b $ Microcode m -> Text -tbcMC2verilogLiteral (forall pu t. ByTime pu t => pu -> t -> Microcode pu +tbcMC2verilogLiteral (forall pu t. ByTime pu t => pu -> t -> Microcode pu microcodeAt m -pUnit t -t) - x :: x -x = t -> x -targetVal t -t - setValueBus :: Doc Any -setValueBus = [i|data_in <= #{ dataLiteral x }; attr_in <= #{ attrLiteral x };|] +pUnit t +t) + x :: x +x = t -> x +targetVal t +t + setValueBus :: Doc Any +setValueBus = [i|data_in <= #{ dataLiteral x }; attr_in <= #{ attrLiteral x };|] in Doc Any -setSignals forall a. Semigroup a => a -> a -> a +setSignals forall a. Semigroup a => a -> a -> a <> Doc Any " " forall a. Semigroup a => a -> a -> a <> Doc Any -setValueBus forall a. Semigroup a => a -> a -> a +setValueBus forall a. Semigroup a => a -> a -> a <> Doc Any " @(posedge clk);" ) [t 0 .. forall u t. NextTick u t => u -> t nextTick Process t (StepInfo v x t) -p forall a. Num a => a -> a -> a +p forall a. Num a => a -> a -> a + t 1] - targetVal :: t -> x -targetVal t -t - | Just (Target v -v) <- forall {a} {v} {x} {t}. + targetVal :: t -> x +targetVal t +t + | Just (Target v +v) <- forall {a} {v} {x} {t}. (Ord a, Show a, ToString v) => a -> Process a (StepInfo v x t) -> Maybe (EndpointRole v) endpointAt t -t Process t (StepInfo v x t) -p = +t Process t (StepInfo v x t) +p = forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v getCntx CycleCntx v x -cycleCntx v -v +cycleCntx v +v | Bool otherwise = x 0 - busCheck :: [Doc Any] -busCheck = forall a b. (a -> b) -> [a] -> [b] + busCheck :: [Doc Any] +busCheck = forall a b. (a -> b) -> [a] -> [b] map t -> Doc Any -busCheck' [t +busCheck' [t 0 .. forall u t. NextTick u t => u -> t nextTick Process t (StepInfo v x t) -p forall a. Num a => a -> a -> a +p forall a. Num a => a -> a -> a + t 1] where - busCheck' :: t -> Doc Any -busCheck' t -t - | Just (Source Set v -vs) <- forall {a} {v} {x} {t}. + busCheck' :: t -> Doc Any +busCheck' t +t + | Just (Source Set v +vs) <- forall {a} {v} {x} {t}. (Ord a, Show a, ToString v) => a -> Process a (StepInfo v x t) -> Maybe (EndpointRole v) endpointAt t -t Process t (StepInfo v x t) -p = - let v :: v -v = forall {c}. Set c -> c +t Process t (StepInfo v x t) +p = + let v :: v +v = forall {c}. Set c -> c oneOf Set v -vs - x :: x -x = forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v +vs + x :: x +x = forall {a} {v}. (Hashable a, ToString a) => CycleCntx a v -> a -> v getCntx CycleCntx v x -cycleCntx v -v +cycleCntx v +v in [i|@(posedge clk); assertWithAttr(0, 0, data_out, attr_out, #{ dataLiteral x }, #{ attrLiteral x }, "#{ toString v }");|] | Bool otherwise = [i|@(posedge clk); traceWithAttr(0, 0, data_out, attr_out);|] - tbcSignals' :: [Doc Any] -tbcSignals' = forall a b. (a -> b) -> [a] -> [b] -map (\Text -x -> [i|reg #{x};|]) [Text] -tbcSignals + tbcSignals' :: [Doc Any] +tbcSignals' = forall a b. (a -> b) -> [a] -> [b] +map (\Text +x -> [i|reg #{x};|]) [Text] +tbcSignals in Verilog -> Text doc2text [__i| diff --git a/haddock/nitta/src/NITTA.Project.Types.html b/haddock/nitta/src/NITTA.Project.Types.html index ccaccfd7b..3a9771101 100644 --- a/haddock/nitta/src/NITTA.Project.Types.html +++ b/haddock/nitta/src/NITTA.Project.Types.html @@ -36,7 +36,7 @@ -- FIXME: collision between target project name and output directory. Maybe -- pName or pTargetProjectPath should be maybe? Or both? -data Project m v x = Project +data Project m v x = Project { forall m v x. Project m v x -> Text pName :: T.Text -- ^ target project name @@ -56,12 +56,12 @@ pAbsNittaPath :: FilePath -- ^ absolute output path for NITTA processor inside target project , forall m v x. Project m v x -> m -pUnit :: m +pUnit :: m -- ^ 'mUnit' model (a mUnit unit for testbench or network for complete NITTA mUnit) , forall m v x. Project m v x -> UnitEnv m -pUnitEnv :: UnitEnv m +pUnitEnv :: UnitEnv m , forall m v x. Project m v x -> Cntx v x -pTestCntx :: Cntx v x +pTestCntx :: Cntx v x -- ^ testbench context with input values , forall m v x. Project m v x -> [FilePath] pTemplates :: [FilePath] @@ -77,21 +77,21 @@ "templates/DE0-Nano" ] -instance Default x => DefaultX (Project m v x) x +instance Default x => DefaultX (Project m v x) x -- | Type class for target components. Target -- a target system project or a testbench. -class TargetSystemComponent pu where +class TargetSystemComponent pu where -- | Name of the structural hardware module or Verilog module name (network or process unit) - moduleName :: T.Text -> pu -> T.Text + moduleName :: T.Text -> pu -> T.Text -- | Software and other specification which depends on application algorithm - software :: T.Text -> pu -> Implementation + software :: T.Text -> pu -> Implementation -- | Hardware which depends on microarchitecture description and requires synthesis. - hardware :: T.Text -> pu -> Implementation + hardware :: T.Text -> pu -> Implementation -- | Generate code for making an instance of the hardware module - hardwareInstance :: T.Text -> pu -> UnitEnv pu -> Verilog + hardwareInstance :: T.Text -> pu -> UnitEnv pu -> Verilog -- | Element of target system implementation data Implementation @@ -111,7 +111,7 @@ {- | Resolve uEnv element to verilog source code. E.g. `dataIn` into `data_bus`, `dataOut` into `accum_data_out`. -} -data UnitEnv m = UnitEnv +data UnitEnv m = UnitEnv { forall m. UnitEnv m -> Text sigClk :: T.Text -- ^ clock signal @@ -128,16 +128,16 @@ sigCycleEnd :: T.Text -- ^ posedge on computation cycle end , forall m. UnitEnv m -> Maybe (Ports m) -ctrlPorts :: Maybe (Ports m) +ctrlPorts :: Maybe (Ports m) , forall m. UnitEnv m -> Maybe (IOPorts m) -ioPorts :: Maybe (IOPorts m) +ioPorts :: Maybe (IOPorts m) , forall m. UnitEnv m -> Maybe (Text, Text) valueIn, forall m. UnitEnv m -> Maybe (Text, Text) valueOut :: Maybe (T.Text, T.Text) } -instance Default (UnitEnv m) where - def :: UnitEnv m +instance Default (UnitEnv m) where + def :: UnitEnv m def = UnitEnv { sigClk :: Text @@ -171,10 +171,10 @@ envInputPorts :: UnitEnv pu -> Set InputPortTag envInputPorts UnitEnv{ioPorts :: forall m. UnitEnv m -> Maybe (IOPorts m) -ioPorts = Just IOPorts pu -ports} = forall pu. IOConnected pu => IOPorts pu -> Set InputPortTag +ioPorts = Just IOPorts pu +ports} = forall pu. IOConnected pu => IOPorts pu -> Set InputPortTag inputPorts IOPorts pu -ports +ports envInputPorts UnitEnv{ioPorts :: forall m. UnitEnv m -> Maybe (IOPorts m) ioPorts = Maybe (IOPorts pu) Nothing} = forall a. Set a @@ -182,10 +182,10 @@ envOutputPorts :: UnitEnv pu -> Set OutputPortTag envOutputPorts UnitEnv{ioPorts :: forall m. UnitEnv m -> Maybe (IOPorts m) -ioPorts = Just IOPorts pu -ports} = forall pu. IOConnected pu => IOPorts pu -> Set OutputPortTag +ioPorts = Just IOPorts pu +ports} = forall pu. IOConnected pu => IOPorts pu -> Set OutputPortTag outputPorts IOPorts pu -ports +ports envOutputPorts UnitEnv{ioPorts :: forall m. UnitEnv m -> Maybe (IOPorts m) ioPorts = Maybe (IOPorts pu) Nothing} = forall a. Set a @@ -193,10 +193,10 @@ envInOutPorts :: UnitEnv pu -> Set InoutPortTag envInOutPorts UnitEnv{ioPorts :: forall m. UnitEnv m -> Maybe (IOPorts m) -ioPorts = Just IOPorts pu -ports} = forall pu. IOConnected pu => IOPorts pu -> Set InoutPortTag +ioPorts = Just IOPorts pu +ports} = forall pu. IOConnected pu => IOPorts pu -> Set InoutPortTag inoutPorts IOPorts pu -ports +ports envInOutPorts UnitEnv{ioPorts :: forall m. UnitEnv m -> Maybe (IOPorts m) ioPorts = Maybe (IOPorts pu) Nothing} = forall a. Set a diff --git a/haddock/nitta/src/NITTA.Project.VerilogSnippets.html b/haddock/nitta/src/NITTA.Project.VerilogSnippets.html index 0196e00e5..5aee75d3e 100644 --- a/haddock/nitta/src/NITTA.Project.VerilogSnippets.html +++ b/haddock/nitta/src/NITTA.Project.VerilogSnippets.html @@ -33,8 +33,8 @@ snippetDumpFile :: T.Text -> T.Text snippetDumpFile :: Text -> Text -snippetDumpFile Text -mn = +snippetDumpFile Text +mn = [__i| initial begin $dumpfile("#{ mn }_tb.vcd"); diff --git a/haddock/nitta/src/NITTA.Project.html b/haddock/nitta/src/NITTA.Project.html index 50474178c..1a1f1af5c 100644 --- a/haddock/nitta/src/NITTA.Project.html +++ b/haddock/nitta/src/NITTA.Project.html @@ -48,8 +48,8 @@ -- | Write project with all available parts. writeProject :: Project m v x -> IO () -writeProject prj :: Project m v x -prj@Project{String +writeProject prj :: Project m v x +prj@Project{String pTargetProjectPath :: forall m v x. Project m v x -> String pTargetProjectPath :: String pTargetProjectPath} = do @@ -59,46 +59,46 @@ $ String "write target project to: \"" forall a. Semigroup a => a -> a -> a <> String -pTargetProjectPath forall a. Semigroup a => a -> a -> a +pTargetProjectPath forall a. Semigroup a => a -> a -> a <> String "\"..." forall {pu} {v} {x}. (TargetSystemComponent pu, Testable pu v x) => Project pu v x -> IO () writeTargetSystem Project m v x -prj +prj forall {pu} {v} {x}. (TargetSystemComponent pu, Testable pu v x) => Project pu v x -> IO () writeTestBench Project m v x -prj +prj forall {pu} {v} {x}. (TargetSystemComponent pu, Testable pu v x) => Project pu v x -> IO () writeRenderedTemplates Project m v x -prj +prj String -> String -> IO () noticeM String "NITTA" forall a b. (a -> b) -> a -> b $ String "write target project to: \"" forall a. Semigroup a => a -> a -> a <> String -pTargetProjectPath forall a. Semigroup a => a -> a -> a +pTargetProjectPath forall a. Semigroup a => a -> a -> a <> String "\"...ok" writeTargetSystem :: Project pu v x -> IO () -writeTargetSystem prj :: Project pu v x -prj@Project{Text +writeTargetSystem prj :: Project pu v x +prj@Project{Text pName :: forall m v x. Project m v x -> Text pName :: Text -pName, String +pName, String pTargetProjectPath :: String pTargetProjectPath :: forall m v x. Project m v x -> String -pTargetProjectPath, String +pTargetProjectPath, String pInProjectNittaPath :: forall m v x. Project m v x -> String pInProjectNittaPath :: String -pInProjectNittaPath, pu +pInProjectNittaPath, pu pUnit :: forall m v x. Project m v x -> m pUnit :: pu pUnit} = do @@ -106,71 +106,71 @@ createDirectoryIfMissing Bool True forall a b. (a -> b) -> a -> b $ String -pTargetProjectPath String -> String -> String +pTargetProjectPath String -> String -> String </> String -pInProjectNittaPath +pInProjectNittaPath forall {m} {v} {x}. (TargetSystemComponent m, Testable m v x) => Project m v x -> Implementation -> IO () writeImplementation Project pu v x -prj forall a b. (a -> b) -> a -> b +prj forall a b. (a -> b) -> a -> b $ forall pu. TargetSystemComponent pu => Text -> pu -> Implementation hardware Text -pName pu -pUnit +pName pu +pUnit forall {m} {v} {x}. (TargetSystemComponent m, Testable m v x) => Project m v x -> Implementation -> IO () writeImplementation Project pu v x -prj forall a b. (a -> b) -> a -> b +prj forall a b. (a -> b) -> a -> b $ forall pu. TargetSystemComponent pu => Text -> pu -> Implementation software Text -pName pu -pUnit +pName pu +pUnit forall {pu} {v} {x}. TargetSystemComponent pu => Project pu v x -> IO () copyLibraryFiles Project pu v x -prj +prj writeTestBench :: Project m v x -> IO () -writeTestBench prj :: Project m v x -prj@Project{String +writeTestBench prj :: Project m v x +prj@Project{String pTargetProjectPath :: String pTargetProjectPath :: forall m v x. Project m v x -> String -pTargetProjectPath, String +pTargetProjectPath, String pInProjectNittaPath :: String pInProjectNittaPath :: forall m v x. Project m v x -> String -pInProjectNittaPath} = do +pInProjectNittaPath} = do Bool -> String -> IO () createDirectoryIfMissing Bool True forall a b. (a -> b) -> a -> b $ String -pTargetProjectPath String -> String -> String +pTargetProjectPath String -> String -> String </> String -pInProjectNittaPath +pInProjectNittaPath forall {m} {v} {x}. (TargetSystemComponent m, Testable m v x) => Project m v x -> Implementation -> IO () writeImplementation Project m v x -prj forall a b. (a -> b) -> a -> b +prj forall a b. (a -> b) -> a -> b $ forall m v x. Testable m v x => Project m v x -> Implementation testBenchImplementation Project m v x -prj +prj runTestbench :: Project u v x -> IO (TestbenchReport v x) -runTestbench prj :: Project u v x -prj@Project{String +runTestbench prj :: Project u v x +prj@Project{String pTargetProjectPath :: String pTargetProjectPath :: forall m v x. Project m v x -> String -pTargetProjectPath, u +pTargetProjectPath, u pUnit :: u pUnit :: forall m v x. Project m v x -> m -pUnit, pTestCntx :: forall m v x. Project m v x -> Cntx v x -pTestCntx = Cntx{[CycleCntx v x] +pUnit, pTestCntx :: forall m v x. Project m v x -> Cntx v x +pTestCntx = Cntx{[CycleCntx v x] cntxProcess :: forall v x. Cntx v x -> [CycleCntx v x] cntxProcess :: [CycleCntx v x] -cntxProcess, Int +cntxProcess, Int cntxCycleNumber :: forall v x. Cntx v x -> Int cntxCycleNumber :: Int cntxCycleNumber}} = do @@ -180,34 +180,34 @@ $ String "run logical synthesis(" forall a. Semigroup a => a -> a -> a <> String -pTargetProjectPath forall a. Semigroup a => a -> a -> a +pTargetProjectPath forall a. Semigroup a => a -> a -> a <> String ")..." - let files :: [String] -files = forall {m} {v} {x}. + let files :: [String] +files = forall {m} {v} {x}. (TargetSystemComponent m, Testable m v x) => Project m v x -> [String] verilogProjectFiles Project u v x -prj - String -wd <- IO String +prj + String +wd <- IO String getCurrentDirectory - (ExitCode -compileExitCode, Text -compileOut, Text -compileErr) <- do - Either IOException (ExitCode, Text, Text) -res <- forall e a. Exception e => IO a -> IO (Either e a) + (ExitCode +compileExitCode, Text +compileOut, Text +compileErr) <- do + Either IOException (ExitCode, Text, Text) +res <- forall e a. Exception e => IO a -> IO (Either e a) try forall a b. (a -> b) -> a -> b $ CreateProcess -> Text -> IO (ExitCode, Text, Text) readCreateProcessWithExitCode (String -> [String] -> CreateProcess -createIVerilogProcess String -pTargetProjectPath [String] -files) Text +createIVerilogProcess String +pTargetProjectPath [String] +files) Text "" case Either IOException (ExitCode, Text, Text) -res of +res of Left (IOException _ :: IOException) -> forall a. HasCallStack => String -> a @@ -219,24 +219,24 @@ |] :: String ) - Right (ExitCode, Text, Text) -val -> forall (m :: * -> *) a. Monad m => a -> m a + Right (ExitCode, Text, Text) +val -> forall (m :: * -> *) a. Monad m => a -> m a return (ExitCode, Text, Text) -val +val - let isCompileOk :: Bool -isCompileOk = ExitCode -compileExitCode forall a. Eq a => a -> a -> Bool + let isCompileOk :: Bool +isCompileOk = ExitCode +compileExitCode forall a. Eq a => a -> a -> Bool == ExitCode ExitSuccess Bool -> Bool -> Bool && Text -> Bool T.null Text -compileErr +compileErr - (ExitCode -simExitCode, Text -simOut, Text -simErr) <- + (ExitCode +simExitCode, Text +simOut, Text +simErr) <- CreateProcess -> Text -> IO (ExitCode, Text, Text) readCreateProcessWithExitCode (String -> [String] -> CreateProcess proc String @@ -244,44 +244,44 @@ "a.out"]){cwd :: Maybe String cwd = forall a. a -> Maybe a Just String -pTargetProjectPath} Text +pTargetProjectPath} Text "" - let isSimOk :: Bool -isSimOk = ExitCode -simExitCode forall a. Eq a => a -> a -> Bool + let isSimOk :: Bool +isSimOk = ExitCode +simExitCode forall a. Eq a => a -> a -> Bool == ExitCode ExitSuccess Bool -> Bool -> Bool && Bool -> Bool not (Text "FAIL" Text -> Text -> Bool `T.isInfixOf` Text -simOut) +simOut) - let tbStatus :: Bool -tbStatus = Bool -isCompileOk Bool -> Bool -> Bool + let tbStatus :: Bool +tbStatus = Bool +isCompileOk Bool -> Bool -> Bool && Bool -isSimOk - tbCompilerDump :: Text -tbCompilerDump = forall {a}. (Eq a, IsString a, Semigroup a) => a -> a -> a -dump Text -compileOut Text -compileErr - tbSimulationDump :: Text -tbSimulationDump = forall {a}. (Eq a, IsString a, Semigroup a) => a -> a -> a -dump Text -simOut Text -simErr +isSimOk + tbCompilerDump :: Text +tbCompilerDump = forall {a}. (Eq a, IsString a, Semigroup a) => a -> a -> a +dump Text +compileOut Text +compileErr + tbSimulationDump :: Text +tbSimulationDump = forall {a}. (Eq a, IsString a, Semigroup a) => a -> a -> a +dump Text +simOut Text +simErr if Bool -tbStatus +tbStatus then String -> String -> IO () noticeM String "NITTA" forall a b. (a -> b) -> a -> b $ String "run testbench (" forall a. Semigroup a => a -> a -> a <> String -pTargetProjectPath forall a. Semigroup a => a -> a -> a +pTargetProjectPath forall a. Semigroup a => a -> a -> a <> String ")...ok" else do @@ -291,7 +291,7 @@ $ String "run testbench (" forall a. Semigroup a => a -> a -> a <> String -pTargetProjectPath forall a. Semigroup a => a -> a -> a +pTargetProjectPath forall a. Semigroup a => a -> a -> a <> String ")...fail" String -> String -> IO () @@ -307,7 +307,7 @@ "NITTA" forall a b. (a -> b) -> a -> b $ Text -> String T.unpack Text -tbCompilerDump +tbCompilerDump String -> String -> IO () noticeM String "NITTA" String @@ -321,7 +321,7 @@ "NITTA" forall a b. (a -> b) -> a -> b $ Text -> String T.unpack Text -tbSimulationDump +tbSimulationDump forall (m :: * -> *) a. Monad m => a -> m a return TestbenchReport @@ -332,18 +332,18 @@ , tbPath :: String tbPath = [String] -> String joinPath [String -wd, String -pTargetProjectPath] +wd, String +pTargetProjectPath] , tbFiles :: [String] tbFiles = [String] -files +files , tbFunctions :: [Text] tbFunctions = forall a b. (a -> b) -> [a] -> [b] map forall {a}. Show a => a -> Text showText forall a b. (a -> b) -> a -> b $ forall a f. WithFunctions a f => a -> [f] functions u -pUnit +pUnit , tbSynthesisSteps :: [Text] tbSynthesisSteps = forall a b. (a -> b) -> [a] -> [b] map forall {a}. Show a => a -> Text @@ -354,7 +354,7 @@ ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -pUnit +pUnit , Text tbCompilerDump :: Text tbCompilerDump :: Text @@ -369,8 +369,8 @@ cycleCntx forall a b. (a -> b) -> a -> b $ forall a. Int -> [a] -> [a] take Int -cntxCycleNumber [CycleCntx v x] -cntxProcess +cntxCycleNumber [CycleCntx v x] +cntxProcess , tbLogicalSimulationLog :: [HashMap v x] tbLogicalSimulationLog = forall {b} {c}. Hashable b => [(Int, b, c)] -> [HashMap b c] log2hms forall a b. (a -> b) -> a -> b @@ -379,129 +379,129 @@ p -> String -> [(a, b, c)] extractLogValues (forall u x. DefaultX u x => u -> x defX u -pUnit) forall a b. (a -> b) -> a -> b +pUnit) forall a b. (a -> b) -> a -> b $ Text -> String T.unpack Text -simOut +simOut } where - createIVerilogProcess :: String -> [String] -> CreateProcess -createIVerilogProcess String -workdir [String] -files = (String -> [String] -> CreateProcess + createIVerilogProcess :: String -> [String] -> CreateProcess +createIVerilogProcess String +workdir [String] +files = (String -> [String] -> CreateProcess proc String "iverilog" [String] -files){cwd :: Maybe String +files){cwd :: Maybe String cwd = forall a. a -> Maybe a Just String -workdir} - dump :: a -> a -> a -dump a +workdir} + dump :: a -> a -> a +dump a "" a "" = a "" - dump a -out a -err = a + dump a +out a +err = a "stdout:\n" forall a. Semigroup a => a -> a -> a <> a -out forall a. Semigroup a => a -> a -> a +out forall a. Semigroup a => a -> a -> a <> a "stderr:\n" forall a. Semigroup a => a -> a -> a <> a -err +err extractLogValues :: p -> String -> [(a, b, c)] -extractLogValues p -x0 String -text = forall a b. (a -> Maybe b) -> [a] -> [b] +extractLogValues p +x0 String +text = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe forall {a} {b} {a} {c}. (ToString a, IsString b, Read a, Read c) => a -> Maybe (a, b, c) -f forall a b. (a -> b) -> a -> b +f forall a b. (a -> b) -> a -> b $ String -> [String] lines String -text +text where - f :: a -> Maybe (a, b, c) -f a -s = case Regex -> String -> Maybe [String] + f :: a -> Maybe (a, b, c) +f a +s = case Regex -> String -> Maybe [String] matchRegex (forall x. Val x => x -> Regex verilogAssertRE p -x0) forall a b. (a -> b) -> a -> b +x0) forall a b. (a -> b) -> a -> b $ forall a. ToString a => a -> String toString a -s of - Just [String -c, String -_t, String -x, String -_e, String -v] -> forall a. a -> Maybe a +s of + Just [String +c, String +_t, String +x, String +_e, String +v] -> forall a. a -> Maybe a Just (forall a. Read a => String -> a read String -c, forall a. IsString a => String -> a +c, forall a. IsString a => String -> a fromString forall a b. (a -> b) -> a -> b $ forall a. ToString a => a -> String toString String -v, forall a. Read a => String -> a +v, forall a. Read a => String -> a read String -x) +x) Maybe [String] _ -> forall a. Maybe a Nothing log2hms :: [(Int, b, c)] -> [HashMap b c] -log2hms [(Int, b, c)] -lst0 = [HashMap b c] -cntxProcess +log2hms [(Int, b, c)] +lst0 = [HashMap b c] +cntxProcess where - cntxProcess :: [HashMap b c] -cntxProcess = forall {t} {b} {c}. + cntxProcess :: [HashMap b c] +cntxProcess = forall {t} {b} {c}. (Eq t, Num t, Hashable b) => t -> [(t, b, c)] -> [HashMap b c] -inner (Int +inner (Int 0 :: Int) [(Int, b, c)] -lst0 - inner :: t -> [(t, b, c)] -> [HashMap b c] -inner t -n [(t, b, c)] -lst - | ([(t, b, c)] -xs, [(t, b, c)] -ys) <- forall a. (a -> Bool) -> [a] -> ([a], [a]) -L.partition (\(t -c, b -_v, c -_x) -> t -c forall a. Eq a => a -> a -> Bool +lst0 + inner :: t -> [(t, b, c)] -> [HashMap b c] +inner t +n [(t, b, c)] +lst + | ([(t, b, c)] +xs, [(t, b, c)] +ys) <- forall a. (a -> Bool) -> [a] -> ([a], [a]) +L.partition (\(t +c, b +_v, c +_x) -> t +c forall a. Eq a => a -> a -> Bool == t -n) [(t, b, c)] -lst +n) [(t, b, c)] +lst , Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [(t, b, c)] -xs = - let cycleCntx :: HashMap b c -cycleCntx = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v +xs = + let cycleCntx :: HashMap b c +cycleCntx = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v HM.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\(t -_c, b -v, c -x) -> (b -v, c -x)) [(t, b, c)] -xs +map (\(t +_c, b +v, c +x) -> (b +v, c +x)) [(t, b, c)] +xs in HashMap b c -cycleCntx forall a. a -> [a] -> [a] +cycleCntx forall a. a -> [a] -> [a] : t -> [(t, b, c)] -> [HashMap b c] -inner (t -n forall a. Num a => a -> a -> a +inner (t +n forall a. Num a => a -> a -> a + t 1) [(t, b, c)] -ys +ys | Bool otherwise = [] @@ -512,44 +512,44 @@ -- | Write 'Implementation' to the file system. writeImplementation :: Project m v x -> Implementation -> IO () -writeImplementation prj :: Project m v x -prj@Project{pTargetProjectPath :: forall m v x. Project m v x -> String -pTargetProjectPath = String -prjPath, pInProjectNittaPath :: forall m v x. Project m v x -> String -pInProjectNittaPath = String -nittaPath} Implementation -impl = String -> Implementation -> IO () -writeImpl String -nittaPath Implementation -impl +writeImplementation prj :: Project m v x +prj@Project{pTargetProjectPath :: forall m v x. Project m v x -> String +pTargetProjectPath = String +prjPath, pInProjectNittaPath :: forall m v x. Project m v x -> String +pInProjectNittaPath = String +nittaPath} Implementation +impl = String -> Implementation -> IO () +writeImpl String +nittaPath Implementation +impl where - writeImpl :: String -> Implementation -> IO () -writeImpl String -p (Immediate String -fn Text -src0) | Bool + writeImpl :: String -> Implementation -> IO () +writeImpl String +p (Immediate String +fn Text +src0) | Bool enableGingerForImplementation = do - let src :: String -src = Text -> String + let src :: String +src = Text -> String T.unpack Text -src0 - implCtx :: GingerContext SourcePos (Writer Text) Text -implCtx = forall {m} {v} {x} {p} {a}. +src0 + implCtx :: GingerContext SourcePos (Writer Text) Text +implCtx = forall {m} {v} {x} {p} {a}. (TargetSystemComponent m, Testable m v x, ToGVal (Run p (Writer Text) Text) a) => Project m v x -> a -> GingerContext p (Writer Text) Text implementationContext Project m v x -prj String -p - Template SourcePos -template <- +prj String +p + Template SourcePos +template <- forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (forall a. HasCallStack => String -> a error forall b c a. (b -> c) -> (a -> b) -> a -> c . Maybe String -> ParserError -> String formatParserError (forall a. a -> Maybe a Just String -src)) forall (m :: * -> *) a. Monad m => a -> m a +src)) forall (m :: * -> *) a. Monad m => a -> m a return forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. Identity a -> a runIdentity forall a b. (a -> b) -> a -> b @@ -566,188 +566,188 @@ return forall a. Maybe a Nothing) forall a. Maybe a Nothing String -src +src String -> Text -> IO () T.writeFile ([String] -> String joinPath [String -prjPath, String -p, String -fn]) forall a b. (a -> b) -> a -> b +prjPath, String +p, String +fn]) forall a b. (a -> b) -> a -> b $ forall p h. (ToGVal (Run p (Writer h) h) h, ToGVal (Run p (Writer h) h) p, Monoid h) => GingerContext p (Writer h) h -> Template p -> h runGinger GingerContext SourcePos (Writer Text) Text -implCtx Template SourcePos -template - writeImpl String -p (Immediate String -fn Text -src0) = +implCtx Template SourcePos +template + writeImpl String +p (Immediate String +fn Text +src0) = String -> Text -> IO () T.writeFile ([String] -> String joinPath [String -prjPath, String -p, String -fn]) forall a b. (a -> b) -> a -> b +prjPath, String +p, String +fn]) forall a b. (a -> b) -> a -> b $ Text -> Text -> Text -> Text T.replace Text "{{ nitta.paths.nest }}" (String -> Text T.pack String -p) Text -src0 - writeImpl String -p (Aggregate Maybe String -p' [Implementation] -subInstances) = do - let path :: String -path = [String] -> String +p) Text +src0 + writeImpl String +p (Aggregate Maybe String +p' [Implementation] +subInstances) = do + let path :: String +path = [String] -> String joinPath forall a b. (a -> b) -> a -> b $ forall b a. b -> (a -> b) -> Maybe a -> b maybe [String -p] (\String -x -> [String -p, String -x]) Maybe String -p' +p] (\String +x -> [String +p, String +x]) Maybe String +p' Bool -> String -> IO () createDirectoryIfMissing Bool True forall a b. (a -> b) -> a -> b $ [String] -> String joinPath [String -prjPath, String -path] +prjPath, String +path] forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ (String -> Implementation -> IO () -writeImpl String -path) [Implementation] -subInstances - writeImpl String +writeImpl String +path) [Implementation] +subInstances + writeImpl String _ (FromLibrary String _) = forall (m :: * -> *) a. Monad m => a -> m a return () - writeImpl String + writeImpl String _ Implementation Empty = forall (m :: * -> *) a. Monad m => a -> m a return () -- | Copy library files to target path. copyLibraryFiles :: Project pu v x -> IO () -copyLibraryFiles Project pu v x -prj = forall (t :: * -> *) (m :: * -> *) a b. +copyLibraryFiles Project pu v x +prj = forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ (forall {m} {v} {x}. Project m v x -> String -> IO () -copyLibraryFile Project pu v x -prj) forall a b. (a -> b) -> a -> b +copyLibraryFile Project pu v x +prj) forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x}. TargetSystemComponent pu => Project pu v x -> [String] -libraryFiles Project pu v x -prj +libraryFiles Project pu v x +prj where - copyLibraryFile :: Project m v x -> String -> IO () -copyLibraryFile Project{String + copyLibraryFile :: Project m v x -> String -> IO () +copyLibraryFile Project{String pTargetProjectPath :: String pTargetProjectPath :: forall m v x. Project m v x -> String -pTargetProjectPath, String +pTargetProjectPath, String pInProjectNittaPath :: String pInProjectNittaPath :: forall m v x. Project m v x -> String -pInProjectNittaPath, String +pInProjectNittaPath, String pLibPath :: forall m v x. Project m v x -> String pLibPath :: String -pLibPath} String -file = do - let fullNittaPath :: String -fullNittaPath = [String] -> String +pLibPath} String +file = do + let fullNittaPath :: String +fullNittaPath = [String] -> String joinPath [String -pTargetProjectPath, String -pInProjectNittaPath] - String -source <- String -> IO String +pTargetProjectPath, String +pInProjectNittaPath] + String +source <- String -> IO String makeAbsolute forall a b. (a -> b) -> a -> b $ String -> String normalise forall a b. (a -> b) -> a -> b $ [String] -> String joinPath [String -pLibPath, String -file] - String -target <- String -> IO String +pLibPath, String +file] + String +target <- String -> IO String makeAbsolute forall a b. (a -> b) -> a -> b $ String -> String normalise forall a b. (a -> b) -> a -> b $ [String] -> String joinPath [String -fullNittaPath, String +fullNittaPath, String "lib", String -file] - String -directory <- String -> IO String +file] + String +directory <- String -> IO String makeAbsolute forall a b. (a -> b) -> a -> b $ String -> String normalise forall a b. (a -> b) -> a -> b $ [String] -> String joinPath [String -fullNittaPath, String +fullNittaPath, String "lib", String -> String takeDirectory String -file] +file] Bool -> String -> IO () createDirectoryIfMissing Bool True String -directory +directory String -> String -> IO () copyFile String -source String -target +source String +target - libraryFiles :: Project pu v x -> [String] -libraryFiles Project{Text + libraryFiles :: Project pu v x -> [String] +libraryFiles Project{Text pName :: Text pName :: forall m v x. Project m v x -> Text -pName, pu +pName, pu pUnit :: pu pUnit :: forall m v x. Project m v x -> m -pUnit} = +pUnit} = forall a. Eq a => [a] -> [a] L.nub forall a b. (a -> b) -> a -> b $ String -> Implementation -> [String] -args String +args String "" forall a b. (a -> b) -> a -> b $ forall pu. TargetSystemComponent pu => Text -> pu -> Implementation hardware Text -pName pu -pUnit +pName pu +pUnit where - args :: String -> Implementation -> [String] -args String -p (Aggregate (Just String -p') [Implementation] -subInstances) = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] + args :: String -> Implementation -> [String] +args String +p (Aggregate (Just String +p') [Implementation] +subInstances) = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (String -> Implementation -> [String] -args forall a b. (a -> b) -> a -> b +args forall a b. (a -> b) -> a -> b $ [String] -> String joinPath [String -p, String -p']) [Implementation] -subInstances - args String -p (Aggregate Maybe String -Nothing [Implementation] -subInstances) = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +p, String +p']) [Implementation] +subInstances + args String +p (Aggregate Maybe String +Nothing [Implementation] +subInstances) = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (String -> Implementation -> [String] -args String -p) [Implementation] -subInstances - args String -_ (FromLibrary String -fn) = [String -fn] - args String +args String +p) [Implementation] +subInstances + args String +_ (FromLibrary String +fn) = [String +fn] + args String _ Implementation _ = [] \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.Analysis.html b/haddock/nitta/src/NITTA.Synthesis.Analysis.html index 018b0b8aa..e1f0a1192 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Analysis.html +++ b/haddock/nitta/src/NITTA.Synthesis.Analysis.html @@ -21,7 +21,7 @@ import NITTA.Synthesis.Types -- | Metrics of synthesis tree process -data TreeInfo = TreeInfo +data TreeInfo = TreeInfo { TreeInfo -> Int nodesVisited :: !Int , TreeInfo -> Int @@ -41,7 +41,7 @@ (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep TreeInfo x -> TreeInfo $cfrom :: forall x. TreeInfo -> Rep TreeInfo x -Generic, Int -> TreeInfo -> ShowS +Generic, Int -> TreeInfo -> ShowS [TreeInfo] -> ShowS TreeInfo -> String forall a. @@ -54,25 +54,25 @@ $cshowsPrec :: Int -> TreeInfo -> ShowS Show) -instance Semigroup TreeInfo where - TreeInfo -a <> :: TreeInfo -> TreeInfo -> TreeInfo -<> TreeInfo -b = - let ab :: [TreeInfo] -ab = [TreeInfo -a, TreeInfo -b] - durationSuccessList :: [HashMap Int Int] -durationSuccessList = forall a b. (a -> b) -> [a] -> [b] +instance Semigroup TreeInfo where + TreeInfo +a <> :: TreeInfo -> TreeInfo -> TreeInfo +<> TreeInfo +b = + let ab :: [TreeInfo] +ab = [TreeInfo +a, TreeInfo +b] + durationSuccessList :: [HashMap Int Int] +durationSuccessList = forall a b. (a -> b) -> [a] -> [b] map TreeInfo -> HashMap Int Int targetProcessDuration [TreeInfo] -ab - stepsSuccessList :: [HashMap Int Int] -stepsSuccessList = forall a b. (a -> b) -> [a] -> [b] +ab + stepsSuccessList :: [HashMap Int Int] +stepsSuccessList = forall a b. (a -> b) -> [a] -> [b] map TreeInfo -> HashMap Int Int synthesisStepsForSuccess [TreeInfo] -ab +ab in TreeInfo { nodesVisited :: Int nodesVisited = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a @@ -80,58 +80,58 @@ $ forall a b. (a -> b) -> [a] -> [b] map TreeInfo -> Int nodesVisited [TreeInfo] -ab +ab , nodesSuccess :: Int nodesSuccess = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map TreeInfo -> Int nodesSuccess [TreeInfo] -ab +ab , nodesFailed :: Int nodesFailed = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map TreeInfo -> Int nodesFailed [TreeInfo] -ab +ab , nodesNotProcessed :: Int nodesNotProcessed = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map TreeInfo -> Int nodesNotProcessed [TreeInfo] -ab +ab , targetProcessDuration :: HashMap Int Int targetProcessDuration = if Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [HashMap Int Int] -durationSuccessList then forall (t :: * -> *) a. Foldable t => (a -> a -> a) -> t a -> a +durationSuccessList then forall (t :: * -> *) a. Foldable t => (a -> a -> a) -> t a -> a foldr1 (forall k v. (Eq k, Hashable k) => (v -> v -> v) -> HashMap k v -> HashMap k v -> HashMap k v HM.unionWith forall a. Num a => a -> a -> a (+)) [HashMap Int Int] -durationSuccessList else forall k v. HashMap k v +durationSuccessList else forall k v. HashMap k v HM.empty , synthesisStepsForSuccess :: HashMap Int Int synthesisStepsForSuccess = if Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null [HashMap Int Int] -stepsSuccessList then forall (t :: * -> *) a. Foldable t => (a -> a -> a) -> t a -> a +stepsSuccessList then forall (t :: * -> *) a. Foldable t => (a -> a -> a) -> t a -> a foldr1 (forall k v. (Eq k, Hashable k) => (v -> v -> v) -> HashMap k v -> HashMap k v -> HashMap k v HM.unionWith forall a. Num a => a -> a -> a (+)) [HashMap Int Int] -stepsSuccessList else forall k v. HashMap k v +stepsSuccessList else forall k v. HashMap k v HM.empty } -instance Monoid TreeInfo where - mempty :: TreeInfo +instance Monoid TreeInfo where + mempty :: TreeInfo mempty = TreeInfo { nodesVisited :: Int @@ -154,55 +154,55 @@ HM.empty } -getTreeInfo :: - (VarValTime v x t, NextTick u t) => - Tree (TargetSystem u tag v x t) tag v x t -> +getTreeInfo :: + (VarValTime v x t, NextTick u t) => + Tree (TargetSystem u tag v x t) tag v x t -> IO TreeInfo getTreeInfo :: forall v x t u tag. (VarValTime v x t, NextTick u t) => Tree (TargetSystem u tag v x t) tag v x t -> IO TreeInfo -getTreeInfo tree :: Tree (TargetSystem u tag v x t) tag v x t -tree@Tree{sID :: forall m tag v x t. Tree m tag v x t -> Sid -sID = Sid [Int] -sid, TMVar [Tree (TargetSystem u tag v x t) tag v x t] +getTreeInfo tree :: Tree (TargetSystem u tag v x t) tag v x t +tree@Tree{sID :: forall m tag v x t. Tree m tag v x t -> Sid +sID = Sid [Int] +sid, TMVar [Tree (TargetSystem u tag v x t) tag v x t] sSubForestVar :: forall m tag v x t. Tree m tag v x t -> TMVar [Tree m tag v x t] sSubForestVar :: TMVar [Tree (TargetSystem u tag v x t) tag v x t] sSubForestVar} = do - Maybe [Tree (TargetSystem u tag v x t) tag v x t] -subForestM <- forall a. STM a -> IO a + Maybe [Tree (TargetSystem u tag v x t) tag v x t] +subForestM <- forall a. STM a -> IO a atomically forall a b. (a -> b) -> a -> b $ forall a. TMVar a -> STM (Maybe a) tryReadTMVar TMVar [Tree (TargetSystem u tag v x t) tag v x t] -sSubForestVar - let isProcessed :: Bool -isProcessed = forall a. Maybe a -> Bool +sSubForestVar + let isProcessed :: Bool +isProcessed = forall a. Maybe a -> Bool isJust Maybe [Tree (TargetSystem u tag v x t) tag v x t] -subForestM +subForestM TreeInfo - { Int + { Int nodesVisited :: Int nodesVisited :: TreeInfo -> Int -nodesVisited - , Int +nodesVisited + , Int nodesSuccess :: Int nodesSuccess :: TreeInfo -> Int -nodesSuccess - , Int +nodesSuccess + , Int nodesFailed :: Int nodesFailed :: TreeInfo -> Int -nodesFailed - , HashMap Int Int +nodesFailed + , HashMap Int Int targetProcessDuration :: HashMap Int Int targetProcessDuration :: TreeInfo -> HashMap Int Int -targetProcessDuration - , HashMap Int Int +targetProcessDuration + , HashMap Int Int synthesisStepsForSuccess :: HashMap Int Int synthesisStepsForSuccess :: TreeInfo -> HashMap Int Int -synthesisStepsForSuccess - , Int +synthesisStepsForSuccess + , Int nodesNotProcessed :: Int nodesNotProcessed :: TreeInfo -> Int -nodesNotProcessed +nodesNotProcessed } <- forall b a. b -> (a -> b) -> Maybe a -> b maybe (forall (m :: * -> *) a. Monad m => a -> m a @@ -217,16 +217,16 @@ (VarValTime v x t, NextTick u t) => Tree (TargetSystem u tag v x t) tag v x t -> IO TreeInfo getTreeInfo) Maybe [Tree (TargetSystem u tag v x t) tag v x t] -subForestM +subForestM - let (Bool -isSuccess, Bool -isFail) + let (Bool +isSuccess, Bool +isFail) | forall m tag v x t. Tree m tag v x t -> Bool isLeaf Tree (TargetSystem u tag v x t) tag v x t -tree = if forall m tag v x t. Tree m tag v x t -> Bool +tree = if forall m tag v x t. Tree m tag v x t -> Bool isComplete Tree (TargetSystem u tag v x t) tag v x t -tree then (Bool +tree then (Bool True, Bool False) else (Bool False, Bool @@ -236,8 +236,8 @@ False, Bool False) - let duration :: Int -duration = forall a. Enum a => a -> Int + let duration :: Int +duration = forall a. Enum a => a -> Int fromEnum forall a b. (a -> b) -> a -> b $ forall {a} {u} {tag} {v} {x} {t}. (Num a, NextTick u a) => @@ -247,16 +247,16 @@ sTarget forall a b. (a -> b) -> a -> b $ forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t sState Tree (TargetSystem u tag v x t) tag v x t -tree +tree - let registerIfSuccess :: HashMap k v -> k -> HashMap k v -registerIfSuccess HashMap k v -stat k -value + let registerIfSuccess :: HashMap k v -> k -> HashMap k v +registerIfSuccess HashMap k v +stat k +value | Bool -> Bool not Bool -isSuccess = HashMap k v -stat +isSuccess = HashMap k v +stat | Bool otherwise = forall k v. (Eq k, Hashable k) => @@ -268,8 +268,8 @@ 1 (forall a. Num a => a -> a -> a + v 1)) k -value HashMap k v -stat +value HashMap k v +stat forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b @@ -277,45 +277,45 @@ TreeInfo { nodesVisited :: Int nodesVisited = Int -nodesVisited forall a. Num a => a -> a -> a +nodesVisited forall a. Num a => a -> a -> a + Int 1 , nodesSuccess :: Int nodesSuccess = Int -nodesSuccess forall a. Num a => a -> a -> a +nodesSuccess forall a. Num a => a -> a -> a + if Bool -isSuccess then Int +isSuccess then Int 1 else Int 0 , nodesFailed :: Int nodesFailed = Int -nodesFailed forall a. Num a => a -> a -> a +nodesFailed forall a. Num a => a -> a -> a + if Bool -isFail then Int +isFail then Int 1 else Int 0 , nodesNotProcessed :: Int nodesNotProcessed = Int -nodesNotProcessed forall a. Num a => a -> a -> a +nodesNotProcessed forall a. Num a => a -> a -> a + if Bool -isProcessed then Int +isProcessed then Int 0 else Int 1 , targetProcessDuration :: HashMap Int Int targetProcessDuration = forall {k} {v}. (Hashable k, Num v) => HashMap k v -> k -> HashMap k v -registerIfSuccess HashMap Int Int -targetProcessDuration Int -duration +registerIfSuccess HashMap Int Int +targetProcessDuration Int +duration , synthesisStepsForSuccess :: HashMap Int Int synthesisStepsForSuccess = forall {k} {v}. (Hashable k, Num v) => HashMap k v -> k -> HashMap k v -registerIfSuccess HashMap Int Int -synthesisStepsForSuccess forall a b. (a -> b) -> a -> b +registerIfSuccess HashMap Int Int +synthesisStepsForSuccess forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Int length [Int] -sid +sid } \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.Explore.html b/haddock/nitta/src/NITTA.Synthesis.Explore.html index a46e847d7..2752bbd36 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Explore.html +++ b/haddock/nitta/src/NITTA.Synthesis.Explore.html @@ -64,15 +64,15 @@ rootSynthesisTreeSTM :: TargetSystem (BusNetwork tag v x t) tag v x t -> STM (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) -rootSynthesisTreeSTM TargetSystem (BusNetwork tag v x t) tag v x t -model = do - TMVar +rootSynthesisTreeSTM TargetSystem (BusNetwork tag v x t) tag v x t +model = do + TMVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -sSubForestVar <- forall a. STM (TMVar a) +sSubForestVar <- forall a. STM (TMVar a) newEmptyTMVar - let sState :: SynthesisState + let sState :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -sState = forall {k} {x} {t} {a}. +sState = forall {k} {x} {t} {a}. (UnitTag k, Val x, Bounded t, Hashable a, Suffix a, Show t, Default t, Integral t, Ord a, Typeable t, Typeable a, ToString a, IsString a) => @@ -82,7 +82,7 @@ (TargetSystem (BusNetwork k a x t) k a x t) k a x t nodeCtx forall a. Maybe a Nothing TargetSystem (BusNetwork tag v x t) tag v x t -model +model forall (m :: * -> *) a. Monad m => a -> m a return Tree @@ -113,14 +113,14 @@ isLeaf = forall {m} {tag} {v} {x} {t}. SynthesisState m tag v x t -> Bool isLeaf' SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -sState +sState , isComplete :: Bool isComplete = forall {u} {v} {x} {t} {tag} {tag} {v} {x} {t}. ProcessorUnit u v x t => SynthesisState (TargetSystem u tag v x t) tag v x t -> Bool isComplete' SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -sState +sState } -- | Get specific by @nId@ node from a synthesis tree. @@ -129,18 +129,18 @@ -> Sid -> IO (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) -getTreeIO BackendCtx tag v x t -_ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree (Sid []) = forall (m :: * -> *) a. Monad m => a -> m a +getTreeIO BackendCtx tag v x t +_ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +tree (Sid []) = forall (m :: * -> *) a. Monad m => a -> m a return Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree -getTreeIO BackendCtx tag v x t -ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree (Sid (Int -i : [Int] -is)) = do - [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest <- forall {tag} {v} {x} {t} {tag} {v} {x} {t}. +tree +getTreeIO BackendCtx tag v x t +ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +tree (Sid (Int +i : [Int] +is)) = do + [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] +subForest <- forall {tag} {v} {x} {t} {tag} {v} {x} {t}. (UnitTag tag, Hashable v, Suffix v, Val x, Bounded t, ToJSONKey v, ToJSON v, ToJSON t, ToJSON tag, Show t, Default t, Integral t, Typeable v, Typeable t, Ord v, ToString v, IsString v) => @@ -149,14 +149,14 @@ -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] subForestIO BackendCtx tag v x t -ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree +ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +tree forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (Int -i forall a. Ord a => a -> a -> Bool +i forall a. Ord a => a -> a -> Bool < forall (t :: * -> *) a. Foldable t => t a -> Int length [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest) forall a b. (a -> b) -> a -> b +subForest) forall a b. (a -> b) -> a -> b $ forall a. HasCallStack => [Char] -> a error [Char] "getTreeIO - wrong Sid" @@ -166,12 +166,12 @@ -> IO (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) getTreeIO BackendCtx tag v x t -ctx ([Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest forall a. [a] -> Int -> a +ctx ([Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] +subForest forall a. [a] -> Int -> a !! Int -i) ([Int] -> Sid +i) ([Int] -> Sid Sid [Int] -is) +is) -- | Get list of all nodes from root to selected. getTreePathIO :: BackendCtx tag v x t @@ -179,17 +179,17 @@ -> Sid -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -getTreePathIO BackendCtx tag v x t -_ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -_tree (Sid []) = forall (m :: * -> *) a. Monad m => a -> m a +getTreePathIO BackendCtx tag v x t +_ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +_tree (Sid []) = forall (m :: * -> *) a. Monad m => a -> m a return [] -getTreePathIO BackendCtx tag v x t -ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree (Sid (Int -i : [Int] -is)) = do - Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -h <- forall {tag} {v} {x} {t} {tag} {v} {x} {t}. +getTreePathIO BackendCtx tag v x t +ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +tree (Sid (Int +i : [Int] +is)) = do + Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +h <- forall {tag} {v} {x} {t} {tag} {v} {x} {t}. (UnitTag tag, Hashable v, Suffix v, Val x, Bounded t, ToJSONKey v, Show t, Default t, Integral t, ToJSON v, ToJSON t, ToJSON tag, Typeable v, Typeable t, Ord v, ToString v, IsString v) => @@ -199,29 +199,29 @@ -> IO (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) getTreeIO BackendCtx tag v x t -ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree forall a b. (a -> b) -> a -> b +ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +tree forall a b. (a -> b) -> a -> b $ [Int] -> Sid Sid [Int -i] - [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -t <- BackendCtx tag v x t +i] + [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] +t <- BackendCtx tag v x t -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Sid -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] getTreePathIO BackendCtx tag v x t -ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -h forall a b. (a -> b) -> a -> b +ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +h forall a b. (a -> b) -> a -> b $ [Int] -> Sid Sid [Int] -is +is forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -h forall a. a -> [a] -> [a] +h forall a. a -> [a] -> [a] : [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -t +t {- | Get all available edges for the node. Edges calculated only for the first call. @@ -231,41 +231,41 @@ -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] subForestIO - BackendCtx{[Text] + BackendCtx{[Text] nodeScores :: forall tag v x t. BackendCtx tag v x t -> [Text] nodeScores :: [Text] -nodeScores, IO MlBackendServer +nodeScores, IO MlBackendServer mlBackendGetter :: forall tag v x t. BackendCtx tag v x t -> IO MlBackendServer mlBackendGetter :: IO MlBackendServer mlBackendGetter} - tree :: Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree@Tree{TMVar + tree :: Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +tree@Tree{TMVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] sSubForestVar :: TMVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] sSubForestVar :: forall m tag v x t. Tree m tag v x t -> TMVar [Tree m tag v x t] -sSubForestVar} = do - (Bool -firstTime, [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest) <- +sSubForestVar} = do + (Bool +firstTime, [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] +subForest) <- forall a. STM a -> IO a atomically forall a b. (a -> b) -> a -> b $ forall a. TMVar a -> STM (Maybe a) tryReadTMVar TMVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -sSubForestVar forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +sSubForestVar forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - Just [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest -> forall (m :: * -> *) a. Monad m => a -> m a + Just [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] +subForest -> forall (m :: * -> *) a. Monad m => a -> m a return (Bool False, [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest) +subForest) Maybe [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] Nothing -> do - [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest <- forall {tag} {x} {t} {v}. + [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] +subForest <- forall {tag} {x} {t} {v}. (UnitTag tag, Val x, Bounded t, Hashable v, Suffix v, ToString v, Show t, Default t, Integral t, Typeable t, Typeable v, Ord v, IsString v) => @@ -273,63 +273,63 @@ -> STM [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] exploreSubForestVar Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree +tree forall a. TMVar a -> a -> STM () putTMVar TMVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -sSubForestVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest +sSubForestVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] +subForest forall (m :: * -> *) a. Monad m => a -> m a return (Bool True, [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest) +subForest) forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -firstTime forall a b. (a -> b) -> a -> b +firstTime forall a b. (a -> b) -> a -> b $ forall {m} {tag} {v} {x} {t}. Tree m tag v x t -> IO () -traceProcessedNode Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree +traceProcessedNode Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +tree -- FIXME: ML scores are evaluated here every time subForestIO is called. how to cache it like the default score? IO in STM isn't possible. -- also it looks inelegant, is there a way to refactor it? - let modelNames :: [Text] -modelNames = forall a b. (a -> Maybe b) -> [a] -> [b] + let modelNames :: [Text] +modelNames = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe (Text -> Text -> Maybe Text T.stripPrefix forall {a}. IsString a => a mlScoreKeyPrefix) [Text] -nodeScores +nodeScores if | forall (t :: * -> *) a. Foldable t => t a -> Bool null [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest -> forall (m :: * -> *) a. Monad m => a -> m a +subForest -> forall (m :: * -> *) a. Monad m => a -> m a return [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest +subForest | forall (t :: * -> *) a. Foldable t => t a -> Bool null [Text] -nodeScores -> forall (m :: * -> *) a. Monad m => a -> m a +nodeScores -> forall (m :: * -> *) a. Monad m => a -> m a return [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest +subForest | forall (t :: * -> *) a. Foldable t => t a -> Bool null [Text] -modelNames -> forall (m :: * -> *) a. Monad m => a -> m a +modelNames -> forall (m :: * -> *) a. Monad m => a -> m a return [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest +subForest | Bool otherwise -> do - MlBackendServer{Maybe Text + MlBackendServer{Maybe Text baseUrl :: MlBackendServer -> Maybe Text baseUrl :: Maybe Text baseUrl} <- IO MlBackendServer -mlBackendGetter +mlBackendGetter case Maybe Text -baseUrl of +baseUrl of Maybe Text Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest - Just Text -mlBackendBaseUrl -> do +subForest + Just Text +mlBackendBaseUrl -> do -- (addMlScoreToSubforestSkipErrorsIO subForestAccum modelName) gets called for each modelName forall (t :: * -> *) (m :: * -> *) b a. (Foldable t, Monad m) => @@ -341,20 +341,20 @@ Ord v, ToJSON v, ToJSON t, ToJSON tag) => a -> [Tree m tag v x t] -> Text -> IO [Tree m tag v x t] addMlScoreToSubforestSkipErrorsIO Text -mlBackendBaseUrl) [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest [Text] -modelNames +mlBackendBaseUrl) [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] +subForest [Text] +modelNames where - traceProcessedNode :: Tree m tag v x t -> IO () -traceProcessedNode Tree{Sid + traceProcessedNode :: Tree m tag v x t -> IO () +traceProcessedNode Tree{Sid sID :: Sid sID :: forall m tag v x t. Tree m tag v x t -> Sid -sID, SynthesisDecision (SynthesisState m tag v x t) m +sID, SynthesisDecision (SynthesisState m tag v x t) m sDecision :: SynthesisDecision (SynthesisState m tag v x t) m sDecision :: forall m tag v x t. Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m -sDecision} = +sDecision} = [Char] -> [Char] -> IO () debugM [Char] "NITTA.Synthesis" forall a b. (a -> b) -> a -> b @@ -364,19 +364,19 @@ forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> [Char] show Sid -sID +sID forall a. Semigroup a => a -> a -> a <> [Char] " score: " forall a. Semigroup a => a -> a -> a <> ( case SynthesisDecision (SynthesisState m tag v x t) m -sDecision of - SynthesisDecision{Map Text Float +sDecision of + SynthesisDecision{Map Text Float scores :: forall ctx m. SynthesisDecision ctx m -> Map Text Float scores :: Map Text Float scores} -> forall a. Show a => a -> [Char] show Map Text Float -scores +scores SynthesisDecision (SynthesisState m tag v x t) m _ -> [Char] "-" @@ -386,23 +386,23 @@ " decision: " forall a. Semigroup a => a -> a -> a <> ( case SynthesisDecision (SynthesisState m tag v x t) m -sDecision of - SynthesisDecision{d +sDecision of + SynthesisDecision{d decision :: () decision :: d decision} -> forall a. Show a => a -> [Char] show d -decision +decision SynthesisDecision (SynthesisState m tag v x t) m _ -> [Char] "-" ) addMlScoreToSubforestSkipErrorsIO :: a -> [Tree m tag v x t] -> Text -> IO [Tree m tag v x t] -addMlScoreToSubforestSkipErrorsIO a -mlBackendBaseUrl [Tree m tag v x t] -subForest Text -modelName = do +addMlScoreToSubforestSkipErrorsIO a +mlBackendBaseUrl [Tree m tag v x t] +subForest Text +modelName = do forall {m} {tag} {v} {x} {t} {tag} {v} {x} {t} {m :: * -> *} {a}. (Viewable (Tree m tag v x t) (NodeView tag v x t), IsString v, Suffix v, Hashable v, Val x, Bounded t, ToJSONKey v, MonadThrow m, @@ -410,12 +410,12 @@ Default t, Integral t, Ord v, ToJSON v, ToJSON t, ToJSON tag) => a -> [Tree m tag v x t] -> Text -> m [Tree m tag v x t] addMlScoreToSubforestIO a -mlBackendBaseUrl [Tree m tag v x t] -subForest Text -modelName +mlBackendBaseUrl [Tree m tag v x t] +subForest Text +modelName forall e a. Exception e => IO a -> (e -> IO a) -> IO a -`catch` \JSONException -e -> do +`catch` \JSONException +e -> do [Char] -> [Char] -> IO () errorM [Char] "NITTA.Synthesis" forall a b. (a -> b) -> a -> b @@ -424,62 +424,62 @@ "ML backend error: " forall a. Semigroup a => a -> a -> a <> ( case JSONException -e of +e of JSONConversionException Request -_ Response Value -resp [Char] +_ Response Value +resp [Char] _ -> forall a. Show a => a -> [Char] show Response Value -resp +resp JSONException _ -> forall a. Show a => a -> [Char] show JSONException -e +e ) forall (m :: * -> *) a. Monad m => a -> m a return [Tree m tag v x t] -subForest +subForest addMlScoreToSubforestIO :: a -> [Tree m tag v x t] -> Text -> m [Tree m tag v x t] -addMlScoreToSubforestIO a -mlBackendBaseUrl [Tree m tag v x t] -subForest Text -modelName = do - let input :: ScoringInput tag v x t -input = ScoringInput{scoringTarget :: ScoringTarget +addMlScoreToSubforestIO a +mlBackendBaseUrl [Tree m tag v x t] +subForest Text +modelName = do + let input :: ScoringInput tag v x t +input = ScoringInput{scoringTarget :: ScoringTarget scoringTarget = ScoringTarget ScoringTargetAll, nodes :: [NodeView tag v x t] nodes = [forall t v. Viewable t v => t -> v view Tree m tag v x t -node | Tree m tag v x t -node <- [Tree m tag v x t] -subForest]} - [[Float]] -allInputsScores <- forall {m :: * -> *} {v} {x} {t} {a} {tag}. +node | Tree m tag v x t +node <- [Tree m tag v x t] +subForest]} + [[Float]] +allInputsScores <- forall {m :: * -> *} {v} {x} {t} {a} {tag}. (IsString v, Suffix v, Hashable v, Val x, Bounded t, ToJSONKey v, MonadThrow m, ToString v, ToString a, MonadIO m, Typeable v, Typeable t, Show t, Default t, Integral t, Ord v, ToJSON v, ToJSON t, ToJSON tag) => Text -> a -> [ScoringInput tag v x t] -> m [[Float]] predictScoresIO Text -modelName a -mlBackendBaseUrl [ScoringInput tag v x t -input] +modelName a +mlBackendBaseUrl [ScoringInput tag v x t +input] -- +20 shifts "useless node" threshold, since model outputs negative values much more often -- FIXME: make models' output consist of mostly >0 values and treat 0 as a "useless node" threshold? training data changes required - let mlScores :: [Float] -mlScores = forall a b. (a -> b) -> [a] -> [b] + let mlScores :: [Float] +mlScores = forall a b. (a -> b) -> [a] -> [b] map (forall a. Num a => a -> a -> a + Float 20) forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [[Float]] -allInputsScores - scoreKey :: Text -scoreKey = forall {a}. IsString a => a +allInputsScores + scoreKey :: Text +scoreKey = forall {a}. IsString a => a mlScoreKeyPrefix forall a. Semigroup a => a -> a -> a <> Text -modelName +modelName forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b @@ -489,35 +489,35 @@ (forall {m} {tag} {v} {x} {t}. Text -> (Tree m tag v x t, Float) -> Tree m tag v x t addNewScoreToSubforest Text -scoreKey) +scoreKey) (forall a b. [a] -> [b] -> [(a, b)] zip [Tree m tag v x t] -subForest [Float] -mlScores) +subForest [Float] +mlScores) addNewScoreToSubforest :: Text -> (Tree m tag v x t, Float) -> Tree m tag v x t -addNewScoreToSubforest Text -scoreKey (node :: Tree m tag v x t -node@Tree{sDecision :: forall m tag v x t. +addNewScoreToSubforest Text +scoreKey (node :: Tree m tag v x t +node@Tree{sDecision :: forall m tag v x t. Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m -sDecision = sDes :: SynthesisDecision (SynthesisState m tag v x t) m -sDes@SynthesisDecision{scores :: forall ctx m. SynthesisDecision ctx m -> Map Text Float -scores = Map Text Float -origScores}}, Float -newScore) = +sDecision = sDes :: SynthesisDecision (SynthesisState m tag v x t) m +sDes@SynthesisDecision{scores :: forall ctx m. SynthesisDecision ctx m -> Map Text Float +scores = Map Text Float +origScores}}, Float +newScore) = Tree m tag v x t -node{sDecision :: SynthesisDecision (SynthesisState m tag v x t) m +node{sDecision :: SynthesisDecision (SynthesisState m tag v x t) m sDecision = SynthesisDecision (SynthesisState m tag v x t) m -sDes{scores :: Map Text Float +sDes{scores :: Map Text Float scores = forall k a. Ord k => k -> a -> Map k a -> Map k a M.insert Text -scoreKey Float -newScore Map Text Float -origScores}} -addNewScoreToSubforest Text -scoreKey (node :: Tree m tag v x t -node@Tree{sDecision :: forall m tag v x t. +scoreKey Float +newScore Map Text Float +origScores}} +addNewScoreToSubforest Text +scoreKey (node :: Tree m tag v x t +node@Tree{sDecision :: forall m tag v x t. Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m sDecision = SynthesisDecision (SynthesisState m tag v x t) m @@ -528,8 +528,8 @@ "adding new score to Root, shouldn't happen, scoreKey: " forall a. [a] -> [a] -> [a] ++ forall {a}. IsString a => Text -> a fromText Text -scoreKey) Tree m tag v x t -node +scoreKey) Tree m tag v x t +node {- | For synthesis method is more usefull, because throw away all useless trees in subForest (objective function value less than zero). @@ -538,9 +538,9 @@ -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -positiveSubForestIO BackendCtx tag v x t -ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree = forall a. (a -> Bool) -> [a] -> [a] +positiveSubForestIO BackendCtx tag v x t +ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +tree = forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Ord a => a -> a -> Bool > Float 0) forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -559,8 +559,8 @@ -> IO [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] subForestIO BackendCtx tag v x t -ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -tree +ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +tree isLeaf' :: SynthesisState m tag v x t -> Bool isLeaf' @@ -602,23 +602,23 @@ exploreSubForestVar :: Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> STM [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -exploreSubForestVar parent :: Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -parent@Tree{Sid +exploreSubForestVar parent :: Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +parent@Tree{Sid sID :: Sid sID :: forall m tag v x t. Tree m tag v x t -> Sid -sID, SynthesisState +sID, SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t sState :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t sState :: forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t -sState} = - let edges :: [(SynthesisDecision +sState} = + let edges :: [(SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t), SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)] -edges = +edges = forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat ( forall a b. (a -> b) -> [a] -> [b] @@ -641,10 +641,10 @@ SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t)] decisionAndContext Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -parent) (forall m tag v x t. SynthesisState m tag v x t -> [Allocation tag] +parent) (forall m tag v x t. SynthesisState m tag v x t -> [Allocation tag] sAllocationOptions SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -sState) +sState) forall a. [a] -> [a] -> [a] ++ forall a b. (a -> b) -> [a] -> [b] map (forall {ctx} {m} {o} {d} {p} {k} {a} {x} {t}. @@ -666,10 +666,10 @@ SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t)] decisionAndContext Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -parent) (forall m tag v x t. SynthesisState m tag v x t -> [Bind tag v x] +parent) (forall m tag v x t. SynthesisState m tag v x t -> [Bind tag v x] sBindOptions SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -sState) +sState) forall a. [a] -> [a] -> [a] ++ forall a b. (a -> b) -> [a] -> [b] map (forall {ctx} {m} {o} {d} {p} {k} {a} {x} {t}. @@ -691,11 +691,11 @@ SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t)] decisionAndContext Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -parent) (forall m tag v x t. +parent) (forall m tag v x t. SynthesisState m tag v x t -> [DataflowSt tag v (TimeConstraint t)] sDataflowOptions SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -sState) +sState) forall a. [a] -> [a] -> [a] ++ forall a b. (a -> b) -> [a] -> [b] map (forall {ctx} {m} {o} {d} {p} {k} {a} {x} {t}. @@ -717,10 +717,10 @@ SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t)] decisionAndContext Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -parent) (forall m tag v x t. SynthesisState m tag v x t -> [BreakLoop v x] +parent) (forall m tag v x t. SynthesisState m tag v x t -> [BreakLoop v x] sBreakLoopOptions SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -sState) +sState) forall a. [a] -> [a] -> [a] ++ forall a b. (a -> b) -> [a] -> [b] map (forall {ctx} {m} {o} {d} {p} {k} {a} {x} {t}. @@ -742,11 +742,11 @@ SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t)] decisionAndContext Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -parent) (forall m tag v x t. +parent) (forall m tag v x t. SynthesisState m tag v x t -> [ResolveDeadlock v x] sResolveDeadlockOptions SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -sState) +sState) forall a. [a] -> [a] -> [a] ++ forall a b. (a -> b) -> [a] -> [b] map (forall {ctx} {m} {o} {d} {p} {k} {a} {x} {t}. @@ -768,11 +768,11 @@ SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t)] decisionAndContext Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -parent) (forall m tag v x t. +parent) (forall m tag v x t. SynthesisState m tag v x t -> [OptimizeAccum v x] sOptimizeAccumOptions SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -sState) +sState) forall a. [a] -> [a] -> [a] ++ forall a b. (a -> b) -> [a] -> [b] map (forall {ctx} {m} {o} {d} {p} {k} {a} {x} {t}. @@ -794,11 +794,11 @@ SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t)] decisionAndContext Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -parent) (forall m tag v x t. +parent) (forall m tag v x t. SynthesisState m tag v x t -> [ConstantFolding v x] sConstantFoldingOptions SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -sState) +sState) ) in forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => @@ -811,33 +811,33 @@ (TargetSystem (BusNetwork tag v x t) tag v x t), SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)] -edges) forall a b. (a -> b) -> a -> b -$ \(Int -i, (SynthesisDecision +edges) forall a b. (a -> b) -> a -> b +$ \(Int +i, (SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -desc, SynthesisState +desc, SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -ctx')) -> do - TMVar +ctx')) -> do + TMVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -sSubForestVar <- forall a. STM (TMVar a) +sSubForestVar <- forall a. STM (TMVar a) newEmptyTMVar forall (m :: * -> *) a. Monad m => a -> m a return Tree { sID :: Sid sID = Sid -sID forall a. Semigroup a => a -> a -> a +sID forall a. Semigroup a => a -> a -> a <> [Int] -> Sid Sid [Int -i] +i] , sState :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t sState = SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -ctx' +ctx' , sDecision :: SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) @@ -846,26 +846,26 @@ (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -desc +desc , TMVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] sSubForestVar :: TMVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] sSubForestVar :: TMVar [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -sSubForestVar +sSubForestVar , isLeaf :: Bool isLeaf = forall {m} {tag} {v} {x} {t}. SynthesisState m tag v x t -> Bool isLeaf' SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -ctx' +ctx' , isComplete :: Bool isComplete = forall {u} {v} {x} {t} {tag} {tag} {v} {x} {t}. ProcessorUnit u v x t => SynthesisState (TargetSystem u tag v x t) tag v x t -> Bool isComplete' SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -ctx' +ctx' } decisionAndContext :: Tree (TargetSystem (BusNetwork k a x t) k a x t) k a x t @@ -873,20 +873,20 @@ -> [(SynthesisDecision ctx m, SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t)] -decisionAndContext parent :: Tree (TargetSystem (BusNetwork k a x t) k a x t) k a x t -parent@Tree{sState :: forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t -sState = SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t -ctx} o -o = +decisionAndContext parent :: Tree (TargetSystem (BusNetwork k a x t) k a x t) k a x t +parent@Tree{sState :: forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t +sState = SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t +ctx} o +o = [ (forall p ctx m o d. (Typeable p, SynthesisDecisionCls ctx m o d p, Show d, ToJSON p, Viewable d DecisionView) => o -> d -> p -> Map Text Float -> SynthesisDecision ctx m SynthesisDecision o -o d -d p -p Map Text Float -e, forall {k} {x} {t} {a}. +o d +d p +p Map Text Float +e, forall {k} {x} {t} {a}. (UnitTag k, Val x, Bounded t, Hashable a, Suffix a, Show t, Default t, Integral t, Ord a, Typeable t, Typeable a, ToString a, IsString a) => @@ -896,164 +896,164 @@ (TargetSystem (BusNetwork k a x t) k a x t) k a x t nodeCtx (forall a. a -> Maybe a Just Tree (TargetSystem (BusNetwork k a x t) k a x t) k a x t -parent) TargetSystem (BusNetwork k a x t) k a x t -model) - | (d -d, TargetSystem (BusNetwork k a x t) k a x t -model) <- forall ctx m o d p. +parent) TargetSystem (BusNetwork k a x t) k a x t +model) + | (d +d, TargetSystem (BusNetwork k a x t) k a x t +model) <- forall ctx m o d p. SynthesisDecisionCls ctx m o d p => ctx -> o -> [(d, m)] decisions SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t -ctx o -o - , let p :: p -p = forall ctx m o d p. +ctx o +o + , let p :: p +p = forall ctx m o d p. SynthesisDecisionCls ctx m o d p => ctx -> o -> d -> p parameters SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t -ctx o -o d -d - e :: Map Text Float -e = forall k a. k -> a -> Map k a +ctx o +o d +d + e :: Map Text Float +e = forall k a. k -> a -> Map k a M.singleton Text "default" forall a b. (a -> b) -> a -> b $ forall ctx m o d p. SynthesisDecisionCls ctx m o d p => ctx -> o -> d -> p -> Float estimate SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t -ctx o -o d -d p -p +ctx o +o d +d p +p ] nodeCtx :: Maybe (Tree (TargetSystem (BusNetwork k a x t) k a x t) k a x t) -> TargetSystem (BusNetwork k a x t) k a x t -> SynthesisState (TargetSystem (BusNetwork k a x t) k a x t) k a x t -nodeCtx Maybe (Tree (TargetSystem (BusNetwork k a x t) k a x t) k a x t) -parent TargetSystem (BusNetwork k a x t) k a x t -nModel = - let sBindOptions :: [Bind k a x] -sBindOptions = forall u tag v x. BindProblem u tag v x => u -> [Bind tag v x] +nodeCtx Maybe (Tree (TargetSystem (BusNetwork k a x t) k a x t) k a x t) +parent TargetSystem (BusNetwork k a x t) k a x t +nModel = + let sBindOptions :: [Bind k a x] +sBindOptions = forall u tag v x. BindProblem u tag v x => u -> [Bind tag v x] bindOptions TargetSystem (BusNetwork k a x t) k a x t -nModel - sDataflowOptions :: [DataflowSt k a (TimeConstraint t)] -sDataflowOptions = forall u tag v t. +nModel + sDataflowOptions :: [DataflowSt k a (TimeConstraint t)] +sDataflowOptions = forall u tag v t. DataflowProblem u tag v t => u -> [DataflowSt tag v (TimeConstraint t)] dataflowOptions TargetSystem (BusNetwork k a x t) k a x t -nModel - fs :: [F a x] -fs = forall a f. WithFunctions a f => a -> [f] +nModel + fs :: [F a x] +fs = forall a f. WithFunctions a f => a -> [f] functions forall a b. (a -> b) -> a -> b $ forall u tag v x t. TargetSystem u tag v x t -> DataFlowGraph v x mDataFlowGraph TargetSystem (BusNetwork k a x t) k a x t -nModel - processWaves :: [ProcessWave a x] -processWaves = forall v x. (Var v, Val x) => [v] -> [F v x] -> [ProcessWave v x] +nModel + processWaves :: [ProcessWave a x] +processWaves = forall v x. (Var v, Val x) => [v] -> [F v x] -> [ProcessWave v x] buildProcessWaves [] [F a x] -fs +fs in SynthesisState { sTarget :: TargetSystem (BusNetwork k a x t) k a x t sTarget = TargetSystem (BusNetwork k a x t) k a x t -nModel +nModel , sParent :: Maybe (Tree (TargetSystem (BusNetwork k a x t) k a x t) k a x t) sParent = Maybe (Tree (TargetSystem (BusNetwork k a x t) k a x t) k a x t) -parent +parent , sAllocationOptions :: [Allocation k] sAllocationOptions = forall u tag. AllocationProblem u tag => u -> [Allocation tag] allocationOptions TargetSystem (BusNetwork k a x t) k a x t -nModel +nModel , [Bind k a x] sBindOptions :: [Bind k a x] sBindOptions :: [Bind k a x] -sBindOptions +sBindOptions , [DataflowSt k a (TimeConstraint t)] sDataflowOptions :: [DataflowSt k a (TimeConstraint t)] sDataflowOptions :: [DataflowSt k a (TimeConstraint t)] -sDataflowOptions +sDataflowOptions , sResolveDeadlockOptions :: [ResolveDeadlock a x] sResolveDeadlockOptions = forall u v x. ResolveDeadlockProblem u v x => u -> [ResolveDeadlock v x] resolveDeadlockOptions TargetSystem (BusNetwork k a x t) k a x t -nModel +nModel , sBreakLoopOptions :: [BreakLoop a x] sBreakLoopOptions = forall u v x. BreakLoopProblem u v x => u -> [BreakLoop v x] breakLoopOptions TargetSystem (BusNetwork k a x t) k a x t -nModel +nModel , sConstantFoldingOptions :: [ConstantFolding a x] sConstantFoldingOptions = forall u v x. ConstantFoldingProblem u v x => u -> [ConstantFolding v x] constantFoldingOptions TargetSystem (BusNetwork k a x t) k a x t -nModel +nModel , sOptimizeAccumOptions :: [OptimizeAccum a x] sOptimizeAccumOptions = forall u v x. OptimizeAccumProblem u v x => u -> [OptimizeAccum v x] optimizeAccumOptions TargetSystem (BusNetwork k a x t) k a x t -nModel +nModel , bindingAlternative :: Map (F a x) [k] bindingAlternative = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl - ( \Map (F a x) [k] -st Bind k a x -b -> case Bind k a x -b of - (SingleBind k -uTag F a x -f) -> forall k a. + ( \Map (F a x) [k] +st Bind k a x +b -> case Bind k a x +b of + (SingleBind k +uTag F a x +f) -> forall k a. Ord k => (Maybe a -> Maybe a) -> k -> Map k a -> Map k a M.alter (forall (m :: * -> *) a. Monad m => a -> m a return forall b c a. (b -> c) -> (a -> b) -> a -> c . forall b a. b -> (a -> b) -> Maybe a -> b maybe [k -uTag] (k -uTag forall a. a -> [a] -> [a] +uTag] (k +uTag forall a. a -> [a] -> [a] :)) F a x -f Map (F a x) [k] -st +f Map (F a x) [k] +st Bind k a x _ -> Map (F a x) [k] -st +st ) forall k a. Map k a M.empty [Bind k a x] -sBindOptions +sBindOptions , possibleDeadlockBinds :: Set (F a x) possibleDeadlockBinds = forall a. Ord a => [a] -> Set a S.fromList [ F a x -f - | (SingleBind k -uTag F a x -f) <- [Bind k a x] -sBindOptions - , Lock{a +f + | (SingleBind k +uTag F a x +f) <- [Bind k a x] +sBindOptions + , Lock{a lockBy :: forall v. Lock v -> v lockBy :: a lockBy} <- forall x v. Locks x v => x -> [Lock v] locks F a x -f +f , a -lockBy forall a. Ord a => a -> Set a -> Bool +lockBy forall a. Ord a => a -> Set a -> Bool `S.member` forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables (forall {k} {v} {x} {t}. Ord k => k -> BusNetwork k v x t -> [F v x] boundFunctions k -uTag forall a b. (a -> b) -> a -> b +uTag forall a b. (a -> b) -> a -> b $ forall u tag v x t. TargetSystem u tag v x t -> u mUnit TargetSystem (BusNetwork k a x t) k a x t -nModel) +nModel) ] , bindWaves :: Map a Int bindWaves = forall v x a. (Var v, Val x, Num a) => [v] -> [F v x] -> Map v a @@ -1061,12 +1061,12 @@ S.elems (forall a v. Variables a v => a -> Set v variables (forall u tag v x t. TargetSystem u tag v x t -> u mUnit TargetSystem (BusNetwork k a x t) k a x t -nModel) forall a. Ord a => Set a -> Set a -> Set a +nModel) forall a. Ord a => Set a -> Set a -> Set a S.\\ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables [Bind k a x] -sBindOptions)) [F a x] -fs +sBindOptions)) [F a x] +fs , [ProcessWave a x] processWaves :: [ProcessWave a x] processWaves :: [ProcessWave a x] @@ -1074,59 +1074,59 @@ , numberOfProcessWaves :: Int numberOfProcessWaves = forall (t :: * -> *) a. Foldable t => t a -> Int length [ProcessWave a x] -processWaves +processWaves , numberOfDataflowOptions :: Int numberOfDataflowOptions = forall (t :: * -> *) a. Foldable t => t a -> Int length [DataflowSt k a (TimeConstraint t)] -sDataflowOptions +sDataflowOptions , transferableVars :: Set a transferableVars = forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a S.unions [ forall a v. Variables a v => a -> Set v variables EndpointSt a (TimeConstraint t) -ep +ep | (DataflowSt (k, EndpointSt a (TimeConstraint t)) -_ [(k, EndpointSt a (TimeConstraint t))] -targets) <- [DataflowSt k a (TimeConstraint t)] -sDataflowOptions +_ [(k, EndpointSt a (TimeConstraint t))] +targets) <- [DataflowSt k a (TimeConstraint t)] +sDataflowOptions , (k -_, EndpointSt a (TimeConstraint t) -ep) <- [(k, EndpointSt a (TimeConstraint t))] -targets +_, EndpointSt a (TimeConstraint t) +ep) <- [(k, EndpointSt a (TimeConstraint t))] +targets ] , unitWorkloadInFunction :: Map k Int unitWorkloadInFunction = let - BusNetwork{Map k [F a x] + BusNetwork{Map k [F a x] bnBound :: forall tag v x t. BusNetwork tag v x t -> Map tag [F v x] bnBound :: Map k [F a x] -bnBound, Map k (PU a x t) +bnBound, Map k (PU a x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) bnPus :: Map k (PU a x t) bnPus} = forall u tag v x t. TargetSystem u tag v x t -> u mUnit TargetSystem (BusNetwork k a x t) k a x t -nModel +nModel in forall k a. Ord k => [(k, a)] -> Map k a M.fromList forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map - ( \k -uTag -> (k -uTag, forall b a. b -> (a -> b) -> Maybe a -> b + ( \k +uTag -> (k +uTag, forall b a. b -> (a -> b) -> Maybe a -> b maybe Int 0 forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ Map k [F a x] -bnBound forall k a. Ord k => Map k a -> k -> Maybe a +bnBound forall k a. Ord k => Map k a -> k -> Maybe a M.!? k -uTag) +uTag) ) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [k] M.keys Map k (PU a x t) -bnPus +bnPus } \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.Method.html b/haddock/nitta/src/NITTA.Synthesis.Method.html index 4eb67d4bb..42772b44a 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Method.html +++ b/haddock/nitta/src/NITTA.Synthesis.Method.html @@ -50,27 +50,27 @@ stepLimit = Int 750 :: Int -noSynthesis :: BackendCtx tag v x t -> SynthesisMethod tag v x t +noSynthesis :: BackendCtx tag v x t -> SynthesisMethod tag v x t noSynthesis :: forall tag v x t. BackendCtx tag v x t -> SynthesisMethod tag v x t -noSynthesis BackendCtx tag v x t -_ctx DefTree tag v x t -tree = do +noSynthesis BackendCtx tag v x t +_ctx DefTree tag v x t +tree = do String -> String -> IO () infoM String "NITTA.Synthesis" String "noSynthesis" forall (m :: * -> *) a. Monad m => a -> m a return DefTree tag v x t -tree +tree -- | The most complex synthesis method, which embedded all another. That all. -stateOfTheArtSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t +stateOfTheArtSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t stateOfTheArtSynthesisIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t -stateOfTheArtSynthesisIO BackendCtx tag v x t -ctx DefTree tag v x t -tree = do +stateOfTheArtSynthesisIO BackendCtx tag v x t +ctx DefTree tag v x t +tree = do String -> String -> IO () infoM String "NITTA.Synthesis" forall a b. (a -> b) -> a -> b @@ -79,49 +79,49 @@ <> forall a. Show a => a -> String show (forall m tag v x t. Tree m tag v x t -> Sid sID DefTree tag v x t -tree) - DefTree tag v x t -l1 <- forall tag v x t. +tree) + DefTree tag v x t +l1 <- forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t simpleSynthesisIO BackendCtx tag v x t -ctx DefTree tag v x t -tree - DefTree tag v x t -l2 <- forall tag v x t. +ctx DefTree tag v x t +tree + DefTree tag v x t +l2 <- forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t smartBindSynthesisIO BackendCtx tag v x t -ctx DefTree tag v x t -tree - DefTree tag v x t -l3 <- forall tag v x t. +ctx DefTree tag v x t +tree + DefTree tag v x t +l3 <- forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t bestThreadIO BackendCtx tag v x t -ctx Int +ctx Int stepLimit DefTree tag v x t -tree - DefTree tag v x t -l4 <- forall tag v x t. +tree + DefTree tag v x t +l4 <- forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t bestThreadIO BackendCtx tag v x t -ctx Int +ctx Int stepLimit forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t allBindsAndRefsIO BackendCtx tag v x t -ctx DefTree tag v x t -tree - DefTree tag v x t -l5 <- forall tag v x t. +ctx DefTree tag v x t +tree + DefTree tag v x t +l5 <- forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t obviousGroupBindsIO BackendCtx tag v x t -ctx DefTree tag v x t -tree forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +ctx DefTree tag v x t +tree forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= forall tag v x t. SynthesisMethodConstraints tag v x t => SynthesisMethod tag v x t @@ -130,30 +130,30 @@ SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t bestThreadIO BackendCtx tag v x t -ctx Int +ctx Int stepLimit) BackendCtx tag v x t -ctx +ctx forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall tag v x t. SynthesisMethodConstraints tag v x t => DefTree tag v x t -> [DefTree tag v x t] -> DefTree tag v x t bestLeaf DefTree tag v x t -tree [DefTree tag v x t -l1, DefTree tag v x t -l2, DefTree tag v x t -l3, DefTree tag v x t -l4, DefTree tag v x t -l5] +tree [DefTree tag v x t +l1, DefTree tag v x t +l2, DefTree tag v x t +l3, DefTree tag v x t +l4, DefTree tag v x t +l5] -- | Schedule process by simple synthesis. -simpleSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t +simpleSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t simpleSynthesisIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t -simpleSynthesisIO BackendCtx tag v x t -ctx DefTree tag v x t -root = do +simpleSynthesisIO BackendCtx tag v x t +ctx DefTree tag v x t +root = do String -> String -> IO () infoM String "NITTA.Synthesis" forall a b. (a -> b) -> a -> b @@ -162,29 +162,29 @@ <> forall a. Show a => a -> String show (forall m tag v x t. Tree m tag v x t -> Sid sID DefTree tag v x t -root) - DefTree tag v x t -lastObviousNode <- forall tag v x t. +root) + DefTree tag v x t +lastObviousNode <- forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t obviousBindThreadIO BackendCtx tag v x t -ctx DefTree tag v x t -root +ctx DefTree tag v x t +root forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t allBestThreadIO BackendCtx tag v x t -ctx Int +ctx Int 1 DefTree tag v x t -lastObviousNode +lastObviousNode -smartBindSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t +smartBindSynthesisIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t smartBindSynthesisIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t -smartBindSynthesisIO BackendCtx tag v x t -ctx DefTree tag v x t -tree = do +smartBindSynthesisIO BackendCtx tag v x t +ctx DefTree tag v x t +tree = do String -> String -> IO () infoM String "NITTA.Synthesis" forall a b. (a -> b) -> a -> b @@ -193,41 +193,41 @@ <> forall a. Show a => a -> String show (forall m tag v x t. Tree m tag v x t -> Sid sID DefTree tag v x t -tree) - DefTree tag v x t -tree' <- forall tag v x t. +tree) + DefTree tag v x t +tree' <- forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t smartBindThreadIO BackendCtx tag v x t -ctx DefTree tag v x t -tree +ctx DefTree tag v x t +tree forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t allBestThreadIO BackendCtx tag v x t -ctx Int +ctx Int 1 DefTree tag v x t -tree' +tree' -bestThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t +bestThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t bestThreadIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t bestThreadIO BackendCtx tag v x t _ Int -0 DefTree tag v x t -node = forall (m :: * -> *) a. Monad m => a -> m a +0 DefTree tag v x t +node = forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a. String -> a -> a trace String "bestThreadIO've reached the step limit!" DefTree tag v x t -node -bestThreadIO BackendCtx tag v x t -ctx Int -limit DefTree tag v x t -tree = do - [DefTree tag v x t] -subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. +node +bestThreadIO BackendCtx tag v x t +ctx Int +limit DefTree tag v x t +tree = do + [DefTree tag v x t] +subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, ToJSON t1, ToJSON tag1, Typeable v1, Typeable t1, Ord v1, @@ -247,20 +247,20 @@ x1 t1] positiveSubForestIO BackendCtx tag v x t -ctx DefTree tag v x t -tree +ctx DefTree tag v x t +tree case [DefTree tag v x t] -subForest of +subForest of [] -> forall (m :: * -> *) a. Monad m => a -> m a return DefTree tag v x t -tree +tree [DefTree tag v x t] _ -> forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t bestThreadIO BackendCtx tag v x t -ctx (Int -limit forall a. Num a => a -> a -> a +ctx (Int +limit forall a. Num a => a -> a -> a - Int 1) forall a b. (a -> b) -> a -> b $ forall {t1 :: * -> *} {a} {t2}. @@ -272,17 +272,17 @@ Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m sDecision) [DefTree tag v x t] -subForest +subForest -bestStepIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t +bestStepIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t bestStepIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t -bestStepIO BackendCtx tag v x t -ctx DefTree tag v x t -tree = do - [DefTree tag v x t] -subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. +bestStepIO BackendCtx tag v x t +ctx DefTree tag v x t +tree = do + [DefTree tag v x t] +subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, ToJSON t1, ToJSON tag1, Typeable v1, Typeable t1, Ord v1, @@ -302,10 +302,10 @@ x1 t1] positiveSubForestIO BackendCtx tag v x t -ctx DefTree tag v x t -tree +ctx DefTree tag v x t +tree case [DefTree tag v x t] -subForest of +subForest of [] -> forall a. HasCallStack => String -> a error String "all step is over" @@ -321,17 +321,17 @@ Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m sDecision) [DefTree tag v x t] -subForest +subForest -obviousGroupBindsIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t +obviousGroupBindsIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t obviousGroupBindsIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t -obviousGroupBindsIO BackendCtx tag v x t -ctx DefTree tag v x t -tree = do - [DefTree tag v x t] -binds <- forall tag v x t m ctx. +obviousGroupBindsIO BackendCtx tag v x t +ctx DefTree tag v x t +tree = do + [DefTree tag v x t] +binds <- forall tag v x t m ctx. (SynthesisMethodConstraints tag v x t, m ~ TargetSystem (BusNetwork tag v x t) tag v x t, ctx ~ SynthesisState m tag v x t) => @@ -341,31 +341,31 @@ -> IO [DefTree tag v x t] selectSubForestIO forall ctx m. SynthesisDecision ctx m -> Bool isObviousMultiBind BackendCtx tag v x t -ctx DefTree tag v x t -tree +ctx DefTree tag v x t +tree forall b a. b -> (a -> b) -> Maybe a -> b maybe (forall (m :: * -> *) a. Monad m => a -> m a return DefTree tag v x t -tree) (forall tag v x t. +tree) (forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t obviousGroupBindsIO BackendCtx tag v x t -ctx) forall a b. (a -> b) -> a -> b +ctx) forall a b. (a -> b) -> a -> b $ forall tag v x t. [DefTree tag v x t] -> Maybe (DefTree tag v x t) bestDecision [DefTree tag v x t] -binds +binds -tryAllGroupBindsByIO :: SynthesisMethodConstraints tag v x t => SynthesisMethod tag v x t -> BackendCtx tag v x t -> SynthesisMethod tag v x t +tryAllGroupBindsByIO :: SynthesisMethodConstraints tag v x t => SynthesisMethod tag v x t -> BackendCtx tag v x t -> SynthesisMethod tag v x t tryAllGroupBindsByIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => SynthesisMethod tag v x t -> BackendCtx tag v x t -> SynthesisMethod tag v x t -tryAllGroupBindsByIO SynthesisMethod tag v x t -method BackendCtx tag v x t -ctx DefTree tag v x t -tree = do - [DefTree tag v x t] -bindSubForest <- forall tag v x t m ctx. +tryAllGroupBindsByIO SynthesisMethod tag v x t +method BackendCtx tag v x t +ctx DefTree tag v x t +tree = do + [DefTree tag v x t] +bindSubForest <- forall tag v x t m ctx. (SynthesisMethodConstraints tag v x t, m ~ TargetSystem (BusNetwork tag v x t) tag v x t, ctx ~ SynthesisState m tag v x t) => @@ -375,33 +375,33 @@ -> IO [DefTree tag v x t] selectSubForestIO forall ctx m. SynthesisDecision ctx m -> Bool isMultiBind BackendCtx tag v x t -ctx DefTree tag v x t -tree - [DefTree tag v x t] -leafs <- forall (t :: * -> *) (m :: * -> *) a b. +ctx DefTree tag v x t +tree + [DefTree tag v x t] +leafs <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM SynthesisMethod tag v x t -method [DefTree tag v x t] -bindSubForest +method [DefTree tag v x t] +bindSubForest forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall tag v x t. SynthesisMethodConstraints tag v x t => DefTree tag v x t -> [DefTree tag v x t] -> DefTree tag v x t bestLeaf DefTree tag v x t -tree [DefTree tag v x t] -leafs +tree [DefTree tag v x t] +leafs -obviousBindThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t +obviousBindThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t obviousBindThreadIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t -obviousBindThreadIO BackendCtx tag v x t -ctx DefTree tag v x t -tree = do - [DefTree tag v x t] -subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. +obviousBindThreadIO BackendCtx tag v x t +ctx DefTree tag v x t +tree = do + [DefTree tag v x t] +subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, ToJSON t1, ToJSON tag1, Typeable v1, Typeable t1, Ord v1, @@ -421,16 +421,16 @@ x1 t1] positiveSubForestIO BackendCtx tag v x t -ctx DefTree tag v x t -tree +ctx DefTree tag v x t +tree forall b a. b -> (a -> b) -> Maybe a -> b maybe (forall (m :: * -> *) a. Monad m => a -> m a return DefTree tag v x t -tree) (forall tag v x t. +tree) (forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t obviousBindThreadIO BackendCtx tag v x t -ctx) forall a b. (a -> b) -> a -> b +ctx) forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find @@ -457,34 +457,34 @@ sDecision ) [DefTree tag v x t] -subForest +subForest -allBindsAndRefsIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t +allBindsAndRefsIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t allBindsAndRefsIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t -allBindsAndRefsIO BackendCtx tag v x t -ctx DefTree tag v x t -tree = do - [DefTree tag v x t] -subForest <- +allBindsAndRefsIO BackendCtx tag v x t +ctx DefTree tag v x t +tree = do + [DefTree tag v x t] +subForest <- forall a. (a -> Bool) -> [a] -> [a] -filter ((\SynthesisDecision +filter ((\SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -d -> forall ctx m. SynthesisDecision ctx m -> Bool +d -> forall ctx m. SynthesisDecision ctx m -> Bool isSingleBind SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -d Bool -> Bool -> Bool +d Bool -> Bool -> Bool || forall ctx m. SynthesisDecision ctx m -> Bool isRefactor SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -d) forall b c a. (b -> c) -> (a -> b) -> a -> c +d) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall m tag v x t. Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m @@ -510,19 +510,19 @@ x1 t1] positiveSubForestIO BackendCtx tag v x t -ctx DefTree tag v x t -tree +ctx DefTree tag v x t +tree case [DefTree tag v x t] -subForest of +subForest of [] -> forall (m :: * -> *) a. Monad m => a -> m a return DefTree tag v x t -tree +tree [DefTree tag v x t] _ -> forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t allBindsAndRefsIO BackendCtx tag v x t -ctx forall a b. (a -> b) -> a -> b +ctx forall a b. (a -> b) -> a -> b $ forall {t1 :: * -> *} {a} {t2}. (Foldable t1, Ord a) => (t2 -> a) -> t1 t2 -> t2 @@ -532,17 +532,17 @@ Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m sDecision) [DefTree tag v x t] -subForest +subForest -refactorThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t +refactorThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t refactorThreadIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t -refactorThreadIO BackendCtx tag v x t -ctx DefTree tag v x t -tree = do - [DefTree tag v x t] -subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. +refactorThreadIO BackendCtx tag v x t +ctx DefTree tag v x t +tree = do + [DefTree tag v x t] +subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, ToJSON t1, ToJSON tag1, Typeable v1, Typeable t1, Ord v1, @@ -562,16 +562,16 @@ x1 t1] positiveSubForestIO BackendCtx tag v x t -ctx DefTree tag v x t -tree +ctx DefTree tag v x t +tree forall b a. b -> (a -> b) -> Maybe a -> b maybe (forall (m :: * -> *) a. Monad m => a -> m a return DefTree tag v x t -tree) (forall tag v x t. +tree) (forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t refactorThreadIO BackendCtx tag v x t -ctx) forall a b. (a -> b) -> a -> b +ctx) forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a L.find (forall ctx m. SynthesisDecision ctx m -> Bool @@ -580,34 +580,34 @@ Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m sDecision) [DefTree tag v x t] -subForest +subForest -smartBindThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t +smartBindThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t smartBindThreadIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t -smartBindThreadIO BackendCtx tag v x t -ctx DefTree tag v x t -tree = do - [DefTree tag v x t] -subForest <- +smartBindThreadIO BackendCtx tag v x t +ctx DefTree tag v x t +tree = do + [DefTree tag v x t] +subForest <- forall a. (a -> Bool) -> [a] -> [a] -filter ((\SynthesisDecision +filter ((\SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -d -> forall ctx m. SynthesisDecision ctx m -> Bool +d -> forall ctx m. SynthesisDecision ctx m -> Bool isSingleBind SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -d Bool -> Bool -> Bool +d Bool -> Bool -> Bool || forall ctx m. SynthesisDecision ctx m -> Bool isRefactor SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -d) forall b c a. (b -> c) -> (a -> b) -> a -> c +d) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall m tag v x t. Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m @@ -633,24 +633,24 @@ x1 t1] positiveSubForestIO BackendCtx tag v x t -ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b +ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t refactorThreadIO BackendCtx tag v x t -ctx DefTree tag v x t -tree) +ctx DefTree tag v x t +tree) case [DefTree tag v x t] -subForest of +subForest of [] -> forall (m :: * -> *) a. Monad m => a -> m a return DefTree tag v x t -tree +tree [DefTree tag v x t] _ -> forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t smartBindThreadIO BackendCtx tag v x t -ctx forall a b. (a -> b) -> a -> b +ctx forall a b. (a -> b) -> a -> b $ forall {t1 :: * -> *} {a} {t2}. (Foldable t1, Ord a) => (t2 -> a) -> t1 t2 -> t2 @@ -660,28 +660,28 @@ Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m sDecision) [DefTree tag v x t] -subForest +subForest -allBestThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t +allBestThreadIO :: SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t allBestThreadIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t -allBestThreadIO BackendCtx tag v x t -ctx (Int -0 :: Int) DefTree tag v x t -tree = forall tag v x t. +allBestThreadIO BackendCtx tag v x t +ctx (Int +0 :: Int) DefTree tag v x t +tree = forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t bestThreadIO BackendCtx tag v x t -ctx Int +ctx Int stepLimit DefTree tag v x t -tree -allBestThreadIO BackendCtx tag v x t -ctx Int -n DefTree tag v x t -tree = do - [DefTree tag v x t] -subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. +tree +allBestThreadIO BackendCtx tag v x t +ctx Int +n DefTree tag v x t +tree = do + [DefTree tag v x t] +subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, ToJSON t1, ToJSON tag1, Typeable v1, Typeable t1, Ord v1, @@ -701,53 +701,53 @@ x1 t1] positiveSubForestIO BackendCtx tag v x t -ctx DefTree tag v x t -tree - [DefTree tag v x t] -leafs <- forall (t :: * -> *) (m :: * -> *) a b. +ctx DefTree tag v x t +tree + [DefTree tag v x t] +leafs <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM (forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t allBestThreadIO BackendCtx tag v x t -ctx (Int -n forall a. Num a => a -> a -> a +ctx (Int +n forall a. Num a => a -> a -> a - Int 1)) [DefTree tag v x t] -subForest +subForest forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall tag v x t. SynthesisMethodConstraints tag v x t => DefTree tag v x t -> [DefTree tag v x t] -> DefTree tag v x t bestLeaf DefTree tag v x t -tree [DefTree tag v x t] -leafs +tree [DefTree tag v x t] +leafs -bestLeaf :: SynthesisMethodConstraints tag v x t => DefTree tag v x t -> [DefTree tag v x t] -> DefTree tag v x t +bestLeaf :: SynthesisMethodConstraints tag v x t => DefTree tag v x t -> [DefTree tag v x t] -> DefTree tag v x t bestLeaf :: forall tag v x t. SynthesisMethodConstraints tag v x t => DefTree tag v x t -> [DefTree tag v x t] -> DefTree tag v x t -bestLeaf DefTree tag v x t -tree [DefTree tag v x t] -leafs = - let successLeafs :: [DefTree tag v x t] -successLeafs = forall a. (a -> Bool) -> [a] -> [a] -filter (\DefTree tag v x t -node -> forall m tag v x t. Tree m tag v x t -> Bool +bestLeaf DefTree tag v x t +tree [DefTree tag v x t] +leafs = + let successLeafs :: [DefTree tag v x t] +successLeafs = forall a. (a -> Bool) -> [a] -> [a] +filter (\DefTree tag v x t +node -> forall m tag v x t. Tree m tag v x t -> Bool isComplete DefTree tag v x t -node Bool -> Bool -> Bool +node Bool -> Bool -> Bool && forall m tag v x t. Tree m tag v x t -> Bool isLeaf DefTree tag v x t -node) [DefTree tag v x t] -leafs +node) [DefTree tag v x t] +leafs in case [DefTree tag v x t] -successLeafs of +successLeafs of [] -> forall a. a -> [a] -> a headDef DefTree tag v x t -tree [DefTree tag v x t] -leafs +tree [DefTree tag v x t] +leafs DefTree tag v x t _ : [DefTree tag v x t] _ -> @@ -756,20 +756,20 @@ (t2 -> a) -> t1 t2 -> t2 minimumOn (\Tree{sState :: forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t -sState = SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t +sState = SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t sTarget}} -> (forall {a} {u} {tag} {v} {x} {t}. (Num a, NextTick u a) => TargetSystem u tag v x t -> a processDuration TargetSystem (BusNetwork tag v x t) tag v x t -sTarget, forall u v x t. ProcessorUnit u v x t => u -> Float +sTarget, forall u v x t. ProcessorUnit u v x t => u -> Float puSize TargetSystem (BusNetwork tag v x t) tag v x t -sTarget)) +sTarget)) [DefTree tag v x t] -successLeafs +successLeafs -topDownByScoreSynthesisIO :: SynthesisMethodConstraints tag v x t => Float -> Int -> Maybe Text -> BackendCtx tag v x t -> SynthesisMethod tag v x t +topDownByScoreSynthesisIO :: SynthesisMethodConstraints tag v x t => Float -> Int -> Maybe Text -> BackendCtx tag v x t -> SynthesisMethod tag v x t topDownByScoreSynthesisIO :: forall tag v x t. SynthesisMethodConstraints tag v x t => Float @@ -803,8 +803,8 @@ -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> IO (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) -topDownByScoreSynthesisIO' (forall prio val. HeapT prio val -H.empty :: H.MaxPrioHeap Float (DefTree tag v x t)) Int +topDownByScoreSynthesisIO' (forall prio val. HeapT prio val +H.empty :: H.MaxPrioHeap Float (DefTree tag v x t)) Int 0 topDownByScoreSynthesisIO' :: HeapT @@ -824,7 +824,7 @@ -> Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> IO (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) -topDownByScoreSynthesisIO' HeapT +topDownByScoreSynthesisIO' HeapT (Prio pol (Float, @@ -833,17 +833,17 @@ pol (Float, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)) -heap t -step Float -depthCoeffBase t -limit Maybe Text -scoreKey BackendCtx tag2 v2 x2 t2 -ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -currentNode = do +heap t +step Float +depthCoeffBase t +limit Maybe Text +scoreKey BackendCtx tag2 v2 x2 t2 +ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +currentNode = do if t -step forall a. Ord a => a -> a -> Bool +step forall a. Ord a => a -> a -> Bool > t -limit +limit then do String -> String -> IO () infoM String @@ -853,14 +853,14 @@ <> forall a. Show a => a -> String show (forall m tag v x t. Tree m tag v x t -> Sid sID Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -currentNode) +currentNode) forall (m :: * -> *) a. Monad m => a -> m a return Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -currentNode +currentNode else do -- currentNode should not be in the heap at this point, but all its children will be - [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. + [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] +subForest <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, ToJSON t1, ToJSON tag1, Typeable v1, Typeable t1, Ord v1, @@ -880,30 +880,30 @@ x1 t1] positiveSubForestIO BackendCtx tag2 v2 x2 t2 -ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -currentNode - let getNodeDepth :: Tree m tag v x t -> Int -getNodeDepth Tree m tag v x t -node = (\(Sid [Int] -sidParts) -> forall (t :: * -> *) a. Foldable t => t a -> Int +ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +currentNode + let getNodeDepth :: Tree m tag v x t -> Int +getNodeDepth Tree m tag v x t +node = (\(Sid [Int] +sidParts) -> forall (t :: * -> *) a. Foldable t => t a -> Int length [Int] -sidParts) forall a b. (a -> b) -> a -> b +sidParts) forall a b. (a -> b) -> a -> b $ forall m tag v x t. Tree m tag v x t -> Sid sID Tree m tag v x t -node +node -- priority calculation should prefer nodes that are closer to the leafs - depthCoeff :: Float -depthCoeff = Float -depthCoeffBase forall a. Floating a => a -> a -> a + depthCoeff :: Float +depthCoeff = Float +depthCoeffBase forall a. Floating a => a -> a -> a ** forall a b. (Integral a, Num b) => a -> b fromIntegral (forall {m} {tag} {v} {x} {t}. Tree m tag v x t -> Int -getNodeDepth Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -currentNode) - getScore :: Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +getNodeDepth Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +currentNode) + getScore :: Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Float -getScore Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -node = case Maybe Text -scoreKey of +getScore Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +node = case Maybe Text +scoreKey of Maybe Text Nothing -> forall ctx m. SynthesisDecision ctx m -> Float defScore forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -912,28 +912,28 @@ -> SynthesisDecision (SynthesisState m tag v x t) m sDecision forall a b. (a -> b) -> a -> b $ Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -node - Just Text -key -> forall ctx m. SynthesisDecision ctx m -> Map Text Float +node + Just Text +key -> forall ctx m. SynthesisDecision ctx m -> Map Text Float scores (forall m tag v x t. Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m sDecision Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -node) forall k a. Ord k => Map k a -> k -> a +node) forall k a. Ord k => Map k a -> k -> a M.! Text -key - getPriority :: Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +key + getPriority :: Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Float -getPriority Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -node = Float -depthCoeff forall a. Num a => a -> a -> a +getPriority Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +node = Float +depthCoeff forall a. Num a => a -> a -> a * Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Float -getScore Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -node +getScore Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +node -- heapWithSubforest = foldl (\acc child -> H.insert (getPriority child, child) acc) heap subForest -- the version above (fold + insert) takes 1.7x more time than below (fromList + union) - subForestOnlyHeap :: HeapT + subForestOnlyHeap :: HeapT (Prio pol (Float, @@ -942,15 +942,15 @@ pol (Float, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)) -subForestOnlyHeap = forall pol item. HeapItem pol item => [item] -> Heap pol item +subForestOnlyHeap = forall pol item. HeapItem pol item => [item] -> Heap pol item H.fromList [(Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Float -getPriority Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -child, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -child) | Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -child <- [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] -subForest] - heapWithSubforest :: HeapT +getPriority Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +child, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +child) | Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +child <- [Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t] +subForest] + heapWithSubforest :: HeapT (Prio pol (Float, @@ -959,7 +959,7 @@ pol (Float, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)) -heapWithSubforest = forall prio val. +heapWithSubforest = forall prio val. Ord prio => HeapT prio val -> HeapT prio val -> HeapT prio val H.union HeapT @@ -971,7 +971,7 @@ pol (Float, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)) -heap HeapT +heap HeapT (Prio pol (Float, @@ -980,7 +980,7 @@ pol (Float, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)) -subForestOnlyHeap +subForestOnlyHeap case forall pol item. HeapItem pol item => Heap pol item -> Maybe item H.viewHead HeapT @@ -992,7 +992,7 @@ pol (Float, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)) -heapWithSubforest of +heapWithSubforest of Maybe (Float, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) @@ -1005,16 +1005,16 @@ <> forall a. Show a => a -> String show (forall m tag v x t. Tree m tag v x t -> Sid sID Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -currentNode) +currentNode) forall (m :: * -> *) a. Monad m => a -> m a return Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -currentNode +currentNode Just (Float -_, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -nextBestScoreNode) -> do +_, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +nextBestScoreNode) -> do if forall m tag v x t. Tree m tag v x t -> Bool isComplete Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -nextBestScoreNode +nextBestScoreNode then do String -> String -> IO () infoM String @@ -1024,57 +1024,57 @@ <> forall a. Show a => a -> String show (forall m tag v x t. Tree m tag v x t -> Sid sID Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -nextBestScoreNode) +nextBestScoreNode) forall (m :: * -> *) a. Monad m => a -> m a return Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -nextBestScoreNode +nextBestScoreNode else do - let prio :: Float -prio = Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t + let prio :: Float +prio = Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Float -getPriority Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -nextBestScoreNode - depth :: Int -depth = forall {m} {tag} {v} {x} {t}. Tree m tag v x t -> Int -getNodeDepth Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -nextBestScoreNode - score :: Float -score = Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +getPriority Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +nextBestScoreNode + depth :: Int +depth = forall {m} {tag} {v} {x} {t}. Tree m tag v x t -> Int +getNodeDepth Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +nextBestScoreNode + score :: Float +score = Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Float -getScore Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -nextBestScoreNode +getScore Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +nextBestScoreNode -- the more steps we make, the more aggressively we drop nodes to find new ones - aggressiveness :: Float -aggressiveness = Float + aggressiveness :: Float +aggressiveness = Float 0.5 :: Float -- [0.0; +inf) - maxDrops :: Float -maxDrops = Float + maxDrops :: Float +maxDrops = Float 5 - aggressiveDropPerSteps :: Float -aggressiveDropPerSteps = Float + aggressiveDropPerSteps :: Float +aggressiveDropPerSteps = Float 2500.0 - aggressiveDropCount :: Float -aggressiveDropCount = forall a. Ord a => a -> a -> a + aggressiveDropCount :: Float +aggressiveDropCount = forall a. Ord a => a -> a -> a min (Float -maxDrops forall a. Num a => a -> a -> a +maxDrops forall a. Num a => a -> a -> a - Float 1) forall a b. (a -> b) -> a -> b $ forall a b. (Integral a, Num b) => a -> b fromIntegral t -step forall a. Fractional a => a -> a -> a +step forall a. Fractional a => a -> a -> a / Float -aggressiveDropPerSteps forall a. Num a => a -> a -> a +aggressiveDropPerSteps forall a. Num a => a -> a -> a * Float -aggressiveness - dropCount :: Int -dropCount = forall a b. (RealFrac a, Integral b) => a -> b +aggressiveness + dropCount :: Int +dropCount = forall a b. (RealFrac a, Integral b) => a -> b round forall a b. (a -> b) -> a -> b $ Float 1 forall a. Num a => a -> a -> a + Float -aggressiveDropCount forall a. Num a => a -> a -> a +aggressiveDropCount forall a. Num a => a -> a -> a * Float -aggressiveness +aggressiveness String -> String -> IO () infoM @@ -1086,26 +1086,26 @@ "topDownByScoreSynthesisIO: prio=%-15s depth=%-5s score=%-10s drops=%-3s %s -> %s" (forall a. Show a => a -> String show Float -prio) +prio) (forall a. Show a => a -> String show Int -depth) +depth) (forall a. Show a => a -> String show Float -score) +score) (forall a. Show a => a -> String show Int -dropCount) +dropCount) (forall a. Show a => a -> String show forall a b. (a -> b) -> a -> b $ forall m tag v x t. Tree m tag v x t -> Sid sID Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -currentNode) +currentNode) (forall a. Show a => a -> String show forall a b. (a -> b) -> a -> b $ forall m tag v x t. Tree m tag v x t -> Sid sID Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -nextBestScoreNode) +nextBestScoreNode) ) HeapT @@ -1129,7 +1129,7 @@ HeapItem pol item => Int -> Heap pol item -> Heap pol item H.drop Int -dropCount HeapT +dropCount HeapT (Prio pol (Float, @@ -1138,27 +1138,27 @@ pol (Float, Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)) -heapWithSubforest) (t -step forall a. Num a => a -> a -> a +heapWithSubforest) (t +step forall a. Num a => a -> a -> a + t 1) Float -depthCoeffBase t -limit Maybe Text -scoreKey BackendCtx tag2 v2 x2 t2 -ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -nextBestScoreNode +depthCoeffBase t +limit Maybe Text +scoreKey BackendCtx tag2 v2 x2 t2 +ctx Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +nextBestScoreNode -- * Helpers -selectSubForestIO :: - ( SynthesisMethodConstraints tag v x t - , m ~ TargetSystem (BusNetwork tag v x t) tag v x t - , ctx ~ SynthesisState m tag v x t +selectSubForestIO :: + ( SynthesisMethodConstraints tag v x t + , m ~ TargetSystem (BusNetwork tag v x t) tag v x t + , ctx ~ SynthesisState m tag v x t ) => - (SynthesisDecision ctx m -> Bool) -> - BackendCtx tag v x t -> - DefTree tag v x t -> - IO [DefTree tag v x t] + (SynthesisDecision ctx m -> Bool) -> + BackendCtx tag v x t -> + DefTree tag v x t -> + IO [DefTree tag v x t] selectSubForestIO :: forall tag v x t m ctx. (SynthesisMethodConstraints tag v x t, m ~ TargetSystem (BusNetwork tag v x t) tag v x t, @@ -1167,12 +1167,12 @@ -> BackendCtx tag v x t -> DefTree tag v x t -> IO [DefTree tag v x t] -selectSubForestIO SynthesisDecision ctx m -> Bool -p BackendCtx tag v x t -ctx DefTree tag v x t -tree = forall a. (a -> Bool) -> [a] -> [a] +selectSubForestIO SynthesisDecision ctx m -> Bool +p BackendCtx tag v x t +ctx DefTree tag v x t +tree = forall a. (a -> Bool) -> [a] -> [a] filter (SynthesisDecision ctx m -> Bool -p forall b c a. (b -> c) -> (a -> b) -> a -> c +p forall b c a. (b -> c) -> (a -> b) -> a -> c . forall m tag v x t. Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m @@ -1197,15 +1197,15 @@ x1 t1] positiveSubForestIO BackendCtx tag v x t -ctx DefTree tag v x t -tree +ctx DefTree tag v x t +tree -bestDecision :: [DefTree tag v x t] -> Maybe (DefTree tag v x t) +bestDecision :: [DefTree tag v x t] -> Maybe (DefTree tag v x t) bestDecision :: forall tag v x t. [DefTree tag v x t] -> Maybe (DefTree tag v x t) bestDecision [] = forall a. Maybe a Nothing -bestDecision [DefTree tag v x t] -xs = forall a. a -> Maybe a +bestDecision [DefTree tag v x t] +xs = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall {t1 :: * -> *} {a} {t2}. (Foldable t1, Ord a) => @@ -1216,5 +1216,5 @@ Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m sDecision) [DefTree tag v x t] -xs +xs \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.MlBackend.Client.html b/haddock/nitta/src/NITTA.Synthesis.MlBackend.Client.html index 96b278d94..102a8a937 100644 --- a/haddock/nitta/src/NITTA.Synthesis.MlBackend.Client.html +++ b/haddock/nitta/src/NITTA.Synthesis.MlBackend.Client.html @@ -26,22 +26,22 @@ data ScoringTarget = ScoringTargetSid Sid | ScoringTargetAll -instance ToJSON ScoringTarget where - toJSON :: ScoringTarget -> Value -toJSON (ScoringTargetSid Sid -sid) = forall a. ToJSON a => a -> Value +instance ToJSON ScoringTarget where + toJSON :: ScoringTarget -> Value +toJSON (ScoringTargetSid Sid +sid) = forall a. ToJSON a => a -> Value toJSON Sid -sid +sid toJSON ScoringTarget ScoringTargetAll = forall a. ToJSON a => a -> Value toJSON (String "all" :: String) -data ScoringInput tag v x t = ScoringInput +data ScoringInput tag v x t = ScoringInput { forall tag v x t. ScoringInput tag v x t -> ScoringTarget scoringTarget :: ScoringTarget , forall tag v x t. ScoringInput tag v x t -> [NodeView tag v x t] -nodes :: [NodeView tag v x t] +nodes :: [NodeView tag v x t] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -55,12 +55,12 @@ ScoringInput tag v x t -> Rep (ScoringInput tag v x t) x Generic) -instance (VarValTimeJSON v x t, ToJSON tag) => ToJSON (ScoringInput tag v x t) +instance (VarValTimeJSON v x t, ToJSON tag) => ToJSON (ScoringInput tag v x t) -newtype PostScoreRequestBody tag v x t = PostScoreRequestBody +newtype PostScoreRequestBody tag v x t = PostScoreRequestBody { forall tag v x t. PostScoreRequestBody tag v x t -> [ScoringInput tag v x t] -inputs :: [ScoringInput tag v x t] +inputs :: [ScoringInput tag v x t] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -78,13 +78,13 @@ -> Rep (PostScoreRequestBody tag v x t) x Generic) -instance (VarValTimeJSON v x t, ToJSON tag) => ToJSON (PostScoreRequestBody tag v x t) +instance (VarValTimeJSON v x t, ToJSON tag) => ToJSON (PostScoreRequestBody tag v x t) -newtype MlBackendResponse d = MlBackendResponse +newtype MlBackendResponse d = MlBackendResponse { forall d. MlBackendResponse d -> d -responseData :: d +responseData :: d } - deriving (Int -> MlBackendResponse d -> ShowS + deriving (Int -> MlBackendResponse d -> ShowS forall d. Show d => Int -> MlBackendResponse d -> ShowS forall d. Show d => [MlBackendResponse d] -> ShowS forall d. Show d => MlBackendResponse d -> String @@ -104,36 +104,36 @@ $cfrom :: forall d x. MlBackendResponse d -> Rep (MlBackendResponse d) x Generic) -instance FromJSON d => FromJSON (MlBackendResponse d) where - parseJSON :: Value -> Parser (MlBackendResponse d) +instance FromJSON d => FromJSON (MlBackendResponse d) where + parseJSON :: Value -> Parser (MlBackendResponse d) parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a withObject String "MlBackendResponse" forall a b. (a -> b) -> a -> b -$ \Object -obj -> +$ \Object +obj -> forall d. d -> MlBackendResponse d MlBackendResponse forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -obj forall a. FromJSON a => Object -> Key -> Parser a +obj forall a. FromJSON a => Object -> Key -> Parser a .: Key "data" -- we are using the parameter's FromJSON -instance ToJSON d => ToJSON (MlBackendResponse d) where - toJSON :: MlBackendResponse d -> Value - toJSON :: MlBackendResponse d -> Value -toJSON (MlBackendResponse{d +instance ToJSON d => ToJSON (MlBackendResponse d) where + toJSON :: MlBackendResponse d -> Value + toJSON :: MlBackendResponse d -> Value +toJSON (MlBackendResponse{d responseData :: d responseData :: forall d. MlBackendResponse d -> d -responseData}) = [Pair] -> Value +responseData}) = [Pair] -> Value object [Key "data" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= d -responseData] +responseData] -newtype PostScoreResponseData = PostScoreResponseData +newtype PostScoreResponseData = PostScoreResponseData {PostScoreResponseData -> [[Float]] scores :: [[Float]]} - deriving (Int -> PostScoreResponseData -> ShowS + deriving (Int -> PostScoreResponseData -> ShowS [PostScoreResponseData] -> ShowS PostScoreResponseData -> String forall a. @@ -153,35 +153,35 @@ Generic) -- TODO: GeneralizedNewtypeDeriving vs DeriveAnyClass conflict? declaring instance manually for now -instance ToJSON PostScoreResponseData -instance FromJSON PostScoreResponseData +instance ToJSON PostScoreResponseData +instance FromJSON PostScoreResponseData getDefaultRequestIO :: a -> m Request -getDefaultRequestIO a -baseUrl = do +getDefaultRequestIO a +baseUrl = do forall (m :: * -> *). MonadThrow m => String -> m Request parseRequest (forall a. ToString a => a -> String toString a -baseUrl) +baseUrl) getScoreRequestIO :: a -> Text -> [ScoringInput tag v x t] -> f Request -getScoreRequestIO a -baseUrl Text -modelName [ScoringInput tag v x t] -scoringInputs = - let path :: ByteString -path = Text -> ByteString +getScoreRequestIO a +baseUrl Text +modelName [ScoringInput tag v x t] +scoringInputs = + let path :: ByteString +path = Text -> ByteString T.encodeUtf8 forall a b. (a -> b) -> a -> b $ Text "/models/" forall a. Semigroup a => a -> a -> a <> Text -modelName forall a. Semigroup a => a -> a -> a +modelName forall a. Semigroup a => a -> a -> a <> Text "/score" - body :: PostScoreRequestBody tag v x t -body = PostScoreRequestBody{inputs :: [ScoringInput tag v x t] + body :: PostScoreRequestBody tag v x t +body = PostScoreRequestBody{inputs :: [ScoringInput tag v x t] inputs = [ScoringInput tag v x t] -scoringInputs} +scoringInputs} in do ByteString -> Request -> Request setRequestMethod ByteString @@ -189,40 +189,40 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> Request -> Request setRequestPath ByteString -path +path forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. ToJSON a => a -> Request -> Request setRequestBodyJSON PostScoreRequestBody tag v x t -body +body forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall {m :: * -> *} {a}. (MonadThrow m, ToString a) => a -> m Request getDefaultRequestIO a -baseUrl +baseUrl predictScoresIO :: Text -> a -> [ScoringInput tag v x t] -> m [[Float]] -predictScoresIO Text -modelName a -baseUrl [ScoringInput tag v x t] -inputs = do - Request -request <- forall {f :: * -> *} {v} {x} {t} {tag} {a}. +predictScoresIO Text +modelName a +baseUrl [ScoringInput tag v x t] +inputs = do + Request +request <- forall {f :: * -> *} {v} {x} {t} {tag} {a}. (IsString v, Suffix v, Hashable v, Val x, Bounded t, ToJSONKey v, ToJSON v, ToJSON t, ToJSON tag, MonadThrow f, ToString v, ToString a, Typeable v, Typeable t, Show t, Default t, Integral t, Ord v) => a -> Text -> [ScoringInput tag v x t] -> f Request getScoreRequestIO a -baseUrl Text -modelName [ScoringInput tag v x t] -inputs - Response (MlBackendResponse PostScoreResponseData) -response <- forall (m :: * -> *) a. +baseUrl Text +modelName [ScoringInput tag v x t] +inputs + Response (MlBackendResponse PostScoreResponseData) +response <- forall (m :: * -> *) a. (MonadIO m, FromJSON a) => Request -> m (Response a) httpJSON Request -request +request forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ PostScoreResponseData -> [[Float]] @@ -231,5 +231,5 @@ responseData forall a b. (a -> b) -> a -> b $ forall a. Response a -> a getResponseBody Response (MlBackendResponse PostScoreResponseData) -response +response \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.MlBackend.FixedCache.html b/haddock/nitta/src/NITTA.Synthesis.MlBackend.FixedCache.html index 289c8d579..6736832e6 100644 --- a/haddock/nitta/src/NITTA.Synthesis.MlBackend.FixedCache.html +++ b/haddock/nitta/src/NITTA.Synthesis.MlBackend.FixedCache.html @@ -22,8 +22,8 @@ {- | A thread-safe write-once cache. If you need more functionality, (e.g. multiple write, cache clearing) use an 'MVar' instead. -} -newtype Cache a = Cache (MVar (Maybe a)) - deriving (Cache a -> Cache a -> Bool +newtype Cache a = Cache (MVar (Maybe a)) + deriving (Cache a -> Cache a -> Bool forall a. Cache a -> Cache a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Cache a -> Cache a -> Bool @@ -36,52 +36,52 @@ or call the supplied fallback and store the result, if the cache is empty. -} -fetch :: Cache a -> IO a -> IO a +fetch :: Cache a -> IO a -> IO a fetch :: forall a. Cache a -> IO a -> IO a -fetch (Cache MVar (Maybe a) -var) IO a -action = IO a -go +fetch (Cache MVar (Maybe a) +var) IO a +action = IO a +go where - go :: IO a -go = + go :: IO a +go = forall a. MVar a -> IO a readMVar MVar (Maybe a) -var forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +var forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - Just a -a -> forall (m :: * -> *) a. Monad m => a -> m a + Just a +a -> forall (m :: * -> *) a. Monad m => a -> m a return a -a +a Maybe a Nothing -> do forall a. MVar a -> (a -> IO a) -> IO () modifyMVar_ MVar (Maybe a) -var forall a b. (a -> b) -> a -> b +var forall a b. (a -> b) -> a -> b $ \case - Just a -a -> forall (m :: * -> *) a. Monad m => a -> m a + Just a +a -> forall (m :: * -> *) a. Monad m => a -> m a return (forall a. a -> Maybe a Just a -a) +a) Maybe a Nothing -> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap forall a. a -> Maybe a Just IO a -action +action IO a -go +go -- | Create an empty cache. -newCache :: IO (Cache a) +newCache :: IO (Cache a) newCache :: forall a. IO (Cache a) newCache = do - MVar (Maybe a) -var <- forall a. a -> IO (MVar a) + MVar (Maybe a) +var <- forall a. a -> IO (MVar a) newMVar forall a. Maybe a Nothing forall (m :: * -> *) a. Monad m => a -> m a return (forall a. MVar (Maybe a) -> Cache a Cache MVar (Maybe a) -var) +var) \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.MlBackend.ServerInstance.html b/haddock/nitta/src/NITTA.Synthesis.MlBackend.ServerInstance.html index 6cf41f0e7..24180e99f 100644 --- a/haddock/nitta/src/NITTA.Synthesis.MlBackend.ServerInstance.html +++ b/haddock/nitta/src/NITTA.Synthesis.MlBackend.ServerInstance.html @@ -37,7 +37,7 @@ } instance Default MlBackendServer where - def :: MlBackendServer + def :: MlBackendServer def = Maybe Text -> Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -> MlBackendServer @@ -50,8 +50,8 @@ readMlBackendBaseUrlFileIO :: IO (Maybe Text) readMlBackendBaseUrlFileIO = do - let baseUrlFilePath :: String -baseUrlFilePath = String + let baseUrlFilePath :: String +baseUrlFilePath = String ".ml_backend_base_url" String -> String -> IO () @@ -61,22 +61,22 @@ forall r. String -> IOMode -> (Handle -> IO r) -> IO r withFile String -baseUrlFilePath +baseUrlFilePath IOMode ReadMode - ( \Handle -file -> do - String -baseUrl <- Handle -> IO String + ( \Handle +file -> do + String +baseUrl <- Handle -> IO String hGetLine Handle -file +file forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall a. IsString a => String -> a fromString String -baseUrl +baseUrl ) forall e a. Exception e => IO a -> (e -> IO a) -> IO a `catch` \(IOException @@ -91,18 +91,18 @@ -- | Synchonously waits until ML backend server base URL file becomes available (with timeout) waitForMlBackendBaseUrlIO :: Int -> IO (Maybe Text) -waitForMlBackendBaseUrlIO Int -retriesLeft +waitForMlBackendBaseUrlIO Int +retriesLeft | Int -retriesLeft forall a. Ord a => a -> a -> Bool +retriesLeft forall a. Ord a => a -> a -> Bool <= Int 0 = forall (m :: * -> *) a. Monad m => a -> m a return forall a. Maybe a Nothing | Bool otherwise = do - let secondsPerRetry :: Int -secondsPerRetry = Int + let secondsPerRetry :: Int +secondsPerRetry = Int 3 :: Int String -> String -> IO () @@ -114,9 +114,9 @@ forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show (Int -secondsPerRetry forall a. Num a => a -> a -> a +secondsPerRetry forall a. Num a => a -> a -> a * Int -retriesLeft) +retriesLeft) forall a. Semigroup a => a -> a -> a <> String " second(s) more until ML backend server base URL is available..." @@ -125,15 +125,15 @@ Int -> IO () threadDelay forall a b. (a -> b) -> a -> b $ Int -secondsPerRetry forall a. Num a => a -> a -> a +secondsPerRetry forall a. Num a => a -> a -> a * Int 1000000 IO (Maybe Text) readMlBackendBaseUrlFileIO forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - Just Text -baseUrl -> do + Just Text +baseUrl -> do Int -> IO () threadDelay Int 5000000 -- wait 5 more seconds to ensure that server is ready to accept connections @@ -141,11 +141,11 @@ return forall a b. (a -> b) -> a -> b $ forall a. a -> Maybe a Just Text -baseUrl +baseUrl Maybe Text Nothing -> Int -> IO (Maybe Text) waitForMlBackendBaseUrlIO (Int -retriesLeft forall a. Num a => a -> a -> a +retriesLeft forall a. Num a => a -> a -> a - Int 1) @@ -161,24 +161,24 @@ <&> forall a. [Maybe a] -> [a] catMaybes) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - String -executable : [String] + String +executable : [String] _ -> forall (m :: * -> *) a. Monad m => a -> m a return String -executable +executable [] -> do - let errorMsg :: String -errorMsg = String + let errorMsg :: String +errorMsg = String "failed to find a python executable" String -> String -> IO () errorM String "NITTA.Synthesis.MlBackend" String -errorMsg +errorMsg forall a e. Exception e => e -> a throw forall a b. (a -> b) -> a -> b $ String -> IOException userError String -errorMsg +errorMsg -- | Tries to start ML backend server and gathers all required information about it. tryStartMlBackendServerIO :: IO MlBackendServer @@ -186,15 +186,15 @@ -- not a shell process, because killing ML backend under shell is trickier -- let's find out python3 executable path - Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -maybeHandles <- forall {a}. IO a -> IO (Maybe a) + Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) +maybeHandles <- forall {a}. IO a -> IO (Maybe a) catchToMaybeIO forall a b. (a -> b) -> a -> b $ do - String -executable <- IO String + String +executable <- IO String findPythonExecutableIO - let args :: [String] -args = [String + let args :: [String] +args = [String "-m", String "mlbackend"] String -> String -> IO () @@ -203,22 +203,22 @@ $ String "Starting ML backend server, executable: " forall a. Semigroup a => a -> a -> a <> String -executable forall a. Semigroup a => a -> a -> a +executable forall a. Semigroup a => a -> a -> a <> String ", args: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show [String] -args +args CreateProcess -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) createProcess (String -> [String] -> CreateProcess proc String -executable [String] -args) +executable [String] +args) - Maybe Text -maybeDynamicBaseUrl <- case Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -maybeHandles of + Maybe Text +maybeDynamicBaseUrl <- case Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) +maybeHandles of Just (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) _ -> Int -> IO (Maybe Text) waitForMlBackendBaseUrlIO Int @@ -231,7 +231,7 @@ forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall a. Maybe a -> Bool isNothing Maybe Text -maybeDynamicBaseUrl) forall a b. (a -> b) -> a -> b +maybeDynamicBaseUrl) forall a b. (a -> b) -> a -> b $ do String -> String -> IO () errorM String @@ -241,26 +241,26 @@ forall (m :: * -> *) a. Monad m => a -> m a return MlBackendServer{baseUrl :: Maybe Text baseUrl = Maybe Text -maybeDynamicBaseUrl, handles :: Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) +maybeDynamicBaseUrl, handles :: Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) handles = Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -maybeHandles} +maybeHandles} -- | Makes ML backend server available with lazy initialization, memoization and proper cleanup. withLazyMlBackendServer :: (IO MlBackendServer -> IO c) -> IO c -withLazyMlBackendServer IO MlBackendServer -> IO c -action = +withLazyMlBackendServer IO MlBackendServer -> IO c +action = forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c bracket -- resource initialization action, produces lazy server getter with enabled memoization ( do - let startupAction :: IO MlBackendServer -startupAction = do + let startupAction :: IO MlBackendServer +startupAction = do IO (Maybe Text) readMlBackendBaseUrlFileIO forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case -- if ML backend server base URL file already exists, then we assume that server is already running - Just Text -existingBaseUrl -> do + Just Text +existingBaseUrl -> do String -> String -> IO () debugM String @@ -270,7 +270,7 @@ forall a. Semigroup a => a -> a -> a <> forall a. ToString a => a -> String toString Text -existingBaseUrl +existingBaseUrl forall a. Semigroup a => a -> a -> a <> String "), skipping server startup" @@ -279,7 +279,7 @@ return MlBackendServer{baseUrl :: Maybe Text baseUrl = forall a. a -> Maybe a Just Text -existingBaseUrl, handles :: Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) +existingBaseUrl, handles :: Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) handles = forall a. Maybe a Nothing} -- coulnd't find existing base URL, trying to start the server @@ -287,47 +287,47 @@ Nothing -> IO MlBackendServer tryStartMlBackendServerIO -- cache is used to memoize server startup results and produce lazy getter - Cache MlBackendServer -cache <- forall a. IO (Cache a) + Cache MlBackendServer +cache <- forall a. IO (Cache a) newCache - let serverGetter :: IO MlBackendServer -serverGetter = forall a. Cache a -> IO a -> IO a + let serverGetter :: IO MlBackendServer +serverGetter = forall a. Cache a -> IO a -> IO a fetch Cache MlBackendServer -cache IO MlBackendServer -startupAction +cache IO MlBackendServer +startupAction forall (m :: * -> *) a. Monad m => a -> m a return (IO MlBackendServer -serverGetter, Cache MlBackendServer -cache) +serverGetter, Cache MlBackendServer +cache) ) -- resource cleanup action ( \(IO MlBackendServer -_, Cache MVar (Maybe MlBackendServer) -mServerVar) -> do +_, Cache MVar (Maybe MlBackendServer) +mServerVar) -> do forall a. MVar a -> IO (Maybe a) tryReadMVar MVar (Maybe MlBackendServer) -mServerVar forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +mServerVar forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case -- server was started Just (Just MlBackendServer{handles :: MlBackendServer -> Maybe (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -handles = Just serverProcessHandles :: (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -serverProcessHandles@(Maybe Handle +handles = Just serverProcessHandles :: (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) +serverProcessHandles@(Maybe Handle _, Maybe Handle _, Maybe Handle -_, ProcessHandle -procHandle)}) -> do +_, ProcessHandle +procHandle)}) -> do String -> String -> IO () infoM String "NITTA.Synthesis.MlBackend" String "Stopping automatically started ML backend server" (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -> IO () cleanupProcess (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -serverProcessHandles +serverProcessHandles ExitCode _ <- ProcessHandle -> IO ExitCode waitForProcess ProcessHandle -procHandle +procHandle forall (m :: * -> *) a. Monad m => a -> m a return () -- server was not started @@ -338,9 +338,9 @@ "ML backend server was not started automatically, so nothing to stop" ) -- resource usage action (not exposing Cache object to it) - (\(IO MlBackendServer -serverGetter, Cache MlBackendServer + (\(IO MlBackendServer +serverGetter, Cache MlBackendServer _) -> IO MlBackendServer -> IO c -action IO MlBackendServer -serverGetter) +action IO MlBackendServer +serverGetter) \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.Steps.Allocation.html b/haddock/nitta/src/NITTA.Synthesis.Steps.Allocation.html index ba12f93c0..1aac76d03 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Steps.Allocation.html +++ b/haddock/nitta/src/NITTA.Synthesis.Steps.Allocation.html @@ -38,7 +38,7 @@ SynthesisState (SynthesisState, numberOfProcessWaves, processWaves, sTarget), ) -data AllocationMetrics = AllocationMetrics +data AllocationMetrics = AllocationMetrics { AllocationMetrics -> ParallelismType mParallelism :: ParallelismType -- ^ PU prototype parallelism type @@ -63,120 +63,120 @@ $cfrom :: forall x. AllocationMetrics -> Rep AllocationMetrics x Generic) -instance ToJSON AllocationMetrics +instance ToJSON AllocationMetrics instance - UnitTag tag => + UnitTag tag => SynthesisDecisionCls - (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) - (TargetSystem (BusNetwork tag v x t) tag v x t) - (Allocation tag) - (Allocation tag) + (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) + (TargetSystem (BusNetwork tag v x t) tag v x t) + (Allocation tag) + (Allocation tag) AllocationMetrics where - decisions :: SynthesisState + decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> [(Allocation tag, TargetSystem (BusNetwork tag v x t) tag v x t)] -decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t +decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m -sTarget} Allocation tag -o = [(Allocation tag -o, forall u tag. AllocationProblem u tag => u -> Allocation tag -> u +sTarget} Allocation tag +o = [(Allocation tag +o, forall u tag. AllocationProblem u tag => u -> Allocation tag -> u allocationDecision TargetSystem (BusNetwork tag v x t) tag v x t -sTarget Allocation tag -o)] +sTarget Allocation tag +o)] - parameters :: SynthesisState + parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> Allocation tag -> AllocationMetrics parameters SynthesisState{sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m -sTarget = TargetSystem{BusNetwork tag v x t +sTarget = TargetSystem{BusNetwork tag v x t mUnit :: BusNetwork tag v x t mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit}, [ProcessWave v x] +mUnit}, [ProcessWave v x] processWaves :: [ProcessWave v x] processWaves :: forall m tag v x t. SynthesisState m tag v x t -> [ProcessWave v x] -processWaves, Int +processWaves, Int numberOfProcessWaves :: Int numberOfProcessWaves :: forall m tag v x t. SynthesisState m tag v x t -> Int -numberOfProcessWaves} Allocation{tag +numberOfProcessWaves} Allocation{tag processUnitTag :: tag processUnitTag :: forall tag. Allocation tag -> tag -processUnitTag} Allocation tag +processUnitTag} Allocation tag _ = - let pus :: [PU v x t] -pus = forall k a. Map k a -> [a] + let pus :: [PU v x t] +pus = forall k a. Map k a -> [a] M.elems forall a b. (a -> b) -> a -> b $ forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) bnPus BusNetwork tag v x t -mUnit - tmp :: PUPrototype tag v x t -tmp = forall tag v x t. +mUnit + tmp :: PUPrototype tag v x t +tmp = forall tag v x t. BusNetwork tag v x t -> Map tag (PUPrototype tag v x t) bnPUPrototypes BusNetwork tag v x t -mUnit forall k a. Ord k => Map k a -> k -> a +mUnit forall k a. Ord k => Map k a -> k -> a M.! tag -processUnitTag - mParallelism :: PUPrototype tag v x t -> ParallelismType -mParallelism PUPrototype{pu +processUnitTag + mParallelism :: PUPrototype tag v x t -> ParallelismType +mParallelism PUPrototype{pu pProto :: () pProto :: pu pProto} = forall u v x t. ProcessorUnit u v x t => u -> ParallelismType parallelismType pu -pProto - canProcessTmp :: PUPrototype tag v x t -> F v x -> Bool -canProcessTmp PUPrototype{pu +pProto + canProcessTmp :: PUPrototype tag v x t -> F v x -> Bool +canProcessTmp PUPrototype{pu pProto :: pu pProto :: () -pProto} F v x -f = forall {b} {v} {x} {t}. ProcessorUnit b v x t => F v x -> b -> Bool +pProto} F v x +f = forall {b} {v} {x} {t}. ProcessorUnit b v x t => F v x -> b -> Bool allowToProcess F v x -f pu -pProto - canProcessPU :: PU v x t -> F v x -> Bool -canProcessPU PU{pu +f pu +pProto + canProcessPU :: PU v x t -> F v x -> Bool +canProcessPU PU{pu unit :: pu unit :: () -unit} F v x -f = forall {b} {v} {x} {t}. ProcessorUnit b v x t => F v x -> b -> Bool +unit} F v x +f = forall {b} {v} {x} {t}. ProcessorUnit b v x t => F v x -> b -> Bool allowToProcess F v x -f pu -unit - relatedRemains :: [F v x] -relatedRemains = forall a. (a -> Bool) -> [a] -> [a] +f pu +unit + relatedRemains :: [F v x] +relatedRemains = forall a. (a -> Bool) -> [a] -> [a] filter (forall {tag} {v} {x} {t}. PUPrototype tag v x t -> F v x -> Bool -canProcessTmp PUPrototype tag v x t -tmp) forall a b. (a -> b) -> a -> b +canProcessTmp PUPrototype tag v x t +tmp) forall a b. (a -> b) -> a -> b $ forall tag v x t. BusNetwork tag v x t -> [F v x] bnRemains BusNetwork tag v x t -mUnit - fCountByWaves :: [Int] -fCountByWaves = forall a b. (a -> b) -> [a] -> [b] -map (\ProcessWave{[F v x] +mUnit + fCountByWaves :: [Int] +fCountByWaves = forall a b. (a -> b) -> [a] -> [b] +map (\ProcessWave{[F v x] pwFs :: [F v x] pwFs :: forall v x. ProcessWave v x -> [F v x] -pwFs} -> forall (t :: * -> *) a. Foldable t => t a -> Int +pwFs} -> forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter (forall {tag} {v} {x} {t}. PUPrototype tag v x t -> F v x -> Bool -canProcessTmp PUPrototype tag v x t -tmp) [F v x] -pwFs) [ProcessWave v x] -processWaves +canProcessTmp PUPrototype tag v x t +tmp) [F v x] +pwFs) [ProcessWave v x] +processWaves in AllocationMetrics { mParallelism :: ParallelismType mParallelism = forall {tag} {v} {x} {t}. PUPrototype tag v x t -> ParallelismType -mParallelism PUPrototype tag v x t -tmp +mParallelism PUPrototype tag v x t +tmp , mRelatedRemains :: Float mRelatedRemains = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Int length [F v x] -relatedRemains +relatedRemains , mMinPusForRemains :: Float mMinPusForRemains = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b @@ -185,74 +185,74 @@ (a -> b -> b) -> b -> t a -> b foldr (forall a. Ord a => a -> a -> a min forall b c a. (b -> c) -> (a -> b) -> a -> c -. (\F v x -f -> forall (t :: * -> *) a. Foldable t => t a -> Int +. (\F v x +f -> forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter (forall {v} {x} {t}. PU v x t -> F v x -> Bool -`canProcessPU` F v x -f) [PU v x t] -pus)) (forall a. Bounded a => a +`canProcessPU` F v x +f) [PU v x t] +pus)) (forall a. Bounded a => a maxBound :: Int) [F v x] -relatedRemains +relatedRemains , mMaxParallels :: Float mMaxParallels = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum [Int] -fCountByWaves +fCountByWaves , mAvgParallels :: Float mAvgParallels = (forall a b. (Integral a, Num b) => a -> b fromIntegral (forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum [Int] -fCountByWaves) :: Float) forall a. Fractional a => a -> a -> a +fCountByWaves) :: Float) forall a. Fractional a => a -> a -> a / (forall a b. (Integral a, Num b) => a -> b fromIntegral Int -numberOfProcessWaves :: Float) +numberOfProcessWaves :: Float) } - estimate :: SynthesisState + estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Allocation tag -> Allocation tag -> AllocationMetrics -> Float -estimate SynthesisState +estimate SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -_ctx Allocation tag -_o Allocation tag -_d AllocationMetrics{ParallelismType +_ctx Allocation tag +_o Allocation tag +_d AllocationMetrics{ParallelismType mParallelism :: ParallelismType mParallelism :: AllocationMetrics -> ParallelismType -mParallelism, Float +mParallelism, Float mMinPusForRemains :: Float mMinPusForRemains :: AllocationMetrics -> Float -mMinPusForRemains, Float +mMinPusForRemains, Float mAvgParallels :: Float mAvgParallels :: AllocationMetrics -> Float -mAvgParallels} +mAvgParallels} | Float -mMinPusForRemains forall a. Eq a => a -> a -> Bool +mMinPusForRemains forall a. Eq a => a -> a -> Bool == Float 0 = Float 5000 | ParallelismType -mParallelism forall a. Eq a => a -> a -> Bool +mParallelism forall a. Eq a => a -> a -> Bool == ParallelismType Full = -Float 1 | ParallelismType -mParallelism forall a. Eq a => a -> a -> Bool +mParallelism forall a. Eq a => a -> a -> Bool == ParallelismType Pipeline Bool -> Bool -> Bool && (Float -mAvgParallels forall a. Fractional a => a -> a -> a +mAvgParallels forall a. Fractional a => a -> a -> a / Float -mMinPusForRemains forall a. Ord a => a -> a -> Bool +mMinPusForRemains forall a. Ord a => a -> a -> Bool >= Float 3) = Float 4900 | Float -mAvgParallels forall a. Fractional a => a -> a -> a +mAvgParallels forall a. Fractional a => a -> a -> a / Float -mMinPusForRemains forall a. Ord a => a -> a -> Bool +mMinPusForRemains forall a. Ord a => a -> a -> Bool >= Float 2 = Float 4900 diff --git a/haddock/nitta/src/NITTA.Synthesis.Steps.Bind.html b/haddock/nitta/src/NITTA.Synthesis.Steps.Bind.html index ec6107843..1cbacae6b 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Steps.Bind.html +++ b/haddock/nitta/src/NITTA.Synthesis.Steps.Bind.html @@ -36,7 +36,7 @@ import NITTA.Utils import Numeric.Interval.NonEmpty (inf) -data BindMetrics +data BindMetrics = SingleBindMetrics { BindMetrics -> Bool pCritical :: Bool @@ -92,73 +92,73 @@ $cfrom :: forall x. BindMetrics -> Rep BindMetrics x Generic) -instance ToJSON BindMetrics +instance ToJSON BindMetrics instance - (UnitTag tag, VarValTime v x t) => + (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls - (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) - (TargetSystem (BusNetwork tag v x t) tag v x t) - (Bind tag v x) - (Bind tag v x) + (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) + (TargetSystem (BusNetwork tag v x t) tag v x t) + (Bind tag v x) + (Bind tag v x) BindMetrics where - decisions :: SynthesisState + decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> [(Bind tag v x, TargetSystem (BusNetwork tag v x t) tag v x t)] -decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t +decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t -sTarget} Bind tag v x -o = [(Bind tag v x -o, forall u tag v x. BindProblem u tag v x => u -> Bind tag v x -> u +sTarget} Bind tag v x +o = [(Bind tag v x +o, forall u tag v x. BindProblem u tag v x => u -> Bind tag v x -> u bindDecision TargetSystem (BusNetwork tag v x t) tag v x t -sTarget Bind tag v x -o)] +sTarget Bind tag v x +o)] - parameters :: SynthesisState + parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics parameters SynthesisState - { Map (F v x) [tag] + { Map (F v x) [tag] bindingAlternative :: forall m tag v x t. SynthesisState m tag v x t -> Map (F v x) [tag] bindingAlternative :: Map (F v x) [tag] bindingAlternative , sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m -sTarget = sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t -sTarget@TargetSystem{BusNetwork tag v x t +sTarget = sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t +sTarget@TargetSystem{BusNetwork tag v x t mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u mUnit :: BusNetwork tag v x t mUnit} - , Set (F v x) + , Set (F v x) possibleDeadlockBinds :: forall m tag v x t. SynthesisState m tag v x t -> Set (F v x) possibleDeadlockBinds :: Set (F v x) possibleDeadlockBinds - , Map v Int + , Map v Int bindWaves :: forall m tag v x t. SynthesisState m tag v x t -> Map v Int bindWaves :: Map v Int bindWaves } - (SingleBind tag -tag F v x -f) + (SingleBind tag +tag F v x +f) Bind tag v x _ = SingleBindMetrics { pCritical :: Bool pCritical = forall f v. Function f v => f -> Bool isInternalLockPossible F v x -f +f , pAlternative :: Float pAlternative = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Int length (Map (F v x) [tag] -bindingAlternative forall k a. Ord k => Map k a -> k -> a +bindingAlternative forall k a. Ord k => Map k a -> k -> a M.! F v x -f) +f) , pAllowDataFlow :: Float pAllowDataFlow = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b @@ -179,34 +179,34 @@ -> TargetSystem (BusNetwork k a x t) tag v x t -> [EndpointSt a (TimeConstraint t)] optionsAfterBind F v x -f tag -tag TargetSystem (BusNetwork tag v x t) tag v x t -sTarget +f tag +tag TargetSystem (BusNetwork tag v x t) tag v x t +sTarget , pRestless :: Float pRestless = forall a. a -> Maybe a -> a fromMaybe Float 0 forall a b. (a -> b) -> a -> b $ do - (v -_var, t -tcFrom) <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a -L.find (\(v -v, t + (v +_var, t +tcFrom) <- forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a +L.find (\(v +v, t _) -> v -v forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +v forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` forall a v. Variables a v => a -> Set v variables F v x -f) forall a b. (a -> b) -> a -> b +f) forall a b. (a -> b) -> a -> b $ forall {a} {u} {a} {b}. (Ord a, DataflowProblem u a a b) => u -> [(a, b)] waitingTimeOfVariables TargetSystem (BusNetwork tag v x t) tag v x t -sTarget +sTarget forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a b. (Integral a, Num b) => a -> b fromIntegral t -tcFrom +tcFrom , pOutputNumber :: Float pOutputNumber = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b @@ -216,12 +216,12 @@ S.elems forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v outputs F v x -f +f , pPossibleDeadlock :: Bool pPossibleDeadlock = F v x -f forall a. Ord a => a -> Set a -> Bool +f forall a. Ord a => a -> Set a -> Bool `S.member` Set (F v x) -possibleDeadlockBinds +possibleDeadlockBinds , pNumberOfBoundFunctions :: Float pNumberOfBoundFunctions = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b @@ -229,113 +229,113 @@ length forall a b. (a -> b) -> a -> b $ forall {k} {v} {x} {t}. Ord k => k -> BusNetwork k v x t -> [F v x] boundFunctions tag -tag BusNetwork tag v x t -mUnit +tag BusNetwork tag v x t +mUnit , pPercentOfBoundInputs :: Float pPercentOfBoundInputs = - let is :: Set v -is = forall f v. Function f v => f -> Set v + let is :: Set v +is = forall f v. Function f v => f -> Set v inputs F v x -f - n :: Float -n = forall a b. (Integral a, Num b) => a -> b +f + n :: Float +n = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ forall a. Ord a => Set a -> Set a -> Set a S.intersection Set v -is forall a b. (a -> b) -> a -> b +is forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables BusNetwork tag v x t -mUnit - nAll :: Float -nAll = forall a b. (Integral a, Num b) => a -> b +mUnit + nAll :: Float +nAll = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Int length Set v -is +is in if Float -nAll forall a. Eq a => a -> a -> Bool +nAll forall a. Eq a => a -> a -> Bool == Float 0 then Float 1 else Float -n forall a. Fractional a => a -> a -> a +n forall a. Fractional a => a -> a -> a / Float -nAll +nAll , pWave :: Maybe Float pWave = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b $ case forall a b. (a -> b) -> [a] -> [b] map (Map v Int -bindWaves forall k a. Ord k => Map k a -> k -> Maybe a +bindWaves forall k a. Ord k => Map k a -> k -> Maybe a M.!?) forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v inputs F v x -f of +f of [] -> forall a. a -> Maybe a Just Int 0 - [Maybe Int] -waves | forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool + [Maybe Int] +waves | forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all forall a. Maybe a -> Bool isJust [Maybe Int] -waves -> forall a. a -> Maybe a +waves -> forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum forall a b. (a -> b) -> a -> b $ forall a. [Maybe a] -> [a] catMaybes [Maybe Int] -waves +waves [Maybe Int] _ -> forall a. Maybe a Nothing } - parameters SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t + parameters SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m -sTarget, Map tag Int +sTarget, Map tag Int unitWorkloadInFunction :: forall m tag v x t. SynthesisState m tag v x t -> Map tag Int unitWorkloadInFunction :: Map tag Int -unitWorkloadInFunction} binds :: Bind tag v x -binds@GroupBind{Bool +unitWorkloadInFunction} binds :: Bind tag v x +binds@GroupBind{Bool isObviousBinds :: forall tag v x. Bind tag v x -> Bool isObviousBinds :: Bool -isObviousBinds, Map tag [F v x] +isObviousBinds, Map tag [F v x] bindGroup :: forall tag v x. Bind tag v x -> Map tag [F v x] bindGroup :: Map tag [F v x] bindGroup} Bind tag v x _ = - let dfgFunCount :: Int -dfgFunCount = forall (t :: * -> *) a. Foldable t => t a -> Int + let dfgFunCount :: Int +dfgFunCount = forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ forall a f. WithFunctions a f => a -> [f] functions forall a b. (a -> b) -> a -> b $ forall u tag v x t. TargetSystem u tag v x t -> DataFlowGraph v x mDataFlowGraph TargetSystem (BusNetwork tag v x t) tag v x t -sTarget - bindFunCount :: Int -bindFunCount = forall (t :: * -> *) a. Foldable t => t a -> Int +sTarget + bindFunCount :: Int +bindFunCount = forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ forall a f. WithFunctions a f => a -> [f] functions Bind tag v x -binds +binds in GroupBindMetrics { pOnlyObviousBinds :: Bool pOnlyObviousBinds = Bool -isObviousBinds +isObviousBinds , pFunctionPercentInBinds :: Float pFunctionPercentInBinds = forall a b. (Integral a, Num b) => a -> b fromIntegral Int -bindFunCount forall a. Fractional a => a -> a -> a +bindFunCount forall a. Fractional a => a -> a -> a / forall a b. (Integral a, Num b) => a -> b fromIntegral Int -dfgFunCount +dfgFunCount , pAvgBinds :: Float pAvgBinds = forall {a} {t :: * -> *}. (Fractional a, Foldable t) => t a -> a -avg forall a b. (a -> b) -> a -> b +avg forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall a b. (Integral a, Num b) => a -> b fromIntegral forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -345,10 +345,10 @@ snd) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag [F v x] -bindGroup +bindGroup , pVarianceBinds :: Float pVarianceBinds = forall {a}. Floating a => [a] -> a -stddev forall a b. (a -> b) -> a -> b +stddev forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall a b. (Integral a, Num b) => a -> b fromIntegral forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -358,240 +358,240 @@ snd) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map tag [F v x] -bindGroup +bindGroup , pAvgUnitWorkload :: Float pAvgUnitWorkload = forall {a} {t :: * -> *}. (Fractional a, Foldable t) => t a -> a -avg forall a b. (a -> b) -> a -> b +avg forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map tag -> Float -unitWorkload forall a b. (a -> b) -> a -> b +unitWorkload forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [k] M.keys Map tag [F v x] -bindGroup +bindGroup , pVarianceUnitWorkload :: Float pVarianceUnitWorkload = forall {a}. Floating a => [a] -> a -stddev forall a b. (a -> b) -> a -> b +stddev forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map tag -> Float -unitWorkload forall a b. (a -> b) -> a -> b +unitWorkload forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [k] M.keys Map tag [F v x] -bindGroup +bindGroup } where - unitWorkload :: tag -> Float -unitWorkload = forall a b. (Integral a, Num b) => a -> b + unitWorkload :: tag -> Float +unitWorkload = forall a b. (Integral a, Num b) => a -> b fromIntegral forall b c a. (b -> c) -> (a -> b) -> a -> c . (Map tag Int -unitWorkloadInFunction forall k a. Ord k => Map k a -> k -> a +unitWorkloadInFunction forall k a. Ord k => Map k a -> k -> a M.!) - avg :: t a -> a -avg t a -lst = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a + avg :: t a -> a +avg t a +lst = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum t a -lst forall a. Fractional a => a -> a -> a +lst forall a. Fractional a => a -> a -> a / forall a b. (Integral a, Num b) => a -> b fromIntegral (forall (t :: * -> *) a. Foldable t => t a -> Int length t a -lst) - stddev :: [a] -> a -stddev [a] -lst = - let lstAvg :: a -lstAvg = forall {a} {t :: * -> *}. (Fractional a, Foldable t) => t a -> a -avg [a] -lst +lst) + stddev :: [a] -> a +stddev [a] +lst = + let lstAvg :: a +lstAvg = forall {a} {t :: * -> *}. (Fractional a, Foldable t) => t a -> a +avg [a] +lst in forall a. Floating a => a -> a sqrt forall a b. (a -> b) -> a -> b $ forall {a} {t :: * -> *}. (Fractional a, Foldable t) => t a -> a -avg forall a b. (a -> b) -> a -> b +avg forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\a -x -> (a -x forall a. Num a => a -> a -> a +map (\a +x -> (a +x forall a. Num a => a -> a -> a - a -lstAvg) forall a b. (Num a, Integral b) => a -> b -> a +lstAvg) forall a b. (Num a, Integral b) => a -> b -> a ^ (Int 2 :: Int)) [a] -lst +lst - estimate :: SynthesisState + estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> Bind tag v x -> Bind tag v x -> BindMetrics -> Float -estimate SynthesisState +estimate SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -_ctx Bind tag v x -_o Bind tag v x -_d GroupBindMetrics{Bool +_ctx Bind tag v x +_o Bind tag v x +_d GroupBindMetrics{Bool pOnlyObviousBinds :: Bool pOnlyObviousBinds :: BindMetrics -> Bool -pOnlyObviousBinds, Float +pOnlyObviousBinds, Float pFunctionPercentInBinds :: Float pFunctionPercentInBinds :: BindMetrics -> Float -pFunctionPercentInBinds, Float +pFunctionPercentInBinds, Float pVarianceBinds :: Float pVarianceBinds :: BindMetrics -> Float -pVarianceBinds} = +pVarianceBinds} = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum [ Float 4100 , Bool -pOnlyObviousBinds forall {p}. Num p => Bool -> p -> p +pOnlyObviousBinds forall {p}. Num p => Bool -> p -> p <?> Float 1000 , forall a. Num a => Integer -> a fromInteger forall a b. (a -> b) -> a -> b $ forall a b. (RealFrac a, Integral b) => a -> b round Float -pFunctionPercentInBinds forall a. Num a => a -> a -> a +pFunctionPercentInBinds forall a. Num a => a -> a -> a * Integer 10 , forall a. Num a => Integer -> a fromInteger forall a b. (a -> b) -> a -> b $ forall a b. (RealFrac a, Integral b) => a -> b round Float -pVarianceBinds forall a. Num a => a -> a -> a +pVarianceBinds forall a. Num a => a -> a -> a * (-Integer 20) ] - estimate SynthesisState + estimate SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -_ctx Bind tag v x -_o Bind tag v x -_d SingleBindMetrics{pPossibleDeadlock :: BindMetrics -> Bool +_ctx Bind tag v x +_o Bind tag v x +_d SingleBindMetrics{pPossibleDeadlock :: BindMetrics -> Bool pPossibleDeadlock = Bool True} = Float 500 estimate - SynthesisState + SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -_ctx - Bind tag v x -_o - Bind tag v x -_d +_ctx + Bind tag v x +_o + Bind tag v x +_d SingleBindMetrics - { Bool + { Bool pCritical :: Bool pCritical :: BindMetrics -> Bool -pCritical - , Float +pCritical + , Float pAlternative :: Float pAlternative :: BindMetrics -> Float -pAlternative - , Float +pAlternative + , Float pAllowDataFlow :: Float pAllowDataFlow :: BindMetrics -> Float -pAllowDataFlow - , Float +pAllowDataFlow + , Float pRestless :: Float pRestless :: BindMetrics -> Float -pRestless - , Float +pRestless + , Float pNumberOfBoundFunctions :: Float pNumberOfBoundFunctions :: BindMetrics -> Float -pNumberOfBoundFunctions - , Maybe Float +pNumberOfBoundFunctions + , Maybe Float pWave :: Maybe Float pWave :: BindMetrics -> Maybe Float -pWave - , Float +pWave + , Float pPercentOfBoundInputs :: Float pPercentOfBoundInputs :: BindMetrics -> Float -pPercentOfBoundInputs - , Float +pPercentOfBoundInputs + , Float pOutputNumber :: Float pOutputNumber :: BindMetrics -> Float -pOutputNumber +pOutputNumber } = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum [ Float 3000 , Bool -pCritical forall {p}. Num p => Bool -> p -> p +pCritical forall {p}. Num p => Bool -> p -> p <?> Float 1000 , (Float -pAlternative forall a. Eq a => a -> a -> Bool +pAlternative forall a. Eq a => a -> a -> Bool == Float 1) forall {p}. Num p => Bool -> p -> p <?> Float 500 , Float -pAllowDataFlow forall a. Num a => a -> a -> a +pAllowDataFlow forall a. Num a => a -> a -> a * Float 10 , Float -pPercentOfBoundInputs forall a. Num a => a -> a -> a +pPercentOfBoundInputs forall a. Num a => a -> a -> a * Float 50 , -forall a. a -> Maybe a -> a fromMaybe (-Float 1) Maybe Float -pWave forall a. Num a => a -> a -> a +pWave forall a. Num a => a -> a -> a * Float 50 , -Float -pNumberOfBoundFunctions forall a. Num a => a -> a -> a +pNumberOfBoundFunctions forall a. Num a => a -> a -> a * Float 10 , -Float -pRestless forall a. Num a => a -> a -> a +pRestless forall a. Num a => a -> a -> a * Float 4 , Float -pOutputNumber forall a. Num a => a -> a -> a +pOutputNumber forall a. Num a => a -> a -> a * Float 2 ] waitingTimeOfVariables :: u -> [(a, b)] -waitingTimeOfVariables u -net = +waitingTimeOfVariables u +net = [ (a -variable, forall a. Interval a -> a +variable, forall a. Interval a -> a inf forall a b. (a -> b) -> a -> b $ forall t. TimeConstraint t -> Interval t tcAvailable TimeConstraint b -constrain) +constrain) | DataflowSt{dfSource :: forall tag v tp. DataflowSt tag v tp -> (tag, EndpointSt v tp) dfSource = (a -_, EndpointSt a (TimeConstraint b) -srcEp), [(a, EndpointSt a (TimeConstraint b))] +_, EndpointSt a (TimeConstraint b) +srcEp), [(a, EndpointSt a (TimeConstraint b))] dfTargets :: forall tag v tp. DataflowSt tag v tp -> [(tag, EndpointSt v tp)] dfTargets :: [(a, EndpointSt a (TimeConstraint b))] dfTargets} <- forall u tag v t. DataflowProblem u tag v t => u -> [DataflowSt tag v (TimeConstraint t)] dataflowOptions u -net - , let constrain :: TimeConstraint b -constrain = forall v tp. EndpointSt v tp -> tp +net + , let constrain :: TimeConstraint b +constrain = forall v tp. EndpointSt v tp -> tp epAt EndpointSt a (TimeConstraint b) -srcEp - , a -variable <- forall a. Set a -> [a] +srcEp + , a +variable <- forall a. Set a -> [a] S.elems (forall a v. Variables a v => a -> Set v variables EndpointSt a (TimeConstraint b) -srcEp forall a. Ord a => Set a -> Set a -> Set a +srcEp forall a. Ord a => Set a -> Set a -> Set a S.\\ forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap (forall a v. Variables a v => a -> Set v variables forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(a, EndpointSt a (TimeConstraint b))] -dfTargets) +dfTargets) ] optionsAfterBind :: F a x -> k -> TargetSystem (BusNetwork k a x t) tag v x t -> [EndpointSt a (TimeConstraint t)] -optionsAfterBind F a x -f k -tag TargetSystem{mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u -mUnit = BusNetwork{Map k (PU a x t) +optionsAfterBind F a x +f k +tag TargetSystem{mUnit :: forall u tag v x t. TargetSystem u tag v x t -> u +mUnit = BusNetwork{Map k (PU a x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) bnPus :: Map k (PU a x t) bnPus}} = @@ -599,80 +599,80 @@ ProcessorUnit u v x t => F v x -> u -> Either String u tryBind F a x -f (Map k (PU a x t) -bnPus forall k a. Ord k => Map k a -> k -> a +f (Map k (PU a x t) +bnPus forall k a. Ord k => Map k a -> k -> a M.! k -tag) of - Right PU a x t -pu' -> forall a. (a -> Bool) -> [a] -> [a] -filter (\(EndpointSt EndpointRole a -act TimeConstraint t +tag) of + Right PU a x t +pu' -> forall a. (a -> Bool) -> [a] -> [a] +filter (\(EndpointSt EndpointRole a +act TimeConstraint t _) -> EndpointRole a -act forall {a} {a} {a}. +act forall {a} {a} {a}. (Ord a, Variables a a, Variables a a) => a -> a -> Bool -`optionOf` F a x -f) forall a b. (a -> b) -> a -> b +`optionOf` F a x +f) forall a b. (a -> b) -> a -> b $ forall u v t. EndpointProblem u v t => u -> [EndpointSt v (TimeConstraint t)] endpointOptions PU a x t -pu' +pu' Either String (PU a x t) _ -> [] where - a -act optionOf :: a -> a -> Bool -`optionOf` a -f' = Bool -> Bool + a +act optionOf :: a -> a -> Bool +`optionOf` a +f' = Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall a. Set a -> Bool S.null (forall a v. Variables a v => a -> Set v variables a -act forall a. Ord a => Set a -> Set a -> Set a +act forall a. Ord a => Set a -> Set a -> Set a `S.intersection` forall a v. Variables a v => a -> Set v variables a -f') +f') -isSingleBind :: SynthesisDecision ctx m -> Bool +isSingleBind :: SynthesisDecision ctx m -> Bool isSingleBind :: forall ctx m. SynthesisDecision ctx m -> Bool -isSingleBind SynthesisDecision{p +isSingleBind SynthesisDecision{p metrics :: () metrics :: p metrics} | Just SingleBindMetrics{} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics :: Maybe BindMetrics = Bool +metrics :: Maybe BindMetrics = Bool True isSingleBind SynthesisDecision ctx m _ = Bool False -isMultiBind :: SynthesisDecision ctx m -> Bool +isMultiBind :: SynthesisDecision ctx m -> Bool isMultiBind :: forall ctx m. SynthesisDecision ctx m -> Bool -isMultiBind SynthesisDecision{p +isMultiBind SynthesisDecision{p metrics :: p metrics :: () -metrics} +metrics} | Just GroupBindMetrics{} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics :: Maybe BindMetrics = Bool +metrics :: Maybe BindMetrics = Bool True isMultiBind SynthesisDecision ctx m _ = Bool False -isObviousMultiBind :: SynthesisDecision ctx m -> Bool +isObviousMultiBind :: SynthesisDecision ctx m -> Bool isObviousMultiBind :: forall ctx m. SynthesisDecision ctx m -> Bool -isObviousMultiBind SynthesisDecision{p +isObviousMultiBind SynthesisDecision{p metrics :: p metrics :: () -metrics} +metrics} | Just GroupBindMetrics{pOnlyObviousBinds :: BindMetrics -> Bool pOnlyObviousBinds = Bool True} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics :: Maybe BindMetrics = Bool +metrics :: Maybe BindMetrics = Bool True isObviousMultiBind SynthesisDecision ctx m _ = Bool diff --git a/haddock/nitta/src/NITTA.Synthesis.Steps.BreakLoop.html b/haddock/nitta/src/NITTA.Synthesis.Steps.BreakLoop.html index 83911416b..fbb724655 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Steps.BreakLoop.html +++ b/haddock/nitta/src/NITTA.Synthesis.Steps.BreakLoop.html @@ -23,7 +23,7 @@ import NITTA.Model.TargetSystem import NITTA.Synthesis.Types -data BreakLoopMetrics = BreakLoopMetrics +data BreakLoopMetrics = BreakLoopMetrics deriving (forall x. Rep BreakLoopMetrics x -> BreakLoopMetrics forall x. BreakLoopMetrics -> Rep BreakLoopMetrics x forall a. @@ -32,46 +32,46 @@ $cfrom :: forall x. BreakLoopMetrics -> Rep BreakLoopMetrics x Generic) -instance ToJSON BreakLoopMetrics +instance ToJSON BreakLoopMetrics instance - (UnitTag tag, VarValTime v x t) => + (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls - (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) - (TargetSystem (BusNetwork tag v x t) tag v x t) - (BreakLoop v x) - (BreakLoop v x) + (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) + (TargetSystem (BusNetwork tag v x t) tag v x t) + (BreakLoop v x) + (BreakLoop v x) BreakLoopMetrics where - decisions :: SynthesisState + decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> [(BreakLoop v x, TargetSystem (BusNetwork tag v x t) tag v x t)] -decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t +decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t -sTarget} BreakLoop v x -o = [(BreakLoop v x -o, forall u v x. BreakLoopProblem u v x => u -> BreakLoop v x -> u +sTarget} BreakLoop v x +o = [(BreakLoop v x +o, forall u v x. BreakLoopProblem u v x => u -> BreakLoop v x -> u breakLoopDecision TargetSystem (BusNetwork tag v x t) tag v x t -sTarget BreakLoop v x -o)] +sTarget BreakLoop v x +o)] - parameters :: SynthesisState + parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics parameters SynthesisState{} BreakLoop{} BreakLoop v x _ = BreakLoopMetrics BreakLoopMetrics - estimate :: SynthesisState + estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> BreakLoop v x -> BreakLoop v x -> BreakLoopMetrics -> Float -estimate SynthesisState +estimate SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -_ctx BreakLoop v x -_o BreakLoop v x -_d BreakLoopMetrics +_ctx BreakLoop v x +_o BreakLoop v x +_d BreakLoopMetrics BreakLoopMetrics = Float 5000 \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.Steps.ConstantFolding.html b/haddock/nitta/src/NITTA.Synthesis.Steps.ConstantFolding.html index 624e66345..e33c945a5 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Steps.ConstantFolding.html +++ b/haddock/nitta/src/NITTA.Synthesis.Steps.ConstantFolding.html @@ -24,7 +24,7 @@ import NITTA.Model.Time import NITTA.Synthesis.Types -data ConstantFoldingMetrics = ConstantFoldingMetrics +data ConstantFoldingMetrics = ConstantFoldingMetrics deriving (forall x. Rep ConstantFoldingMetrics x -> ConstantFoldingMetrics forall x. ConstantFoldingMetrics -> Rep ConstantFoldingMetrics x forall a. @@ -33,35 +33,35 @@ $cfrom :: forall x. ConstantFoldingMetrics -> Rep ConstantFoldingMetrics x Generic) -instance ToJSON ConstantFoldingMetrics +instance ToJSON ConstantFoldingMetrics instance - (UnitTag tag, VarValTime v x t) => + (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls - (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) - (TargetSystem (BusNetwork tag v x t) tag v x t) - (ConstantFolding v x) - (ConstantFolding v x) + (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) + (TargetSystem (BusNetwork tag v x t) tag v x t) + (ConstantFolding v x) + (ConstantFolding v x) ConstantFoldingMetrics where - decisions :: SynthesisState + decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> [(ConstantFolding v x, TargetSystem (BusNetwork tag v x t) tag v x t)] -decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t +decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t -sTarget} ConstantFolding v x -o = [(ConstantFolding v x -o, forall u v x. +sTarget} ConstantFolding v x +o = [(ConstantFolding v x +o, forall u v x. ConstantFoldingProblem u v x => u -> ConstantFolding v x -> u constantFoldingDecision TargetSystem (BusNetwork tag v x t) tag v x t -sTarget ConstantFolding v x -o)] +sTarget ConstantFolding v x +o)] - parameters :: SynthesisState + parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x @@ -70,17 +70,17 @@ _ = ConstantFoldingMetrics ConstantFoldingMetrics - estimate :: SynthesisState + estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ConstantFolding v x -> ConstantFolding v x -> ConstantFoldingMetrics -> Float -estimate SynthesisState +estimate SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -_ctx ConstantFolding v x -_o ConstantFolding v x -_d ConstantFoldingMetrics +_ctx ConstantFolding v x +_o ConstantFolding v x +_d ConstantFoldingMetrics ConstantFoldingMetrics = Float 5050 \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.Steps.Dataflow.html b/haddock/nitta/src/NITTA.Synthesis.Steps.Dataflow.html index ea019cd96..fed37ee55 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Steps.Dataflow.html +++ b/haddock/nitta/src/NITTA.Synthesis.Steps.Dataflow.html @@ -48,7 +48,7 @@ import NITTA.Utils.Base (unionsMap) import Numeric.Interval.NonEmpty (Interval, inf, sup) -data DataflowMetrics = DataflowMetrics +data DataflowMetrics = DataflowMetrics { DataflowMetrics -> Float pWaitTime :: Float , DataflowMetrics -> Bool @@ -69,215 +69,215 @@ $cfrom :: forall x. DataflowMetrics -> Rep DataflowMetrics x Generic) -instance ToJSON DataflowMetrics +instance ToJSON DataflowMetrics instance - (UnitTag tag, VarValTime v x t) => + (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls - (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) - (TargetSystem (BusNetwork tag v x t) tag v x t) - (DataflowSt tag v (TimeConstraint t)) - (DataflowSt tag v (Interval t)) + (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) + (TargetSystem (BusNetwork tag v x t) tag v x t) + (DataflowSt tag v (TimeConstraint t)) + (DataflowSt tag v (Interval t)) DataflowMetrics where - decisions :: SynthesisState + decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> [(DataflowSt tag v (Interval t), TargetSystem (BusNetwork tag v x t) tag v x t)] -decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t +decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m -sTarget} DataflowSt tag v (TimeConstraint t) -o = let d :: DataflowSt tag v (Interval t) -d = forall t tag v. +sTarget} DataflowSt tag v (TimeConstraint t) +o = let d :: DataflowSt tag v (Interval t) +d = forall t tag v. Time t => DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) dataflowOption2decision DataflowSt tag v (TimeConstraint t) -o in [(DataflowSt tag v (Interval t) -d, forall u tag v t. +o in [(DataflowSt tag v (Interval t) +d, forall u tag v t. DataflowProblem u tag v t => u -> DataflowSt tag v (Interval t) -> u dataflowDecision TargetSystem (BusNetwork tag v x t) tag v x t -sTarget DataflowSt tag v (Interval t) -d)] +sTarget DataflowSt tag v (Interval t) +d)] - parameters :: SynthesisState + parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -parameters SynthesisState{Set v +parameters SynthesisState{Set v transferableVars :: Set v transferableVars :: forall m tag v x t. SynthesisState m tag v x t -> Set v -transferableVars, TargetSystem (BusNetwork tag v x t) tag v x t +transferableVars, TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m -sTarget, [ProcessWave v x] +sTarget, [ProcessWave v x] processWaves :: [ProcessWave v x] processWaves :: forall m tag v x t. SynthesisState m tag v x t -> [ProcessWave v x] -processWaves} DataflowSt{(tag, EndpointSt v (TimeConstraint t)) +processWaves} DataflowSt{(tag, EndpointSt v (TimeConstraint t)) dfSource :: forall tag v tp. DataflowSt tag v tp -> (tag, EndpointSt v tp) dfSource :: (tag, EndpointSt v (TimeConstraint t)) -dfSource, [(tag, EndpointSt v (TimeConstraint t))] +dfSource, [(tag, EndpointSt v (TimeConstraint t))] dfTargets :: forall tag v tp. DataflowSt tag v tp -> [(tag, EndpointSt v tp)] dfTargets :: [(tag, EndpointSt v (TimeConstraint t))] dfTargets} DataflowSt tag v (Interval t) _ = - let TimeConstraint{Interval t + let TimeConstraint{Interval t tcAvailable :: forall t. TimeConstraint t -> Interval t tcAvailable :: Interval t -tcAvailable, Interval t +tcAvailable, Interval t tcDuration :: forall t. TimeConstraint t -> Interval t tcDuration :: Interval t tcDuration} = forall v tp. EndpointSt v tp -> tp epAt forall a b. (a -> b) -> a -> b $ forall a b. (a, b) -> b snd (tag, EndpointSt v (TimeConstraint t)) -dfSource - vs :: Set v -vs = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 +dfSource + vs :: Set v +vs = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap (forall a v. Variables a v => a -> Set v variables forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(tag, EndpointSt v (TimeConstraint t))] -dfTargets - lvs :: Int -lvs = forall (t :: * -> *) a. Foldable t => t a -> Int +dfTargets + lvs :: Int +lvs = forall (t :: * -> *) a. Foldable t => t a -> Int length Set v -vs - waveNum :: Int -waveNum = +vs + waveNum :: Int +waveNum = forall (t :: * -> *) a. Foldable t => t a -> Int length forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. (a -> Bool) -> [a] -> [a] -takeWhile (\ProcessWave{[F v x] +takeWhile (\ProcessWave{[F v x] pwFs :: forall v x. ProcessWave v x -> [F v x] pwFs :: [F v x] pwFs} -> Int -lvs forall a. Eq a => a -> a -> Bool +lvs forall a. Eq a => a -> a -> Bool == forall (t :: * -> *) a. Foldable t => t a -> Int length (Set v -vs forall a. Ord a => Set a -> Set a -> Set a +vs forall a. Ord a => Set a -> Set a -> Set a `S.difference` forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall f v. Function f v => f -> Set v inputs [F v x] -pwFs)) +pwFs)) forall a b. (a -> b) -> a -> b $ [ProcessWave v x] -processWaves +processWaves in DataflowMetrics { pWaitTime :: Float pWaitTime = forall a b. (Integral a, Num b) => a -> b fromIntegral (forall a. Interval a -> a inf Interval t -tcAvailable) +tcAvailable) , pRestrictedTime :: Bool pRestrictedTime = forall a. Enum a => a -> Int fromEnum (forall a. Interval a -> a sup Interval t -tcDuration) forall a. Eq a => a -> a -> Bool +tcDuration) forall a. Eq a => a -> a -> Bool /= forall a. Bounded a => a maxBound , pNotTransferableInputs :: [Float] pNotTransferableInputs = - let fs :: [F v x] -fs = forall a f. WithFunctions a f => a -> [f] + let fs :: [F v x] +fs = forall a f. WithFunctions a f => a -> [f] functions forall a b. (a -> b) -> a -> b $ forall u tag v x t. TargetSystem u tag v x t -> u mUnit TargetSystem (BusNetwork tag v x t) tag v x t -sTarget - affectedFunctions :: [F v x] -affectedFunctions = forall a. (a -> Bool) -> [a] -> [a] -filter (\F v x -f -> Bool -> Bool +sTarget + affectedFunctions :: [F v x] +affectedFunctions = forall a. (a -> Bool) -> [a] -> [a] +filter (\F v x +f -> Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null (forall f v. Function f v => f -> Set v inputs F v x -f forall a. Ord a => Set a -> Set a -> Set a +f forall a. Ord a => Set a -> Set a -> Set a `S.intersection` Set v -vs)) [F v x] -fs - notTransferableVars :: [Set v] -notTransferableVars = forall a b. (a -> b) -> [a] -> [b] -map (\F v x -f -> forall f v. Function f v => f -> Set v +vs)) [F v x] +fs + notTransferableVars :: [Set v] +notTransferableVars = forall a b. (a -> b) -> [a] -> [b] +map (\F v x +f -> forall f v. Function f v => f -> Set v inputs F v x -f forall a. Ord a => Set a -> Set a -> Set a +f forall a. Ord a => Set a -> Set a -> Set a S.\\ Set v -transferableVars) [F v x] -affectedFunctions +transferableVars) [F v x] +affectedFunctions in forall a b. (a -> b) -> [a] -> [b] map (forall a b. (Integral a, Num b) => a -> b fromIntegral forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a. Foldable t => t a -> Int length) [Set v] -notTransferableVars +notTransferableVars , pFirstWaveOfTargetUse :: Float pFirstWaveOfTargetUse = forall a b. (Integral a, Num b) => a -> b fromIntegral Int -waveNum :: Float +waveNum :: Float } - estimate :: SynthesisState + estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> DataflowSt tag v (TimeConstraint t) -> DataflowSt tag v (Interval t) -> DataflowMetrics -> Float estimate - SynthesisState{Int + SynthesisState{Int numberOfDataflowOptions :: Int numberOfDataflowOptions :: forall m tag v x t. SynthesisState m tag v x t -> Int -numberOfDataflowOptions} - DataflowSt tag v (TimeConstraint t) -_o - DataflowSt tag v (Interval t) -_d +numberOfDataflowOptions} + DataflowSt tag v (TimeConstraint t) +_o + DataflowSt tag v (Interval t) +_d DataflowMetrics - { Float + { Float pWaitTime :: Float pWaitTime :: DataflowMetrics -> Float -pWaitTime - , [Float] +pWaitTime + , [Float] pNotTransferableInputs :: [Float] pNotTransferableInputs :: DataflowMetrics -> [Float] -pNotTransferableInputs - , Bool +pNotTransferableInputs + , Bool pRestrictedTime :: Bool pRestrictedTime :: DataflowMetrics -> Bool -pRestrictedTime - , Float +pRestrictedTime + , Float pFirstWaveOfTargetUse :: Float pFirstWaveOfTargetUse :: DataflowMetrics -> Float -pFirstWaveOfTargetUse +pFirstWaveOfTargetUse } = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum [ Float 2000 , (Int -numberOfDataflowOptions forall a. Ord a => a -> a -> Bool +numberOfDataflowOptions forall a. Ord a => a -> a -> Bool >= forall {a}. Num a => a threshold) forall {p}. Num p => Bool -> p -> p <?> Float 1000 , Bool -pRestrictedTime forall {p}. Num p => Bool -> p -> p +pRestrictedTime forall {p}. Num p => Bool -> p -> p <?> Float 200 , forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum [Float] -pNotTransferableInputs forall a. Num a => a -> a -> a +pNotTransferableInputs forall a. Num a => a -> a -> a * (-Float 5) , -Float -pWaitTime +pWaitTime , -Float -pFirstWaveOfTargetUse +pFirstWaveOfTargetUse ] threshold :: a diff --git a/haddock/nitta/src/NITTA.Synthesis.Steps.OptimizeAccum.html b/haddock/nitta/src/NITTA.Synthesis.Steps.OptimizeAccum.html index f7f57344a..88187226f 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Steps.OptimizeAccum.html +++ b/haddock/nitta/src/NITTA.Synthesis.Steps.OptimizeAccum.html @@ -24,7 +24,7 @@ import NITTA.Model.Time import NITTA.Synthesis.Types -data OptimizeAccumMetrics = OptimizeAccumMetrics +data OptimizeAccumMetrics = OptimizeAccumMetrics deriving (forall x. Rep OptimizeAccumMetrics x -> OptimizeAccumMetrics forall x. OptimizeAccumMetrics -> Rep OptimizeAccumMetrics x forall a. @@ -33,52 +33,52 @@ $cfrom :: forall x. OptimizeAccumMetrics -> Rep OptimizeAccumMetrics x Generic) -instance ToJSON OptimizeAccumMetrics +instance ToJSON OptimizeAccumMetrics instance - (UnitTag tag, VarValTime v x t) => + (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls - (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) - (TargetSystem (BusNetwork tag v x t) tag v x t) - (OptimizeAccum v x) - (OptimizeAccum v x) + (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) + (TargetSystem (BusNetwork tag v x t) tag v x t) + (OptimizeAccum v x) + (OptimizeAccum v x) OptimizeAccumMetrics where - decisions :: SynthesisState + decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> [(OptimizeAccum v x, TargetSystem (BusNetwork tag v x t) tag v x t)] -decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t +decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t -sTarget} OptimizeAccum v x -o = [(OptimizeAccum v x -o, forall u v x. +sTarget} OptimizeAccum v x +o = [(OptimizeAccum v x +o, forall u v x. OptimizeAccumProblem u v x => u -> OptimizeAccum v x -> u optimizeAccumDecision TargetSystem (BusNetwork tag v x t) tag v x t -sTarget OptimizeAccum v x -o)] +sTarget OptimizeAccum v x +o)] - parameters :: SynthesisState + parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics parameters SynthesisState{} OptimizeAccum{} OptimizeAccum v x _ = OptimizeAccumMetrics OptimizeAccumMetrics - estimate :: SynthesisState + estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> OptimizeAccum v x -> OptimizeAccum v x -> OptimizeAccumMetrics -> Float -estimate SynthesisState +estimate SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -_ctx OptimizeAccum v x -_o OptimizeAccum v x -_d OptimizeAccumMetrics +_ctx OptimizeAccum v x +_o OptimizeAccum v x +_d OptimizeAccumMetrics OptimizeAccumMetrics = Float 5000 \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.Steps.ResolveDeadlock.html b/haddock/nitta/src/NITTA.Synthesis.Steps.ResolveDeadlock.html index 7d517e7cc..611fa223f 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Steps.ResolveDeadlock.html +++ b/haddock/nitta/src/NITTA.Synthesis.Steps.ResolveDeadlock.html @@ -25,7 +25,7 @@ import NITTA.Model.TargetSystem import NITTA.Synthesis.Types -data ResolveDeadlockMetrics = ResolveDeadlockMetrics +data ResolveDeadlockMetrics = ResolveDeadlockMetrics { ResolveDeadlockMetrics -> Float pNumberOfLockedVariables :: Float , ResolveDeadlockMetrics -> Float @@ -41,58 +41,58 @@ $cfrom :: forall x. ResolveDeadlockMetrics -> Rep ResolveDeadlockMetrics x Generic) -instance ToJSON ResolveDeadlockMetrics +instance ToJSON ResolveDeadlockMetrics instance - (UnitTag tag, VarValTime v x t) => + (UnitTag tag, VarValTime v x t) => SynthesisDecisionCls - (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) - (TargetSystem (BusNetwork tag v x t) tag v x t) - (ResolveDeadlock v x) - (ResolveDeadlock v x) + (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) + (TargetSystem (BusNetwork tag v x t) tag v x t) + (ResolveDeadlock v x) + (ResolveDeadlock v x) ResolveDeadlockMetrics where - decisions :: SynthesisState + decisions :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> [(ResolveDeadlock v x, TargetSystem (BusNetwork tag v x t) tag v x t)] -decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t +decisions SynthesisState{TargetSystem (BusNetwork tag v x t) tag v x t sTarget :: forall m tag v x t. SynthesisState m tag v x t -> m sTarget :: TargetSystem (BusNetwork tag v x t) tag v x t -sTarget} ResolveDeadlock v x -o = [(ResolveDeadlock v x -o, forall u v x. +sTarget} ResolveDeadlock v x +o = [(ResolveDeadlock v x +o, forall u v x. ResolveDeadlockProblem u v x => u -> ResolveDeadlock v x -> u resolveDeadlockDecision TargetSystem (BusNetwork tag v x t) tag v x t -sTarget ResolveDeadlock v x -o)] +sTarget ResolveDeadlock v x +o)] - parameters :: SynthesisState + parameters :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics -parameters SynthesisState{Set v +parameters SynthesisState{Set v transferableVars :: forall m tag v x t. SynthesisState m tag v x t -> Set v transferableVars :: Set v -transferableVars} ResolveDeadlock{F v x +transferableVars} ResolveDeadlock{F v x newBuffer :: forall v x. ResolveDeadlock v x -> F v x newBuffer :: F v x newBuffer} ResolveDeadlock v x _ = - let buffered :: Set v -buffered = forall f v. Function f v => f -> Set v + let buffered :: Set v +buffered = forall f v. Function f v => f -> Set v outputs F v x -newBuffer +newBuffer in ResolveDeadlockMetrics { pNumberOfLockedVariables :: Float pNumberOfLockedVariables = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b $ forall a. Set a -> Int S.size Set v -buffered +buffered , pBufferCount :: Float pBufferCount = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b @@ -103,99 +103,99 @@ countSuffix forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] S.elems Set v -buffered +buffered , pNumberOfTransferableVariables :: Float pNumberOfTransferableVariables = forall a b. (Integral a, Num b) => a -> b fromIntegral (forall a. Set a -> Int S.size forall a b. (a -> b) -> a -> b $ Set v -buffered forall a. Ord a => Set a -> Set a -> Set a +buffered forall a. Ord a => Set a -> Set a -> Set a `S.intersection` Set v -transferableVars) +transferableVars) } - estimate :: SynthesisState + estimate :: SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t -> ResolveDeadlock v x -> ResolveDeadlock v x -> ResolveDeadlockMetrics -> Float -estimate SynthesisState{Maybe +estimate SynthesisState{Maybe (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) sParent :: forall m tag v x t. SynthesisState m tag v x t -> Maybe (Tree m tag v x t) sParent :: Maybe (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) -sParent} ResolveDeadlock v x -_o ResolveDeadlock v x -d ResolveDeadlockMetrics +sParent} ResolveDeadlock v x +_o ResolveDeadlock v x +d ResolveDeadlockMetrics _ | Int 0 forall a. Ord a => a -> a -> Bool < forall {a} {m} {tag} {v} {x} {t}. Show a => a -> Maybe (Tree m tag v x t) -> Int decisionRepeats ResolveDeadlock v x -d Maybe +d Maybe (Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) -sParent = -Float +sParent = -Float 2 - estimate SynthesisState{} ResolveDeadlock v x -_o ResolveDeadlock v x -_d ResolveDeadlockMetrics{Float + estimate SynthesisState{} ResolveDeadlock v x +_o ResolveDeadlock v x +_d ResolveDeadlockMetrics{Float pNumberOfLockedVariables :: Float pNumberOfLockedVariables :: ResolveDeadlockMetrics -> Float -pNumberOfLockedVariables, Float +pNumberOfLockedVariables, Float pBufferCount :: Float pBufferCount :: ResolveDeadlockMetrics -> Float -pBufferCount, Float +pBufferCount, Float pNumberOfTransferableVariables :: Float pNumberOfTransferableVariables :: ResolveDeadlockMetrics -> Float -pNumberOfTransferableVariables} = +pNumberOfTransferableVariables} = Float 1000 forall a. Num a => a -> a -> a + Float -pNumberOfLockedVariables +pNumberOfLockedVariables forall a. Num a => a -> a -> a - Float -pBufferCount forall a. Num a => a -> a -> a +pBufferCount forall a. Num a => a -> a -> a * Float 1000 forall a. Num a => a -> a -> a - Float 20 forall a. Num a => a -> a -> a * Float -pNumberOfTransferableVariables +pNumberOfTransferableVariables decisionRepeats :: a -> Maybe (Tree m tag v x t) -> Int -decisionRepeats a -d Maybe (Tree m tag v x t) -parent = - let ds :: [String] -ds = forall {m} {tag} {v} {x} {t}. Maybe (Tree m tag v x t) -> [String] +decisionRepeats a +d Maybe (Tree m tag v x t) +parent = + let ds :: [String] +ds = forall {m} {tag} {v} {x} {t}. Maybe (Tree m tag v x t) -> [String] toRootDecisionStrings Maybe (Tree m tag v x t) -parent +parent in forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] takeWhile (forall a. Eq a => a -> a -> Bool == forall a. Show a => a -> String show a -d) [String] -ds +d) [String] +ds toRootDecisionStrings :: Maybe (Tree m tag v x t) -> [String] -toRootDecisionStrings Maybe (Tree m tag v x t) -parent = +toRootDecisionStrings Maybe (Tree m tag v x t) +parent = forall a b. (a -> b) -> [a] -> [b] map ( ( \case - SynthesisDecision{d + SynthesisDecision{d decision :: () decision :: d decision} -> forall a. Show a => a -> String show d -decision +decision SynthesisDecision (SynthesisState m tag v x t) m _ -> String "" @@ -210,20 +210,20 @@ $ forall {m} {tag} {v} {x} {t}. Maybe (Tree m tag v x t) -> [Tree m tag v x t] toRoot Maybe (Tree m tag v x t) -parent +parent toRoot :: Maybe (Tree m tag v x t) -> [Tree m tag v x t] -toRoot (Just tree :: Tree m tag v x t -tree@Tree{sState :: forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t -sState = SynthesisState{Maybe (Tree m tag v x t) +toRoot (Just tree :: Tree m tag v x t +tree@Tree{sState :: forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t +sState = SynthesisState{Maybe (Tree m tag v x t) sParent :: Maybe (Tree m tag v x t) sParent :: forall m tag v x t. SynthesisState m tag v x t -> Maybe (Tree m tag v x t) -sParent}}) = Tree m tag v x t -tree forall a. a -> [a] -> [a] +sParent}}) = Tree m tag v x t +tree forall a. a -> [a] -> [a] : Maybe (Tree m tag v x t) -> [Tree m tag v x t] toRoot Maybe (Tree m tag v x t) -sParent +sParent toRoot Maybe (Tree m tag v x t) _ = [] \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Synthesis.Steps.html b/haddock/nitta/src/NITTA.Synthesis.Steps.html index 8061e34e4..70343663f 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Steps.html +++ b/haddock/nitta/src/NITTA.Synthesis.Steps.html @@ -29,29 +29,29 @@ import NITTA.Synthesis.Types (SynthesisDecision (SynthesisDecision, metrics)) isRefactor :: SynthesisDecision ctx m -> Bool -isRefactor SynthesisDecision{p +isRefactor SynthesisDecision{p metrics :: p metrics :: () -metrics} +metrics} | forall a. Maybe a -> Bool isJust (forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics :: Maybe BreakLoopMetrics) = Bool +metrics :: Maybe BreakLoopMetrics) = Bool True | forall a. Maybe a -> Bool isJust (forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics :: Maybe OptimizeAccumMetrics) = Bool +metrics :: Maybe OptimizeAccumMetrics) = Bool True | forall a. Maybe a -> Bool isJust (forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics :: Maybe ResolveDeadlockMetrics) = Bool +metrics :: Maybe ResolveDeadlockMetrics) = Bool True | forall a. Maybe a -> Bool isJust (forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics :: Maybe ConstantFoldingMetrics) = Bool +metrics :: Maybe ConstantFoldingMetrics) = Bool True isRefactor SynthesisDecision ctx m _ = Bool diff --git a/haddock/nitta/src/NITTA.Synthesis.Types.html b/haddock/nitta/src/NITTA.Synthesis.Types.html index 63b71add0..762e24b6c 100644 --- a/haddock/nitta/src/NITTA.Synthesis.Types.html +++ b/haddock/nitta/src/NITTA.Synthesis.Types.html @@ -67,18 +67,18 @@ import Servant -- | Default synthesis tree type. -type DefTree tag v x t = - Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t +type DefTree tag v x t = + Tree (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t {- | The synthesis method is a function, which manipulates a synthesis tree. It receives a node and explores it deeply by IO. -} -type SynthesisMethod tag v x t = DefTree tag v x t -> IO (DefTree tag v x t) +type SynthesisMethod tag v x t = DefTree tag v x t -> IO (DefTree tag v x t) {- | Shortcut for constraints in signatures of synthesis method functions. This used to be (VarValTime v x t, UnitTag tag). See below for more info. -} -type SynthesisMethodConstraints tag v x t = (VarValTimeJSON v x t, ToJSON tag, UnitTag tag) +type SynthesisMethodConstraints tag v x t = (VarValTimeJSON v x t, ToJSON tag, UnitTag tag) {- | Synthesis node ID. ID is a relative path, encoded as a sequence of an option index. @@ -90,62 +90,62 @@ sidSep = Char '-' -instance Show Sid where - show :: Sid -> String +instance Show Sid where + show :: Sid -> String show (Sid []) = [Char sidSep] - show (Sid [Int] -is) = forall {a}. Show a => [a] -> String -show' [Int] -is + show (Sid [Int] +is) = forall {a}. Show a => [a] -> String +show' [Int] +is where - show' :: [a] -> String -show' [] = String + show' :: [a] -> String +show' [] = String "" - show' (a -x : [a] -xs) = Char + show' (a +x : [a] +xs) = Char sidSep forall a. a -> [a] -> [a] : forall a. Show a => a -> String show a -x forall a. [a] -> [a] -> [a] +x forall a. [a] -> [a] -> [a] ++ [a] -> String -show' [a] -xs +show' [a] +xs -instance Read Sid where - readsPrec :: Int -> ReadS Sid +instance Read Sid where + readsPrec :: Int -> ReadS Sid readsPrec Int -_ [Char -x] | Char -x forall a. Eq a => a -> a -> Bool +_ [Char +x] | Char +x forall a. Eq a => a -> a -> Bool == Char sidSep = [([Int] -> Sid Sid [], String "")] - readsPrec Int -d (Char -x : String -xs) + readsPrec Int +d (Char +x : String +xs) | Char -x forall a. Eq a => a -> a -> Bool +x forall a. Eq a => a -> a -> Bool == Char sidSep - , let is :: [[(Int, String)]] -is = forall a b. (a -> b) -> [a] -> [b] + , let is :: [[(Int, String)]] +is = forall a b. (a -> b) -> [a] -> [b] map (forall a. Read a => Int -> ReadS a readsPrec Int -d) forall a b. (a -> b) -> a -> b +d) forall a b. (a -> b) -> a -> b $ forall a. Eq a => [a] -> [a] -> [[a]] splitOn [Char sidSep] String -xs +xs , Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any forall (t :: * -> *) a. Foldable t => t a -> Bool null [[(Int, String)]] -is = +is = [([Int] -> Sid Sid forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] @@ -153,63 +153,63 @@ fst forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [[(Int, String)]] -is, String +is, String "")] readsPrec Int _ String _ = [] instance Default Sid where - def :: Sid + def :: Sid def = [Int] -> Sid Sid [] -instance Semigroup Sid where - (Sid [Int] -a) <> :: Sid -> Sid -> Sid -<> (Sid [Int] -b) = [Int] -> Sid +instance Semigroup Sid where + (Sid [Int] +a) <> :: Sid -> Sid -> Sid +<> (Sid [Int] +b) = [Int] -> Sid Sid ([Int] -a forall a. Semigroup a => a -> a -> a +a forall a. Semigroup a => a -> a -> a <> [Int] -b) +b) -instance Monoid Sid where - mempty :: Sid +instance Monoid Sid where + mempty :: Sid mempty = [Int] -> Sid Sid [] - mappend :: Sid -> Sid -> Sid + mappend :: Sid -> Sid -> Sid mappend = forall a. Semigroup a => a -> a -> a (<>) -instance ToJSON Sid where - toJSON :: Sid -> Value -toJSON Sid -sid = forall a. ToJSON a => a -> Value +instance ToJSON Sid where + toJSON :: Sid -> Value +toJSON Sid +sid = forall a. ToJSON a => a -> Value toJSON forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> String show Sid -sid +sid -instance FromHttpApiData Sid where - parseUrlPiece :: Text -> Either Text Sid +instance FromHttpApiData Sid where + parseUrlPiece :: Text -> Either Text Sid parseUrlPiece = forall a b. b -> Either a b Right forall b c a. (b -> c) -> (a -> b) -> a -> c . forall {a}. Read a => Text -> a readText -- | Synthesis tree -data Tree m tag v x t = Tree +data Tree m tag v x t = Tree { forall m tag v x t. Tree m tag v x t -> Sid sID :: Sid , forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t -sState :: SynthesisState m tag v x t +sState :: SynthesisState m tag v x t , forall m tag v x t. Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m -sDecision :: SynthesisDecision (SynthesisState m tag v x t) m +sDecision :: SynthesisDecision (SynthesisState m tag v x t) m , forall m tag v x t. Tree m tag v x t -> TMVar [Tree m tag v x t] -sSubForestVar :: TMVar [Tree m tag v x t] +sSubForestVar :: TMVar [Tree m tag v x t] -- ^ lazy mutable field with different synthesis options and sub nodes , forall m tag v x t. Tree m tag v x t -> Bool isLeaf :: Bool @@ -232,31 +232,31 @@ . forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t sState -data SynthesisDecision ctx m where - Root :: SynthesisDecision ctx m - SynthesisDecision :: - (Typeable p, SynthesisDecisionCls ctx m o d p, Show d, ToJSON p, Viewable d DecisionView) => +data SynthesisDecision ctx m where + Root :: SynthesisDecision ctx m + SynthesisDecision :: + (Typeable p, SynthesisDecisionCls ctx m o d p, Show d, ToJSON p, Viewable d DecisionView) => {() -option :: o, () -decision :: d, () -metrics :: p, forall ctx m. SynthesisDecision ctx m -> Map Text Float +option :: o, () +decision :: d, () +metrics :: p, forall ctx m. SynthesisDecision ctx m -> Map Text Float scores :: Map Text Float} -> - SynthesisDecision ctx m + SynthesisDecision ctx m mlScoreKeyPrefix :: a mlScoreKeyPrefix = a "ml_" -defScore :: SynthesisDecision ctx m -> Float +defScore :: SynthesisDecision ctx m -> Float defScore :: forall ctx m. SynthesisDecision ctx m -> Float -defScore SynthesisDecision ctx m -sDecision = - let allScores :: Map Text Float -allScores = forall ctx m. SynthesisDecision ctx m -> Map Text Float +defScore SynthesisDecision ctx m +sDecision = + let allScores :: Map Text Float +allScores = forall ctx m. SynthesisDecision ctx m -> Map Text Float scores SynthesisDecision ctx m -sDecision - mlScores :: [(Text, Float)] -mlScores = forall a. (a -> Bool) -> [a] -> [a] +sDecision + mlScores :: [(Text, Float)] +mlScores = forall a. (a -> Bool) -> [a] -> [a] filter (Text -> Text -> Bool isPrefixOf forall {a}. IsString a => a mlScoreKeyPrefix forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -264,64 +264,64 @@ fst) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map Text Float -allScores +allScores in case [(Text, Float)] -mlScores of +mlScores of [] -> Map Text Float -allScores forall k a. Ord k => Map k a -> k -> a +allScores forall k a. Ord k => Map k a -> k -> a M.! Text "default" - (Text -_key, Float -mlScore) : [(Text, Float)] + (Text +_key, Float +mlScore) : [(Text, Float)] _ -> Float -mlScore +mlScore -class SynthesisDecisionCls ctx m o d p | ctx o -> m d p where - decisions :: ctx -> o -> [(d, m)] - parameters :: ctx -> o -> d -> p - estimate :: ctx -> o -> d -> p -> Float +class SynthesisDecisionCls ctx m o d p | ctx o -> m d p where + decisions :: ctx -> o -> [(d, m)] + parameters :: ctx -> o -> d -> p + estimate :: ctx -> o -> d -> p -> Float -data SynthesisState m tag v x t = SynthesisState +data SynthesisState m tag v x t = SynthesisState { forall m tag v x t. SynthesisState m tag v x t -> Maybe (Tree m tag v x t) -sParent :: Maybe (Tree m tag v x t) +sParent :: Maybe (Tree m tag v x t) , forall m tag v x t. SynthesisState m tag v x t -> m -sTarget :: m +sTarget :: m , forall m tag v x t. SynthesisState m tag v x t -> [Allocation tag] -sAllocationOptions :: [Allocation tag] +sAllocationOptions :: [Allocation tag] -- ^ PU allocation options cache , forall m tag v x t. SynthesisState m tag v x t -> [Bind tag v x] -sBindOptions :: [Bind tag v x] +sBindOptions :: [Bind tag v x] -- ^ bind options cache , forall m tag v x t. SynthesisState m tag v x t -> [ResolveDeadlock v x] -sResolveDeadlockOptions :: [ResolveDeadlock v x] +sResolveDeadlockOptions :: [ResolveDeadlock v x] , forall m tag v x t. SynthesisState m tag v x t -> [OptimizeAccum v x] -sOptimizeAccumOptions :: [OptimizeAccum v x] +sOptimizeAccumOptions :: [OptimizeAccum v x] , forall m tag v x t. SynthesisState m tag v x t -> [ConstantFolding v x] -sConstantFoldingOptions :: [ConstantFolding v x] +sConstantFoldingOptions :: [ConstantFolding v x] , forall m tag v x t. SynthesisState m tag v x t -> [BreakLoop v x] -sBreakLoopOptions :: [BreakLoop v x] +sBreakLoopOptions :: [BreakLoop v x] , forall m tag v x t. SynthesisState m tag v x t -> [DataflowSt tag v (TimeConstraint t)] -sDataflowOptions :: [DataflowSt tag v (TimeConstraint t)] +sDataflowOptions :: [DataflowSt tag v (TimeConstraint t)] -- ^ dataflow options cache , forall m tag v x t. SynthesisState m tag v x t -> Map (F v x) [tag] -bindingAlternative :: M.Map (F v x) [tag] +bindingAlternative :: M.Map (F v x) [tag] -- ^ a map from functions to possible processor unit tags , forall m tag v x t. SynthesisState m tag v x t -> Set (F v x) -possibleDeadlockBinds :: S.Set (F v x) +possibleDeadlockBinds :: S.Set (F v x) -- ^ a function set, which binding may cause dead lock , forall m tag v x t. SynthesisState m tag v x t -> Map v Int -bindWaves :: M.Map v Int +bindWaves :: M.Map v Int -- ^ if algorithm will be represented as a graph, where nodes - -- variables of not bound functions, edges - casuality, wave is a -- minimal number of a step from an initial node to selected , forall m tag v x t. SynthesisState m tag v x t -> [ProcessWave v x] -processWaves :: [ProcessWave v x] +processWaves :: [ProcessWave v x] -- ^ Execution waves of the algorithm. See detailed description in NITTA.Intermediate.Analysis module. , forall m tag v x t. SynthesisState m tag v x t -> Int numberOfProcessWaves :: Int @@ -330,11 +330,11 @@ numberOfDataflowOptions :: Int -- ^ number of dataflow options , forall m tag v x t. SynthesisState m tag v x t -> Set v -transferableVars :: S.Set v +transferableVars :: S.Set v -- ^ a variable set, which can be transferred on the current -- synthesis step , forall m tag v x t. SynthesisState m tag v x t -> Map tag Int -unitWorkloadInFunction :: M.Map tag Int +unitWorkloadInFunction :: M.Map tag Int -- ^ dictionary with number of bound functions for each unit } @@ -342,9 +342,9 @@ Bool True <?> :: Bool -> p -> p -<?> p -v = p -v +<?> p +v = p +v Bool False <?> p _ = p diff --git a/haddock/nitta/src/NITTA.Synthesis.html b/haddock/nitta/src/NITTA.Synthesis.html index 9bc1df535..3db180ca0 100644 --- a/haddock/nitta/src/NITTA.Synthesis.html +++ b/haddock/nitta/src/NITTA.Synthesis.html @@ -107,26 +107,26 @@ {- | Description of synthesis task. Applicable for target system synthesis and testing purpose. -} -data TargetSynthesis tag v x t = TargetSynthesis +data TargetSynthesis tag v x t = TargetSynthesis { forall tag v x t. TargetSynthesis tag v x t -> String tName :: String -- ^ target name, used for top level module name and project path , forall tag v x t. TargetSynthesis tag v x t -> BusNetwork tag v x t -tMicroArch :: BusNetwork tag v x t +tMicroArch :: BusNetwork tag v x t -- ^ composition of processor units, IO ports and its interconnect , forall tag v x t. TargetSynthesis tag v x t -> Maybe Text tSourceCode :: Maybe Text -- ^ optional application source code (lua) , forall tag v x t. TargetSynthesis tag v x t -> DataFlowGraph v x -tDFG :: DataFlowGraph v x +tDFG :: DataFlowGraph v x -- ^ algorithm in intermediate data flow graph representation (if -- tSourceCode present will be overwritten) , forall tag v x t. TargetSynthesis tag v x t -> [(v, [x])] -tReceivedValues :: [(v, [x])] +tReceivedValues :: [(v, [x])] -- ^ values from input interface for testing purpose , forall tag v x t. TargetSynthesis tag v x t -> SynthesisMethod tag v x t -tSynthesisMethod :: SynthesisMethod tag v x t +tSynthesisMethod :: SynthesisMethod tag v x t -- ^ synthesis method , forall tag v x t. TargetSynthesis tag v x t -> String tLibPath :: String @@ -144,8 +144,8 @@ -- ^ source code format type } -instance SynthesisMethodConstraints tag v x t => Default (TargetSynthesis tag v x t) where - def :: TargetSynthesis tag v x t +instance SynthesisMethodConstraints tag v x t => Default (TargetSynthesis tag v x t) where + def :: TargetSynthesis tag v x t def = TargetSynthesis { tName :: String @@ -187,8 +187,8 @@ Lua } -instance (UnitTag tag, VarValTime v x t) => ProcessorUnit (TargetSynthesis tag v x t) v x t where - tryBind :: F v x +instance (UnitTag tag, VarValTime v x t) => ProcessorUnit (TargetSynthesis tag v x t) v x t where + tryBind :: F v x -> TargetSynthesis tag v x t -> Either String (TargetSynthesis tag v x t) tryBind F v x @@ -196,37 +196,37 @@ _ = forall a. HasCallStack => String -> a error String "Not Implemented" - process :: TargetSynthesis tag v x t -> Process t (StepInfo v x t) -process TargetSynthesis{BusNetwork tag v x t + process :: TargetSynthesis tag v x t -> Process t (StepInfo v x t) +process TargetSynthesis{BusNetwork tag v x t tMicroArch :: BusNetwork tag v x t tMicroArch :: forall tag v x t. TargetSynthesis tag v x t -> BusNetwork tag v x t -tMicroArch} = forall u v x t. +tMicroArch} = forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process BusNetwork tag v x t -tMicroArch - parallelismType :: TargetSynthesis tag v x t -> ParallelismType -parallelismType TargetSynthesis{BusNetwork tag v x t +tMicroArch + parallelismType :: TargetSynthesis tag v x t -> ParallelismType +parallelismType TargetSynthesis{BusNetwork tag v x t tMicroArch :: BusNetwork tag v x t tMicroArch :: forall tag v x t. TargetSynthesis tag v x t -> BusNetwork tag v x t -tMicroArch} = forall u v x t. ProcessorUnit u v x t => u -> ParallelismType +tMicroArch} = forall u v x t. ProcessorUnit u v x t => u -> ParallelismType parallelismType BusNetwork tag v x t -tMicroArch +tMicroArch runTargetSynthesis :: TargetSynthesis tag v1 p t -> IO (Either String (TestbenchReport v1 p)) -runTargetSynthesis TargetSynthesis tag v1 p t -leaf = do - (DefTree tag v1 p t -_root, Either String (Project (BusNetwork tag v1 p t) v1 p) -prj) <- forall tag v x t. +runTargetSynthesis TargetSynthesis tag v1 p t +leaf = do + (DefTree tag v1 p t +_root, Either String (Project (BusNetwork tag v1 p t) v1 p) +prj) <- forall tag v x t. (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)) synthesizeTargetSystem TargetSynthesis tag v1 p t -leaf +leaf forall (t :: * -> *) (f :: * -> *) a b. (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) @@ -236,16 +236,16 @@ TargetSystemComponent u, Testable u v2 x2) => Project u v2 x2 -> IO (TestbenchReport v2 x2) runTestbench Either String (Project (BusNetwork tag v1 p t) v1 p) -prj +prj -synthesizeTargetSystem :: - (UnitTag tag, VarValTime v x t) => - TargetSynthesis tag v x t -> +synthesizeTargetSystem :: + (UnitTag tag, VarValTime v x t) => + TargetSynthesis tag v x t -> IO - ( DefTree tag v x t + ( DefTree tag v x t , Either String - (Project (BusNetwork tag v x t) v x) + (Project (BusNetwork tag v x t) v x) ) synthesizeTargetSystem :: forall tag v x t. (UnitTag tag, VarValTime v x t) => @@ -255,73 +255,73 @@ Either String (Project (BusNetwork tag v x t) v x)) synthesizeTargetSystem TargetSynthesis - { String + { String tName :: String tName :: forall tag v x t. TargetSynthesis tag v x t -> String -tName - , BusNetwork tag v x t +tName + , BusNetwork tag v x t tMicroArch :: BusNetwork tag v x t tMicroArch :: forall tag v x t. TargetSynthesis tag v x t -> BusNetwork tag v x t -tMicroArch - , Maybe Text +tMicroArch + , Maybe Text tSourceCode :: Maybe Text tSourceCode :: forall tag v x t. TargetSynthesis tag v x t -> Maybe Text -tSourceCode - , DataFlowGraph v x +tSourceCode + , DataFlowGraph v x tDFG :: DataFlowGraph v x tDFG :: forall tag v x t. TargetSynthesis tag v x t -> DataFlowGraph v x -tDFG - , [(v, [x])] +tDFG + , [(v, [x])] tReceivedValues :: [(v, [x])] tReceivedValues :: forall tag v x t. TargetSynthesis tag v x t -> [(v, [x])] -tReceivedValues - , SynthesisMethod tag v x t +tReceivedValues + , SynthesisMethod tag v x t tSynthesisMethod :: SynthesisMethod tag v x t tSynthesisMethod :: forall tag v x t. TargetSynthesis tag v x t -> SynthesisMethod tag v x t -tSynthesisMethod - , String +tSynthesisMethod + , String tLibPath :: String tLibPath :: forall tag v x t. TargetSynthesis tag v x t -> String -tLibPath - , String +tLibPath + , String tPath :: String tPath :: forall tag v x t. TargetSynthesis tag v x t -> String -tPath - , [String] +tPath + , [String] tTemplates :: [String] tTemplates :: forall tag v x t. TargetSynthesis tag v x t -> [String] -tTemplates - , Int +tTemplates + , Int tSimulationCycleN :: Int tSimulationCycleN :: forall tag v x t. TargetSynthesis tag v x t -> Int -tSimulationCycleN - , FrontendType +tSimulationCycleN + , FrontendType tSourceCodeType :: FrontendType tSourceCodeType :: forall tag v x t. TargetSynthesis tag v x t -> FrontendType -tSourceCodeType +tSourceCodeType } = do -- TODO: check that tName is a valid verilog module name forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (Char ' ' forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` String -tName) forall a b. (a -> b) -> a -> b +tName) forall a b. (a -> b) -> a -> b $ forall a. HasCallStack => String -> a error String "TargetSynthesis name contain wrong symbols" - DataFlowGraph v x -tDFG' <- forall b a. b -> (a -> b) -> Maybe a -> b + DataFlowGraph v x +tDFG' <- forall b a. b -> (a -> b) -> Maybe a -> b maybe (forall (m :: * -> *) a. Monad m => a -> m a return DataFlowGraph v x -tDFG) forall {v} {x}. +tDFG) forall {v} {x}. (IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => Text -> IO (DataFlowGraph v x) -translateToIntermediate Maybe Text -tSourceCode - DefTree tag v x t -root <- forall {tag} {x} {t} {v}. +translateToIntermediate Maybe Text +tSourceCode + DefTree tag v x t +root <- forall {tag} {x} {t} {v}. (UnitTag tag, Val x, Bounded t, Hashable v, Suffix v, Show t, Default t, Integral t, Typeable t, Typeable v, Ord v, ToString v, IsString v) => @@ -332,22 +332,22 @@ ProcessorUnit u v x t => u -> DataFlowGraph v x -> TargetSystem u tag v x t mkModelWithOneNetwork BusNetwork tag v x t -tMicroArch DataFlowGraph v x -tDFG') - Either String (Project (BusNetwork tag v x t) v x) -prj <- +tMicroArch DataFlowGraph v x +tDFG') + Either String (Project (BusNetwork tag v x t) v x) +prj <- DefTree tag v x t -> IO (Either String (DefTree tag v x t)) -synthesise DefTree tag v x t -root forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +synthesise DefTree tag v x t +root forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - Left String -err -> forall (m :: * -> *) a. Monad m => a -> m a + Left String +err -> forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a b. a -> Either a b Left String -err - Right DefTree tag v x t -leafNode -> do +err + Right DefTree tag v x t +leafNode -> do forall a b. b -> Either a b Right forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall {tag} {t} {tag1} {t1} {tag2} {v2} {x2} {t2}. @@ -356,54 +356,54 @@ Tree (TargetSystem (BusNetwork tag v x t) tag1 v x t1) tag2 v2 x2 t2 -> IO (Project (BusNetwork tag v x t) v x) -writeProject' DefTree tag v x t -leafNode +writeProject' DefTree tag v x t +leafNode forall (m :: * -> *) a. Monad m => a -> m a return (DefTree tag v x t -root, Either String (Project (BusNetwork tag v x t) v x) -prj) +root, Either String (Project (BusNetwork tag v x t) v x) +prj) where - translateToIntermediate :: Text -> IO (DataFlowGraph v x) -translateToIntermediate Text -src = do + translateToIntermediate :: Text -> IO (DataFlowGraph v x) +translateToIntermediate Text +src = do String -> String -> IO () infoM String "NITTA" String "Lua transpiler..." - let tmp :: DataFlowGraph v x -tmp = forall v x. FrontendResult v x -> DataFlowGraph v x + let tmp :: DataFlowGraph v x +tmp = forall v x. FrontendResult v x -> DataFlowGraph v x frDataFlow forall a b. (a -> b) -> a -> b $ forall {v} {x}. (IsString v, ToString v, Suffix v, Hashable v, Val x, Typeable v, Ord v) => FrontendType -> Text -> FrontendResult v x translate FrontendType -tSourceCodeType Text -src +tSourceCodeType Text +src String -> String -> IO () noticeM String "NITTA" String "Lua transpiler...ok" forall (m :: * -> *) a. Monad m => a -> m a return DataFlowGraph v x -tmp +tmp - synthesise :: DefTree tag v x t -> IO (Either String (DefTree tag v x t)) -synthesise DefTree tag v x t -root = do + synthesise :: DefTree tag v x t -> IO (Either String (DefTree tag v x t)) +synthesise DefTree tag v x t +root = do String -> String -> IO () infoM String "NITTA" String "synthesis process..." - DefTree tag v x t -node <- SynthesisMethod tag v x t -tSynthesisMethod DefTree tag v x t -root + DefTree tag v x t +node <- SynthesisMethod tag v x t +tSynthesisMethod DefTree tag v x t +root case (forall m tag v x t. Tree m tag v x t -> Bool isComplete DefTree tag v x t -node, forall m tag v x t. Tree m tag v x t -> Bool +node, forall m tag v x t. Tree m tag v x t -> Bool isLeaf DefTree tag v x t -node) of +node) of (Bool True, Bool True) -> do @@ -415,61 +415,61 @@ return forall a b. (a -> b) -> a -> b $ forall a b. b -> Either a b Right DefTree tag v x t -node +node (Bool False, Bool True) -> do - let msg :: String -msg = String + let msg :: String +msg = String "synthesis process...fail; is not complete" String -> String -> IO () noticeM String "NITTA" String -msg +msg forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a b. a -> Either a b Left String -msg +msg (Bool True, Bool False) -> do - let msg :: String -msg = String + let msg :: String +msg = String "synthesis process...fail; is not leaf" String -> String -> IO () noticeM String "NITTA" String -msg +msg forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a b. a -> Either a b Left String -msg +msg (Bool False, Bool False) -> do - let msg :: String -msg = String + let msg :: String +msg = String "synthesis process...fail; is not complete; is not leaf" String -> String -> IO () noticeM String "NITTA" String -msg +msg forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a b. a -> Either a b Left String -msg +msg - writeProject' :: Tree + writeProject' :: Tree (TargetSystem (BusNetwork tag v x t) tag1 v x t1) tag2 v2 x2 t2 -> IO (Project (BusNetwork tag v x t) v x) -writeProject' Tree +writeProject' Tree (TargetSystem (BusNetwork tag v x t) tag1 v x t1) tag2 v2 x2 t2 -leaf = do - String -pInProjectNittaPath <- forall a c b. (a -> c) -> (b -> c) -> Either a b -> c +leaf = do + String +pInProjectNittaPath <- forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (forall a. HasCallStack => String -> a error forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> String @@ -477,51 +477,51 @@ id forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [String] -> IO (Either Text String) collectNittaPath [String] -tTemplates - String -pwd <- IO String +tTemplates + String +pwd <- IO String getCurrentDirectory - let prj :: Project (BusNetwork tag v x t) v x -prj = + let prj :: Project (BusNetwork tag v x t) v x +prj = Project { pName :: Text pName = String -> Text T.pack String -tName +tName , pLibPath :: String pLibPath = String -tLibPath +tLibPath , pTargetProjectPath :: String pTargetProjectPath = String -tPath String -> String -> String +tPath String -> String -> String </> String -tName +tName , pAbsTargetProjectPath :: String pAbsTargetProjectPath = String -pwd String -> String -> String +pwd String -> String -> String </> String -tPath String -> String -> String +tPath String -> String -> String </> String -tName +tName , String pInProjectNittaPath :: String pInProjectNittaPath :: String pInProjectNittaPath , pAbsNittaPath :: String pAbsNittaPath = String -pwd String -> String -> String +pwd String -> String -> String </> String -tPath String -> String -> String +tPath String -> String -> String </> String -tName String -> String -> String +tName String -> String -> String </> String -pInProjectNittaPath +pInProjectNittaPath , pUnit :: BusNetwork tag v x t pUnit = forall {c} {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. Tree (TargetSystem c tag1 v1 x1 t1) tag2 v2 x2 t2 -> c targetUnit Tree (TargetSystem (BusNetwork tag v x t) tag1 v x t1) tag2 v2 x2 t2 -leaf +leaf , pUnitEnv :: UnitEnv (BusNetwork tag v x t) pUnitEnv = forall tag v x t. BusNetwork tag v x t -> UnitEnv (BusNetwork tag v x t) @@ -530,7 +530,7 @@ Tree (TargetSystem c tag1 v1 x1 t1) tag2 v2 x2 t2 -> c targetUnit Tree (TargetSystem (BusNetwork tag v x t) tag1 v x t1) tag2 v2 x2 t2 -leaf +leaf , -- because application algorithm can be refactored we need to use -- synthesised version pTestCntx :: Cntx v x @@ -538,35 +538,35 @@ (Var v, Val x, WithFunctions g (F v x)) => Int -> CycleCntx v x -> [(v, [x])] -> g -> Cntx v x simulateDataFlowGraph Int -tSimulationCycleN forall a. Default a => a +tSimulationCycleN forall a. Default a => a def [(v, [x])] -tReceivedValues forall a b. (a -> b) -> a -> b +tReceivedValues forall a b. (a -> b) -> a -> b $ forall {u} {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. Tree (TargetSystem u tag1 v1 x1 t1) tag2 v2 x2 t2 -> DataFlowGraph v1 x1 targetDFG Tree (TargetSystem (BusNetwork tag v x t) tag1 v x t1) tag2 v2 x2 t2 -leaf +leaf , pTemplates :: [String] pTemplates = [String] -tTemplates +tTemplates } forall {m} {v} {x}. (TargetSystemComponent m, Testable m v x) => Project m v x -> IO () writeProject Project (BusNetwork tag v x t) v x -prj +prj forall (m :: * -> *) a. Monad m => a -> m a return Project (BusNetwork tag v x t) v x -prj +prj {- | Make a model of NITTA process with one network and a specific algorithm. All functions are already bound to the network. -} mkModelWithOneNetwork :: u -> DataFlowGraph v x -> TargetSystem u tag v x t -mkModelWithOneNetwork u -arch DataFlowGraph v x -dfg = +mkModelWithOneNetwork u +arch DataFlowGraph v x +dfg = TargetSystem { mUnit :: u mUnit = forall (t :: * -> *) b a. @@ -575,12 +575,12 @@ foldl (forall a b c. (a -> b -> c) -> b -> a -> c flip forall {u} {v} {x} {t}. ProcessorUnit u v x t => F v x -> u -> u bind) u -arch forall a b. (a -> b) -> a -> b +arch forall a b. (a -> b) -> a -> b $ forall a f. WithFunctions a f => a -> [f] functions DataFlowGraph v x -dfg +dfg , mDataFlowGraph :: DataFlowGraph v x mDataFlowGraph = DataFlowGraph v x -dfg +dfg } \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.UIBackend.REST.html b/haddock/nitta/src/NITTA.UIBackend.REST.html index babccf80c..732a4a9b5 100644 --- a/haddock/nitta/src/NITTA.UIBackend.REST.html +++ b/haddock/nitta/src/NITTA.UIBackend.REST.html @@ -51,7 +51,7 @@ import System.Directory import System.FilePath -type SynthesisAPI tag v x t = +type SynthesisAPI tag v x t = ( Description "Get whole synthesis tree" :> "synthesisTree" :> Get '[JSON] (TreeView ShortNodeView) @@ -62,11 +62,11 @@ ) :<|> ( "node" :> Capture "sid" Sid - :> ( SynthesisTreeNavigationAPI tag v x t - :<|> NodeInspectionAPI tag v x t - :<|> TestBenchAPI v x - :<|> SynthesisMethodsAPI tag v x t - :<|> SynthesisPracticesAPI tag v x t + :> ( SynthesisTreeNavigationAPI tag v x t + :<|> NodeInspectionAPI tag v x t + :<|> TestBenchAPI v x + :<|> SynthesisMethodsAPI tag v x t + :<|> SynthesisPracticesAPI tag v x t ) ) @@ -88,8 +88,8 @@ :<|> ((String -> Int -> m (TestbenchReport v x)) :<|> ((m Sid :<|> (m Sid :<|> m Sid)) :<|> (m Sid :<|> (m Sid :<|> (m Sid :<|> (Int -> m Sid))))))))) -synthesisServer ctx :: BackendCtx tag2 v x b -ctx@BackendCtx{DefTree tag2 v x b +synthesisServer ctx :: BackendCtx tag2 v x b +ctx@BackendCtx{DefTree tag2 v x b root :: forall tag v x t. BackendCtx tag v x t -> DefTree tag v x t root :: DefTree tag2 v x b root} = @@ -99,17 +99,17 @@ Tree (TargetSystem u tag1 v1 x1 t1) tag2 v2 x2 t2 -> IO (TreeView ShortNodeView) viewNodeTree DefTree tag2 v x b -root) +root) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall v x t u tag. (VarValTime v x t, NextTick u t) => Tree (TargetSystem u tag v x t) tag v x t -> IO TreeInfo getTreeInfo DefTree tag2 v x b -root) +root) forall a b. a -> b -> a :<|> b -:<|> \Sid -sid -> +:<|> \Sid +sid -> forall {m :: * -> *} {m :: * -> *} {m :: * -> *} {tag1} {v1} {x1} {t1}. (MonadIO m, MonadIO m, MonadIO m, UnitTag tag1, Suffix v1, @@ -122,8 +122,8 @@ :<|> (m (Maybe (NodeView tag1 v1 x1 t1)) :<|> m [NodeView tag1 v1 x1 t1]) synthesisTreeNavigation BackendCtx tag2 v x b -ctx Sid -sid +ctx Sid +sid forall a b. a -> b -> a :<|> b :<|> forall {t} {v} {tag2} {x} {m :: * -> *} {m :: * -> *} {m :: * -> *} {m :: * -> *} {m :: * -> *} {m :: * -> *} {m :: * -> *} @@ -143,8 +143,8 @@ :<|> (m [UnitEndpoints tag2 v t] :<|> (m (MicroarchitectureDesc tag2) :<|> m (Debug tag2 v t))))))) nodeInspection BackendCtx tag2 v x b -ctx Sid -sid +ctx Sid +sid forall a b. a -> b -> a :<|> b :<|> forall {t} {v1} {tag2} {m :: * -> *} {p}. (Bounded t, Hashable v1, Suffix v1, ToJSONKey v1, UnitTag tag2, @@ -154,8 +154,8 @@ BackendCtx tag2 v1 p t -> Sid -> String -> Int -> m (TestbenchReport v1 p) testBench BackendCtx tag2 v x b -ctx Sid -sid +ctx Sid +sid forall a b. a -> b -> a :<|> b :<|> forall {v2} {x2} {t2} {tag2} {m :: * -> *} {m :: * -> *} {m :: * -> *}. @@ -165,8 +165,8 @@ Typeable t2, Show t2, Default t2, Integral t2, Ord v2) => BackendCtx tag2 v2 x2 t2 -> Sid -> m Sid :<|> (m Sid :<|> m Sid) synthesisMethods BackendCtx tag2 v x b -ctx Sid -sid +ctx Sid +sid forall a b. a -> b -> a :<|> b :<|> forall {v2} {x2} {t2} {tag2} {m :: * -> *} {m :: * -> *} {m :: * -> *} {m :: * -> *}. @@ -178,22 +178,22 @@ BackendCtx tag2 v2 x2 t2 -> Sid -> m Sid :<|> (m Sid :<|> (m Sid :<|> (Int -> m Sid))) synthesisPractices BackendCtx tag2 v x b -ctx Sid -sid +ctx Sid +sid -type SynthesisTreeNavigationAPI tag v x t = +type SynthesisTreeNavigationAPI tag v x t = Summary "Synthesis tree navigation" :> ( ( Description "Get list of synthesis nodes from the root to the specific node" :> "history" - :> Get '[JSON] [NodeView tag v x t] + :> Get '[JSON] [NodeView tag v x t] ) :<|> ( Description "Get edge to the parent" :> "parentEdge" - :> Get '[JSON] (Maybe (NodeView tag v x t)) + :> Get '[JSON] (Maybe (NodeView tag v x t)) ) :<|> ( Description "Get sub forest" :> "subForest" - :> Get '[JSON] [NodeView tag v x t] + :> Get '[JSON] [NodeView tag v x t] ) ) @@ -202,8 +202,8 @@ -> m [NodeView tag1 v1 x1 t1] :<|> (m (Maybe (NodeView tag1 v1 x1 t1)) :<|> m [NodeView tag1 v1 x1 t1]) -synthesisTreeNavigation ctx :: BackendCtx tag1 v1 x1 t1 -ctx@BackendCtx{Tree +synthesisTreeNavigation ctx :: BackendCtx tag1 v1 x1 t1 +ctx@BackendCtx{Tree (TargetSystem (BusNetwork tag1 v1 x1 t1) tag1 v1 x1 t1) tag1 v1 @@ -216,8 +216,8 @@ x1 t1 root :: forall tag v x t. BackendCtx tag v x t -> DefTree tag v x t -root} Sid -sid = +root} Sid +sid = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall a b. (a -> b) -> [a] -> [b] map forall t v. Viewable t v => t -> v @@ -243,14 +243,14 @@ x1 t1] getTreePathIO BackendCtx tag1 v1 x1 t1 -ctx Tree +ctx Tree (TargetSystem (BusNetwork tag1 v1 x1 t1) tag1 v1 x1 t1) tag1 v1 x1 t1 -root Sid -sid) +root Sid +sid) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -282,14 +282,14 @@ x1 t1) getTreeIO BackendCtx tag1 v1 x1 t1 -ctx Tree +ctx Tree (TargetSystem (BusNetwork tag1 v1 x1 t1) tag1 v1 x1 t1) tag1 v1 x1 t1 -root Sid -sid) +root Sid +sid) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall a b. (a -> b) -> [a] -> [b] @@ -315,7 +315,7 @@ x1 t1] subForestIO BackendCtx tag1 v1 x1 t1 -ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b +ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, @@ -337,19 +337,19 @@ x1 t1) getTreeIO BackendCtx tag1 v1 x1 t1 -ctx Tree +ctx Tree (TargetSystem (BusNetwork tag1 v1 x1 t1) tag1 v1 x1 t1) tag1 v1 x1 t1 -root Sid -sid)) +root Sid +sid)) -type NodeInspectionAPI tag v x t = +type NodeInspectionAPI tag v x t = Summary "Synthesis node inspection" :> ( ( Description "Get node info\n(see: NITTA.Synthesis.Tree.Node)" - :> Get '[JSON] (NodeView tag v x t) + :> Get '[JSON] (NodeView tag v x t) ) :<|> ( Description "Intermidiate reperesentation of the current version of the algorithm" :> "intermediateView" @@ -358,27 +358,27 @@ -- TODO: Replace by raw process fetching or add typescript types. :<|> ( Description "Computational process representation (deprecated)" :> "processTimelines" - :> Get '[JSON] (ProcessTimelines t) + :> Get '[JSON] (ProcessTimelines t) ) :<|> ( Description "Process Description for specific process unit" :> "process" - :> Get '[JSON] (Process t StepInfoView) + :> Get '[JSON] (Process t StepInfoView) ) :<|> ( Description "Process Description for specific process unit" :> "microarchitecture" - :> Capture "tag" tag + :> Capture "tag" tag :> "process" - :> Get '[JSON] (Process t StepInfoView) + :> Get '[JSON] (Process t StepInfoView) ) :<|> ( Description "Enpoint options for all process units" :> "endpoints" - :> Get '[JSON] [UnitEndpoints tag v t] + :> Get '[JSON] [UnitEndpoints tag v t] ) :<|> ( Description "Microarchitecture description" :> "microarchitecture" - :> Get '[JSON] (MicroarchitectureDesc tag) + :> Get '[JSON] (MicroarchitectureDesc tag) ) - :<|> ("debug" :> DebugAPI tag v t) + :<|> ("debug" :> DebugAPI tag v t) ) nodeInspection :: BackendCtx tag2 v x t @@ -390,12 +390,12 @@ :<|> ((tag2 -> m (Process t StepInfoView)) :<|> (m [UnitEndpoints tag2 v t] :<|> (m (MicroarchitectureDesc tag2) :<|> m (Debug tag2 v t))))))) -nodeInspection ctx :: BackendCtx tag2 v x t -ctx@BackendCtx{Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t +nodeInspection ctx :: BackendCtx tag2 v x t +ctx@BackendCtx{Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t root :: Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t root :: forall tag v x t. BackendCtx tag v x t -> DefTree tag v x t -root} Sid -sid = +root} Sid +sid = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall t v. Viewable t v => t -> v view forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -420,9 +420,9 @@ x1 t1) getTreeIO BackendCtx tag2 v x t -ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t -root Sid -sid) +ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t +root Sid +sid) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall {v} {x}. Label v => [F v x] -> GraphStructure GraphEdge @@ -454,9 +454,9 @@ x1 t1) getTreeIO BackendCtx tag2 v x t -ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t -root Sid -sid) +ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t +root Sid +sid) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall {t1} {v} {t2} {x}. @@ -492,9 +492,9 @@ x1 t1) getTreeIO BackendCtx tag2 v x t -ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t -root Sid -sid) +ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t +root Sid +sid) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall t v. Viewable t v => t -> v @@ -527,12 +527,12 @@ x1 t1) getTreeIO BackendCtx tag2 v x t -ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t -root Sid -sid) +ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t +root Sid +sid) forall a b. a -> b -> a :<|> b -:<|> (\tag2 -tag -> forall (m :: * -> *) a. MonadIO m => IO a -> m a +:<|> (\tag2 +tag -> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall t v. Viewable t v => t -> v view forall b c a. (b -> c) -> (a -> b) -> a -> c . forall u v x t. @@ -541,7 +541,7 @@ process forall b c a. (b -> c) -> (a -> b) -> a -> c . (forall k a. Ord k => Map k a -> k -> a M.! tag2 -tag) forall b c a. (b -> c) -> (a -> b) -> a -> c +tag) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) bnPus forall b c a. (b -> c) -> (a -> b) -> a -> c . forall {c} {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. @@ -568,9 +568,9 @@ x1 t1) getTreeIO BackendCtx tag2 v x t -ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t -root Sid -sid)) +ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t +root Sid +sid)) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall tag v t. Debug tag v t -> [UnitEndpoints tag v t] @@ -582,8 +582,8 @@ ToJSON tag2, ToJSON v2) => BackendCtx tag2 v2 x t -> Sid -> m (Debug tag2 v2 t) debug BackendCtx tag2 v x t -ctx Sid -sid) +ctx Sid +sid) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall tag v x t. @@ -614,9 +614,9 @@ x1 t1) getTreeIO BackendCtx tag2 v x t -ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t -root Sid -sid) +ctx Tree (TargetSystem (BusNetwork tag2 v x t) tag2 v x t) tag2 v x t +root Sid +sid) forall a b. a -> b -> a :<|> b :<|> forall {t} {x} {v2} {tag2} {m :: * -> *}. (Bounded t, Val x, ToJSONKey v2, Suffix v2, Hashable v2, @@ -625,10 +625,10 @@ ToJSON tag2, ToJSON v2) => BackendCtx tag2 v2 x t -> Sid -> m (Debug tag2 v2 t) debug BackendCtx tag2 v x t -ctx Sid -sid +ctx Sid +sid -type SynthesisMethodsAPI tag v x t = +type SynthesisMethodsAPI tag v x t = Summary "Synthesis methods is a method for full synthesis tree exploration. \ \Usually, it is more complicated than synthesis practice, but it is \ @@ -642,12 +642,12 @@ ) synthesisMethods :: BackendCtx tag2 v2 x2 t2 -> Sid -> m Sid :<|> (m Sid :<|> m Sid) -synthesisMethods ctx :: BackendCtx tag2 v2 x2 t2 -ctx@BackendCtx{DefTree tag2 v2 x2 t2 +synthesisMethods ctx :: BackendCtx tag2 v2 x2 t2 +ctx@BackendCtx{DefTree tag2 v2 x2 t2 root :: DefTree tag2 v2 x2 t2 root :: forall tag v x t. BackendCtx tag v x t -> DefTree tag v x t -root} Sid -sid = +root} Sid +sid = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall m tag v x t. Tree m tag v x t -> Sid sID forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -655,7 +655,7 @@ SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t stateOfTheArtSynthesisIO BackendCtx tag2 v2 x2 t2 -ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b +ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, @@ -677,9 +677,9 @@ x1 t1) getTreeIO BackendCtx tag2 v2 x2 t2 -ctx DefTree tag2 v2 x2 t2 -root Sid -sid)) +ctx DefTree tag2 v2 x2 t2 +root Sid +sid)) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall m tag v x t. Tree m tag v x t -> Sid @@ -688,7 +688,7 @@ SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t simpleSynthesisIO BackendCtx tag2 v2 x2 t2 -ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b +ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, @@ -710,9 +710,9 @@ x1 t1) getTreeIO BackendCtx tag2 v2 x2 t2 -ctx DefTree tag2 v2 x2 t2 -root Sid -sid)) +ctx DefTree tag2 v2 x2 t2 +root Sid +sid)) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall m tag v x t. Tree m tag v x t -> Sid @@ -721,7 +721,7 @@ SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t smartBindSynthesisIO BackendCtx tag2 v2 x2 t2 -ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b +ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, @@ -743,11 +743,11 @@ x1 t1) getTreeIO BackendCtx tag2 v2 x2 t2 -ctx DefTree tag2 v2 x2 t2 -root Sid -sid)) +ctx DefTree tag2 v2 x2 t2 +root Sid +sid)) -type SynthesisPracticesAPI tag v x t = +type SynthesisPracticesAPI tag v x t = Summary "SynthesisPractice is a set of small elements of the synthesis process." :> ( ( Description "Make the best synthesis step by the objective function" :> "bestStep" @@ -772,12 +772,12 @@ synthesisPractices :: BackendCtx tag2 v2 x2 t2 -> Sid -> m Sid :<|> (m Sid :<|> (m Sid :<|> (Int -> m Sid))) -synthesisPractices ctx :: BackendCtx tag2 v2 x2 t2 -ctx@BackendCtx{DefTree tag2 v2 x2 t2 +synthesisPractices ctx :: BackendCtx tag2 v2 x2 t2 +ctx@BackendCtx{DefTree tag2 v2 x2 t2 root :: DefTree tag2 v2 x2 t2 root :: forall tag v x t. BackendCtx tag v x t -> DefTree tag v x t -root} Sid -sid = +root} Sid +sid = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall m tag v x t. Tree m tag v x t -> Sid sID forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -785,7 +785,7 @@ SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t bestStepIO BackendCtx tag2 v2 x2 t2 -ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b +ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, @@ -807,9 +807,9 @@ x1 t1) getTreeIO BackendCtx tag2 v2 x2 t2 -ctx DefTree tag2 v2 x2 t2 -root Sid -sid)) +ctx DefTree tag2 v2 x2 t2 +root Sid +sid)) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall m tag v x t. Tree m tag v x t -> Sid @@ -818,7 +818,7 @@ SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t obviousBindThreadIO BackendCtx tag2 v2 x2 t2 -ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b +ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, @@ -840,9 +840,9 @@ x1 t1) getTreeIO BackendCtx tag2 v2 x2 t2 -ctx DefTree tag2 v2 x2 t2 -root Sid -sid)) +ctx DefTree tag2 v2 x2 t2 +root Sid +sid)) forall a b. a -> b -> a :<|> b :<|> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall m tag v x t. Tree m tag v x t -> Sid @@ -851,7 +851,7 @@ SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> SynthesisMethod tag v x t allBindsAndRefsIO BackendCtx tag2 v2 x2 t2 -ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b +ctx forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, @@ -873,20 +873,20 @@ x1 t1) getTreeIO BackendCtx tag2 v2 x2 t2 -ctx DefTree tag2 v2 x2 t2 -root Sid -sid)) +ctx DefTree tag2 v2 x2 t2 +root Sid +sid)) forall a b. a -> b -> a :<|> b -:<|> (\Int -deep -> forall (m :: * -> *) a. MonadIO m => IO a -> m a +:<|> (\Int +deep -> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (forall m tag v x t. Tree m tag v x t -> Sid sID forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (forall tag v x t. SynthesisMethodConstraints tag v x t => BackendCtx tag v x t -> Int -> SynthesisMethod tag v x t allBestThreadIO BackendCtx tag2 v2 x2 t2 -ctx Int -deep forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b +ctx Int +deep forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, @@ -908,37 +908,37 @@ x1 t1) getTreeIO BackendCtx tag2 v2 x2 t2 -ctx DefTree tag2 v2 x2 t2 -root Sid -sid))) +ctx DefTree tag2 v2 x2 t2 +root Sid +sid))) -type TestBenchAPI v x = +type TestBenchAPI v x = Summary "Get the report of testbench execution for the current node." :> "testbench" :> QueryParam' '[Required] "pName" String :> QueryParam' '[Required] "loopsNumber" Int - :> Post '[JSON] (TestbenchReport v x) + :> Post '[JSON] (TestbenchReport v x) testBench :: BackendCtx tag2 v1 p t -> Sid -> String -> Int -> m (TestbenchReport v1 p) -testBench ctx :: BackendCtx tag2 v1 p t -ctx@BackendCtx{DefTree tag2 v1 p t +testBench ctx :: BackendCtx tag2 v1 p t +ctx@BackendCtx{DefTree tag2 v1 p t root :: DefTree tag2 v1 p t root :: forall tag v x t. BackendCtx tag v x t -> DefTree tag v x t -root, [(v1, [p])] +root, [(v1, [p])] receivedValues :: forall tag v x t. BackendCtx tag v x t -> [(v, [x])] receivedValues :: [(v1, [p])] -receivedValues, String +receivedValues, String outputPath :: forall tag v x t. BackendCtx tag v x t -> String outputPath :: String -outputPath} Sid -sid String -pName Int -loopsNumber = forall (m :: * -> *) a. MonadIO m => IO a -> m a +outputPath} Sid +sid String +pName Int +loopsNumber = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ do - DefTree tag2 v1 p t -tree <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. + DefTree tag2 v1 p t +tree <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, ToJSON t1, ToJSON tag1, Typeable v1, Typeable t1, Ord v1, @@ -959,11 +959,11 @@ x1 t1) getTreeIO BackendCtx tag2 v1 p t -ctx DefTree tag2 v1 p t -root Sid -sid - String -pInProjectNittaPath <- forall a c b. (a -> c) -> (b -> c) -> Either a b -> c +ctx DefTree tag2 v1 p t +root Sid +sid + String +pInProjectNittaPath <- forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (forall a. HasCallStack => String -> a error forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> String @@ -975,51 +975,51 @@ forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall m tag v x t. Tree m tag v x t -> Bool isComplete DefTree tag2 v1 p t -tree) forall a b. (a -> b) -> a -> b +tree) forall a b. (a -> b) -> a -> b $ forall a. HasCallStack => String -> a error String "test bench not allow for non complete synthesis" - String -pwd <- IO String + String +pwd <- IO String getCurrentDirectory - let prj :: Project (BusNetwork tag2 v1 p t) v1 p -prj = + let prj :: Project (BusNetwork tag2 v1 p t) v1 p +prj = Project { pName :: Text pName = String -> Text T.pack String -pName +pName , pLibPath :: String pLibPath = String "hdl" , pTargetProjectPath :: String pTargetProjectPath = String -outputPath String -> String -> String +outputPath String -> String -> String </> String -pName +pName , pAbsTargetProjectPath :: String pAbsTargetProjectPath = String -pwd String -> String -> String +pwd String -> String -> String </> String -outputPath String -> String -> String +outputPath String -> String -> String </> String -pName +pName , String pInProjectNittaPath :: String pInProjectNittaPath :: String pInProjectNittaPath , pAbsNittaPath :: String pAbsNittaPath = String -pwd String -> String -> String +pwd String -> String -> String </> String -outputPath String -> String -> String +outputPath String -> String -> String </> String -pInProjectNittaPath +pInProjectNittaPath , pUnit :: BusNetwork tag2 v1 p t pUnit = forall {c} {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. Tree (TargetSystem c tag1 v1 x1 t1) tag2 v2 x2 t2 -> c targetUnit DefTree tag2 v1 p t -tree +tree , pUnitEnv :: UnitEnv (BusNetwork tag2 v1 p t) pUnitEnv = forall tag v x t. BusNetwork tag v x t -> UnitEnv (BusNetwork tag v x t) @@ -1027,20 +1027,20 @@ $ forall {c} {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. Tree (TargetSystem c tag1 v1 x1 t1) tag2 v2 x2 t2 -> c targetUnit DefTree tag2 v1 p t -tree +tree , pTestCntx :: Cntx v1 p pTestCntx = forall v x g. (Var v, Val x, WithFunctions g (F v x)) => Int -> CycleCntx v x -> [(v, [x])] -> g -> Cntx v x simulateDataFlowGraph Int -loopsNumber forall a. Default a => a +loopsNumber forall a. Default a => a def [(v1, [p])] -receivedValues forall a b. (a -> b) -> a -> b +receivedValues forall a b. (a -> b) -> a -> b $ forall {u} {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. Tree (TargetSystem u tag1 v1 x1 t1) tag2 v2 x2 t2 -> DataFlowGraph v1 x1 targetDFG DefTree tag2 v1 p t -tree +tree , pTemplates :: [String] pTemplates = [String] defProjectTemplates @@ -1049,23 +1049,23 @@ (TargetSystemComponent m, Testable m v x) => Project m v x -> IO () writeProject Project (BusNetwork tag2 v1 p t) v1 p -prj +prj forall {u} {a} {v1} {x1} {t} {v2} {p} {x2}. (WithFunctions u a, ProcessorUnit u v1 x1 t, Hashable v2, IsString v2, DefaultX u p, Val p, Show a, Read x2, TargetSystemComponent u, Testable u v2 x2) => Project u v2 x2 -> IO (TestbenchReport v2 x2) runTestbench Project (BusNetwork tag2 v1 p t) v1 p -prj +prj -- Helpers -data UnitEndpoints tag v t = UnitEndpoints +data UnitEndpoints tag v t = UnitEndpoints { forall tag v t. UnitEndpoints tag v t -> tag -unitTag :: tag +unitTag :: tag , forall tag v t. UnitEndpoints tag v t -> [EndpointSt v (TimeConstraint t)] -unitEndpoints :: [EndpointSt v (TimeConstraint t)] +unitEndpoints :: [EndpointSt v (TimeConstraint t)] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -1078,9 +1078,9 @@ $cfrom :: forall tag v t x. UnitEndpoints tag v t -> Rep (UnitEndpoints tag v t) x Generic) -instance (ToJSON tag, ToJSON t, ToJSON v, Time t) => ToJSON (UnitEndpoints tag v t) +instance (ToJSON tag, ToJSON t, ToJSON v, Time t) => ToJSON (UnitEndpoints tag v t) instance ToSample (UnitEndpoints String String Int) where - toSamples :: Proxy (UnitEndpoints String String Int) + toSamples :: Proxy (UnitEndpoints String String Int) -> [(Text, UnitEndpoints String String Int)] toSamples Proxy (UnitEndpoints String String Int) _ = @@ -1093,10 +1093,10 @@ , $sel:unitEndpoints:UnitEndpoints :: [EndpointSt String (TimeConstraint Int)] unitEndpoints = [ EndpointSt{epRole :: EndpointRole String -epRole = forall v. v -> EndpointRole v +epRole = forall v. v -> EndpointRole v Target String "x", epAt :: TimeConstraint Int -epAt = forall t. Interval t -> Interval t -> TimeConstraint t +epAt = forall t. Interval t -> Interval t -> TimeConstraint t TimeConstraint (Int 1 forall a. Ord a => a -> a -> Interval a ... Int @@ -1110,15 +1110,15 @@ -- Debug -- | Type for CAD debugging. Used for extracting internal information. -data Debug tag v t = Debug +data Debug tag v t = Debug { forall tag v t. Debug tag v t -> [UnitEndpoints tag v t] -dbgEndpointOptions :: [UnitEndpoints tag v t] +dbgEndpointOptions :: [UnitEndpoints tag v t] , forall tag v t. Debug tag v t -> [(Text, [Lock v])] -dbgFunctionLocks :: [(T.Text, [Lock v])] +dbgFunctionLocks :: [(T.Text, [Lock v])] , forall tag v t. Debug tag v t -> [(Text, [Lock v])] -dbgCurrentStateFunctionLocks :: [(T.Text, [Lock v])] +dbgCurrentStateFunctionLocks :: [(T.Text, [Lock v])] , forall tag v t. Debug tag v t -> [(tag, [Lock v])] -dbgPULocks :: [(tag, [Lock v])] +dbgPULocks :: [(tag, [Lock v])] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -1128,23 +1128,23 @@ $cfrom :: forall tag v t x. Debug tag v t -> Rep (Debug tag v t) x Generic) -instance (ToJSON tag, ToJSON v, ToJSON t, Time t) => ToJSON (Debug tag v t) +instance (ToJSON tag, ToJSON v, ToJSON t, Time t) => ToJSON (Debug tag v t) -instance ToSample (Debug String String Int) -- where toSamples _ = noSamples -instance ToSample (EndpointSt String (TimeConstraint Int)) where toSamples :: Proxy (EndpointSt String (TimeConstraint Int)) +instance ToSample (Debug String String Int) -- where toSamples _ = noSamples +instance ToSample (EndpointSt String (TimeConstraint Int)) where toSamples :: Proxy (EndpointSt String (TimeConstraint Int)) -> [(Text, EndpointSt String (TimeConstraint Int))] -toSamples Proxy (EndpointSt String (TimeConstraint Int)) +toSamples Proxy (EndpointSt String (TimeConstraint Int)) _ = forall a. [(Text, a)] noSamples -instance ToSample Char where toSamples :: Proxy Char -> [(Text, Char)] -toSamples Proxy Char +instance ToSample Char where toSamples :: Proxy Char -> [(Text, Char)] +toSamples Proxy Char _ = forall a. [(Text, a)] noSamples -instance UnitTag tag => ToSample (Lock tag) where - toSamples :: Proxy (Lock tag) -> [(Text, Lock tag)] -toSamples Proxy (Lock tag) +instance UnitTag tag => ToSample (Lock tag) where + toSamples :: Proxy (Lock tag) -> [(Text, Lock tag)] +toSamples Proxy (Lock tag) _ = forall a. a -> [(Text, a)] singleSample Lock{locked :: tag locked = tag @@ -1152,9 +1152,9 @@ lockBy = tag "a"} -instance {-# OVERLAPS #-} UnitTag tag => ToSample [(T.Text, [Lock tag])] where - toSamples :: Proxy [(Text, [Lock tag])] -> [(Text, [(Text, [Lock tag])])] -toSamples Proxy [(Text, [Lock tag])] +instance {-# OVERLAPS #-} UnitTag tag => ToSample [(T.Text, [Lock tag])] where + toSamples :: Proxy [(Text, [Lock tag])] -> [(Text, [(Text, [Lock tag])])] +toSamples Proxy [(Text, [Lock tag])] _ = forall a. a -> [(Text, a)] singleSample [(Text "PU or function tag", [Lock{locked :: tag @@ -1163,23 +1163,23 @@ lockBy = tag "a"}])] -type DebugAPI tag v t = +type DebugAPI tag v t = Description "Debuging interface to fast access to internal state \ \(see NITTA.UIBackend.REST.Debug)" - :> Get '[JSON] (Debug tag v t) + :> Get '[JSON] (Debug tag v t) debug :: BackendCtx tag2 v2 x t -> Sid -> m (Debug tag2 v2 t) -debug ctx :: BackendCtx tag2 v2 x t -ctx@BackendCtx{DefTree tag2 v2 x t +debug ctx :: BackendCtx tag2 v2 x t +ctx@BackendCtx{DefTree tag2 v2 x t root :: DefTree tag2 v2 x t root :: forall tag v x t. BackendCtx tag v x t -> DefTree tag v x t -root} Sid -sid = forall (m :: * -> *) a. MonadIO m => IO a -> m a +root} Sid +sid = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ do - DefTree tag2 v2 x t -tree <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. + DefTree tag2 v2 x t +tree <- forall {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. (UnitTag tag1, Hashable v1, Suffix v1, Val x1, Bounded t1, ToJSONKey v1, Show t1, Default t1, Integral t1, ToJSON v1, ToJSON t1, ToJSON tag1, Typeable v1, Typeable t1, Ord v1, @@ -1200,29 +1200,29 @@ x1 t1) getTreeIO BackendCtx tag2 v2 x t -ctx DefTree tag2 v2 x t -root Sid -sid - let dbgFunctionLocks :: [(F v2 x, [Lock v2])] -dbgFunctionLocks = forall a b. (a -> b) -> [a] -> [b] -map (\F v2 x -f -> (F v2 x -f, forall x v. Locks x v => x -> [Lock v] +ctx DefTree tag2 v2 x t +root Sid +sid + let dbgFunctionLocks :: [(F v2 x, [Lock v2])] +dbgFunctionLocks = forall a b. (a -> b) -> [a] -> [b] +map (\F v2 x +f -> (F v2 x +f, forall x v. Locks x v => x -> [Lock v] locks F v2 x -f)) forall a b. (a -> b) -> a -> b +f)) forall a b. (a -> b) -> a -> b $ forall a f. WithFunctions a f => a -> [f] functions forall a b. (a -> b) -> a -> b $ forall {c} {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. Tree (TargetSystem c tag1 v1 x1 t1) tag2 v2 x2 t2 -> c targetUnit DefTree tag2 v2 x t -tree - already :: Set v2 -already = forall {u} {a1} {x} {t}. ProcessorUnit u a1 x t => u -> Set a1 +tree + already :: Set v2 +already = forall {u} {a1} {x} {t}. ProcessorUnit u a1 x t => u -> Set a1 transferred forall a b. (a -> b) -> a -> b $ forall {c} {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. Tree (TargetSystem c tag1 v1 x1 t1) tag2 v2 x2 t2 -> c targetUnit DefTree tag2 v2 x t -tree +tree forall (m :: * -> *) a. Monad m => a -> m a return Debug @@ -1230,11 +1230,11 @@ dbgEndpointOptions = forall {v} {a} {x} {t}. Ord v => BusNetwork a v x t -> [UnitEndpoints a v t] -endpointOptions' forall a b. (a -> b) -> a -> b +endpointOptions' forall a b. (a -> b) -> a -> b $ forall {c} {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. Tree (TargetSystem c tag1 v1 x1 t1) tag2 v2 x2 t2 -> c targetUnit DefTree tag2 v2 x t -tree +tree , $sel:dbgFunctionLocks:Debug :: [(Text, [Lock v2])] dbgFunctionLocks = forall a b. (a -> b) -> [a] -> [b] map (forall (p :: * -> * -> *) a b c. @@ -1242,31 +1242,31 @@ (a -> b) -> p a c -> p b c first forall {a}. Show a => a -> Text showText) [(F v2 x, [Lock v2])] -dbgFunctionLocks +dbgFunctionLocks , $sel:dbgCurrentStateFunctionLocks:Debug :: [(Text, [Lock v2])] dbgCurrentStateFunctionLocks = [ (forall {a}. Show a => a -> Text showText F v2 x -f, forall a. (a -> Bool) -> [a] -> [a] -filter (\Lock{v2 +f, forall a. (a -> Bool) -> [a] -> [a] +filter (\Lock{v2 lockBy :: v2 lockBy :: forall v. Lock v -> v -lockBy, v2 +lockBy, v2 locked :: v2 locked :: forall v. Lock v -> v -locked} -> forall a. Ord a => a -> Set a -> Bool +locked} -> forall a. Ord a => a -> Set a -> Bool S.notMember v2 -lockBy Set v2 -already Bool -> Bool -> Bool +lockBy Set v2 +already Bool -> Bool -> Bool && forall a. Ord a => a -> Set a -> Bool S.notMember v2 -locked Set v2 -already) [Lock v2] -ls) - | (F v2 x -f, [Lock v2] -ls) <- [(F v2 x, [Lock v2])] -dbgFunctionLocks +locked Set v2 +already) [Lock v2] +ls) + | (F v2 x +f, [Lock v2] +ls) <- [(F v2 x, [Lock v2])] +dbgFunctionLocks ] , $sel:dbgPULocks:Debug :: [(tag2, [Lock v2])] dbgPULocks = forall a b. (a -> b) -> [a] -> [b] @@ -1282,14 +1282,14 @@ $ forall {c} {tag1} {v1} {x1} {t1} {tag2} {v2} {x2} {t2}. Tree (TargetSystem c tag1 v1 x1 t1) tag2 v2 x2 t2 -> c targetUnit DefTree tag2 v2 x t -tree +tree } where - endpointOptions' :: BusNetwork a v x t -> [UnitEndpoints a v t] -endpointOptions' BusNetwork{Map a (PU v x t) + endpointOptions' :: BusNetwork a v x t -> [UnitEndpoints a v t] +endpointOptions' BusNetwork{Map a (PU v x t) bnPus :: Map a (PU v x t) bnPus :: forall tag v x t. BusNetwork tag v x t -> Map tag (PU v x t) -bnPus} = forall a b. (a -> b) -> [a] -> [b] +bnPus} = forall a b. (a -> b) -> [a] -> [b] map (forall a b c. (a -> b -> c) -> (a, b) -> c uncurry forall tag v t. tag -> [EndpointSt v (TimeConstraint t)] -> UnitEndpoints tag v t @@ -1303,28 +1303,28 @@ endpointOptions) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map a (PU v x t) -bnPus +bnPus -- API Description instance ToCapture (Capture "sid" Sid) where - toCapture :: Proxy (Capture "sid" Sid) -> DocCapture + toCapture :: Proxy (Capture "sid" Sid) -> DocCapture toCapture Proxy (Capture "sid" Sid) _ = String -> String -> DocCapture DocCapture String "nId" String "Synthesis node ID (see NITTA.Synthesis.Tree.NId)" -instance ToCapture (Capture "tag" tag) where - toCapture :: Proxy (Capture "tag" tag) -> DocCapture -toCapture Proxy (Capture "tag" tag) +instance ToCapture (Capture "tag" tag) where + toCapture :: Proxy (Capture "tag" tag) -> DocCapture +toCapture Proxy (Capture "tag" tag) _ = String -> String -> DocCapture DocCapture String "tag" String "Only process unit with specific tag" -instance ToParam (QueryParam' mods "deep" Int) where - toParam :: Proxy (QueryParam' mods "deep" Int) -> DocQueryParam +instance ToParam (QueryParam' mods "deep" Int) where + toParam :: Proxy (QueryParam' mods "deep" Int) -> DocQueryParam toParam Proxy (QueryParam' mods "deep" Int) _ = String -> [String] -> String -> ParamKind -> DocQueryParam @@ -1338,9 +1338,9 @@ ParamKind Normal -instance ToParam (QueryParam' mods "pName" String) where - toParam :: Proxy (QueryParam' mods "pName" String) -> DocQueryParam -toParam Proxy (QueryParam' mods "pName" String) +instance ToParam (QueryParam' mods "pName" String) where + toParam :: Proxy (QueryParam' mods "pName" String) -> DocQueryParam +toParam Proxy (QueryParam' mods "pName" String) _ = String -> [String] -> String -> ParamKind -> DocQueryParam DocQueryParam @@ -1353,9 +1353,9 @@ ParamKind Normal -instance ToParam (QueryParam' mods "loopsNumber" Int) where - toParam :: Proxy (QueryParam' mods "loopsNumber" Int) -> DocQueryParam -toParam Proxy (QueryParam' mods "loopsNumber" Int) +instance ToParam (QueryParam' mods "loopsNumber" Int) where + toParam :: Proxy (QueryParam' mods "loopsNumber" Int) -> DocQueryParam +toParam Proxy (QueryParam' mods "loopsNumber" Int) _ = String -> [String] -> String -> ParamKind -> DocQueryParam DocQueryParam String "loopsNumber" [String @@ -1364,8 +1364,8 @@ Normal instance ToSample Sid where - toSamples :: Proxy Sid -> [(Text, Sid)] -toSamples Proxy Sid + toSamples :: Proxy Sid -> [(Text, Sid)] +toSamples Proxy Sid _ = [(Text "The synthesis node path from the root by edge indexes.", [Int] -> Sid Sid [Int @@ -1373,89 +1373,89 @@ 1, Int 3])] -instance Time t => ToSample (Process t StepInfoView) where - toSamples :: Proxy (Process t StepInfoView) -> [(Text, Process t StepInfoView)] -toSamples Proxy (Process t StepInfoView) +instance Time t => ToSample (Process t StepInfoView) where + toSamples :: Proxy (Process t StepInfoView) -> [(Text, Process t StepInfoView)] +toSamples Proxy (Process t StepInfoView) _ = [ ( Text "for process unit" , Process { steps :: [Step t StepInfoView] -steps = +steps = [ Step{pID :: Int -pID = Int +pID = Int 6, pInterval :: Interval t -pInterval = t +pInterval = t 0 forall a. Ord a => a -> a -> Interval a ... t 5, pDesc :: StepInfoView -pDesc = Text -> StepInfoView +pDesc = Text -> StepInfoView StepInfoView Text "Intermediate+x_0#0 +1@const#0 = x#0;"} , Step{pID :: Int -pID = Int +pID = Int 5, pInterval :: Interval t -pInterval = t +pInterval = t 4 forall a. Ord a => a -> a -> Interval a ... t 4, pDesc :: StepInfoView -pDesc = Text -> StepInfoView +pDesc = Text -> StepInfoView StepInfoView Text "InstructionOut"} , Step{pID :: Int -pID = Int +pID = Int 4, pInterval :: Interval t -pInterval = t +pInterval = t 5 forall a. Ord a => a -> a -> Interval a ... t 5, pDesc :: StepInfoView -pDesc = Text -> StepInfoView +pDesc = Text -> StepInfoView StepInfoView Text "EndpointSource x#0"} , Step{pID :: Int -pID = Int +pID = Int 3, pInterval :: Interval t -pInterval = t +pInterval = t 2 forall a. Ord a => a -> a -> Interval a ... t 2, pDesc :: StepInfoView -pDesc = Text -> StepInfoView +pDesc = Text -> StepInfoView StepInfoView Text "InstructionLoad False"} , Step{pID :: Int -pID = Int +pID = Int 2, pInterval :: Interval t -pInterval = t +pInterval = t 2 forall a. Ord a => a -> a -> Interval a ... t 2, pDesc :: StepInfoView -pDesc = Text -> StepInfoView +pDesc = Text -> StepInfoView StepInfoView Text "EndpointTarget 1@const#0"} , Step{pID :: Int -pID = Int +pID = Int 1, pInterval :: Interval t -pInterval = t +pInterval = t 1 forall a. Ord a => a -> a -> Interval a ... t 1, pDesc :: StepInfoView -pDesc = Text -> StepInfoView +pDesc = Text -> StepInfoView StepInfoView Text "InstructionResetAndLoad False"} , Step{pID :: Int -pID = Int +pID = Int 0, pInterval :: Interval t -pInterval = t +pInterval = t 1 forall a. Ord a => a -> a -> Interval a ... t 1, pDesc :: StepInfoView -pDesc = Text -> StepInfoView +pDesc = Text -> StepInfoView StepInfoView Text "EndpointTarget x_0#0"} ] , relations :: [Relation] -relations = +relations = [ Int -> Int -> Relation Vertical Int 6 Int @@ -1482,22 +1482,22 @@ 1 ] , nextTick_ :: t -nextTick_ = t +nextTick_ = t 5 , nextUid :: Int -nextUid = Int +nextUid = Int 7 } ) ] -instance UnitTag tag => ToSample (MicroarchitectureDesc tag) where - toSamples :: Proxy (MicroarchitectureDesc tag) +instance UnitTag tag => ToSample (MicroarchitectureDesc tag) where + toSamples :: Proxy (MicroarchitectureDesc tag) -> [(Text, MicroarchitectureDesc tag)] -toSamples Proxy (MicroarchitectureDesc tag) +toSamples Proxy (MicroarchitectureDesc tag) _ = - let BusNetwork tag String (IntX 32) Int -bn :: BusNetwork tag String (IntX 32) Int = forall t k v x a. + let BusNetwork tag String (IntX 32) Int +bn :: BusNetwork tag String (IntX 32) Int = forall t k v x a. Default t => k -> IOSynchronization @@ -1538,5 +1538,5 @@ Typeable x => BusNetwork tag v x t -> MicroarchitectureDesc tag microarchitectureDesc BusNetwork tag String (IntX 32) Int -bn +bn \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.UIBackend.Timeline.html b/haddock/nitta/src/NITTA.UIBackend.Timeline.html index dbcc01512..a313d255e 100644 --- a/haddock/nitta/src/NITTA.UIBackend.Timeline.html +++ b/haddock/nitta/src/NITTA.UIBackend.Timeline.html @@ -29,9 +29,9 @@ import Numeric.Interval.NonEmpty import Servant.Docs -data ProcessTimelines t = ProcessTimelines +data ProcessTimelines t = ProcessTimelines { forall t. ProcessTimelines t -> [TimelineWithViewPoint t] -timelines :: [TimelineWithViewPoint t] +timelines :: [TimelineWithViewPoint t] , forall t. ProcessTimelines t -> [(ProcessStepID, ProcessStepID)] verticalRelations :: [(ProcessStepID, ProcessStepID)] } @@ -43,11 +43,11 @@ $cfrom :: forall t x. ProcessTimelines t -> Rep (ProcessTimelines t) x Generic) -data TimelineWithViewPoint t = TimelineWithViewPoint +data TimelineWithViewPoint t = TimelineWithViewPoint { forall t. TimelineWithViewPoint t -> ViewPointID timelineViewpoint :: ViewPointID , forall t. TimelineWithViewPoint t -> [[TimelinePoint t]] -timelinePoints :: [[TimelinePoint t]] +timelinePoints :: [[TimelinePoint t]] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -61,14 +61,14 @@ TimelineWithViewPoint t -> Rep (TimelineWithViewPoint t) x Generic) -instance Time t => Show (ProcessTimelines t) where - show :: ProcessTimelines t -> String -show ProcessTimelines{[TimelineWithViewPoint t] +instance Time t => Show (ProcessTimelines t) where + show :: ProcessTimelines t -> String +show ProcessTimelines{[TimelineWithViewPoint t] timelines :: [TimelineWithViewPoint t] $sel:timelines:ProcessTimelines :: forall t. ProcessTimelines t -> [TimelineWithViewPoint t] -timelines} = - let vpLength :: ProcessStepID -vpLength = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a +timelines} = + let vpLength :: ProcessStepID +vpLength = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall (t :: * -> *) a. Foldable t => t a -> ProcessStepID @@ -77,56 +77,56 @@ show forall b c a. (b -> c) -> (a -> b) -> a -> c . forall t. TimelineWithViewPoint t -> ViewPointID timelineViewpoint) [TimelineWithViewPoint t] -timelines - normalizeVP :: ShowS -normalizeVP String -s = String -s forall a. [a] -> [a] -> [a] +timelines + normalizeVP :: ShowS +normalizeVP String +s = String +s forall a. [a] -> [a] -> [a] ++ forall a. ProcessStepID -> a -> [a] replicate (ProcessStepID -vpLength forall a. Num a => a -> a -> a +vpLength forall a. Num a => a -> a -> a - forall (t :: * -> *) a. Foldable t => t a -> ProcessStepID length String -s) Char +s) Char ' ' - line :: ViewPointID -> [[TimelinePoint t]] -> String -line ViewPointID -vp [[TimelinePoint t]] -tl = ShowS -normalizeVP (forall a. Show a => a -> String + line :: ViewPointID -> [[TimelinePoint t]] -> String +line ViewPointID +vp [[TimelinePoint t]] +tl = ShowS +normalizeVP (forall a. Show a => a -> String show ViewPointID -vp) forall a. [a] -> [a] -> [a] +vp) forall a. [a] -> [a] -> [a] ++ String "\t" forall a. [a] -> [a] -> [a] ++ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap forall a. Show a => a -> String show [[TimelinePoint t]] -tl +tl in forall a. [a] -> [[a]] -> [a] S.join String "\n" forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\(TimelineWithViewPoint ViewPointID -vp [[TimelinePoint t]] -tl) -> ViewPointID -> [[TimelinePoint t]] -> String -line ViewPointID -vp [[TimelinePoint t]] -tl) [TimelineWithViewPoint t] -timelines +map (\(TimelineWithViewPoint ViewPointID +vp [[TimelinePoint t]] +tl) -> ViewPointID -> [[TimelinePoint t]] -> String +line ViewPointID +vp [[TimelinePoint t]] +tl) [TimelineWithViewPoint t] +timelines -data ViewPointID = ViewPointID +data ViewPointID = ViewPointID { ViewPointID -> String level :: String , ViewPointID -> [String] component :: [String] } - deriving (ViewPointID -> ViewPointID -> Bool + deriving (ViewPointID -> ViewPointID -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ViewPointID -> ViewPointID -> Bool $c/= :: ViewPointID -> ViewPointID -> Bool == :: ViewPointID -> ViewPointID -> Bool $c== :: ViewPointID -> ViewPointID -> Bool -Eq, Eq ViewPointID +Eq, Eq ViewPointID ViewPointID -> ViewPointID -> Bool ViewPointID -> ViewPointID -> Ordering ViewPointID -> ViewPointID -> ViewPointID @@ -162,28 +162,28 @@ $cfrom :: forall x. ViewPointID -> Rep ViewPointID x Generic) -instance Show ViewPointID where - show :: ViewPointID -> String -show ViewPointID{String +instance Show ViewPointID where + show :: ViewPointID -> String +show ViewPointID{String level :: String $sel:level:ViewPointID :: ViewPointID -> String -level, [String] +level, [String] component :: [String] $sel:component:ViewPointID :: ViewPointID -> [String] -component} = forall a. [a] -> [[a]] -> [a] +component} = forall a. [a] -> [[a]] -> [a] S.join String "." [String] -component forall a. [a] -> [a] -> [a] +component forall a. [a] -> [a] -> [a] ++ String "@" forall a. [a] -> [a] -> [a] ++ String -level +level -data TimelinePoint t = TimelinePoint +data TimelinePoint t = TimelinePoint { forall t. TimelinePoint t -> ProcessStepID pID :: ProcessStepID , forall t. TimelinePoint t -> Interval t -pTime :: Interval t +pTime :: Interval t , forall t. TimelinePoint t -> String pInfo :: String } @@ -195,9 +195,9 @@ $cfrom :: forall t x. TimelinePoint t -> Rep (TimelinePoint t) x Generic) -instance {-# OVERLAPS #-} Time t => Show [TimelinePoint t] where - show :: [TimelinePoint t] -> String -show [] = String +instance {-# OVERLAPS #-} Time t => Show [TimelinePoint t] where + show :: [TimelinePoint t] -> String +show [] = String "." -- show [TimelinePoint{ pInfo }] | EndpointRoleStep Source{} <- descent pDesc = "^" -- show ( Single Step{ pDesc } ) | EndpointRoleStep Target{} <- descent pDesc = "v" @@ -215,15 +215,15 @@ "#" processTimelines :: Process t (StepInfo v x t) -> ProcessTimelines t -processTimelines Process{[Step t (StepInfo v x t)] +processTimelines Process{[Step t (StepInfo v x t)] steps :: forall t i. Process t i -> [Step t i] steps :: [Step t (StepInfo v x t)] -steps, [Relation] +steps, [Relation] relations :: forall t i. Process t i -> [Relation] relations :: [Relation] relations} = - let views :: Map ViewPointID [[Step t (StepInfo v x t)]] -views = forall (t :: * -> *) b a. + let views :: Map ViewPointID [[Step t (StepInfo v x t)]] +views = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl forall {t} {v} {x} {t}. @@ -233,9 +233,9 @@ -> Map ViewPointID [[Step t (StepInfo v x t)]] appendToViews forall k a. Map k a M.empty [Step t (StepInfo v x t)] -steps - a :: t -a = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a +steps + a :: t +a = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a minimum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall a. Interval a -> a @@ -248,9 +248,9 @@ concat forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [a] M.elems Map ViewPointID [[Step t (StepInfo v x t)]] -views - b :: t -b = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a +views + b :: t +b = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall a. Interval a -> a @@ -263,41 +263,41 @@ concat forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [a] M.elems Map ViewPointID [[Step t (StepInfo v x t)]] -views +views in ProcessTimelines { $sel:timelines:ProcessTimelines :: [TimelineWithViewPoint t] timelines = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap - ( \(ViewPointID -vp, [[Step t (StepInfo v x t)]] -vs) -> forall a b. (a -> b) -> [a] -> [b] -map (\[Step t (StepInfo v x t)] -v -> forall t. + ( \(ViewPointID +vp, [[Step t (StepInfo v x t)]] +vs) -> forall a b. (a -> b) -> [a] -> [b] +map (\[Step t (StepInfo v x t)] +v -> forall t. ViewPointID -> [[TimelinePoint t]] -> TimelineWithViewPoint t TimelineWithViewPoint ViewPointID -vp forall a b. (a -> b) -> a -> b +vp forall a b. (a -> b) -> a -> b $ forall {v} {t} {a} {x}. (Typeable v, IsString v, ToString v, Suffix v, Hashable v, Show t, Ord v, Ord a, Enum a) => a -> a -> [Step a (StepInfo v x t)] -> [[TimelinePoint a]] timeline t -a t -b [Step t (StepInfo v x t)] -v) [[Step t (StepInfo v x t)]] -vs +a t +b [Step t (StepInfo v x t)] +v) [[Step t (StepInfo v x t)]] +vs ) forall a b. (a -> b) -> a -> b $ forall k a. Map k a -> [(k, a)] M.assocs Map ViewPointID [[Step t (StepInfo v x t)]] -views +views , $sel:verticalRelations:ProcessTimelines :: [(ProcessStepID, ProcessStepID)] verticalRelations = [(ProcessStepID -u, ProcessStepID -d) | (Vertical ProcessStepID -u ProcessStepID -d) <- [Relation] -relations] +u, ProcessStepID +d) | (Vertical ProcessStepID +u ProcessStepID +d) <- [Relation] +relations] } viewpoint :: StepInfo v x t -> ViewPointID @@ -325,39 +325,39 @@ level = String "INST", $sel:component:ViewPointID :: [String] component = []} -viewpoint NestedStep{tag +viewpoint NestedStep{tag nTitle :: () nTitle :: tag nTitle, nStep :: forall t v x. StepInfo v x t -> Step t (StepInfo v x t) -nStep = Step{StepInfo v x t +nStep = Step{StepInfo v x t pDesc :: forall t i. Step t i -> i pDesc :: StepInfo v x t pDesc}} = - let ViewPointID{String + let ViewPointID{String level :: String $sel:level:ViewPointID :: ViewPointID -> String -level, [String] +level, [String] component :: [String] $sel:component:ViewPointID :: ViewPointID -> [String] -component} = StepInfo v x t -> ViewPointID +component} = StepInfo v x t -> ViewPointID viewpoint StepInfo v x t -pDesc +pDesc in ViewPointID{String level :: String $sel:level:ViewPointID :: String -level, $sel:component:ViewPointID :: [String] +level, $sel:component:ViewPointID :: [String] component = forall a. ToString a => a -> String toString tag -nTitle forall a. a -> [a] -> [a] +nTitle forall a. a -> [a] -> [a] : [String] -component} +component} appendToViews :: Map ViewPointID [[Step t (StepInfo v x t)]] -> Step t (StepInfo v x t) -> Map ViewPointID [[Step t (StepInfo v x t)]] -appendToViews Map ViewPointID [[Step t (StepInfo v x t)]] -views Step t (StepInfo v x t) -step = +appendToViews Map ViewPointID [[Step t (StepInfo v x t)]] +views Step t (StepInfo v x t) +step = forall k a. Ord k => (Maybe a -> Maybe a) -> k -> Map k a -> Map k a @@ -369,72 +369,72 @@ Step a (StepInfo v x t) -> [[Step a (StepInfo v x t)]] -> [[Step a (StepInfo v x t)]] appendToView Step t (StepInfo v x t) -step forall b c a. (b -> c) -> (a -> b) -> a -> c +step forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. a -> Maybe a -> a fromMaybe []) (forall {v} {x} {t}. StepInfo v x t -> ViewPointID viewpoint forall a b. (a -> b) -> a -> b $ forall t i. Step t i -> i pDesc Step t (StepInfo v x t) -step) +step) Map ViewPointID [[Step t (StepInfo v x t)]] -views +views appendToView :: Step a (StepInfo v x t) -> [[Step a (StepInfo v x t)]] -> [[Step a (StepInfo v x t)]] -appendToView Step a (StepInfo v x t) -step ([Step a (StepInfo v x t)] -tl : [[Step a (StepInfo v x t)]] -tls) +appendToView Step a (StepInfo v x t) +step ([Step a (StepInfo v x t)] +tl : [[Step a (StepInfo v x t)]] +tls) | forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any (forall {a} {v} {x} {t} {v} {x} {t}. (Num a, Ord a) => Step a (StepInfo v x t) -> Step a (StepInfo v x t) -> Bool isConflicted Step a (StepInfo v x t) -step) [Step a (StepInfo v x t)] -tl = [Step a (StepInfo v x t)] -tl forall a. a -> [a] -> [a] +step) [Step a (StepInfo v x t)] +tl = [Step a (StepInfo v x t)] +tl forall a. a -> [a] -> [a] : Step a (StepInfo v x t) -> [[Step a (StepInfo v x t)]] -> [[Step a (StepInfo v x t)]] appendToView Step a (StepInfo v x t) -step [[Step a (StepInfo v x t)]] -tls +step [[Step a (StepInfo v x t)]] +tls | Bool otherwise = (Step a (StepInfo v x t) -step forall a. a -> [a] -> [a] +step forall a. a -> [a] -> [a] : [Step a (StepInfo v x t)] -tl) forall a. a -> [a] -> [a] +tl) forall a. a -> [a] -> [a] : [[Step a (StepInfo v x t)]] -tls -appendToView Step a (StepInfo v x t) -step [] = [[Step a (StepInfo v x t) -step]] +tls +appendToView Step a (StepInfo v x t) +step [] = [[Step a (StepInfo v x t) +step]] isConflicted :: Step a (StepInfo v x t) -> Step a (StepInfo v x t) -> Bool isConflicted Step{pInterval :: forall t i. Step t i -> Interval t -pInterval = Interval a -a, pDesc :: forall t i. Step t i -> i -pDesc = StepInfo v x t -aD} Step{pInterval :: forall t i. Step t i -> Interval t -pInterval = Interval a -b, pDesc :: forall t i. Step t i -> i -pDesc = StepInfo v x t -bD} +pInterval = Interval a +a, pDesc :: forall t i. Step t i -> i +pDesc = StepInfo v x t +aD} Step{pInterval :: forall t i. Step t i -> Interval t +pInterval = Interval a +b, pDesc :: forall t i. Step t i -> i +pDesc = StepInfo v x t +bD} -- we can hold a and b in one bucket, if both is a singleton | CADStep{} <- forall {v} {x} {t}. StepInfo v x t -> StepInfo v x t descent StepInfo v x t -aD +aD , CADStep{} <- forall {v} {x} {t}. StepInfo v x t -> StepInfo v x t descent StepInfo v x t -bD +bD , forall a. Num a => Interval a -> a width Interval a -a forall a. Eq a => a -> a -> Bool +a forall a. Eq a => a -> a -> Bool == a 0 Bool -> Bool -> Bool && forall a. Num a => Interval a -> a width Interval a -b forall a. Eq a => a -> a -> Bool +b forall a. Eq a => a -> a -> Bool == a 0 = Bool @@ -442,83 +442,83 @@ -- | width a == 0 && width b == 0 = False | Bool otherwise = Interval a -a forall a. Ord a => Interval a -> Interval a -> Bool +a forall a. Ord a => Interval a -> Interval a -> Bool ==? Interval a -b +b timeline :: a -> a -> [Step a (StepInfo v x t)] -> [[TimelinePoint a]] -timeline a -a a -b [Step a (StepInfo v x t)] -steps = forall a b. (a -> b) -> [a] -> [b] +timeline a +a a +b [Step a (StepInfo v x t)] +steps = forall a b. (a -> b) -> [a] -> [b] map a -> [TimelinePoint a] -findSteps [a -a .. a -b] +findSteps [a +a .. a +b] where - findSteps :: a -> [TimelinePoint a] -findSteps a -t = forall a b. (a -> b) -> [a] -> [b] + findSteps :: a -> [TimelinePoint a] +findSteps a +t = forall a b. (a -> b) -> [a] -> [b] map forall {v} {t} {t} {x}. (Typeable v, Ord v, IsString v, ToString v, Suffix v, Hashable v, Show t) => Step t (StepInfo v x t) -> TimelinePoint t -foo forall a b. (a -> b) -> a -> b +foo forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter (forall a. Ord a => a -> Interval a -> Bool member a -t forall b c a. (b -> c) -> (a -> b) -> a -> c +t forall b c a. (b -> c) -> (a -> b) -> a -> c . forall t i. Step t i -> Interval t pInterval) [Step a (StepInfo v x t)] -steps - foo :: Step t (StepInfo v x t) -> TimelinePoint t -foo Step{ProcessStepID +steps + foo :: Step t (StepInfo v x t) -> TimelinePoint t +foo Step{ProcessStepID pID :: forall t i. Step t i -> ProcessStepID pID :: ProcessStepID -pID, Interval t +pID, Interval t pInterval :: Interval t pInterval :: forall t i. Step t i -> Interval t -pInterval, StepInfo v x t +pInterval, StepInfo v x t pDesc :: StepInfo v x t pDesc :: forall t i. Step t i -> i -pDesc} = +pDesc} = TimelinePoint { $sel:pID:TimelinePoint :: ProcessStepID pID = ProcessStepID -pID +pID , $sel:pTime:TimelinePoint :: Interval t pTime = Interval t -pInterval +pInterval , $sel:pInfo:TimelinePoint :: String pInfo = case StepInfo v x t -pDesc of - NestedStep{tag +pDesc of + NestedStep{tag nTitle :: tag nTitle :: () -nTitle, nStep :: forall t v x. StepInfo v x t -> Step t (StepInfo v x t) +nTitle, nStep :: forall t v x. StepInfo v x t -> Step t (StepInfo v x t) nStep = Step{pDesc :: forall t i. Step t i -> i -pDesc = StepInfo v x t -subDesc}} -> forall a. ToString a => a -> String +pDesc = StepInfo v x t +subDesc}} -> forall a. ToString a => a -> String toString tag -nTitle forall a. [a] -> [a] -> [a] +nTitle forall a. [a] -> [a] -> [a] ++ String " do " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show StepInfo v x t -subDesc +subDesc StepInfo v x t _ -> forall a. Show a => a -> String show StepInfo v x t -pDesc +pDesc } -instance ToJSON ViewPointID -instance (Time t, ToJSON t) => ToJSON (TimelinePoint t) -instance (Time t, ToJSON t) => ToJSON (TimelineWithViewPoint t) -instance (Time t, ToJSON t) => ToJSON (ProcessTimelines t) +instance ToJSON ViewPointID +instance (Time t, ToJSON t) => ToJSON (TimelinePoint t) +instance (Time t, ToJSON t) => ToJSON (TimelineWithViewPoint t) +instance (Time t, ToJSON t) => ToJSON (ProcessTimelines t) instance ToSample (ProcessTimelines Int) where - toSamples :: Proxy (ProcessTimelines ProcessStepID) + toSamples :: Proxy (ProcessTimelines ProcessStepID) -> [(Text, ProcessTimelines ProcessStepID)] toSamples Proxy (ProcessTimelines ProcessStepID) _ = forall a. [(Text, a)] diff --git a/haddock/nitta/src/NITTA.UIBackend.Types.html b/haddock/nitta/src/NITTA.UIBackend.Types.html index 3328f4583..3848b7f11 100644 --- a/haddock/nitta/src/NITTA.UIBackend.Types.html +++ b/haddock/nitta/src/NITTA.UIBackend.Types.html @@ -15,12 +15,12 @@ import NITTA.Synthesis.MlBackend.ServerInstance import NITTA.Synthesis.Types -data BackendCtx tag v x t = BackendCtx +data BackendCtx tag v x t = BackendCtx { forall tag v x t. BackendCtx tag v x t -> DefTree tag v x t -root :: DefTree tag v x t +root :: DefTree tag v x t -- ^ root synthesis node , forall tag v x t. BackendCtx tag v x t -> [(v, [x])] -receivedValues :: [(v, [x])] +receivedValues :: [(v, [x])] -- ^ lists of received by IO values , forall tag v x t. BackendCtx tag v x t -> String outputPath :: String @@ -32,8 +32,8 @@ -- for any "hardcoded" scoring function. } -instance Default (BackendCtx tag v x t) where - def :: BackendCtx tag v x t +instance Default (BackendCtx tag v x t) where + def :: BackendCtx tag v x t def = BackendCtx { root :: DefTree tag v x t diff --git a/haddock/nitta/src/NITTA.UIBackend.ViewHelper.html b/haddock/nitta/src/NITTA.UIBackend.ViewHelper.html index 70f15550a..288b6a780 100644 --- a/haddock/nitta/src/NITTA.UIBackend.ViewHelper.html +++ b/haddock/nitta/src/NITTA.UIBackend.ViewHelper.html @@ -56,11 +56,11 @@ -- Synthesis tree -data TreeView a = TreeNodeView +data TreeView a = TreeNodeView { forall a. TreeView a -> a -rootLabel :: a +rootLabel :: a , forall a. TreeView a -> [TreeView a] -subForest :: [TreeView a] +subForest :: [TreeView a] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -68,7 +68,7 @@ forall a x. TreeView a -> Rep (TreeView a) x $cto :: forall a x. Rep (TreeView a) x -> TreeView a $cfrom :: forall a x. TreeView a -> Rep (TreeView a) x -Generic, Int -> TreeView a -> ShowS +Generic, Int -> TreeView a -> ShowS forall a. Show a => Int -> TreeView a -> ShowS forall a. Show a => [TreeView a] -> ShowS forall a. Show a => TreeView a -> FilePath @@ -82,10 +82,10 @@ $cshowsPrec :: forall a. Show a => Int -> TreeView a -> ShowS Show) -instance ToJSON a => ToJSON (TreeView a) +instance ToJSON a => ToJSON (TreeView a) instance ToSample (TreeView ShortNodeView) where - toSamples :: Proxy (TreeView ShortNodeView) -> [(Text, TreeView ShortNodeView)] + toSamples :: Proxy (TreeView ShortNodeView) -> [(Text, TreeView ShortNodeView)] toSamples Proxy (TreeView ShortNodeView) _ = forall a. a -> [(Text, a)] @@ -191,14 +191,14 @@ } instance ToSample Integer where - toSamples :: Proxy Integer -> [(Text, Integer)] -toSamples Proxy Integer + toSamples :: Proxy Integer -> [(Text, Integer)] +toSamples Proxy Integer _ = forall a. a -> [(Text, a)] singleSample Integer 0 -data ShortNodeView = ShortNodeView +data ShortNodeView = ShortNodeView { ShortNodeView -> Text sid :: T.Text , ShortNodeView -> Bool @@ -220,7 +220,7 @@ (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep ShortNodeView x -> ShortNodeView $cfrom :: forall x. ShortNodeView -> Rep ShortNodeView x -Generic, Int -> ShortNodeView -> ShowS +Generic, Int -> ShortNodeView -> ShowS [ShortNodeView] -> ShowS ShortNodeView -> FilePath forall a. @@ -233,7 +233,7 @@ $cshowsPrec :: Int -> ShortNodeView -> ShowS Show) -data NodeInfo = NodeInfo +data NodeInfo = NodeInfo { NodeInfo -> FilePath sid :: String , NodeInfo -> Bool @@ -253,7 +253,7 @@ (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep NodeInfo x -> NodeInfo $cfrom :: forall x. NodeInfo -> Rep NodeInfo x -Generic, Int -> NodeInfo -> ShowS +Generic, Int -> NodeInfo -> ShowS [NodeInfo] -> ShowS NodeInfo -> FilePath forall a. @@ -266,12 +266,12 @@ $cshowsPrec :: Int -> NodeInfo -> ShowS Show) -instance ToJSON ShortNodeView -instance ToJSON TreeInfo +instance ToJSON ShortNodeView +instance ToJSON TreeInfo instance ToSample TreeInfo where - toSamples :: Proxy TreeInfo -> [(Text, TreeInfo)] -toSamples Proxy TreeInfo + toSamples :: Proxy TreeInfo -> [(Text, TreeInfo)] +toSamples Proxy TreeInfo _ = forall a. a -> [(Text, a)] singleSample forall a. Monoid a => a @@ -279,10 +279,10 @@ viewNodeTree :: Tree (TargetSystem u tag v x t) tag v x t -> IO (TreeView ShortNodeView) -viewNodeTree tree :: Tree (TargetSystem u tag v x t) tag v x t -tree@Tree{sID :: forall m tag v x t. Tree m tag v x t -> Sid -sID = Sid -sid, SynthesisDecision +viewNodeTree tree :: Tree (TargetSystem u tag v x t) tag v x t +tree@Tree{sID :: forall m tag v x t. Tree m tag v x t -> Sid +sID = Sid +sid, SynthesisDecision (SynthesisState (TargetSystem u tag v x t) tag v x t) (TargetSystem u tag v x t) sDecision :: forall m tag v x t. @@ -291,18 +291,18 @@ sDecision :: SynthesisDecision (SynthesisState (TargetSystem u tag v x t) tag v x t) (TargetSystem u tag v x t) -sDecision, TMVar [Tree (TargetSystem u tag v x t) tag v x t] +sDecision, TMVar [Tree (TargetSystem u tag v x t) tag v x t] sSubForestVar :: forall m tag v x t. Tree m tag v x t -> TMVar [Tree m tag v x t] sSubForestVar :: TMVar [Tree (TargetSystem u tag v x t) tag v x t] sSubForestVar} = do - Maybe [Tree (TargetSystem u tag v x t) tag v x t] -subForestM <- forall a. STM a -> IO a + Maybe [Tree (TargetSystem u tag v x t) tag v x t] +subForestM <- forall a. STM a -> IO a atomically forall a b. (a -> b) -> a -> b $ forall a. TMVar a -> STM (Maybe a) tryReadTMVar TMVar [Tree (TargetSystem u tag v x t) tag v x t] -sSubForestVar - [TreeView ShortNodeView] -subForest <- forall b a. b -> (a -> b) -> Maybe a -> b +sSubForestVar + [TreeView ShortNodeView] +subForest <- forall b a. b -> (a -> b) -> Maybe a -> b maybe (forall (m :: * -> *) a. Monad m => a -> m a return []) (forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => @@ -310,7 +310,7 @@ mapM Tree (TargetSystem u tag v x t) tag v x t -> IO (TreeView ShortNodeView) viewNodeTree) Maybe [Tree (TargetSystem u tag v x t) tag v x t] -subForestM +subForestM forall (m :: * -> *) a. Monad m => a -> m a return TreeNodeView @@ -320,19 +320,19 @@ { $sel:sid:ShortNodeView :: Text sid = forall {a}. Show a => a -> Text showText Sid -sid +sid , $sel:isTerminal:ShortNodeView :: Bool isTerminal = forall m tag v x t. Tree m tag v x t -> Bool isLeaf Tree (TargetSystem u tag v x t) tag v x t -tree +tree , $sel:isFinish:ShortNodeView :: Bool isFinish = forall m tag v x t. Tree m tag v x t -> Bool isComplete Tree (TargetSystem u tag v x t) tag v x t -tree +tree , $sel:isProcessed:ShortNodeView :: Bool isProcessed = forall a. Maybe a -> Bool isJust Maybe [Tree (TargetSystem u tag v x t) tag v x t] -subForestM +subForestM , $sel:duration:ShortNodeView :: Int duration = (forall a. Enum a => a -> Int fromEnum forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -344,7 +344,7 @@ sTarget forall b c a. (b -> c) -> (a -> b) -> a -> c . forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t sState) Tree (TargetSystem u tag v x t) tag v x t -tree +tree , $sel:score:ShortNodeView :: Float score = forall a. Read a => FilePath -> a read FilePath @@ -353,44 +353,44 @@ decsionType = case SynthesisDecision (SynthesisState (TargetSystem u tag v x t) tag v x t) (TargetSystem u tag v x t) -sDecision of +sDecision of Root{} -> Text "root" - SynthesisDecision{p + SynthesisDecision{p metrics :: () metrics :: p metrics} | Just AllocationMetrics{} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics -> Text +metrics -> Text "Allocation" | Just SingleBindMetrics{} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics -> Text +metrics -> Text "SingleBind" | Just GroupBindMetrics{} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics -> Text +metrics -> Text "GroupBind" | Just BreakLoopMetrics{} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics -> Text +metrics -> Text "Refactor" | Just ConstantFoldingMetrics{} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics -> Text +metrics -> Text "Refactor" | Just DataflowMetrics{} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics -> Text +metrics -> Text "Transport" | Just OptimizeAccumMetrics{} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics -> Text +metrics -> Text "Refactor" | Just ResolveDeadlockMetrics{} <- forall a b. (Typeable a, Typeable b) => a -> Maybe b cast p -metrics -> Text +metrics -> Text "Refactor" SynthesisDecision (SynthesisState (TargetSystem u tag v x t) tag v x t) @@ -400,10 +400,10 @@ } , $sel:subForest:TreeNodeView :: [TreeView ShortNodeView] subForest = [TreeView ShortNodeView] -subForest +subForest } -data NodeView tag v x t = NodeView +data NodeView tag v x t = NodeView { forall tag v x t. NodeView tag v x t -> Text sid :: T.Text , forall tag v x t. NodeView tag v x t -> Bool @@ -433,13 +433,13 @@ NodeView tag v x t -> Rep (NodeView tag v x t) x Generic) -instance (UnitTag tag, VarValTimeJSON v x t) => Viewable (DefTree tag v x t) (NodeView tag v x t) where - view :: DefTree tag v x t -> NodeView tag v x t -view tree :: DefTree tag v x t -tree@Tree{Sid +instance (UnitTag tag, VarValTimeJSON v x t) => Viewable (DefTree tag v x t) (NodeView tag v x t) where + view :: DefTree tag v x t -> NodeView tag v x t +view tree :: DefTree tag v x t +tree@Tree{Sid sID :: Sid sID :: forall m tag v x t. Tree m tag v x t -> Sid -sID, SynthesisDecision +sID, SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) @@ -450,20 +450,20 @@ sDecision :: forall m tag v x t. Tree m tag v x t -> SynthesisDecision (SynthesisState m tag v x t) m -sDecision} = +sDecision} = NodeView { $sel:sid:NodeView :: Text sid = forall {a}. Show a => a -> Text showText Sid -sID +sID , $sel:isTerminal:NodeView :: Bool isTerminal = forall m tag v x t. Tree m tag v x t -> Bool isLeaf DefTree tag v x t -tree +tree , $sel:isFinish:NodeView :: Bool isFinish = forall m tag v x t. Tree m tag v x t -> Bool isComplete DefTree tag v x t -tree +tree , $sel:duration:NodeView :: Int duration = forall a. Enum a => a -> Int fromEnum forall a b. (a -> b) -> a -> b @@ -475,16 +475,16 @@ sTarget forall a b. (a -> b) -> a -> b $ forall m tag v x t. Tree m tag v x t -> SynthesisState m tag v x t sState DefTree tag v x t -tree +tree , $sel:decision:NodeView :: DecisionView decision = ( \case - SynthesisDecision{d + SynthesisDecision{d decision :: () decision :: d decision} -> forall t v. Viewable t v => t -> v view d -decision +decision SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) @@ -496,16 +496,16 @@ (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -sDecision +sDecision , $sel:parameters:NodeView :: Value parameters = ( \case - SynthesisDecision{p + SynthesisDecision{p metrics :: p metrics :: () -metrics} -> forall a. ToJSON a => a -> Value +metrics} -> forall a. ToJSON a => a -> Value toJSON p -metrics +metrics SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) @@ -518,21 +518,21 @@ (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -sDecision +sDecision , $sel:score:NodeView :: Float score = ( \case -- TODO: add support for "scores" field in UI, remove that field (or rename to default_score/effective_score?) - sd :: SynthesisDecision + sd :: SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -sd@SynthesisDecision{} -> forall ctx m. SynthesisDecision ctx m -> Float +sd@SynthesisDecision{} -> forall ctx m. SynthesisDecision ctx m -> Float defScore SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -sd +sd SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) @@ -544,16 +544,16 @@ (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -sDecision +sDecision , $sel:scores:NodeView :: Value scores = ( \case - SynthesisDecision{Map Text Float + SynthesisDecision{Map Text Float scores :: forall ctx m. SynthesisDecision ctx m -> Map Text Float scores :: Map Text Float scores} -> forall a. ToJSON a => a -> Value toJSON Map Text Float -scores +scores SynthesisDecision (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) @@ -568,14 +568,14 @@ (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t) (TargetSystem (BusNetwork tag v x t) tag v x t) -sDecision +sDecision } -instance (VarValTimeJSON v x t, ToJSON tag) => ToJSON (NodeView tag v x t) +instance (VarValTimeJSON v x t, ToJSON tag) => ToJSON (NodeView tag v x t) -instance ToSample (NodeView tag v x t) where - toSamples :: Proxy (NodeView tag v x t) -> [(Text, NodeView tag v x t)] -toSamples Proxy (NodeView tag v x t) +instance ToSample (NodeView tag v x t) where + toSamples :: Proxy (NodeView tag v x t) -> [(Text, NodeView tag v x t)] +toSamples Proxy (NodeView tag v x t) _ = forall a. [a] -> [(Text, a)] samples @@ -605,31 +605,31 @@ $ SingleBindMetrics { pCritical :: Bool -pCritical = Bool +pCritical = Bool False , pAlternative :: Float -pAlternative = Float +pAlternative = Float 1 , pRestless :: Float -pRestless = Float +pRestless = Float 0 , pOutputNumber :: Float -pOutputNumber = Float +pOutputNumber = Float 2 , pAllowDataFlow :: Float -pAllowDataFlow = Float +pAllowDataFlow = Float 1 , pPossibleDeadlock :: Bool -pPossibleDeadlock = Bool +pPossibleDeadlock = Bool False , pNumberOfBoundFunctions :: Float -pNumberOfBoundFunctions = Float +pNumberOfBoundFunctions = Float 1 , pPercentOfBoundInputs :: Float -pPercentOfBoundInputs = Float +pPercentOfBoundInputs = Float 0.2 , pWave :: Maybe Float -pWave = forall a. a -> Maybe a +pWave = forall a. a -> Maybe a Just Float 2 } @@ -676,17 +676,17 @@ $ DataflowMetrics { pWaitTime :: Float -pWaitTime = Float +pWaitTime = Float 1 , pRestrictedTime :: Bool -pRestrictedTime = Bool +pRestrictedTime = Bool False , pNotTransferableInputs :: [Float] -pNotTransferableInputs = [Float +pNotTransferableInputs = [Float 0, Float 0] , pFirstWaveOfTargetUse :: Float -pFirstWaveOfTargetUse = Float +pFirstWaveOfTargetUse = Float 0 } , $sel:decision:NodeView :: DecisionView @@ -695,13 +695,13 @@ { $sel:source:RootView :: (Text, EndpointSt Text (Interval Int)) source = (Text "PU1", EndpointSt{epRole :: EndpointRole Text -epRole = forall v. Set v -> EndpointRole v +epRole = forall v. Set v -> EndpointRole v Source forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a S.fromList [Text "a1", Text "a2"], epAt :: Interval Int -epAt = Int +epAt = Int 1 forall a. Ord a => a -> a -> Interval a ... Int 1}) @@ -709,10 +709,10 @@ targets = [(Text "PU2", EndpointSt{epRole :: EndpointRole Text -epRole = forall v. v -> EndpointRole v +epRole = forall v. v -> EndpointRole v Target Text "a2", epAt :: Interval Int -epAt = Int +epAt = Int 1 forall a. Ord a => a -> a -> Interval a ... Int 1})] @@ -895,13 +895,13 @@ $ ResolveDeadlockMetrics { pNumberOfLockedVariables :: Float -pNumberOfLockedVariables = Float +pNumberOfLockedVariables = Float 1 , pBufferCount :: Float -pBufferCount = Float +pBufferCount = Float 0 , pNumberOfTransferableVariables :: Float -pNumberOfTransferableVariables = Float +pNumberOfTransferableVariables = Float 0 } , $sel:decision:NodeView :: DecisionView @@ -926,7 +926,7 @@ } ] -newtype StepInfoView = StepInfoView T.Text +newtype StepInfoView = StepInfoView T.Text deriving (forall x. Rep StepInfoView x -> StepInfoView forall x. StepInfoView -> Rep StepInfoView x forall a. @@ -935,57 +935,57 @@ $cfrom :: forall x. StepInfoView -> Rep StepInfoView x Generic) -instance (Var v, Time t) => Viewable (StepInfo v x t) StepInfoView where - view :: StepInfo v x t -> StepInfoView -view = Text -> StepInfoView +instance (Var v, Time t) => Viewable (StepInfo v x t) StepInfoView where + view :: StepInfo v x t -> StepInfoView +view = Text -> StepInfoView StepInfoView forall b c a. (b -> c) -> (a -> b) -> a -> c . forall {a}. Show a => a -> Text showText -instance ToJSON StepInfoView +instance ToJSON StepInfoView -instance (Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) where - view :: Process t (StepInfo v x t) -> Process t StepInfoView -view p :: Process t (StepInfo v x t) -p@Process{[Step t (StepInfo v x t)] +instance (Var v, Time t) => Viewable (Process t (StepInfo v x t)) (Process t StepInfoView) where + view :: Process t (StepInfo v x t) -> Process t StepInfoView +view p :: Process t (StepInfo v x t) +p@Process{[Step t (StepInfo v x t)] steps :: forall t i. Process t i -> [Step t i] steps :: [Step t (StepInfo v x t)] steps} = Process t (StepInfo v x t) -p{steps :: [Step t StepInfoView] +p{steps :: [Step t StepInfoView] steps = forall a b. (a -> b) -> [a] -> [b] -map (\s :: Step t (StepInfo v x t) -s@Step{StepInfo v x t +map (\s :: Step t (StepInfo v x t) +s@Step{StepInfo v x t pDesc :: forall t i. Step t i -> i pDesc :: StepInfo v x t pDesc} -> Step t (StepInfo v x t) -s{pDesc :: StepInfoView +s{pDesc :: StepInfoView pDesc = forall t v. Viewable t v => t -> v view StepInfo v x t -pDesc}) [Step t (StepInfo v x t)] -steps} +pDesc}) [Step t (StepInfo v x t)] +steps} -- Testbench -instance (ToJSONKey v, ToJSON v, ToJSON x) => ToJSON (TestbenchReport v x) +instance (ToJSONKey v, ToJSON v, ToJSON x) => ToJSON (TestbenchReport v x) instance ToSample (TestbenchReport String Int) where - toSamples :: Proxy (TestbenchReport FilePath Int) + toSamples :: Proxy (TestbenchReport FilePath Int) -> [(Text, TestbenchReport FilePath Int)] -toSamples Proxy (TestbenchReport FilePath Int) +toSamples Proxy (TestbenchReport FilePath Int) _ = forall a. a -> [(Text, a)] singleSample TestbenchReport { tbStatus :: Bool -tbStatus = Bool +tbStatus = Bool True , tbCompilerDump :: Text -tbCompilerDump = Text +tbCompilerDump = Text "stdout:\n" forall a. Semigroup a => a -> a -> a <> Text "stderr:\n" , tbSimulationDump :: Text -tbSimulationDump = +tbSimulationDump = [Text] -> Text T.unlines [ Text @@ -1020,10 +1020,10 @@ "stderr:" ] , tbPath :: FilePath -tbPath = FilePath +tbPath = FilePath "/Users/penskoi/Documents/nitta-corp/nitta/gen/web_ui" , tbFiles :: [FilePath] -tbFiles = +tbFiles = [ FilePath "web_ui_net/web_ui_net.v" , FilePath @@ -1064,7 +1064,7 @@ "web_ui_net_tb.v" ] , tbFunctions :: [Text] -tbFunctions = +tbFunctions = [ Text "buffer(x#0) = tmp_0#0" , Text @@ -1073,7 +1073,7 @@ "LoopBegin (Loop (X 0.000000) (O [x#0]) (I tmp_0#0)) (O [x#0])" ] , tbSynthesisSteps :: [Text] -tbSynthesisSteps = +tbSynthesisSteps = [ Text "Step {pID = 19, pInterval = 0 ... 0, pDesc = Nested fram2: Step {pID = 0, pInterval = 0 ... 0, pDesc = bind Loop (X 0.000000) (O [x#0]) (I tmp_0#0)}}" , Text @@ -1116,7 +1116,7 @@ "Step {pID = 0, pInterval = 0 ... 0, pDesc = bind Loop (X 0.000000) (O [x#0]) (I tmp_0#0)}" ] , tbFunctionalSimulationLog :: [HashMap FilePath Int] -tbFunctionalSimulationLog = +tbFunctionalSimulationLog = forall a. Int -> a -> [a] replicate Int 2 forall a b. (a -> b) -> a -> b @@ -1134,7 +1134,7 @@ 0) ] , tbLogicalSimulationLog :: [HashMap FilePath Int] -tbLogicalSimulationLog = +tbLogicalSimulationLog = forall a. Int -> a -> [a] replicate Int 2 forall a b. (a -> b) -> a -> b diff --git a/haddock/nitta/src/NITTA.UIBackend.ViewHelperCls.html b/haddock/nitta/src/NITTA.UIBackend.ViewHelperCls.html index 6aa86c78c..2892726e3 100644 --- a/haddock/nitta/src/NITTA.UIBackend.ViewHelperCls.html +++ b/haddock/nitta/src/NITTA.UIBackend.ViewHelperCls.html @@ -15,6 +15,6 @@ {- | Type class of helpers required for autogeneration of ToJSON and typescript types. -} -class Viewable t v | t -> v where - view :: t -> v +class Viewable t v | t -> v where + view :: t -> v \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.UIBackend.VisJS.html b/haddock/nitta/src/NITTA.UIBackend.VisJS.html index 77331672f..63889a247 100644 --- a/haddock/nitta/src/NITTA.UIBackend.VisJS.html +++ b/haddock/nitta/src/NITTA.UIBackend.VisJS.html @@ -30,7 +30,7 @@ type VisJS = GraphStructure GraphEdge -data GraphEdge = GraphEdge +data GraphEdge = GraphEdge { GraphEdge -> Int to :: Int , GraphEdge -> Int @@ -51,7 +51,7 @@ Generic) instance Default GraphEdge where - def :: GraphEdge + def :: GraphEdge def = GraphEdge { $sel:to:GraphEdge :: Int @@ -71,11 +71,11 @@ "bottom" } -data GraphStructure v = GraphStructure +data GraphStructure v = GraphStructure { forall v. GraphStructure v -> [GraphNode] nodes :: [GraphNode] , forall v. GraphStructure v -> [v] -edges :: [v] +edges :: [v] } deriving (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a @@ -85,7 +85,7 @@ $cfrom :: forall v x. GraphStructure v -> Rep (GraphStructure v) x Generic) -data GraphNode = GraphNode +data GraphNode = GraphNode { GraphNode -> Int id :: Int , GraphNode -> String @@ -112,8 +112,8 @@ Generic) instance Default GraphNode where - def :: GraphNode -def = + def :: GraphNode +def = GraphNode { $sel:id:GraphNode :: Int id = -Int @@ -143,7 +143,7 @@ data VertexType = InVertex | OutVertex - deriving (VertexType -> VertexType -> Bool + deriving (VertexType -> VertexType -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: VertexType -> VertexType -> Bool $c/= :: VertexType -> VertexType -> Bool @@ -161,149 +161,149 @@ } algToVizJS :: [F v x] -> VisJS -algToVizJS [F v x] -fbs = - let graphs :: [GraphStructure GraphVertex] -graphs = forall a b. (a -> b) -> [a] -> [b] +algToVizJS [F v x] +fbs = + let graphs :: [GraphStructure GraphVertex] +graphs = forall a b. (a -> b) -> [a] -> [b] map forall {v} {x}. Label v => F v x -> GraphStructure GraphVertex toVizJS [F v x] -fbs - GraphStructure [GraphNode] -nodes [GraphVertex] -vertexes = forall {v}. [GraphStructure v] -> GraphStructure v -connectGraph forall a b. (a -> b) -> a -> b +fbs + GraphStructure [GraphNode] +nodes [GraphVertex] +vertexes = forall {v}. [GraphStructure v] -> GraphStructure v +connectGraph forall a b. (a -> b) -> a -> b $ [GraphStructure GraphVertex] -> Int -> [GraphStructure GraphVertex] -calculateIndexes [GraphStructure GraphVertex] -graphs Int +calculateIndexes [GraphStructure GraphVertex] +graphs Int 0 - edges :: [GraphEdge] -edges = [GraphVertex] -> [GraphEdge] -bindVertexes [GraphVertex] -vertexes + edges :: [GraphEdge] +edges = [GraphVertex] -> [GraphEdge] +bindVertexes [GraphVertex] +vertexes in forall v. [GraphNode] -> [v] -> GraphStructure v GraphStructure [GraphNode] -nodes [GraphEdge] -edges +nodes [GraphEdge] +edges where - calculateIndexes :: [GraphStructure GraphVertex] -> Int -> [GraphStructure GraphVertex] -calculateIndexes [] Int + calculateIndexes :: [GraphStructure GraphVertex] -> Int -> [GraphStructure GraphVertex] +calculateIndexes [] Int _ = [] - calculateIndexes (GraphStructure [GraphNode] -ns [GraphVertex] -vs : [GraphStructure GraphVertex] -gss) Int -t = + calculateIndexes (GraphStructure [GraphNode] +ns [GraphVertex] +vs : [GraphStructure GraphVertex] +gss) Int +t = forall v. [GraphNode] -> [v] -> GraphStructure v GraphStructure (forall a b. (a -> b) -> [a] -> [b] -map (\n :: GraphNode -n@GraphNode{Int +map (\n :: GraphNode +n@GraphNode{Int id :: Int $sel:id:GraphNode :: GraphNode -> Int -id} -> GraphNode -n{$sel:id:GraphNode :: Int +id} -> GraphNode +n{$sel:id:GraphNode :: Int id = Int -t forall a. Num a => a -> a -> a +t forall a. Num a => a -> a -> a + Int -id}) [GraphNode] -ns) +id}) [GraphNode] +ns) (forall a b. (a -> b) -> [a] -> [b] -map (\GraphVertex -v -> GraphVertex -v{$sel:vertexNodeId:GraphVertex :: Int +map (\GraphVertex +v -> GraphVertex +v{$sel:vertexNodeId:GraphVertex :: Int vertexNodeId = Int -t forall a. Num a => a -> a -> a +t forall a. Num a => a -> a -> a + GraphVertex -> Int vertexNodeId GraphVertex -v}) [GraphVertex] -vs) +v}) [GraphVertex] +vs) forall a. a -> [a] -> [a] : [GraphStructure GraphVertex] -> Int -> [GraphStructure GraphVertex] -calculateIndexes [GraphStructure GraphVertex] -gss (Int -t forall a. Num a => a -> a -> a +calculateIndexes [GraphStructure GraphVertex] +gss (Int +t forall a. Num a => a -> a -> a + forall (t :: * -> *) a. Foldable t => t a -> Int length [GraphNode] -ns) +ns) - connectGraph :: [GraphStructure v] -> GraphStructure v -connectGraph = + connectGraph :: [GraphStructure v] -> GraphStructure v +connectGraph = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl - ( \(GraphStructure [GraphNode] -n1 [v] -v1) (GraphStructure [GraphNode] -n2 [v] -v2) -> + ( \(GraphStructure [GraphNode] +n1 [v] +v1) (GraphStructure [GraphNode] +n2 [v] +v2) -> forall v. [GraphNode] -> [v] -> GraphStructure v GraphStructure ([GraphNode] -n1 forall a. [a] -> [a] -> [a] +n1 forall a. [a] -> [a] -> [a] ++ [GraphNode] -n2) ([v] -v1 forall a. [a] -> [a] -> [a] +n2) ([v] +v1 forall a. [a] -> [a] -> [a] ++ [v] -v2) +v2) ) (forall v. [GraphNode] -> [v] -> GraphStructure v GraphStructure [] []) - bindVertexes :: [GraphVertex] -> [GraphEdge] -bindVertexes [GraphVertex] -vs = - let inVertexes :: [GraphVertex] -inVertexes = forall a. (a -> Bool) -> [a] -> [a] + bindVertexes :: [GraphVertex] -> [GraphEdge] +bindVertexes [GraphVertex] +vs = + let inVertexes :: [GraphVertex] +inVertexes = forall a. (a -> Bool) -> [a] -> [a] filter ((VertexType InVertex forall a. Eq a => a -> a -> Bool ==) forall b c a. (b -> c) -> (a -> b) -> a -> c . GraphVertex -> VertexType vertexType) [GraphVertex] -vs - outVertexes :: [GraphVertex] -outVertexes = forall a. (a -> Bool) -> [a] -> [a] +vs + outVertexes :: [GraphVertex] +outVertexes = forall a. (a -> Bool) -> [a] -> [a] filter ((VertexType OutVertex forall a. Eq a => a -> a -> Bool ==) forall b c a. (b -> c) -> (a -> b) -> a -> c . GraphVertex -> VertexType vertexType) [GraphVertex] -vs +vs in forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap ( \(GraphVertex VertexType -_ String -name Int -inId) -> +_ String +name Int +inId) -> forall a b. (a -> b) -> [a] -> [b] map (\(GraphVertex VertexType _ String -_ Int -outId) -> forall a. Default a => a +_ Int +outId) -> forall a. Default a => a def{$sel:to:GraphEdge :: Int to = Int -inId, $sel:from:GraphEdge :: Int +inId, $sel:from:GraphEdge :: Int from = Int -outId, $sel:label:GraphEdge :: String +outId, $sel:label:GraphEdge :: String label = String -name}) +name}) forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter ((String -name forall a. Eq a => a -> a -> Bool +name forall a. Eq a => a -> a -> Bool ==) forall b c a. (b -> c) -> (a -> b) -> a -> c . GraphVertex -> String vertexName) [GraphVertex] -outVertexes +outVertexes ) [GraphVertex] -inVertexes +inVertexes toVizJS :: F v x -> GraphStructure GraphVertex -toVizJS F.F{f +toVizJS F.F{f fun :: () fun :: f -fun, [F v x] +fun, [F v x] funHistory :: forall v x. F v x -> [F v x] funHistory :: [F v x] funHistory} = @@ -315,50 +315,50 @@ { $sel:label:GraphNode :: String label = forall a. Label a => a -> String F.label f -fun +fun , $sel:function:GraphNode :: String function = forall a. Show a => a -> String show f -fun +fun , $sel:history:GraphNode :: [String] history = forall a b. (a -> b) -> [a] -> [b] map forall a. Show a => a -> String show [F v x] -funHistory +funHistory } ] , $sel:edges:GraphStructure :: [GraphVertex] edges = forall {a}. Label a => VertexType -> Set a -> [GraphVertex] -mkEdges VertexType +mkEdges VertexType InVertex (forall f v. Function f v => f -> Set v F.inputs f -fun) forall a. [a] -> [a] -> [a] +fun) forall a. [a] -> [a] -> [a] ++ forall {a}. Label a => VertexType -> Set a -> [GraphVertex] -mkEdges VertexType +mkEdges VertexType OutVertex (forall f v. Function f v => f -> Set v F.outputs f -fun) +fun) } where - mkEdges :: VertexType -> Set a -> [GraphVertex] -mkEdges VertexType -t = forall a b. (a -> b) -> [a] -> [b] -map (\a -v -> VertexType -> String -> Int -> GraphVertex + mkEdges :: VertexType -> Set a -> [GraphVertex] +mkEdges VertexType +t = forall a b. (a -> b) -> [a] -> [b] +map (\a +v -> VertexType -> String -> Int -> GraphVertex GraphVertex VertexType -t (forall a. Label a => a -> String +t (forall a. Label a => a -> String F.label a -v) Int +v) Int 1) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Set a -> [a] S.elems -instance ToJSON VisJS -instance ToJSON GraphNode -instance ToJSON GraphEdge +instance ToJSON VisJS +instance ToJSON GraphNode +instance ToJSON GraphEdge instance ToSample VisJS where - toSamples :: Proxy VisJS -> [(Text, VisJS)] + toSamples :: Proxy VisJS -> [(Text, VisJS)] toSamples Proxy VisJS _ = forall a. a -> [(Text, a)] diff --git a/haddock/nitta/src/NITTA.UIBackend.html b/haddock/nitta/src/NITTA.UIBackend.html index 16ab42b63..486a24e46 100644 --- a/haddock/nitta/src/NITTA.UIBackend.html +++ b/haddock/nitta/src/NITTA.UIBackend.html @@ -57,8 +57,8 @@ frontendPath restDocs :: a -> FilePath -restDocs a -port = +restDocs a +port = API -> FilePath markdown forall a b. (a -> b) -> a -> b @@ -76,7 +76,7 @@ "Expected port: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> FilePath show a -port +port , FilePath "Request helper with axios can be finded here: " forall a. Semigroup a => a -> a -> a <> FilePath @@ -93,19 +93,19 @@ Proxy :: Proxy (SynthesisAPI String String Int Int)) prepareJSAPI :: p -> FilePath -> IO () -prepareJSAPI p -port FilePath -path = do - let prefix :: Text -prefix = +prepareJSAPI p +port FilePath +path = do + let prefix :: Text +prefix = [__i| import axios from 'axios'; var jsAPI = {}; export default jsAPI; /* eslint no-useless-concat: "off" */ |] - let axios' :: JavaScriptGenerator -axios' = + let axios' :: JavaScriptGenerator +axios' = AxiosOptions -> CommonGeneratorOptions -> JavaScriptGenerator SJS.axiosWith AxiosOptions @@ -124,25 +124,25 @@ Proxy api -> JavaScriptGenerator -> FilePath -> IO () SJS.writeJSForAPI (forall {k} (t :: k). Proxy t Proxy :: Proxy (SynthesisAPI _ String Int Int)) ((Text -prefix forall a. Semigroup a => a -> a -> a +prefix forall a. Semigroup a => a -> a -> a <>) forall b c a. (b -> c) -> (a -> b) -> a -> c . JavaScriptGenerator -axios') forall a b. (a -> b) -> a -> b +axios') forall a b. (a -> b) -> a -> b $ [FilePath] -> FilePath joinPath [FilePath -path, FilePath +path, FilePath "rest_api.js"] fileOrIndex :: Pieces -> IO LookupResult -fileOrIndex Pieces -pieces = do - LookupResult -res <- StaticSettings -> Pieces -> IO LookupResult +fileOrIndex Pieces +pieces = do + LookupResult +res <- StaticSettings -> Pieces -> IO LookupResult ssLookupFile StaticSettings frontendAppSettings Pieces -pieces +pieces case LookupResult -res of +res of LookupResult LRNotFound -> StaticSettings -> Pieces -> IO LookupResult @@ -156,11 +156,11 @@ LookupResult _ -> forall (m :: * -> *) a. Monad m => a -> m a return LookupResult -res +res application :: BackendCtx w w w w -> m Application -application BackendCtx w w w w -ctx = do +application BackendCtx w w w w +ctx = do forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ @@ -210,12 +210,12 @@ :<|> (m18 Sid :<|> (m19 Sid :<|> (m20 Sid :<|> (Int -> m21 Sid))))))))) synthesisServer BackendCtx w w w w -ctx +ctx forall a b. a -> b -> a :<|> b :<|> forall e (m :: * -> *) a. MonadError e m => e -> m a throwError ServerError err301{errHeaders :: [Header] -errHeaders = [(HeaderName +errHeaders = [(HeaderName "Location", ByteString "index.html")]} forall a b. a -> b -> a :<|> b @@ -227,8 +227,8 @@ ) isLocalPortFree :: a -> IO Bool -isLocalPortFree a -port = +isLocalPortFree a +port = forall a b. Either a b -> Bool isLeft forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (forall e a. Exception e => IO a -> IO (Either e a) @@ -239,26 +239,26 @@ connect FilePath "localhost" (forall a. Show a => a -> FilePath show a -port) (\(Socket, SockAddr) +port) (\(Socket, SockAddr) _ -> forall (m :: * -> *) a. Monad m => a -> m a return ()) :: IO (Either SomeException ())) -- | Run backend server. backendServer :: Int -> BackendCtx w w w w -> IO () -backendServer Int -givenPort BackendCtx w w w w -ctx +backendServer Int +givenPort BackendCtx w w w w +ctx | Int -givenPort forall a. Ord a => a -> a -> Bool +givenPort forall a. Ord a => a -> a -> Bool > Int 0 = do - Bool -isFree <- forall {a}. Show a => a -> IO Bool + Bool +isFree <- forall {a}. Show a => a -> IO Bool isLocalPortFree Int -givenPort +givenPort forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -isFree forall a b. (a -> b) -> a -> b +isFree forall a b. (a -> b) -> a -> b $ forall a. HasCallStack => FilePath -> a error FilePath "resource busy (Port already in use)" @@ -269,11 +269,11 @@ "Running NITTA server at http://localhost:" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> FilePath show Int -givenPort forall a. Semigroup a => a -> a -> a +givenPort forall a. Semigroup a => a -> a -> a <> FilePath " ..." - Application -app <- Middleware + Application +app <- Middleware simpleCors forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall {m :: * -> *} {w} {w} {w} {w}. (Monad m, Suffix w, Hashable w, Val w, Bounded w, ToJSONKey w, @@ -282,31 +282,31 @@ Default w, Integral w, Ord w) => BackendCtx w w w w -> m Application application BackendCtx w w w w -ctx +ctx TextEncoding -> IO () setLocaleEncoding TextEncoding utf8 Int -> Application -> IO () run Int -givenPort Application -app +givenPort Application +app | Bool otherwise = do - (Int -freePort, Socket -socket) <- IO (Int, Socket) + (Int +freePort, Socket +socket) <- IO (Int, Socket) openFreePort - let settings :: Settings -settings = Int -> Settings -> Settings + let settings :: Settings +settings = Int -> Settings -> Settings setPort Int -freePort Settings +freePort Settings defaultSettings - appRunner :: Application -> IO () -appRunner = Settings -> Socket -> Application -> IO () + appRunner :: Application -> IO () +appRunner = Settings -> Socket -> Application -> IO () runSettingsSocket Settings -settings Socket -socket +settings Socket +socket FilePath -> IO () putStrLn forall a b. (a -> b) -> a -> b @@ -314,11 +314,11 @@ "Running NITTA server at http://localhost:" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> FilePath show Int -freePort forall a. Semigroup a => a -> a -> a +freePort forall a. Semigroup a => a -> a -> a <> FilePath " ..." - Application -app <- Middleware + Application +app <- Middleware simpleCors forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall {m :: * -> *} {w} {w} {w} {w}. (Monad m, Suffix w, Hashable w, Val w, Bounded w, ToJSONKey w, @@ -327,11 +327,11 @@ Default w, Integral w, Ord w) => BackendCtx w w w w -> m Application application BackendCtx w w w w -ctx +ctx TextEncoding -> IO () setLocaleEncoding TextEncoding utf8 Application -> IO () -appRunner Application -app +appRunner Application +app \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Utils.Base.html b/haddock/nitta/src/NITTA.Utils.Base.html index 53098cb81..527796741 100644 --- a/haddock/nitta/src/NITTA.Utils.Base.html +++ b/haddock/nitta/src/NITTA.Utils.Base.html @@ -29,14 +29,14 @@ import System.Log.Logger (warningM) unionsMap :: (a -> Set a) -> [a] -> Set a -unionsMap a -> Set a -f [a] -lst = forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a +unionsMap a -> Set a +f [a] +lst = forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a unions forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map a -> Set a -f [a] -lst +f [a] +lst oneOf :: Set c -> c oneOf = forall a. [a] -> a @@ -45,92 +45,92 @@ elems minimumOn :: (t -> a) -> t t -> t -minimumOn t -> a -f = forall (t :: * -> *) a. +minimumOn t -> a +f = forall (t :: * -> *) a. Foldable t => (a -> a -> Ordering) -> t a -> a -minimumBy (\t -a t -b -> t -> a -f t -a forall a. Ord a => a -> a -> Ordering +minimumBy (\t +a t +b -> t -> a +f t +a forall a. Ord a => a -> a -> Ordering `compare` t -> a -f t -b) +f t +b) maximumOn :: (t -> a) -> t t -> t -maximumOn t -> a -f = forall (t :: * -> *) a. +maximumOn t -> a +f = forall (t :: * -> *) a. Foldable t => (a -> a -> Ordering) -> t a -> a -maximumBy (\t -a t -b -> t -> a -f t -a forall a. Ord a => a -> a -> Ordering +maximumBy (\t +a t +b -> t -> a +f t +a forall a. Ord a => a -> a -> Ordering `compare` t -> a -f t -b) +f t +b) toText :: a -> Text -toText a -v = String -> Text +toText a +v = String -> Text T.pack forall a b. (a -> b) -> a -> b $ forall a. ToString a => a -> String toString a -v +v fromText :: Text -> a -fromText Text -v = forall a. IsString a => String -> a +fromText Text +v = forall a. IsString a => String -> a fromString forall a b. (a -> b) -> a -> b $ Text -> String T.unpack Text -v +v readText :: Text -> a -readText Text -t = forall a. Read a => String -> a +readText Text +t = forall a. Read a => String -> a read forall a b. (a -> b) -> a -> b $ Text -> String T.unpack Text -t +t showText :: a -> Text -showText a -v = String -> Text +showText a +v = String -> Text T.pack forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> String show a -v +v vsToStringList :: Set a -> [String] -vsToStringList Set a -vs = forall a b. (a -> b) -> [a] -> [b] +vsToStringList Set a +vs = forall a b. (a -> b) -> [a] -> [b] map forall a. ToString a => a -> String toString forall a b. (a -> b) -> a -> b $ forall a. Set a -> [a] elems Set a -vs +vs catchToMaybeIO :: IO a -> IO (Maybe a) -catchToMaybeIO IO a -action = +catchToMaybeIO IO a +action = forall e a. Exception e => IO a -> (e -> IO a) -> IO a catch (IO a -action forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b +action forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b <&> forall a. a -> Maybe a Just) - ( \(IOException -e :: IOException) -> do + ( \(IOException +e :: IOException) -> do String -> String -> IO () warningM String "NITTA" (String "IO Exception: " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show IOException -e) +e) forall (m :: * -> *) a. Monad m => a -> m a return forall a. Maybe a Nothing diff --git a/haddock/nitta/src/NITTA.Utils.ProcessDescription.html b/haddock/nitta/src/NITTA.Utils.ProcessDescription.html index 13b53cbe7..1c2fea869 100644 --- a/haddock/nitta/src/NITTA.Utils.ProcessDescription.html +++ b/haddock/nitta/src/NITTA.Utils.ProcessDescription.html @@ -47,18 +47,18 @@ import Numeric.Interval.NonEmpty (singleton, sup) -- | Process builder state. -data Schedule pu v x t = Schedule +data Schedule pu v x t = Schedule { forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) -schProcess :: Process t (StepInfo v x t) +schProcess :: Process t (StepInfo v x t) -- ^ Defining process. , forall pu v x t. Schedule pu v x t -> Proxy (Instruction pu) -iProxy :: Proxy (Instruction pu) +iProxy :: Proxy (Instruction pu) -- ^ Proxy for process unit instruction, which is needed for API simplify. Without that, -- for some function, the user needs to describe type explicitly. } -instance {-# OVERLAPS #-} NextTick (Schedule pu v x t) t where - nextTick :: Schedule pu v x t -> t +instance {-# OVERLAPS #-} NextTick (Schedule pu v x t) t where + nextTick :: Schedule pu v x t -> t nextTick = forall u t. NextTick u t => u -> t nextTick forall b c a. (b -> c) -> (a -> b) -> a -> c . forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) @@ -68,16 +68,16 @@ from the PU by the 'process' function. -} execSchedule :: u -> State (Schedule u v x t) a -> Process t (StepInfo v x t) -execSchedule u -pu State (Schedule u v x t) a -st = forall a b. (a, b) -> b +execSchedule u +pu State (Schedule u v x t) a +st = forall a b. (a, b) -> b snd forall a b. (a -> b) -> a -> b $ forall {u} {v} {x} {t} {a}. ProcessorUnit u v x t => u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) runSchedule u -pu State (Schedule u v x t) a -st +pu State (Schedule u v x t) a +st {- | Execute process builder and return new process description. The initial process state is passed explicetly. @@ -89,10 +89,10 @@ -> Process t (StepInfo v x t) -> State (Schedule pu v x t) a -> Process t (StepInfo v x t) -execScheduleWithProcess pu -pu Process t (StepInfo v x t) -p State (Schedule pu v x t) a -st = forall a b. (a, b) -> b +execScheduleWithProcess pu +pu Process t (StepInfo v x t) +p State (Schedule pu v x t) a +st = forall a b. (a, b) -> b snd forall a b. (a -> b) -> a -> b $ forall {pu} {t} {v} {x} {a}. pu @@ -100,28 +100,28 @@ -> State (Schedule pu v x t) a -> (a, Process t (StepInfo v x t)) runScheduleWithProcess pu -pu Process t (StepInfo v x t) -p State (Schedule pu v x t) a -st +pu Process t (StepInfo v x t) +p State (Schedule pu v x t) a +st {- | Execute process builder and return list of new step UID and new process description. The initial process state is getting from the PU by the 'process' function. -} runSchedule :: u -> State (Schedule u v x t) a -> (a, Process t (StepInfo v x t)) -runSchedule u -pu State (Schedule u v x t) a -st = forall {pu} {t} {v} {x} {a}. +runSchedule u +pu State (Schedule u v x t) a +st = forall {pu} {t} {v} {x} {a}. pu -> Process t (StepInfo v x t) -> State (Schedule pu v x t) a -> (a, Process t (StepInfo v x t)) runScheduleWithProcess u -pu (forall u v x t. +pu (forall u v x t. ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -pu) State (Schedule u v x t) a -st +pu) State (Schedule u v x t) a +st {- | Execute process builder and return list of new step UID and new process description. The initial process state is passed explicetly. @@ -130,62 +130,62 @@ -> Process t (StepInfo v x t) -> State (Schedule pu v x t) a -> (a, Process t (StepInfo v x t)) -runScheduleWithProcess pu -pu Process t (StepInfo v x t) -p State (Schedule pu v x t) a -st = - let (a -a, Schedule pu v x t -s) = +runScheduleWithProcess pu +pu Process t (StepInfo v x t) +p State (Schedule pu v x t) a +st = + let (a +a, Schedule pu v x t +s) = forall s a. State s a -> s -> (a, s) runState State (Schedule pu v x t) a -st +st Schedule { schProcess :: Process t (StepInfo v x t) schProcess = Process t (StepInfo v x t) -p +p , iProxy :: Proxy (Instruction pu) iProxy = forall pu. pu -> Proxy (Instruction pu) -ip pu -pu +ip pu +pu } in (a -a, forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) +a, forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) schProcess Schedule pu v x t -s) +s) where - ip :: pu -> Proxy (Instruction pu) - ip :: forall pu. pu -> Proxy (Instruction pu) -ip pu + ip :: pu -> Proxy (Instruction pu) + ip :: forall pu. pu -> Proxy (Instruction pu) +ip pu _ = forall {k} (t :: k). Proxy t Proxy -- | Add process step with passed the time and info. scheduleStep :: Interval t -> StepInfo v x t -> m [ProcessStepID] -scheduleStep Interval t -placeInTime StepInfo v x t -stepInfo = +scheduleStep Interval t +placeInTime StepInfo v x t +stepInfo = forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => (ProcessStepID -> Step t (StepInfo v x t)) -> m [ProcessStepID] -scheduleStep' (\ProcessStepID -uid -> forall t i. ProcessStepID -> Interval t -> i -> Step t i +scheduleStep' (\ProcessStepID +uid -> forall t i. ProcessStepID -> Interval t -> i -> Step t i Step ProcessStepID -uid Interval t -placeInTime StepInfo v x t -stepInfo) +uid Interval t +placeInTime StepInfo v x t +stepInfo) scheduleStep' :: (ProcessStepID -> Step t (StepInfo v x t)) -> m [ProcessStepID] -scheduleStep' ProcessStepID -> Step t (StepInfo v x t) -mkStep = do - sch :: Schedule pu v x t -sch@Schedule{schProcess :: forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) -schProcess = p :: Process t (StepInfo v x t) -p@Process{ProcessStepID +scheduleStep' ProcessStepID -> Step t (StepInfo v x t) +mkStep = do + sch :: Schedule pu v x t +sch@Schedule{schProcess :: forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) +schProcess = p :: Process t (StepInfo v x t) +p@Process{ProcessStepID nextUid :: forall t i. Process t i -> ProcessStepID nextUid :: ProcessStepID -nextUid, [Step t (StepInfo v x t)] +nextUid, [Step t (StepInfo v x t)] steps :: forall t i. Process t i -> [Step t i] steps :: [Step t (StepInfo v x t)] steps}} <- forall s (m :: * -> *). MonadState s m => m s @@ -193,38 +193,38 @@ forall s (m :: * -> *). MonadState s m => s -> m () put Schedule pu v x t -sch +sch { schProcess :: Process t (StepInfo v x t) schProcess = Process t (StepInfo v x t) -p +p { nextUid :: ProcessStepID nextUid = forall a. Enum a => a -> a succ ProcessStepID -nextUid +nextUid , steps :: [Step t (StepInfo v x t)] steps = ProcessStepID -> Step t (StepInfo v x t) -mkStep ProcessStepID -nextUid forall a. a -> [a] -> [a] +mkStep ProcessStepID +nextUid forall a. a -> [a] -> [a] : [Step t (StepInfo v x t)] -steps +steps } } forall (m :: * -> *) a. Monad m => a -> m a return [ProcessStepID -nextUid] +nextUid] {- | Add to the process description information about vertical relations, which are defined by the Cartesian product of high and low lists. -} establishVerticalRelations :: [ProcessStepID] -> [ProcessStepID] -> m () -establishVerticalRelations [ProcessStepID] -high [ProcessStepID] -low = do - sch :: Schedule pu v x t -sch@Schedule{schProcess :: forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) -schProcess = p :: Process t (StepInfo v x t) -p@Process{[Relation] +establishVerticalRelations [ProcessStepID] +high [ProcessStepID] +low = do + sch :: Schedule pu v x t +sch@Schedule{schProcess :: forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) +schProcess = p :: Process t (StepInfo v x t) +p@Process{[Relation] relations :: forall t i. Process t i -> [Relation] relations :: [Relation] relations}} <- forall s (m :: * -> *). MonadState s m => m s @@ -232,22 +232,22 @@ forall s (m :: * -> *). MonadState s m => s -> m () put Schedule pu v x t -sch +sch { schProcess :: Process t (StepInfo v x t) schProcess = Process t (StepInfo v x t) -p +p { relations :: [Relation] relations = [ProcessStepID -> ProcessStepID -> Relation Vertical ProcessStepID -h ProcessStepID -l | ProcessStepID -h <- [ProcessStepID] -high, ProcessStepID -l <- [ProcessStepID] -low] forall a. [a] -> [a] -> [a] +h ProcessStepID +l | ProcessStepID +h <- [ProcessStepID] +high, ProcessStepID +l <- [ProcessStepID] +low] forall a. [a] -> [a] -> [a] ++ [Relation] -relations +relations } } @@ -255,44 +255,44 @@ level), which are defined by the Cartesian product of high and low lists. -} establishHorizontalRelations :: [ProcessStepID] -> [ProcessStepID] -> m () -establishHorizontalRelations [ProcessStepID] -high [ProcessStepID] -low = do - sch :: Schedule pu v x t -sch@Schedule{schProcess :: forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) -schProcess = p :: Process t (StepInfo v x t) -p@Process{[Relation] +establishHorizontalRelations [ProcessStepID] +high [ProcessStepID] +low = do + sch :: Schedule pu v x t +sch@Schedule{schProcess :: forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) +schProcess = p :: Process t (StepInfo v x t) +p@Process{[Relation] relations :: [Relation] relations :: forall t i. Process t i -> [Relation] -relations}} <- forall s (m :: * -> *). MonadState s m => m s +relations}} <- forall s (m :: * -> *). MonadState s m => m s get forall s (m :: * -> *). MonadState s m => s -> m () put Schedule pu v x t -sch +sch { schProcess :: Process t (StepInfo v x t) schProcess = Process t (StepInfo v x t) -p +p { relations :: [Relation] relations = [ProcessStepID -> ProcessStepID -> Relation Horizontal ProcessStepID -h ProcessStepID -l | ProcessStepID -h <- [ProcessStepID] -high, ProcessStepID -l <- [ProcessStepID] -low] forall a. [a] -> [a] -> [a] +h ProcessStepID +l | ProcessStepID +h <- [ProcessStepID] +high, ProcessStepID +l <- [ProcessStepID] +low] forall a. [a] -> [a] -> [a] ++ [Relation] -relations +relations } } scheduleFunctionBind :: a -> m [ProcessStepID] -scheduleFunctionBind a -f = do - Schedule pu v x t -schedule <- forall s (m :: * -> *). MonadState s m => m s +scheduleFunctionBind a +f = do + Schedule pu v x t +schedule <- forall s (m :: * -> *). MonadState s m => m s get forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => @@ -301,20 +301,20 @@ singleton forall a b. (a -> b) -> a -> b $ forall u t. NextTick u t => u -> t nextTick Schedule pu v x t -schedule) forall a b. (a -> b) -> a -> b +schedule) forall a b. (a -> b) -> a -> b $ forall v x t. String -> StepInfo v x t CADStep forall a b. (a -> b) -> a -> b $ String "bind " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show a -f +f scheduleFunctionRevoke :: a -> m [ProcessStepID] -scheduleFunctionRevoke a -f = do - Schedule pu v x t -schedule <- forall s (m :: * -> *). MonadState s m => m s +scheduleFunctionRevoke a +f = do + Schedule pu v x t +schedule <- forall s (m :: * -> *). MonadState s m => m s get forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => @@ -323,20 +323,20 @@ singleton forall a b. (a -> b) -> a -> b $ forall u t. NextTick u t => u -> t nextTick Schedule pu v x t -schedule) forall a b. (a -> b) -> a -> b +schedule) forall a b. (a -> b) -> a -> b $ forall v x t. String -> StepInfo v x t CADStep forall a b. (a -> b) -> a -> b $ String "revoke " forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show a -f +f scheduleAllocation :: a -> m [ProcessStepID] -scheduleAllocation a -alloc = do - Schedule pu v x t -schedule <- forall s (m :: * -> *). MonadState s m => m s +scheduleAllocation a +alloc = do + Schedule pu v x t +schedule <- forall s (m :: * -> *). MonadState s m => m s get forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => @@ -345,35 +345,35 @@ singleton forall a b. (a -> b) -> a -> b $ forall u t. NextTick u t => u -> t nextTick Schedule pu v x t -schedule) forall a b. (a -> b) -> a -> b +schedule) forall a b. (a -> b) -> a -> b $ forall a v x t. (Typeable a, Show a, Eq a) => a -> StepInfo v x t AllocationStep a -alloc +alloc -- | Add to the process description information about function evaluation. scheduleFunction :: Interval t -> F v x -> m [ProcessStepID] -scheduleFunction Interval t -ti F v x -f = forall {pu} {v} {x} {t} {m :: * -> *}. +scheduleFunction Interval t +ti F v x +f = forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => Interval t -> StepInfo v x t -> m [ProcessStepID] scheduleStep Interval t -ti forall a b. (a -> b) -> a -> b +ti forall a b. (a -> b) -> a -> b $ forall v x t. F v x -> StepInfo v x t IntermediateStep F v x -f +f scheduleRefactoring :: Interval t -> ref -> m [ProcessStepID] -scheduleRefactoring Interval t -ti ref -ref = forall {pu} {v} {x} {t} {m :: * -> *}. +scheduleRefactoring Interval t +ti ref +ref = forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => Interval t -> StepInfo v x t -> m [ProcessStepID] scheduleStep Interval t -ti forall a b. (a -> b) -> a -> b +ti forall a b. (a -> b) -> a -> b $ forall a v x t. (Typeable a, Show a, Eq a) => a -> StepInfo v x t RefactorStep ref -ref +ref {- | Schedule function and establish vertical relations between bind step, function step, and all related endpoints. @@ -382,55 +382,55 @@ -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity [ProcessStepID] -scheduleFunctionFinish [ProcessStepID] -bPID F v x -function Interval t -at = do - [ProcessStepID] -fPID <- forall {pu} {v} {x} {t} {m :: * -> *}. +scheduleFunctionFinish [ProcessStepID] +bPID F v x +function Interval t +at = do + [ProcessStepID] +fPID <- forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => Interval t -> F v x -> m [ProcessStepID] scheduleFunction Interval t -at F v x -function +at F v x +function forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [ProcessStepID] -> [ProcessStepID] -> m () establishVerticalRelations [ProcessStepID] -bPID [ProcessStepID] -fPID - Process t (StepInfo v x t) -process_ <- forall pu v x t. +bPID [ProcessStepID] +fPID + Process t (StepInfo v x t) +process_ <- forall pu v x t. State (Schedule pu v x t) (Process t (StepInfo v x t)) getProcessSlice - let low :: [ProcessStepID] -low = forall a b. (a -> b) -> [a] -> [b] + let low :: [ProcessStepID] +low = forall a b. (a -> b) -> [a] -> [b] map forall t i. Step t i -> ProcessStepID pID forall a b. (a -> b) -> a -> b $ forall {a} {t} {x} {t}. Ord a => Process t (StepInfo a x t) -> Set a -> [Step t (StepInfo a x t)] relatedEndpoints Process t (StepInfo v x t) -process_ forall a b. (a -> b) -> a -> b +process_ forall a b. (a -> b) -> a -> b $ forall a v. Variables a v => a -> Set v variables F v x -function +function forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [ProcessStepID] -> [ProcessStepID] -> m () establishVerticalRelations [ProcessStepID] -fPID [ProcessStepID] -low +fPID [ProcessStepID] +low forall (m :: * -> *) a. Monad m => a -> m a return [ProcessStepID] -fPID +fPID scheduleFunctionFinish_ :: [ProcessStepID] -> F v x -> Interval t -> StateT (Schedule pu v x t) Identity () -scheduleFunctionFinish_ [ProcessStepID] -bPID F v x -function Interval t -at = forall (f :: * -> *) a. Functor f => f a -> f () +scheduleFunctionFinish_ [ProcessStepID] +bPID F v x +function Interval t +at = forall (f :: * -> *) a. Functor f => f a -> f () void forall a b. (a -> b) -> a -> b $ forall {v} {x} {t} {pu}. (Ord v, Typeable v, IsString v, ToString v, Suffix v, @@ -440,158 +440,158 @@ -> Interval t -> StateT (Schedule pu v x t) Identity [ProcessStepID] scheduleFunctionFinish [ProcessStepID] -bPID F v x -function Interval t -at +bPID F v x +function Interval t +at {- | Add to the process description information about endpoint behaviour, and it's low-level implementation (on instruction level). Vertical relations connect endpoint level and instruction level steps. -} scheduleEndpoint :: EndpointSt v (Interval t) -> m [ProcessStepID] -> m [ProcessStepID] -scheduleEndpoint EndpointSt{Interval t +scheduleEndpoint EndpointSt{Interval t epAt :: forall v tp. EndpointSt v tp -> tp epAt :: Interval t -epAt, EndpointRole v +epAt, EndpointRole v epRole :: forall v tp. EndpointSt v tp -> EndpointRole v epRole :: EndpointRole v -epRole} m [ProcessStepID] -codeGen = do - [ProcessStepID] -high <- forall {pu} {v} {x} {t} {m :: * -> *}. +epRole} m [ProcessStepID] +codeGen = do + [ProcessStepID] +high <- forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => Interval t -> StepInfo v x t -> m [ProcessStepID] scheduleStep Interval t -epAt forall a b. (a -> b) -> a -> b +epAt forall a b. (a -> b) -> a -> b $ forall v x t. EndpointRole v -> StepInfo v x t EndpointRoleStep EndpointRole v -epRole - [ProcessStepID] -low <- m [ProcessStepID] -codeGen +epRole + [ProcessStepID] +low <- m [ProcessStepID] +codeGen forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => [ProcessStepID] -> [ProcessStepID] -> m () establishVerticalRelations [ProcessStepID] -high [ProcessStepID] -low +high [ProcessStepID] +low forall (m :: * -> *) a. Monad m => a -> m a return [ProcessStepID] -high +high scheduleEndpoint_ :: EndpointSt v (Interval t) -> f [ProcessStepID] -> f () -scheduleEndpoint_ EndpointSt v (Interval t) -ep f [ProcessStepID] -codeGen = forall (f :: * -> *) a. Functor f => f a -> f () +scheduleEndpoint_ EndpointSt v (Interval t) +ep f [ProcessStepID] +codeGen = forall (f :: * -> *) a. Functor f => f a -> f () void forall a b. (a -> b) -> a -> b $ forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => EndpointSt v (Interval t) -> m [ProcessStepID] -> m [ProcessStepID] scheduleEndpoint EndpointSt v (Interval t) -ep f [ProcessStepID] -codeGen +ep f [ProcessStepID] +codeGen {- | Add to the process description information about instruction evaluation. Unsafe means: without instruction collision check and nextTick consistency. -} scheduleInstructionUnsafe :: Interval t -> Instruction pu -> m [ProcessStepID] -scheduleInstructionUnsafe Interval t -at Instruction pu -instr = do - Schedule{Proxy (Instruction pu) +scheduleInstructionUnsafe Interval t +at Instruction pu +instr = do + Schedule{Proxy (Instruction pu) iProxy :: Proxy (Instruction pu) iProxy :: forall pu v x t. Schedule pu v x t -> Proxy (Instruction pu) -iProxy} <- forall s (m :: * -> *). MonadState s m => m s +iProxy} <- forall s (m :: * -> *). MonadState s m => m s get - [ProcessStepID] -buf <- forall {pu} {v} {x} {t} {m :: * -> *}. + [ProcessStepID] +buf <- forall {pu} {v} {x} {t} {m :: * -> *}. MonadState (Schedule pu v x t) m => Interval t -> StepInfo v x t -> m [ProcessStepID] scheduleStep Interval t -at forall a b. (a -> b) -> a -> b +at forall a b. (a -> b) -> a -> b $ forall pu v x t. (Show (Instruction pu), Typeable (Instruction pu)) => Instruction pu -> StepInfo v x t InstructionStep (Instruction pu -instr forall a (proxy :: * -> *). a -> proxy a -> a +instr forall a (proxy :: * -> *). a -> proxy a -> a `asProxyTypeOf` Proxy (Instruction pu) -iProxy) +iProxy) forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => t -> m () -updateTick forall a b. (a -> b) -> a -> b +updateTick forall a b. (a -> b) -> a -> b $ forall a. Interval a -> a sup Interval t -at forall a. Num a => a -> a -> a +at forall a. Num a => a -> a -> a + t 1 forall (m :: * -> *) a. Monad m => a -> m a return [ProcessStepID] -buf +buf where - updateTick :: t -> m () -updateTick t -tick = do - sch :: Schedule pu v x t -sch@Schedule{Process t (StepInfo v x t) + updateTick :: t -> m () +updateTick t +tick = do + sch :: Schedule pu v x t +sch@Schedule{Process t (StepInfo v x t) schProcess :: Process t (StepInfo v x t) schProcess :: forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) -schProcess} <- forall s (m :: * -> *). MonadState s m => m s +schProcess} <- forall s (m :: * -> *). MonadState s m => m s get forall s (m :: * -> *). MonadState s m => s -> m () put Schedule pu v x t -sch +sch { schProcess :: Process t (StepInfo v x t) schProcess = Process t (StepInfo v x t) -schProcess +schProcess { nextTick_ :: t nextTick_ = t -tick +tick } } scheduleInstructionUnsafe_ :: Interval t -> Instruction pu -> f () -scheduleInstructionUnsafe_ Interval t -ti Instruction pu -instr = forall (f :: * -> *) a. Functor f => f a -> f () +scheduleInstructionUnsafe_ Interval t +ti Instruction pu +instr = forall (f :: * -> *) a. Functor f => f a -> f () void forall a b. (a -> b) -> a -> b $ forall {pu} {v} {x} {t} {m :: * -> *}. (MonadState (Schedule pu v x t) m, Show (Instruction pu), Typeable pu, Num t) => Interval t -> Instruction pu -> m [ProcessStepID] scheduleInstructionUnsafe Interval t -ti Instruction pu -instr +ti Instruction pu +instr -- | Add to the process description information about nested step. scheduleNestedStep :: tag -> Step t (StepInfo v x t) -> m ProcessStepID -scheduleNestedStep tag -tag step :: Step t (StepInfo v x t) -step@Step{Interval t +scheduleNestedStep tag +tag step :: Step t (StepInfo v x t) +step@Step{Interval t pInterval :: forall t i. Step t i -> Interval t pInterval :: Interval t pInterval} = do - [ProcessStepID] -pID <- forall {m :: * -> *} {pu} {v} {x} {t}. + [ProcessStepID] +pID <- forall {m :: * -> *} {pu} {v} {x} {t}. MonadState (Schedule pu v x t) m => (ProcessStepID -> Step t (StepInfo v x t)) -> m [ProcessStepID] -scheduleStep' (\ProcessStepID -uid -> forall t i. ProcessStepID -> Interval t -> i -> Step t i +scheduleStep' (\ProcessStepID +uid -> forall t i. ProcessStepID -> Interval t -> i -> Step t i Step ProcessStepID -uid Interval t -pInterval forall a b. (a -> b) -> a -> b +uid Interval t +pInterval forall a b. (a -> b) -> a -> b $ forall tag t v x. UnitTag tag => tag -> Step t (StepInfo v x t) -> StepInfo v x t NestedStep tag -tag Step t (StepInfo v x t) -step) +tag Step t (StepInfo v x t) +step) forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> ProcessStepID length [ProcessStepID] -pID forall a. Eq a => a -> a -> Bool +pID forall a. Eq a => a -> a -> Bool /= ProcessStepID 1) forall a b. (a -> b) -> a -> b $ forall a. HasCallStack => String -> a @@ -601,39 +601,39 @@ return forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [ProcessStepID] -pID +pID -- | Get a current slice of the computational process. -getProcessSlice :: State (Schedule pu v x t) (Process t (StepInfo v x t)) +getProcessSlice :: State (Schedule pu v x t) (Process t (StepInfo v x t)) getProcessSlice :: forall pu v x t. State (Schedule pu v x t) (Process t (StepInfo v x t)) getProcessSlice = do - Schedule{Process t (StepInfo v x t) + Schedule{Process t (StepInfo v x t) schProcess :: Process t (StepInfo v x t) schProcess :: forall pu v x t. Schedule pu v x t -> Process t (StepInfo v x t) -schProcess} <- forall s (m :: * -> *). MonadState s m => m s +schProcess} <- forall s (m :: * -> *). MonadState s m => m s get forall (m :: * -> *) a. Monad m => a -> m a return Process t (StepInfo v x t) -schProcess +schProcess relatedEndpoints :: Process t (StepInfo a x t) -> Set a -> [Step t (StepInfo a x t)] -relatedEndpoints Process t (StepInfo a x t) -process_ Set a -vs = +relatedEndpoints Process t (StepInfo a x t) +process_ Set a +vs = forall a. (a -> Bool) -> [a] -> [a] filter ( \case Step{pDesc :: forall t i. Step t i -> i -pDesc = EndpointRoleStep EndpointRole a -role} -> Bool -> Bool +pDesc = EndpointRoleStep EndpointRole a +role} -> Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null (forall a v. Variables a v => a -> Set v variables EndpointRole a -role forall a. Ord a => Set a -> Set a -> Set a +role forall a. Ord a => Set a -> Set a -> Set a `S.intersection` Set a -vs) +vs) Step t (StepInfo a x t) _ -> Bool False @@ -641,16 +641,16 @@ forall a b. (a -> b) -> a -> b $ forall t i. Process t i -> [Step t i] steps Process t (StepInfo a x t) -process_ +process_ -- | Helper for instruction extraction from a rigid type variable. -castInstruction :: (Typeable a, Typeable pu) => pu -> a -> Maybe (Instruction pu) +castInstruction :: (Typeable a, Typeable pu) => pu -> a -> Maybe (Instruction pu) castInstruction :: forall a pu. (Typeable a, Typeable pu) => pu -> a -> Maybe (Instruction pu) -castInstruction pu -_pu a -inst = forall a b. (Typeable a, Typeable b) => a -> Maybe b +castInstruction pu +_pu a +inst = forall a b. (Typeable a, Typeable b) => a -> Maybe b cast a -inst +inst \ No newline at end of file diff --git a/haddock/nitta/src/NITTA.Utils.html b/haddock/nitta/src/NITTA.Utils.html index 179ebdcf8..422a2544b 100644 --- a/haddock/nitta/src/NITTA.Utils.html +++ b/haddock/nitta/src/NITTA.Utils.html @@ -68,13 +68,13 @@ defaultLayoutOptions shiftI :: a -> Interval a -> Interval a -shiftI a -offset Interval a -i = Interval a -i forall a. Num a => a -> a -> a +shiftI a +offset Interval a +i = Interval a +i forall a. Num a => a -> a -> a + forall a. a -> Interval a I.singleton a -offset +offset bool2verilog :: Bool -> Text bool2verilog Bool @@ -85,58 +85,58 @@ "1'b0" values2dump :: t a -> [Char] -values2dump t a -vs = - let vs' :: [Char] -vs' = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] +values2dump t a +vs = + let vs' :: [Char] +vs' = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap forall a. Show a => a -> [Char] show t a -vs - x :: Int -x = forall (t :: * -> *) a. Foldable t => t a -> Int +vs + x :: Int +x = forall (t :: * -> *) a. Foldable t => t a -> Int length [Char] -vs' forall a. Integral a => a -> a -> a +vs' forall a. Integral a => a -> a -> a `mod` Int 4 - vs'' :: [Char] -vs'' = if Int -x forall a. Eq a => a -> a -> Bool + vs'' :: [Char] +vs'' = if Int +x forall a. Eq a => a -> a -> Bool == Int 0 then [Char] -vs' else forall a. Int -> a -> [a] +vs' else forall a. Int -> a -> [a] replicate (Int 4 forall a. Num a => a -> a -> a - Int -x) Char +x) Char '0' forall a. [a] -> [a] -> [a] ++ [Char] -vs' +vs' in forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] -concatMap (\[Char] -e -> forall a. (Integral a, Show a) => a -> [Char] -> [Char] +concatMap (\[Char] +e -> forall a. (Integral a, Show a) => a -> [Char] -> [Char] showHex ([Char] -> Int -readBin [Char] -e) [Char] +readBin [Char] +e) [Char] "") forall a b. (a -> b) -> a -> b $ forall {a}. [a] -> [[a]] -groupBy4 [Char] -vs'' +groupBy4 [Char] +vs'' where - groupBy4 :: [a] -> [[a]] -groupBy4 [] = [] - groupBy4 [a] -xs = forall a. Int -> [a] -> [a] + groupBy4 :: [a] -> [[a]] +groupBy4 [] = [] + groupBy4 [a] +xs = forall a. Int -> [a] -> [a] take Int 4 [a] -xs forall a. a -> [a] -> [a] +xs forall a. a -> [a] -> [a] : [a] -> [[a]] -groupBy4 (forall a. Int -> [a] -> [a] +groupBy4 (forall a. Int -> [a] -> [a] drop Int 4 [a] -xs) - readBin :: String -> Int - readBin :: [Char] -> Int -readBin = forall a b. (a, b) -> a +xs) + readBin :: String -> Int + readBin :: [Char] -> Int +readBin = forall a b. (a, b) -> a fst forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [a] -> a head forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -151,20 +151,20 @@ 0) hdlValDump :: p -> Text -hdlValDump p -x = - let bins :: [Bool] -bins = +hdlValDump p +x = + let bins :: [Bool] +bins = forall a b. (a -> b) -> [a] -> [b] map (forall a. Bits a => a -> Int -> Bool testBit forall a b. (a -> b) -> a -> b $ forall x. Val x => x -> Integer rawAttr p -x) (forall a. [a] -> [a] +x) (forall a. [a] -> [a] reverse [Int 0 .. forall x. Val x => x -> Int attrWidth p -x forall a. Num a => a -> a -> a +x forall a. Num a => a -> a -> a - Int 1]) forall a. [a] -> [a] -> [a] @@ -173,54 +173,54 @@ testBit forall a b. (a -> b) -> a -> b $ forall x. Val x => x -> Integer rawData p -x) (forall a. [a] -> [a] +x) (forall a. [a] -> [a] reverse [Int 0 .. forall x. Val x => x -> Int dataWidth p -x forall a. Num a => a -> a -> a +x forall a. Num a => a -> a -> a - Int 1]) - lMod :: Int -lMod = forall (t :: * -> *) a. Foldable t => t a -> Int + lMod :: Int +lMod = forall (t :: * -> *) a. Foldable t => t a -> Int length [Bool] -bins forall a. Integral a => a -> a -> a +bins forall a. Integral a => a -> a -> a `mod` Int 4 - bins' :: [[Bool]] -bins' = + bins' :: [[Bool]] +bins' = forall {a}. [a] -> [[a]] -groupBy4 forall a b. (a -> b) -> a -> b +groupBy4 forall a b. (a -> b) -> a -> b $ if Int -lMod forall a. Eq a => a -> a -> Bool +lMod forall a. Eq a => a -> a -> Bool == Int 0 then [Bool] -bins +bins else forall a. Int -> a -> [a] replicate (Int 4 forall a. Num a => a -> a -> a - Int -lMod) (forall a. [a] -> a +lMod) (forall a. [a] -> a head [Bool] -bins) forall a. [a] -> [a] -> [a] +bins) forall a. [a] -> [a] -> [a] ++ [Bool] -bins - hs :: [Int] -hs = forall a b. (a -> b) -> [a] -> [b] +bins + hs :: [Int] +hs = forall a b. (a -> b) -> [a] -> [b] map (forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b -foldr (\(Int -i, Bool -a) Int -acc -> if Bool -a then forall a. Bits a => a -> Int -> a +foldr (\(Int +i, Bool +a) Int +acc -> if Bool +a then forall a. Bits a => a -> Int -> a setBit Int -acc Int -i else Int -acc) (Int +acc Int +i else Int +acc) (Int 0 :: Int) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. [a] -> [b] -> [(a, b)] zip [Int @@ -228,7 +228,7 @@ 2, Int 1, Int 0]) [[Bool]] -bins' +bins' in [Text] -> Text T.concat forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] @@ -237,24 +237,24 @@ . (forall a. (Integral a, Show a) => a -> [Char] -> [Char] `showHex` [Char] "")) [Int] -hs +hs where - groupBy4 :: [a] -> [[a]] -groupBy4 [] = [] - groupBy4 [a] -xs = forall a. Int -> [a] -> [a] + groupBy4 :: [a] -> [[a]] +groupBy4 [] = [] + groupBy4 [a] +xs = forall a. Int -> [a] -> [a] take Int 4 [a] -xs forall a. a -> [a] -> [a] +xs forall a. a -> [a] -> [a] : [a] -> [[a]] -groupBy4 (forall a. Int -> [a] -> [a] +groupBy4 (forall a. Int -> [a] -> [a] drop Int 4 [a] -xs) +xs) toModuleName :: [Char] -> [Char] -toModuleName [Char] -name = forall a. Eq a => [a] -> [a] -> [a] -> [a] +toModuleName [Char] +name = forall a. Eq a => [a] -> [a] -> [a] -> [a] S.replace [Char] " " [Char] "_" forall a b. (a -> b) -> a -> b @@ -262,65 +262,65 @@ S.replace [Char] ":" [Char] "" [Char] -name +name endpointAt :: a -> Process a (StepInfo v x t) -> Maybe (EndpointRole v) -endpointAt a -t Process a (StepInfo v x t) -p = +endpointAt a +t Process a (StepInfo v x t) +p = case forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe forall {t} {v} {x} {t}. Step t (StepInfo v x t) -> Maybe (EndpointRole v) getEndpoint forall a b. (a -> b) -> a -> b $ forall {a} {i}. Ord a => a -> Process a i -> [Step a i] whatsHappen a -t Process a (StepInfo v x t) -p of - [EndpointRole v -ep] -> forall a. a -> Maybe a +t Process a (StepInfo v x t) +p of + [EndpointRole v +ep] -> forall a. a -> Maybe a Just EndpointRole v -ep +ep [] -> forall a. Maybe a Nothing - [EndpointRole v] -eps -> forall a. HasCallStack => [Char] -> a + [EndpointRole v] +eps -> forall a. HasCallStack => [Char] -> a error forall a b. (a -> b) -> a -> b $ [Char] "endpoints collision at: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show a -t forall a. [a] -> [a] -> [a] +t forall a. [a] -> [a] -> [a] ++ [Char] " " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show [EndpointRole v] -eps +eps isIntermediate :: Step t (StepInfo v x t) -> Bool -isIntermediate Step t (StepInfo v x t) -s = forall a. Maybe a -> Bool +isIntermediate Step t (StepInfo v x t) +s = forall a. Maybe a -> Bool isJust forall a b. (a -> b) -> a -> b $ forall {t} {v} {x} {t}. Step t (StepInfo v x t) -> Maybe (F v x) getIntermediate Step t (StepInfo v x t) -s +s getIntermediate :: Step t (StepInfo v x t) -> Maybe (F v x) -getIntermediate Step{StepInfo v x t +getIntermediate Step{StepInfo v x t pDesc :: forall t i. Step t i -> i pDesc :: StepInfo v x t -pDesc} | IntermediateStep F v x -f <- forall {v} {x} {t}. StepInfo v x t -> StepInfo v x t +pDesc} | IntermediateStep F v x +f <- forall {v} {x} {t}. StepInfo v x t -> StepInfo v x t descent StepInfo v x t -pDesc = forall a. a -> Maybe a +pDesc = forall a. a -> Maybe a Just F v x -f +f getIntermediate Step t (StepInfo v x t) _ = forall a. Maybe a Nothing getIntermediates :: Process b (StepInfo v x t) -> [F v x] -getIntermediates Process b (StepInfo v x t) -p = forall a b. (a -> Maybe b) -> [a] -> [b] +getIntermediates Process b (StepInfo v x t) +p = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe forall {t} {v} {x} {t}. Step t (StepInfo v x t) -> Maybe (F v x) getIntermediate forall a b. (a -> b) -> a -> b $ forall b a. Ord b => (a -> b) -> [a] -> [a] @@ -328,49 +328,49 @@ stepStart forall a b. (a -> b) -> a -> b $ forall t i. Process t i -> [Step t i] steps Process b (StepInfo v x t) -p +p getEndpoint :: Step t (StepInfo v x t) -> Maybe (EndpointRole v) -getEndpoint Step{StepInfo v x t +getEndpoint Step{StepInfo v x t pDesc :: StepInfo v x t pDesc :: forall t i. Step t i -> i -pDesc} | EndpointRoleStep EndpointRole v -role <- forall {v} {x} {t}. StepInfo v x t -> StepInfo v x t +pDesc} | EndpointRoleStep EndpointRole v +role <- forall {v} {x} {t}. StepInfo v x t -> StepInfo v x t descent StepInfo v x t -pDesc = forall a. a -> Maybe a +pDesc = forall a. a -> Maybe a Just EndpointRole v -role +role getEndpoint Step t (StepInfo v x t) _ = forall a. Maybe a Nothing isInstruction :: Step t (StepInfo v x t) -> Bool -isInstruction Step t (StepInfo v x t) -instr = forall a. Maybe a -> Bool +isInstruction Step t (StepInfo v x t) +instr = forall a. Maybe a -> Bool isJust forall a b. (a -> b) -> a -> b $ forall {t} {v} {x} {t}. Step t (StepInfo v x t) -> Maybe (StepInfo v x t) getInstruction Step t (StepInfo v x t) -instr +instr getInstruction :: Step t (StepInfo v x t) -> Maybe (StepInfo v x t) -getInstruction Step{StepInfo v x t +getInstruction Step{StepInfo v x t pDesc :: StepInfo v x t pDesc :: forall t i. Step t i -> i -pDesc} | instr :: StepInfo v x t -instr@(InstructionStep Instruction pu +pDesc} | instr :: StepInfo v x t +instr@(InstructionStep Instruction pu _) <- forall {v} {x} {t}. StepInfo v x t -> StepInfo v x t descent StepInfo v x t -pDesc = forall a. a -> Maybe a +pDesc = forall a. a -> Maybe a Just StepInfo v x t -instr +instr getInstruction Step t (StepInfo v x t) _ = forall a. Maybe a Nothing getEndpoints :: Process b (StepInfo v x t) -> [EndpointRole v] -getEndpoints Process b (StepInfo v x t) -p = forall a b. (a -> Maybe b) -> [a] -> [b] +getEndpoints Process b (StepInfo v x t) +p = forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe forall {t} {v} {x} {t}. Step t (StepInfo v x t) -> Maybe (EndpointRole v) getEndpoint forall a b. (a -> b) -> a -> b @@ -379,10 +379,10 @@ stepStart forall a b. (a -> b) -> a -> b $ forall t i. Process t i -> [Step t i] steps Process b (StepInfo v x t) -p +p transferred :: u -> Set a1 -transferred u -pu = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 +transferred u +pu = forall {a1} {a2}. Ord a1 => (a2 -> Set a1) -> [a2] -> Set a1 unionsMap forall a v. Variables a v => a -> Set v variables forall a b. (a -> b) -> a -> b $ forall {b} {v} {x} {t}. @@ -393,12 +393,12 @@ ProcessorUnit u v x t => u -> Process t (StepInfo v x t) process u -pu +pu inputsPushedAt :: Process a (StepInfo a x t2) -> f -> a -inputsPushedAt Process a (StepInfo a x t2) -process_ f -f = forall a. Interval a -> a +inputsPushedAt Process a (StepInfo a x t2) +process_ f +f = forall a. Interval a -> a sup forall a b. (a -> b) -> a -> b $ forall {a} {i}. Ord a => [Step a i] -> Interval a stepsInterval forall a b. (a -> b) -> a -> b @@ -407,48 +407,48 @@ Process t1 (StepInfo a x t2) -> Set a -> [Step t1 (StepInfo a x t2)] relatedEndpoints Process a (StepInfo a x t2) -process_ forall a b. (a -> b) -> a -> b +process_ forall a b. (a -> b) -> a -> b $ forall f v. Function f v => f -> Set v inputs f -f +f stepsInterval :: [Step a i] -> Interval a -stepsInterval [Step a i] -ss = - let a :: a -a = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a +stepsInterval [Step a i] +ss = + let a :: a +a = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a minimum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall a. Interval a -> a inf forall b c a. (b -> c) -> (a -> b) -> a -> c . forall t i. Step t i -> Interval t pInterval) [Step a i] -ss - b :: a -b = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a +ss + b :: a +b = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map (forall a. Interval a -> a sup forall b c a. (b -> c) -> (a -> b) -> a -> c . forall t i. Step t i -> Interval t pInterval) [Step a i] -ss +ss in a -a forall a. Ord a => a -> a -> Interval a +a forall a. Ord a => a -> a -> Interval a ... a -b +b stepStart :: Step a i -> a -stepStart Step{Interval a +stepStart Step{Interval a pInterval :: Interval a pInterval :: forall t i. Step t i -> Interval t -pInterval} = forall a. Interval a -> a +pInterval} = forall a. Interval a -> a I.inf Interval a -pInterval +pInterval getToml :: Text -> Table -getToml Text -text = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c +getToml Text +text = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (forall a. HasCallStack => [Char] -> a error forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Show a => a -> [Char] @@ -457,44 +457,44 @@ $ [Char] -> Text -> Either ParseError Table parseTomlDoc [Char] "parse error: " Text -text +text getFromToml :: HashMap Text a -> a -getFromToml HashMap Text a -toml = forall {a} {a}. +getFromToml HashMap Text a +toml = forall {a} {a}. (FromJSON a, ToJSON a) => Text -> HashMap Text a -> a getFromTomlSection Text T.empty HashMap Text a -toml +toml getFromTomlSection :: Text -> HashMap Text a -> a -getFromTomlSection Text -section HashMap Text a -toml +getFromTomlSection Text +section HashMap Text a +toml | Text -section forall a. Eq a => a -> a -> Bool +section forall a. Eq a => a -> a -> Bool == Text T.empty = forall {a}. Result a -> a -unwrap forall a b. (a -> b) -> a -> b +unwrap forall a b. (a -> b) -> a -> b $ forall a. FromJSON a => Value -> Result a fromJSON forall a b. (a -> b) -> a -> b $ forall a. ToJSON a => a -> Value toJSON HashMap Text a -toml +toml | Bool otherwise = case forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v HM.lookup Text -section HashMap Text a -toml of - Just a -s -> forall {a}. Result a -> a -unwrap forall a b. (a -> b) -> a -> b +section HashMap Text a +toml of + Just a +s -> forall {a}. Result a -> a +unwrap forall a b. (a -> b) -> a -> b $ forall a. FromJSON a => Value -> Result a fromJSON forall a b. (a -> b) -> a -> b $ forall a. ToJSON a => a -> Value toJSON a -s +s Maybe a Nothing -> forall a. HasCallStack => [Char] -> a error forall a b. (a -> b) -> a -> b @@ -502,14 +502,14 @@ "section not found - " forall a. Semigroup a => a -> a -> a <> Text -> [Char] T.unpack Text -section +section where - unwrap :: Result a -> a -unwrap (Success a -conf) = a -conf - unwrap (Error [Char] -msg) = forall a. HasCallStack => [Char] -> a + unwrap :: Result a -> a +unwrap (Success a +conf) = a +conf + unwrap (Error [Char] +msg) = forall a. HasCallStack => [Char] -> a error [Char] -msg +msg \ No newline at end of file diff --git a/haddock/nitta/src/Paths_nitta.html b/haddock/nitta/src/Paths_nitta.html index d8f2f895c..20bb7e46a 100644 --- a/haddock/nitta/src/Paths_nitta.html +++ b/haddock/nitta/src/Paths_nitta.html @@ -19,7 +19,7 @@ #if defined(VERSION_base) #if MIN_VERSION_base(4,0,0) -catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a +catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a #else catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a #endif @@ -42,16 +42,16 @@ getDataFileName :: FilePath -> IO FilePath getDataFileName :: String -> IO String -getDataFileName String -name = do - String -dir <- IO String +getDataFileName String +name = do + String +dir <- IO String getDataDir forall (m :: * -> *) a. Monad m => a -> m a return (String -dir String -> String -> String +dir String -> String -> String `joinFileName` String -name) +name) getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath @@ -132,34 +132,34 @@ joinFileName :: String -> String -> FilePath joinFileName :: String -> String -> String joinFileName String -"" String -fname = String -fname +"" String +fname = String +fname joinFileName String -"." String -fname = String -fname -joinFileName String -dir String +"." String +fname = String +fname +joinFileName String +dir String "" = String -dir -joinFileName String -dir String -fname +dir +joinFileName String +dir String +fname | Char -> Bool isPathSeparator (forall a. [a] -> a List.last String -dir) = String -dir forall a. [a] -> [a] -> [a] +dir) = String +dir forall a. [a] -> [a] -> [a] ++ String -fname +fname | Bool otherwise = String -dir forall a. [a] -> [a] -> [a] +dir forall a. [a] -> [a] -> [a] ++ Char pathSeparator forall a. a -> [a] -> [a] : String -fname +fname pathSeparator :: Char pathSeparator :: Char @@ -168,9 +168,9 @@ isPathSeparator :: Char -> Bool isPathSeparator :: Char -> Bool -isPathSeparator Char -c = Char -c forall a. Eq a => a -> a -> Bool +isPathSeparator Char +c = Char +c forall a. Eq a => a -> a -> Bool == Char '/' \ No newline at end of file diff --git a/hpc/all.tix b/hpc/all.tix index e3eef2f35..dff2fa32d 100644 --- a/hpc/all.tix +++ b/hpc/all.tix @@ -1 +1 @@ -Tix [TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends" 2520899850 29 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends.Common" 1530138443 92 [1,1,1,15,30,45,45,45,45,0,45,45,45,45,45,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,6,14,14,14,14,6,6,6,6,6,105,105,105,105,105,105,105,105,105,105,105,45,45,45,45,45,45,45,45,45,45,45,45,45,105,105,30,30,30,30,30,30,30,30,6,6,6,6,79,79,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends.Lua" 2114426385 1160 [6,13,14,14,14,6,6,424,424,424,418,424,424,0,0,0,0,0,0,0,0,0,0,0,424,424,11,11,11,11,11,11,8,8,8,8,8,8,101,103,103,103,103,43,43,43,94,94,94,94,94,94,94,94,19,19,19,19,19,19,19,19,36,36,36,36,36,36,36,36,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,3,3,3,3,3,3,29,29,29,29,4,4,4,4,4,4,4,2,2,2,2,2,2,2,89,90,90,90,90,90,90,0,0,0,0,0,0,455,455,455,455,455,455,455,455,0,0,455,455,455,85,85,85,85,85,85,85,85,85,85,0,0,0,0,0,0,0,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,0,87,87,87,87,87,0,0,87,302,302,301,301,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,0,0,0,0,0,0,0,17,17,17,415,415,415,415,415,415,0,0,0,0,0,0,0,0,415,415,415,285,285,272,272,272,272,285,285,285,285,285,285,274,274,274,274,285,285,285,285,285,285,285,24,24,24,24,24,261,261,261,261,285,285,270,285,285,285,270,270,270,270,267,267,267,267,267,267,267,270,270,270,270,270,270,270,270,270,270,270,270,42,42,42,42,42,42,1,1,1,1,1,1,1,1,1,41,39,39,39,28,28,28,28,28,28,28,28,41,41,41,42,42,228,228,228,228,228,228,228,270,270,270,62,62,62,11,51,62,11,11,11,11,11,11,11,11,51,51,51,8,43,51,8,8,8,8,8,8,8,8,43,43,43,43,0,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,29,29,29,29,0,29,29,29,29,29,29,29,29,0,0,0,0,0,0,91,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,90,90,89,90,90,90,94,94,0,94,94,94,94,89,90,94,0,0,67,85,85,67,67,67,85,85,0,85,85,0,85,118,118,25,93,118,25,25,25,25,25,25,93,0,93,93,93,93,93,30,19,19,19,19,19,19,30,30,30,30,30,30,30,30,30,30,30,30,30,63,29,29,29,29,63,63,63,63,63,63,63,63,93,93,118,197,0,0,0,0,0,0,197,87,87,87,87,88,87,88,88,422,422,421,93,329,422,93,329,0,329,329,329,329,329,329,329,329,329,329,329,329,509,88,87,81,87,87,87,88,88,88,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,80,80,81,81,81,81,81,81,79,79,81,81,81,81,81,81,66,64,66,66,66,41,41,41,41,81,80,81,81,81,88,88,0,88,415,415,415,415,415,415,322,322,322,415,322,414,414,415,414,414,414,414,414,414,415,415,415,415,415,0,0,0,0,0,0,0,0,0,0,0,415,415,415,88,88,88,15,15,15,15,15,15,15,15,15,322,322,322,71,71,71,71,71,71,71,71,71,4,4,4,7,7,7,7,7,7,7,7,7,0,507,0,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,2,2,2,2,2,2,2,2,2,2,2,2,39,42,42,42,42,42,42,39,42,42,97,20,37,17,0,0,0,0,0,0,171,34,171,171,20,171,171,170,171,171,171,171,171,171,171,171,171,2,2,2,14,0,14,14,14,14,14,0,3,3,3,3,3,3,3,3,3,3,3,7,19,48,48,48,48,48,48,48,48,5,5,5,5,0,0,0,0,0,0,291,0,0,0,0,111,111,111,111,111,111,111,0,1,0,1,1,1,1,1,1,1,182,182,182,182,182,182,24,24,24,24,6,6,6,6,6,0,6,0,12,12,12,12,12,12,12,12,12,0,0,6,6,6,6,6,6,12,12,12,12,6,6,6,6,12,90,90,90,90,90,90,90,90,89,90,90,90,90,90,90,90,90,90,90,121,121,78,43,121,78,0,0,65,65,65,65,65,65,65,65,65,65,65,90,90,90,90,90,65,65,65,65,65,78,78,65,64,64,64,65,65,78,78,78,20,43,43,43,43,43,43,0,0,0,43,43,5,10,0,15,9,9,9,9,9,9,9,9,9,9,9,5,5,5,5,4,9,6,6,6,6,6,6,0,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,4,4,4,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,430,85,0,0,85,85,85,44,85,65,49,6,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,7,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,6,6,6,6,6,6,85,85,85,85,85,85,6,6,6,6,6,85,85,0,6,6,85,85,0,0,0,0,0,0,0,0,6,6,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,1298,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends.XMILE.DocumentParser" 605346861 239 [1,1,1,1,3,3,3,3,3,3,15,15,15,15,15,15,5,5,5,5,5,5,5,5,5,5,2,2,1,1,1,1,1,1,1,2,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,2,0,1,0,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends.XMILE.Frontend" 3081057662 705 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends.XMILE.MathParser" 2163442405 198 [9,0,0,0,0,0,0,0,0,5,5,5,0,4,4,4,5,1,1,1,2,2,1,1,2,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,5,14,3,67,70,20,20,20,20,20,20,20,20,20,20,20,20,20,20,3,23,23,23,23,0,12,12,12,12,12,12,35,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,11,11,11,11,11,11,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,3,35,1,12],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Analysis" 1013245876 182 [143557,143555,0,143575,143557,143561,116083,143551,143561,0,0,0,0,0,2746593,578229,2168490,2746628,578214,578232,578250,578244,539746,539718,539733,578221,546808,578229,2168502,0,2168506,2168412,1521761,2032982,2033008,2033001,1263040,2032876,2032929,2168498,2889991,829680,829667,829666,2227077,2227022,2227015,2227002,1979491,2227028,2227027,2227090,2227027,2227087,1369829,857229,2227014,1369833,857226,829640,829682,829691,721779,857198,609704,857219,655831,857120,857169,857183,857152,857170,857235,2227036,2227054,159626,27485,132161,159638,27484,132147,132140,132143,0,132138,132154,0,0,132128,0,132128,132148,132147,132148,132140,132157,104643,104659,132128,159623,27482,27484,27486,27482,27476,4170,23312,27482,4170,4169,4170,4170,4170,27482,27483,27482,27478,27479,27482,27486,27485,27483,27483,4170,27484,27480,27480,27482,27482,27486,27482,27485,27483,27484,27484,8405,8405,8405,20397,20397,20397,20396,20397,20397,20397,209385,53539,209385,20397,20397,5238,25634,5238,5238,5238,5238,5238,5238,5238,5238,5238,105,105,105,105,105,105,105,0,0,0,0,0,0,27484,27486,360,360,4170,4170,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.DataFlow" 1408186243 101 [475,475,475,475,475,0,0,0,0,0,475,5167,5167,5167,5167,5167,5167,22,0,0,2533,2533,2533,2533,2533,2533,2533,2533,2533,0,0,298,298,298,298,298,298,298,0,0,152,152,152,152,152,152,152,0,0,2159,2159,2159,2159,2159,2159,0,0,2159,2158,2158,0,0,2159,2159,2159,2158,2159,2159,2159,2159,2159,2159,1024834,1889234,57985,58142,58141,1947380,21454,21454,1653,1653,1653,23107,3,3,3,3,3,3,3,3,3,0,0,0,0,3,1,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Functions" 4277265919 848 [33,33,33,33,33,33,33,33,33,33,37,37,37,37,37,37,37,37,37,52,52,52,52,52,52,52,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,39858,39858,7850,32009,0,32009,32009,39858,476,311,311,389,389,389,389,389,389,476,476,5,5,5,5,5,5,5,5,5,5,5,26,26,26,26,26,25,25,25,25,25,25,25,25,26,26,26,61,60,60,60,60,61,51,51,51,51,61,61,61,23,23,23,23,23,23,23,23,23,23,23,23,23,132,132,132,132,132,131,132,132,132,132,132,132,132,14459,13612,13612,14457,14457,14457,14457,14459,14459,14459,865970,866001,8707,857260,0,857266,857250,866007,145,142,142,145,145,145,145,145,143,143,145,145,145,0,0,0,0,0,0,0,0,21868,36,0,51,0,159,59521,19,1003,167067,24845,56963,52749,0,0,25068,593,593,2382,2382,2382,2382,2382,593,593,18,18,0,0,0,0,0,0,0,0,17787,17787,17787,16252,16252,16252,2881,2401,2401,2401,2401,2401,2401,2401,2401,2401,2881,2881,0,0,185,185,185,185,40,145,145,150,150,150,145,185,185,1020,1020,0,0,0,0,0,83061,83061,83061,0,0,311715,41850,41850,311718,311718,260,260,1588,1588,0,0,0,0,0,291104,291115,291121,0,0,278015,72616,72599,52805,72612,278034,278032,25,25,25,25,25,25,25,25,25,25,25,15,15,15,15,15,15,15,15,15,15,15,40,8,8,18,330,330,330,330,330,330,330,0,0,0,0,0,0,0,0,330,2623,2623,2118,2118,4741,1988,1988,1515,1515,3503,0,0,1190,1190,525,525,525,525,525,525,525,525,525,1190,1150,1150,433,433,433,433,433,433,433,433,433,1150,2340,878,878,1335,1335,1335,878,878,14260,14260,0,0,0,0,0,0,3752446,3752470,3752487,2615613,1321802,1321792,367496,367493,367518,367515,1321807,2615516,2615644,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,2,2,0,0,0,0,0,0,0,0,273,273,273,120,120,120,184,96,96,96,96,96,96,96,184,184,0,0,72,72,72,72,72,72,72,72,72,72,72,110,110,91,71,109,110,90,90,50,32,50,90,110,110,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53453,53444,53462,53443,53463,53471,20489,20492,20491,20493,20484,20495,9502,9504,9499,9504,9495,9502,9498,9500,9500,9500,9501,9502,9502,39918,39924,9959,9504,9492,9495,9500,9503,9500,9494,9957,39911,39906,39899,9493,9503,9500,39890,39924,0,0,555,555,555,555,555,555,555,555,555,555,555,555,589,589,1458,1444,1478,589,589,39,39,21716,21716,21716,21716,21716,21716,21716,21716,21716,21716,21716,4099614,4099617,4099646,4099628,4099643,4099657,1700821,1700811,1700821,3938455,3938466,527092,527090,527091,527094,527094,527098,527096,527090,527096,3938424,3938479,0,0,70,70,70,70,70,70,70,70,70,70,70,70,105,105,81,81,116,105,105,19,19,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,476175,476187,476209,476192,476189,476216,237099,237092,237102,59881,59872,59872,468935,468950,59875,59878,59873,59879,468961,468962,468961,59881,59872,59885,468942,468961,0,0,399,399,399,399,399,399,399,399,399,399,399,399,436,436,458,434,471,436,436,81,81,1618,1618,1618,1618,1618,1618,1618,1618,1618,1618,1618,1506011,1506029,1506114,1506038,1506045,1506116,558323,558319,558339,222615,222636,222636,1288776,1288757,224343,222638,222633,224356,1288765,1288759,1288748,222619,222642,222631,1288756,1288807,0,0,359,359,1014,1014,1014,1014,1014,359,359,2539,2539,4,4,4,4,4,4,4,4,1276123,1276128,1276144,464298,464297,464302,2216058,848188,848192,212871,212869,212871,212872,212868,212871,848196,2216028,2216060,0,0,540,539,540,540,0,0,0,0,0,0,0,0,0,0,0,0,876808,876810,876835,0,0,1314483,368640,368634,136906,136318,136336,136928,368651,1314438,1314504,2761,2761,540,540,540,540,0,0,4,4,4,306,306,306,306,306,306,341427,341421,341430,0,0,801045,310364,310382,801005,801046,2761,2761,1225,1225,1225,1224,1012,213,213,546,546,546,213,1224,1225,7388,7388,0,20233,20233,7388,7388,4,4,4,4,4,4,4,4,4,2011959,2011946,2011951,1965154,1965166,1965172,7388,7388,107046,43454,43454,41898,41898,41897,22963,22884,22884,22963,41898,41898,43454,107047,107047,396,396],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Functions.Accum" 2216588066 276 [23,23,23,31,31,31,31,0,0,31,23,23,23,23,23,23,23,23,33,42,42,42,42,42,10,11,11,11,11,11,0,0,53,23,23,23,23,15,84,84,84,0,0,0,0,0,0,15,15,15,15,15,23,23,23,23,23,23,15,15,15,15,15,15,15,1,1,1,15,15,15,15,15,15,117,117,117,102,102,102,0,102,102,15,117,117,15,15,15,15,15,15,15,15,15,15,15,15,15,0,15,15,15,291044,0,0,291043,1601647,0,0,1601641,1684402,701112,2385513,305565,652574,958128,15,15,15,15,15,15,15,2246,2246,2246,2246,2246,0,0,331,0,152214,61549,4012,4012,4012,4015,2126,2126,2126,2126,2129,1886,1886,1886,1886,1886,4015,671,928,928,3816,3816,3817,928,927,928,928,4943,257,257,256,256,257,257,257,257,257,22913,22914,22915,22914,22915,22913,22914,22915,32747,32745,32745,32744,32747,65947,73068,73069,22915,22915,22854,22854,52965,52965,52965,52965,52965,35047,35047,35047,35047,22854,22854,22854,22854,22854,22854,549594,549586,549591,549580,549582,549586,549589,549590,549590,242499,242504,242500,242497,242499,242504,242505,0,0,283962,283963,12638,12638,12638,12638,296600,142831,142831,142831,63655,63655,63655,63655,142831,142831,142831,142831,63655,63655,63655,142831,142831,142831,398882,142831,63655,142831,398882,398882,74317,74317,25265,25265,99581,283962,283962,283961,283962,283962,3209,76293,76293,76293,76293,76293,76293,76293,76293,360256,176575,107388,283962],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Simulation" 908018382 162 [4404,4404,3597,4404,4404,4404,4404,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4404,614,614,614,614,614,410,410,606,606,606,606,606,472,472,472,472,472,314,410,410,410,410,410,410,614,145,145,145,145,145,0,145,70,614,614,614,614,116,116,116,116,116,0,0,0,116,56,410,410,614,614,614,614,614,614,614,614,614,614,308,314,410,410,410,410,614,614,102,610,610,9,9,9,9,9,9,9,601,601,108,108,108,108,108,108,108,493,0,493,493,493,712,102,102,102,34,34,204,204,102,204,204,204,204,204,94,204,204,102,102,102,102,102,102,102,102,102,102],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Types" 1032570287 631 [20347,6,20349,20345,20344,20347,20349,24192,24192,24194,5819,5819,5819,5819,18376,18376,24193,24193,24193,24193,24195,24194,4748,20019,20020,20021,24192,24189,24193,24195,24192,20019,20022,40369,40367,4404,4404,10836,10836,0,10836,10836,0,0,0,0,0,0,10836,0,10836,10836,10835,10836,10836,10836,10836,10836,10836,15240,22072,22072,22072,22072,0,0,0,0,0,0,22072,22072,170,65,65,65,170,170,170,0,170,136,112,112,112,136,136,100,140,140,140,100,100,100,100,136,136,170,0,0,0,0,0,170,34,34,34,34,34,30,30,30,30,30,30,30,30,30,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,30,30,30,30,30,30,30,30,30,6,6,6,6,6,6,6,6,6,6,6,6,6,14,70,70,70,70,63,7,70,63,7,70,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,14,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,884111,2641343,2641396,0,65846229,65846231,65877,0,73508,73508,177432,177433,177433,177433,349201,349200,349201,349201,302862,358601,358601,177433,177433,5060,5060,5060,5060,0,0,0,6,6,0,0,0,0,200,200,0,0,0,0,0,0,0,0,6094881,6094897,365138,365138,44448,44448,3882,0,35027183,50,80,0,0,80,0,6897,0,14883,0,0,0,0,0,0,0,0,16785,0,0,0,0,0,0,0,0,1,1,1,1,9,28,42,42,42,42,0,42,42,42,42,42,42,42,42,28,28,28,28,28,28,28,0,28,0,0,0,0,0,0,0,0,0,0,0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,405279,487164,487164,487167,47904,47904,47904,47904,47904,47904,47904,439264,487166,356125,405275,405273,405266,405271,405273,405274,405277,405277,478804,478810,478816,2,2,2,2,478810,478815,282456,405275,405277,405271,405273,405273,405275,405274,47906,47906,47906,33445,405277,405278,405275,405275,405278,405275,405279,0,0,0,0,0,0,0,3961973,7442325,7218740,7442332,7442402,7442400,4415,4415,4415,47908,47908,47908,0,0,0,47908,47908,6425942,6888564,6619132,6888415,6888249,6888465,207736,224602,224603,0,0,0,3765,4788,5048,5048,7021709,9635666,9635794,1815058,1956571,1956636,0,51832,51836,0,1241059,0,1241055,420441,820617,1241059,420439,420439,420437,420441,420441,820617,0,820617,820617,1241059,11915,11916,14444,14444,14444,60105,60105,93577,93577,47909,45668,93577,47909,45668,93577,60105,60105,60105,60105,60105,60105,60105,60105,102131,102131,5,102126,102131,5,5,102126,0,102126,102126,102131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,102,100,13858,13858,13858,13858,13858,13858,13858,102,102,102,102,102,102,102,102,102,102,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,9188630,9188640,1923807,5132,1918640,1923800,5135,1918658,0,1918648,351820,1918632,1918665,1918709,1918642,1923832,16822267,16822777,16822812,7909886,7910099,7910113],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Value" 1482728284 992 [1187,1184,1183,1183,1184,1212,1212,1328495,0,1328418,1328422,1328495,1328494,25,0,25,25,25,25,25,25,0,25,25,30,30,30,30,0,30,30,0,25,30,0,0,0,0,0,0,0,0,30,3174,3174,3175,3174,3175,3175,3175,3175,3173,3173,3173,3173,3173,3173,3175,3175,3175,0,3132,3132,3132,3132,3132,0,2,2,2,2,2,93,93,0,0,0,0,0,0,0,0,26071,26071,0,17873,17873,17873,17873,17873,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,16625,1,1,0,1,0,0,0,0,0,4943,0,0,0,0,0,0,0,0,0,0,0,92,32,0,92,92,92,92,0,1329249,1329248,0,1329192,1329194,1329249,1329189,1329290,1329291,0,44,0,44,44,44,44,2812,0,2812,2812,2811,704,704,1650,0,1650,1650,0,1650,1650,1650,0,0,0,1636,1636,1636,0,1010,1010,1010,1010,1010,1010,1010,1010,1010,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,12,12,27,27,3,3,3,3,3,350,350,350,350,350,410,410,410,0,410,410,410,410,410,228,228,228,228,228,548,548,548,548,548,3,3,3,3,3,78,78,78,78,0,78,78,78,78,78,3,3,0,3,3,3,3,3,3,3,3,10,10,0,10,10,10,10,1,1,1,1253642,1253621,1328259,1328260,0,1328243,1328280,381422,1328303,1328313,0,0,0,0,150,150,150,0,0,0,0,0,150,150,150,150,0,150,150,150,150,150,150,150,149,150,150,0,1742,1742,1742,1742,1742,1742,1742,1742,0,1742,1742,0,0,0,0,0,84,84,3930,0,3930,3930,3930,1488,1488,1488,288,0,288,288,0,288,288,288,27,27,27,2215,2215,2215,30,25,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,38,38,37,37,13,13,38,38,0,0,0,0,0,0,284,284,284,284,284,218,218,218,218,218,91,91,91,91,91,364,364,364,364,364,0,0,0,0,0,1007,1007,1007,1007,1007,1,1,1,1,44,44,44,1,1,1,0,0,0,0,58,58,58,58,58,58,58,0,0,0,0,0,58,58,0,1379,1379,1379,1379,1379,1379,1379,1379,0,1379,1379,0,0,0,0,0,0,0,70,70,0,1671,1671,1264,1264,1264,52,1212,1264,0,0,0,0,0,0,0,0,0,316,316,316,316,1900,1900,2216,0,2117,2117,2117,316,1801,2117,316,1801,2117,2117,2117,2117,0,59,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,43,43,43,44,44,44,43,43,43,43,43,43,43,1,43,44,0,1,0,1,0,1,0,1,1,43,43,43,44,43,43,43,43,14,14,14,14,44,44,0,0,0,0,0,0,168,168,168,168,168,168,168,12,11,12,12,12,12,12,3,3,3,3,3,4,4,4,4,4,0,0,0,0,0,14,14,14,14,14,14,2,2,0,2,2,2,8,8,8,33,37,37,0,0,0,0,63,63,63,63,63,63,63,0,0,0,0,0,63,63,678,26578,26578,27256,994,986,1018,1018,179,179,179,179,179,180,179,180,180,180,114,114,114,114,114,0,0,0,0,1954,1954,1216,1216,1216,1216,1216,0,0,0,1,1,0,0,48,48],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Variable" 1376477580 47 [20256,20256,20256,20256,144235,144234,17081,127152,144235,17081,127153,127154,127152,0,0,0,0,127155,0,127155,127155,127154,127152,127154,127155,144235,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Networks.Bus" 2093063353 2709 [0,8,0,8,0,8,8,0,0,8,0,8,8,8,0,0,0,8,0,8,0,8,8,8,8,8,8,8,6,6,0,6,6,551,517,161,517,517,517,517,517,65,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,552,547,517,552,552,517,517,517,517,517,551,517,517,517,367,367,367,0,0,0,551,552,552,552,551,552,552,552,509,509,65,508,508,44,44,144,144,0,188,589,589,589,589,589,65,65,589,589,65,65,589,589,0,0,589,589,589,589,94,94,94,94,188,130,1178,1178,1178,1178,1178,1178,130,1178,1178,1178,1178,1178,1178,0,1178,1178,1178,1178,1178,1178,1178,188,188,188,188,188,188,188,188,188,188,188,4052,4052,4052,10613,10613,10613,10613,14665,14665,14665,14665,14665,34195,34194,34196,34195,34198,34196,34195,34197,34196,34197,34195,34197,34197,34198,34197,34198,34198,34197,34198,34198,34198,82,82,82,82,82,82,0,0,0,82,82,152,150,150,150,150,150,150,175,148,175,175,175,175,175,174,175,152,152,82,82,82,82,82,82,152,148,175,175,1,1,4829208,4829208,4829208,4829208,9642417,9642418,0,9642418,9642416,18581530,18581530,18581097,18581096,18581530,9642416,9642417,9642418,9642418,9642418,9642417,9642417,9642418,0,0,0,9642418,9642418,9642418,8014627,1634653,9649277,9649274,9649280,9649280,9649279,9649279,9649276,9649277,9649279,9649279,9649279,9649279,9649279,9642418,9649279,4829208,4829208,4829208,4829207,4829208,4829208,4829208,4829208,4829208,4829208,4829208,4829208,4568,4568,4568,4568,4568,4568,4568,4568,4568,28736,248904,248902,248903,248905,248904,243422,219971,219971,219970,219970,219972,219969,248633,248634,248634,271,0,271,197,271,271,277640,4829207,4829208,4824640,9649280,9649280,65860543,65860539,65860543,4824640,9653848,134929,134929,35337,99593,134929,35336,35336,35337,99593,0,99593,99593,134930,82,86,86,86,86,82,81,82,85,86,86,82,81,86,86,86,86,0,0,0,0,0,0,0,0,94,94,94,94,0,0,0,0,91,91,0,0,0,0,93,93,0,0,0,0,94,94,91,91,0,0,94,94,94,94,94,94,94,94,94,94,94,5375,5375,5375,2505,2505,2505,2505,2505,2505,2870,5375,5375,22,22,22,22,22,22,43,72,72,72,72,72,0,0,94,0,3053,3053,3052,3053,3053,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2869,2869,2870,2870,2870,2870,2869,2870,2869,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2869,2869,2870,2870,2870,2870,2869,2870,2870,2869,2870,2870,2870,2869,2870,2870,2870,2870,2869,2870,2870,2870,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2504,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,1715,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2504,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,5375,5375,5374,2505,5375,5375,5375,470,470,470,470,470,470,94,94,94,94,94,94,94,94,94,94,94,94,470,470,470,470,470,470,470,470,94,94,94,94,94,65,94,94,94,65,94,94,94,94,94,94,94,94,65,94,589,589,589,589,589,94,94,94,94,94,94,94,94,94,94,65,94,260,260,260,260,260,259,260,260,260,260,260,260,260,260,260,259,260,260,260,260,260,260,260,260,260,260,260,259,260,260,65,94,94,94,94,94,94,94,65,30,30,30,30,65,65,65,65,65,65,65,589,94,94,94,94,94,94,94,3053,3053,3053,3053,3053,3053,3053,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,94,94,29,65,94,29,65,65,65,65,65,65,65,65,94,94,94,94,94,94,94,94,94,29,65,94,29,65,0,65,65,65,65,65,65,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,33,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,33,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,3053,3053,3053,3053,3053,3053,3053,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,3053,3053,3053,3053,1,1,1,1,0,0,6482,6482,6482,1169,1169,1169,32030,32031,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,94,94,94,94,94,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,94,94,94,94,94,589,589,589,589,589,589,589,589,589,589,589,589,589,589,341,589,588,588,588,589,589,589,589,589,589,589,589,589,589,589,683,0,3053,3053,3053,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,33,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,3147,3053,3053,3147,3147,3053,3053,3052,3053,3053,94,3147,3053,3146,3147,3147,3147,0,3146,3147,3147,3147,3147,3147,3147,3147,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,65,65,65,94,94,94,94,94,94,94,65,65,65,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,33,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,0,94,26,94,94,94,61,31260,31255,164,112,164,358,358,147,31258,31256,31253,31260,31259,25,25,25,25,0,25,25,25,25,25,25,25,0,25,25,25,25,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,25,25,6,25,25,25,24,1,25,24,1,1,1,25,25,25,102544,209889,209898,209900,209901,30692,30696,30692,30692,62326,122679,193124,166158,100123,122676,122658,122672,122673,122667,122674,122677,26117,193963,193960,293779,293776,293774,193965,163298,163298,163301,163297,163300,26117,26114,26116,26117,26113,26114,26115,26114,26114,26070,26071,26071,31250,31252,31257,31254,31251,31256,31256,0,6683,6683,6683,6683,6683,0,6683,6683,0,0,0,0,0,0,0,0,0,6683,3986,31092,31091,3986,3986,3986,31091,131005,124385,6620,131002,124385,6620,6620,6620,6620,6620,6620,6620,6620,6620,6620,6620,131006,31090,3986,3986,31093,31092,31092,31093,31092,31092,126851,126858,126857,122671,122678,126856,126867,31091,31259,31256,31253,31250,31250,31257,213646,1094721,1094720,911569,183164,1094735,301958,880140,880138,880140,6346959,6347150,6347318,889002,5437486,5437563,6347475,911561,911562,4141,907427,911567,4141,4141,4141,4141,31255,31257,31257,31259,31248,31257,31254,31255,31259,2530,7469,7469,7469,7469,7469,7469,7469,7469,7469,7469,7469,2530,2530,2530,2530,2530,2530,2530,2530,2,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,0,2530,2530,2530,2530,2530,2530,28,2530,2530,2530,2530,2530,31256,31251,31257,152,152,152,152,0,152,152,152,152,152,152,20,152,152,152,152,152,31258,31258,31259,299,298,298,298,0,299,299,298,298,298,298,10,299,299,299,299,299,31253,31260,31257,31261,31259,31261,2160,2160,2160,2160,2160,2160,2160,2160,2160,2160,2160,2159,2159,2159,2159,2159,2159,2159,2159,2159,2159,2159,2159,2160,2160,2160,2160,2160,2160,2160,2159,2159,2159,2159,2160,2160,38834,38834,269283,269289,52151,217139,269291,52132,52130,52133,38834,38834,5603,31268,31265,31265,31268,5603,5603,5603,5603,5603,31261,31264,31262,31262,31260,28995,2263,31265,28997,2263,0,2263,2254,2263,2254,2254,2263,2263,31269,5603,5602,5602,5602,5603,31265,31257,31256,31258,26688,4568,31263,26688,4568,0,4568,1752,1756,1752,1756,4568,4568,4568,4568,4568,4568,4568,4568,4568,4568,4568,4568,4568,4568,4568,4568,4568,4568,31264,5603,5549,5549,5603,31265,31257,31260,31266,31262,31259,31258,31256,31270,234638,234637,234637,234636,234637,234638,14665,14665,14665,14665,0,14666,14666,474,14666,14666,14664,14664,14664,14664,14664,234638,2048,2048,2048,3318,3318,3318,3318,2048,2048,2048,2048,2048,2048,236686,32030,32030,32030,32030,32028,32028,32029,7601,7601,7601,7601,7600,7601,3744,7601,7601,7601,0,0,7601,1169,32030,32030,32031,32031,32030,32031,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,0,0,0,0,0,0,0,0,496,496,504,504,493,11,504,493,492,491,492,493,493,19,8,19,11,11,11,11,0,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,504,91861,91858,0,3530,1230400,1230484,0,0,0,1230464,1230476,47362,91859,91861,91862,0,0,0,0,0,0,0,0,993973,0,0,0,0,0,0,0,0,0,46935,91859,91858,91862,91864,13372,13373,466835,208153,258691,466843,208154,0,208153,208152,208152,208153,0,208153,208151,208153,208150,13372,13373,13373,0,13890,13890,13885,13885,13890,13885,13890,13890,13890,13890,13890,13890,1699768,0,413778,413782,413775,413783,413777,413779,413784,1286004,1699779,13858,13890,13889,13889,416302,416301,416305,416304,0,0,0,0,0,0,416304,416299,13373,13889,13890,385794,385785,385801,385799,0,0,0,0,0,0,385804,385801,179648,179646,179648,179649,179649,0,0,13357,13890,13858,13890,13890,13890,13890,13890,13890,13890,13890,0,0,0,1902,1902,1902,1902,1902,1902,1902,1902,28455,82456,82462,82462,82453,82454,82459,82449,82455,82459,82460,82458,82460,82463,82462,82458,22337,28455,28455,59358,101346,101220,331573,331575,331578,331569,331574,331565,331566,331569,68468,410601,170338,410584,410597,410592,410584,410597,59351,59356,59356,59355,59356,59355,59355,19989,376862,376867,117795,572682,187717,572645,572663,572677,572669,572678,83100,83104,83102,83099,83105,83105,59358,59355,59358,59357,59356,83105,568008,567984,568000,568004,567998,376871,376867,376866,376864,376862,376866,376864,376869,376867,101346,78378,78475,22842,22870,101345,101345,101346,101343,101344,101344,101346,101346,74673,376868,376861,376870,376866,376866,376867,19991,74663,74664,74665,74665,98676,108608,108608,583807,583807,583814,583806,400880,400876,400862,400875,400868,400868,400866,376870,376868,376864,59358,83099,83098,83084,83106,40353,40355,40351,40331,40336,40350,40344,20014,20017,20013,20014,20016,0,20018,20018,0,0,0,0,0,0,0,0,0,0,0,0,20017,0,20018,20013,20018,20016,20017,20017,20016,20018,20016,20016,20018,20018,20016,20008,20009,20009,20017,20015,20016,20017,20017,20017,20340,20338,20340,20336,20341,20336,20340,20018,20013,20015,20013,20015,20014,20014,20018,20015,20017,20017,20015,20014,20007,20007,20014,0,20015,20018,20339,20340,20336,20340,20341,20341,20339,515,515,20341,20340,20018,20018,20017,20017,20017,20015,20017,80518,80517,80516,80518,80517,80519,46807,48470,48469,48469,48470,48469,48469,48470,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Networks.Types" 2438898017 230 [1178,1178,1178,1695,1695,1695,1695,1695,1695,0,9649278,9649280,0,0,0,0,0,0,0,0,0,0,0,0,65,0,589,589,0,0,0,0,0,0,0,0,0,0,250,250,589,589,0,5488,20294,20293,0,0,0,0,213645,213639,213635,0,213634,213640,0,0,0,0,0,0,213637,0,213634,1143991,1143983,1143991,45639,213646,151286,213636,213643,1127719,1127720,1127727,45639,213644,213632,213641,213640,163270,163270,163270,163271,162822,163270,163271,163271,12153,213643,213632,213645,213633,16263,16263,16263,16263,15747,16263,16263,16263,7908,213632,213626,213637,213648,213638,213639,2,2,3,3,3,3,3,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,28,2530,2530,806318,767081,806329,265571,60724,474,286467,587746,0,218589,806327,806330,91861,91858,91858,91858,46815,47362,91859,91858,91860,91860,91857,91863,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62349,213648,213646,2160,2160,2160,2159,108,2160,2160,506616,506660,1244929,1244943,1244960,1244921,1245014,40362,40367,40365,40360,40360,40364,40366,40361,1016,40359,40363],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Allocation" 2506528746 15 [0,0,0,0,19,6,6,6,6,6,6,6,6,6,6],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Bind" 132715514 85 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56430774,56414343,56423326,56430772,56430772,9689369,9698433,9698434,66129204,66129201,66129197,66129204,4855052,4855052,4855052,4855050,4855050,0,0,0,0,0,0,0,0,62,0,0,25844,25844,25844,25844,25844,48341,48341,24160,24160,24160,24160,24160,24160,24160,72501,87,0,0,0,0,87,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,95],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Dataflow" 1284152234 95 [20014,20012,20016,20007,20008,20008,20016,20015,20013,20010,20016,20014,20015,20011,20009,20014,20015,20015,20017,20016,20011,20009,20018,20012,20018,20015,20013,20014,20011,20011,20018,20015,20015,20017,20017,20017,20011,20018,20018,20017,20014,20013,20018,20341,20340,20340,20335,20338,20338,20339,20337,20339,20016,20017,20016,20003,20017,20015,20017,0,0,400869,400881,20,20,20,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,10355,0,0,0,0,0,0,0,0,0,0,0,10355,10355],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Endpoint" 1246424921 125 [20261,20261,20261,20261,20261,20261,20261,20261,20261,20261,20261,20261,20261,20261,20261,20261,20261,20279,20277,66,66,66,27,27,27,3,96,203608,102798,102801,203608,203614,20013,20018,20012,20018,383911,392448,776368,376861,371549,748418,365152,365154,201024,201041,64,0,6,0,0,6,1972647,1972541,1972592,1972624,1972646,1972679,8,8,8,8,8,8,8,8,8,8,8,8,12,12,12,12,12,12,12,12,12,12,12,12,1021992,1022022,1022052,1241586,1394291,1394275,2635842,1164023,789604,789588,789605,789622,789606,789622,1164011,1222454,845291,1117057,1117065,1180444,1180423,1180425,1180454,1180462,845290,845276,845249,845263,845278,845276,1222429,2386365,6712,2709,6712,6712,6712,6712,6258,6258,6258,6258,12970],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Refactor.BreakLoop" 1403996090 55 [8155,108,108,108,108,108,108,108,7242,7242,7242,8155,8155,8047,0,0,2761,2761,0,0,2761,8047,8047,8047,8047,8047,16204,10383,10383,10142,10142,9202,9202,10383,16204,16204,0,0,0,0,0,0,171729,171728,0,0,0,14,107,107,74,74,74,107,107],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Refactor.ConstantFolding" 1638443147 181 [623,12256,536684,536684,524429,12256,536685,524429,524429,524429,524429,524429,524429,524429,28762,495667,524429,28452,623,623,623,0,0,366,366,366,366,366,0,0,366,366,168,168,0,168,168,168,168,168,168,366,366,366,53,313,366,53,313,0,313,177,253,253,340,313,168,313,313,313,169,313,366,366,366,54507,54507,54507,54507,54507,54507,54507,54507,5597,5598,5597,5597,38803,38803,25358,38803,38803,38802,38803,38803,54507,54507,54507,54507,54507,8005,8559,8559,8559,38803,8559,30244,38802,366,8005,8559,8559,30244,0,30244,0,30244,38802,5598,31259,31261,31261,0,0,0,0,0,0,0,0,0,20,1,288,288,288,288,288,288,288,31261,31262,31263,306,5598,5597,5597,31263,5597,31263,31263,38437,366,5597,31265,31264,31264,31264,366,366,313,53,366,313,313,313,31263,31263,288,31263,31264,31265,31265,31265,623,623,0,623,623,0,623,0,623,623,623,623,623,388,623,623,623],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Refactor.OptimizeAccum" 2084024279 360 [2876,2876,938,579,122,232,579,122,139,486,579,469,469,471,471,471,471,471,471,471,469,579,579,938,1938,1938,1910,1642,480,1180,1642,480,480,942,1642,942,942,1134,1134,1134,1134,1134,1134,1134,942,1642,1642,1910,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,28,3,28,0,0,0,0,2876,309,309,309,309,309,309,0,309,309,0,0,0,0,0,0,0,0,0,0,0,309,2557,2557,1136,1136,1144,1144,1144,1144,1144,0,1119,1119,1119,1119,1120,1120,1120,1120,1120,1120,1120,1120,1120,1119,1120,1120,1119,1,1120,3,3,3,3,3,1,1,1,1,1,617,617,309,309,309,0,0,930,503,503,503,622,622,622,622,309,313,622,309,309,309,309,309,313,313,289,24,313,289,289,289,289,24,24,24,0,24,24,24,24,24,0,1125,1119,309,309,309,309,309,309,309,1119,1119,1438,1438,1438,1438,1438,1438,1438,1438,1438,1438,1112,326,1438,1112,1112,1112,1112,1112,0,0,0,1112,326,0,326,326,326,326,2557,1445,0,5811,1445,1445,5811,5811,2890,2890,2890,2890,2890,2890,2890,1445,1445,1445,1445,1445,1445,1445,1445,2544,3989,3989,3989,2544,1445,1445,1445,1445,3989,2890,2890,2890,2890,2890,2890,2890,1445,1445,1445,1445,38833,38833,5674,33159,33159,2168,30991,30991,8,30983,30983,1168,29815,0,29815,29815,38833,137727,137727,137727,137727,137727,137727,69582,69582,69582,69582,69582,68145,68145,68145,68145,68145,69582,69582,2563,2563,2563,2563,2563,689,31276,9006,78588,78588,69582,9006,78588,69582,69582,2879,66703,69582,2879,2879,2879,31273,31276,31276,0,0,0,0,0,0,0,0,0,9,773,31275,5609,31274,31273,31275,1445,1445,1445,1445,1445,1445,1445,1119,326,1445,1035,309,1119,31274,31276,31276,31276,31276,605,605,605,605,605,605],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Refactor.ResolveDeadlock" 2821361610 39 [1,1,14421,14421,14421,13576,13576,13576,13576,13576,8813,8813,18216,18216,18216,18216,8813,8813,8813,8813,8813,8813,13576,14421,14423,8813,14423,14423,0,0,0,0,0,0,0,0,0,10600,48513],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.ViewHelper" 2132232551 161 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessIntegrity" 798248592 214 [88388,88389,40537,40539,40536,40537,47853,0,47853,47853,88391,301,300,301,301,301,301,301,301,301,301,176744,176744,81053,81053,81053,81053,95691,0,95691,95691,176744,595,593,595,595,595,595,595,595,595,595,88350,88350,5072,5072,5072,5072,83278,0,83278,83278,88350,294,293,294,294,294,294,294,294,294,294,131075,131075,131075,131075,131075,131075,131075,0,0,131075,599,599,599,166504,166504,166504,166504,166504,584,599,599,599,599,599,599,599,599,83551,83551,83551,83551,0,83551,299,299,299,299,299,299,299,299,299,299,83552,83552,83552,83552,0,83552,300,300,300,300,300,300,300,300,300,300,1,1,1,755,755,24,718,37,37,37,37,37,0,2,35,19,35,35,35,37,755,755,604,47,63343,63345,63345,63345,63298,63298,63298,63345,63345,63345,63298,47,63345,0,63298,47,47,47,47,47,47,47,47,47,47,63345,599,604,604,604,604,604,604,149,149,151,151,143,143,6,151,150,150,151,151,143,143,7,151,150,150,151,151,150,150,6,151,150,150,151,151,150,150,8,151,151,151,151],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Accum" 3484499292 933 [47821,47819,47818,47818,0,47819,47819,35252,35254,47818,0,0,0,0,47820,250430,250424,250420,211161,39269,250431,211151,211155,211148,211160,39271,0,39269,39271,250431,11829,13427,13426,13427,13427,13425,13426,3970,3970,3970,32912,32912,0,0,13351,13351,13351,0,4638,4639,4639,4637,4639,0,0,4420,4420,4421,13426,13426,13426,13426,25255,11829,11828,11828,11829,11828,2961,2961,2898,11829,11829,11829,11829,11829,486831,486829,486802,486822,486825,486821,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72761,72761,19351,19351,90465,90468,0,0,6091,0,0,0,0,0,0,0,0,0,0,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,3689,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,7448,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,60,0,0,60,60,60,60,60,20,20,20,60,60,39,39,9,39,39,39,39,80,80,113,113,3089,3203,3203,113,113,113,113,113,113,113,34,113,113,113,113,113,113,113,113,0,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,0,0,113,6424,6423,6423,11581,11580,0,0,19647,15871,15870,15870,19645,19645,19647,216637,216631,216637,216639,334205,334206,334206,19647,19647,19647,10154,19646,19645,19646,17967,17966,17967,17967,20421,20421,20420,19643,19643,19643,19647,19647,31224,287,287,287,287,287,287,3683,3683,3683,3683,3683,3683,2121,2121,2121,6091,1,1,1,1,1,1,1161,1161,1161,1161,1161,1161,1161,1161,1161,1161,1161,1161,1161,950,211,1161,1161,1161,1161,1161,0,0,0,0,81,81,81,81,81,81,81,0,0,81,234640,234649,15715,1540,1540,1540,1540,3723,3723,2598,3723,10456,10455,15718,15718,214551,358572,358579,15792,15793,15789,15772,15771,15792,358580,187629,195373,195364,195367,195373,195370,195377,39266,39274,9880,6477,6479,6479,6479,3402,3402,3402,3402,0,0,9880,9879,39181,26707,26707,39176,39182,9880,9881,9880,9875,9875,9875,9881,39179,39274,152920,152922,152922,152921,152925,46200,113761,113762,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,348409,3790,3791,3789,3791,3791,3791,3791,3791,3791,3790,3791,3791,3791,3789,3791,3791,3791,3791,3791,15783,15785,15784,15783,15782,15784,15784,15782,15783,15782,15783,15782,0,0,15784,3970,287,287,3683,3683,3970,3970,15779,15779,15779,15779,15779,3970,15779,15779,15779,15778,15778,15784,15778,15783,15782,15782,15783,0,5271,5274,5252,5271,5273,10509,10509,10509,10510,10452,10509,10510,15783,15785,8545,8548,8548,8548,8547,8547,8547,8548,8548,8546,8546,8546,8546,8546,8545,8546,2121,8546,8546,8545,8546,5252,5252,5251,5252,8546,8546,3713,3713,3713,3713,3713,3713,3713,3713,3713,3713,3713,3712,423,3712,3712,3712,3712,3713,3713,3713,3713,3713,3713,3712,3712,3713,3713,8546,8546,8546,8546,8548,8546,8545,8547,8547,8545,3714,1539,1539,1539,1539,1539,3294,3294,3294,3294,3294,3294,3294,8545,8548,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28121,51340,51340,13208,424,7369,7369,424,7369,7369,1764,7368,7369,7369,7369,7369,13207,38132,38132,4695,134,2510,2510,134,2510,2510,387,2510,2510,2510,2510,2510,4695,33437,33437,29,3,19,19,11,19,19,19,19,19,29,33408,33408,3089,1930,1931,1931,3089,30319,0,30319,30319,0,0,0,0,30319,51340,389,389,87,87,86,87,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Broken" 389996004 885 [23770,23770,23770,2112,23770,1018,1018,1001,1001,1004,1004,1004,1016,1016,1016,1016,23770,0,0,23770,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11436,11436,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3700,0,0,0,0,0,0,0,105,0,0,105,105,105,105,105,35,35,35,35,35,35,35,35,35,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,35,35,35,105,105,51,51,51,51,0,0,51,51,51,51,51,140,140,49,49,476,427,476,476,476,476,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,6,49,49,49,49,49,49,49,49,0,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,3,46,49,3,46,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,0,0,49,537,537,537,1297,1297,1297,1834,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,98,98,98,98,98,98,98,98,98,98,0,0,14,14,14,14,14,0,0,14,0,1016,1016,1016,1016,1023,1023,857,1023,1023,1023,1023,1092,1572,1572,1023,1016,1023,1572,22750,26,3178,3178,3178,3178,0,3178,2341,2341,2341,2341,2349,2349,2349,2349,2349,2349,2349,2349,2349,2523,2439,2439,2523,2523,2349,2341,2349,2523,3178,114,114,114,82,32,114,0,0,0,0,82,82,82,82,1770,1770,1770,1770,2354,2354,28390,1020,1020,1020,0,1020,1016,16,1000,1016,16,1000,1016,1016,1016,1016,1020,1020,1020,1020,1016,537,1020,1020,1020,1020,1020,1020,1020,998,998,998,1020,1003,1003,1003,1003,1020,1020,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2347,2347,2347,2347,0,2347,2347,2347,2347,2347,2347,2347,2347,2347,0,2347,2347,2347,33,2308,2341,33,2308,2308,2341,2341,2341,2341,2341,2347,2347,2347,2347,2341,1307,2347,5,2342,2347,5,2342,2347,5,2337,2342,5,2337,2342,2347,2335,2347,2347,2347,2347,2347,1001,1001,1001,1001,1004,1004,998,998,998,998,3,1001,1004,3,1001,1004,3,998,1001,3,998,1001,1004,1004,2347,1337,2347,2347,2347,2347,2347,2318,2344,1001,1343,2344,1001,1343,2344,2248,905,1343,2248,905,1340,1343,1343,1343,2248,2242,905,1337,2242,905,1337,1337,1337,2242,2347,1020,1020,1020,1020,1020,10628,10628,10628,10628,1020,1020,1020,1020,1020,1020,1020,1020,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4387,1250,1250,1088,1078,1087,1088,1088,1178,72,0,72,72,0,0,0,0,72,1250,95,95,486,96,0,0,0,486,234,234,234,486,486,468,468,468,0,0,0,486,486,486,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,0,49,49,49,49,49,49,49,49,49,0,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Divider" 2260185966 837 [926,926,926,926,926,926,926,926,372,372,369,372,371,369,371,371,186,371,371,371,371,372,0,0,0,0,0,372,375,375,375,20,375,375,20,375,375,375,375,0,0,0,0,0,0,0,0,0,375,2749,2219,4968,4411,202326,202332,202334,202359,200114,2194,202338,200120,2194,7,2194,2194,2194,202336,202347,3902,3856,7758,66,66,66,66,66,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16590,16591,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,89,0,0,0,0,0,0,0,548,0,27,729,40,0,21,0,0,21,21,21,21,21,7,7,7,7,7,7,7,7,7,7,7,7,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,7,7,7,21,21,28,28,84,84,2760,2760,0,2760,2676,2760,0,0,2760,2675,2759,2760,2760,2760,84,84,84,84,84,84,84,38,84,84,84,84,84,84,84,84,0,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,38,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,0,0,84,20,20,20,20,20,20,20,20,20,20,20,20,19,19,19,19,8,8,8,8,87,1,1,1,1,1,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,0,0,0,65,65,65,65,65,65,0,0,65,1468,2193,2193,743,738,738,743,2193,2193,10079,18000,18000,747,747,747,747,747,747,747,18000,18000,171706,171708,561,561,561,561,555,561,561,561,561,561,1647,1104,1647,1647,1647,170057,0,170057,170057,171708,170052,1673,1673,1673,1673,1673,1673,171737,3320,171714,171725,171717,171717,3323,171743,1673,170057,171739,1673,170060,0,170061,6766,6766,6766,6766,6766,6766,170055,170058,171745,171749,171725,171710,171739,171737,171745,573,573,573,573,1122,1122,375,375,375,375,375,375,375,375,375,375,375,747,747,747,747,747,747,372,372,372,372,372,747,747,747,747,747,747,747,40,747,747,0,0,747,747,3,3,3,3,3,3,0,3,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,370,372,20,20,372,372,372,372,20,372,372,372,372,375,375,375,375,375,375,375,375,375,375,375,375,20,20,375,375,375,375,375,747,555,555,555,555,555,555,555,555,555,555,555,555,27,555,555,555,555,0,0,555,555,555,555,555,555,0,555,555,555,555,555,555,555,370,185,555,370,185,185,185,185,185,555,555,555,555,555,555,555,555,555,555,27,27,555,555,555,555,555,547,553,553,553,553,553,553,553,553,555,555,555,555,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1677,30625,30630,549,549,548,548,548,549,547,547,547,547,547,547,547,547,729,1,729,729,729,1,1,1,547,30082,0,30082,30082,30632,1102,30627,30633,556,556,556,556,556,97,556,556,556,362,362,362,556,556,556,556,556,556,556,556,556,787,787,787,556,556,30071,0,30076,1388,30074,30070,30631,30633,30631,30631,30629,30632,30632,39548,39549,635,635,635,635,635,990,38559,0,38559,38558,0,0,0,0,38559,39549,168,168,0,0,32,32,32,0,32,32,32,32,32,66,66,66,66,0,0,0,3532,3532,3532,3532,3532,1111,1111,1111,1111,1111,4643],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Fram" 1479461230 1307 [0,0,422,422,422,422,422,422,422,422,161,161,161,161,161,161,161,161,161,161,161,161,2370,2370,2370,0,0,0,0,2370,1354,34677,36031,6471958,1664334,8136237,507779,507772,507781,507785,507785,507784,507782,507782,507783,507780,507780,507782,507787,501888,501889,501889,507786,5896,5896,5896,5895,5895,5895,5896,507494,290,507784,507492,507489,507486,507493,290,507782,507784,3076,3076,3076,3076,3076,3076,3076,1354,1722,1722,1722,1722,1722,1722,1722,3076,3076,209844,0,0,209872,209872,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1920709,1920704,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1587,0,0,0,0,0,0,0,0,0,0,526,526,211,211,0,211,211,211,211,3408,3408,211,211,211,211,211,211,211,211,6108,6319,6319,211,211,211,211,211,211,211,79,211,211,211,211,211,211,211,211,0,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,0,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,0,0,211,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,357,1135,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,1492,26,26,26,26,26,78,0,0,78,78,78,78,78,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,78,78,1162,1162,1162,1162,1162,1162,405,405,405,405,405,405,1567,1,1,1,1,1,9272,7538,1734,1734,1734,1734,1734,9272,9272,9272,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,0,0,161,161,161,161,161,161,161,161,161,161,161,161,161,0,0,161,30886,20457,20457,30886,30886,3844,3844,3844,3844,3844,3844,3844,3844,3844,3844,3844,3844,30886,873486,541409,541407,873482,873484,47962,47964,47970,47970,47968,47970,47775,47777,47776,47970,873475,904371,5435,5434,5060,5436,5436,38294,58120,58122,5436,5436,5436,5436,5435,5436,5435,58121,58121,42221,332134,1420408,375661,375681,375621,375670,375661,375657,375665,374348,1325,375660,19141,27022,23264,23264,23264,374337,374347,1325,375667,375666,4448824,420861,518096,511688,308580,511696,518098,165565,0,162300,162300,162300,162299,162301,162301,162301,106516,162301,165565,111150,74524,234852,230374,230375,230377,230370,230375,230374,230375,230374,146774,230375,234851,32073,19155,31099,32072,6006068,375669,375681,375671,375673,375677,375674,375654,375675,375656,375676,21981,21981,21981,21981,21981,21981,133456,13291,13291,13291,13291,13291,4619,4620,4620,4619,4619,4620,4619,4620,4619,4620,4619,4620,4620,4620,4620,348,348,4620,4620,4620,4620,4620,4620,3584,3584,3584,3584,3584,3584,3584,3584,4620,4620,4620,4620,4619,3583,1871,3584,3583,1036,1036,1036,1036,4619,4620,4620,4620,4620,4620,4620,4619,4620,4620,4620,9368,9368,9368,9368,9368,9368,80197,8671,8671,8671,8671,8671,4637,4637,4637,4637,4637,4637,4637,4637,4637,4636,4636,4636,4637,4637,360,360,4637,4637,4637,4637,4637,2382,2382,2382,2382,2382,2382,2382,2382,4637,0,4637,4637,4636,4636,4637,4637,4637,2255,2382,4637,2255,2223,0,0,0,0,0,0,0,2223,2223,2255,1903,2255,2255,2382,2365,0,0,0,0,0,0,0,2365,2366,2382,2370,2370,2382,2382,4637,4637,4637,4636,4637,4637,4637,4637,4637,4637,4637,2728,2728,2728,55369,5436,5436,5436,5436,5436,2360,740,2358,2360,2360,2360,2360,2360,2360,2360,2360,2360,204,204,2360,2360,2360,2360,2360,2360,2360,2360,2360,2360,2360,2360,2360,2360,2359,2360,2359,2360,2360,3076,3076,4929,4929,4929,3076,3076,3076,3076,3047,2969,2937,2937,2969,3047,3047,3076,3076,3076,3076,3076,3076,3076,3076,2315,2315,2315,3076,3076,3076,3076,3076,3076,3076,3076,201,201,3076,3076,3076,3076,3076,3076,3076,3076,3076,3076,3076,3076,3076,3076,3076,7135,7135,7135,7135,7135,7135,17689,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,454,454,4034,4034,4034,4034,4034,4034,2937,2937,2937,2937,2937,2937,2937,2937,4034,4034,4034,4034,4034,2937,1956,2937,2937,1097,1097,1097,1097,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,4034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18726,65135,65136,2304,2304,2304,2304,2304,2304,2304,4603,65134,65137,2304,9306,9306,9306,9306,203,2304,2304,2304,2304,2304,2304,2304,2304,2304,2304,2304,204,204,2304,2304,204,204,2304,2304,204,204,2304,2303,2303,2303,2303,205,2304,2304,2304,2304,2304,2304,2304,2304,2304,2304,2304,2193,2178,2304,2304,2304,2304,2291,2289,2289,2291,2193,0,0,2291,2291,2181,2181,2181,2181,2178,2181,2181,2303,2291,2291,1344,1344,1344,1344,1344,1344,1344,2303,2303,2181,2303,2303,2303,2304,2303,2303,2303,2303,2303,2303,2304,2304,2304,62345,62345,583205,583197,583203,583189,583203,583195,583202,9415,573793,583208,0,9415,573790,573783,343726,343730,4781,4781,179,4781,4781,146212,17593,17593,146212,131952,131952,3261,131952,131952,131685,131685,0,179,146212,146212,146211,146212,146211,146212,146211,146211,146212,4781,146211,343592,230193,230202,164056,164055,2466,2466,204,2466,2466,77659,70391,70391,2240,70391,70391,69941,69941,2239,204,77776,77776,77780,77778,77779,77776,77778,77779,77778,2466,77780,163905,66297,66297,2315,7575,14666,101417,24556,24557,24556,24556,24557,24556,24556,24557,0,24557,7048,7048,201,7048,7048,3031,3057,2921,3057,3057,10932,10932,3057,10932,10932,10932,7048,10932,24557,41740,0,41740,41740,0,0,0,0,41740,583209,519385,519394,18,18,583206,465565,583202,583187,583197,583204,583205,583206,9416,9416,9416,583218,583228,583232,583229,583230,583234,583239,583233,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,0,147,147,143,147,147,1870253,1870256,1870251,7465967,9336179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.IO.SPI" 2290734515 1834 [60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,65,65,65,65,31,65,65,65,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,130,130,130,130,130,0,0,65,65,0,65,65,65,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,30,31,31,31,31,30,30,30,65,65,973,973,973,120,853,973,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,853,0,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,973,34,34,34,34,34,34,34,51,51,38,34,65,65,65,65,65,34,34,34,34,34,34,87,87,36,36,36,36,36,36,51,87,34,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,30,30,30,30,30,30,30,30,30,30,30,30,710,710,710,710,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,710,710,626,710,710,710,710,500,710,710,710,710,710,710,65,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,60,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,0,235,235,235,235,235,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,133,168,168,168,168,168,96,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,16,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,31,30,61,31,30,61,61,61,61,61,61,61,61,61,61,31,30,61,31,30,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,40,40,40,40,40,40,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,4,0,4,4,4,4,4,4,65,0,0,65,0,0,65,65,65,65,65,2400,2335,2400,2335,2400,2335,2400,2335,2400,2335,2399,2335,2400,2335,2400,2335,2400,2335,2400,2400,2400,2400,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,65,61,4,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,31,65,65,65,65,65,65,65,65,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,31,31,31,31,34,65,31,34,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,0,0,65,65,65,65,65,65,65,183,183,183,183,183,12,12,12,195,183,183,183,12,12,12,12,12,195],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.IO.SimpleIO" 1941779927 528 [87,87,51,36,0,36,36,87,87,87,36,51,0,51,51,87,65,65,65,65,65,0,65,65,0,0,65,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,64,65,64,65,65,0,65,65,65,0,65,65,20,20,20,65,34,65,65,65,34,34,34,65,34,65,65,65,65,65,65,65,65,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,17749,17750,37500,37500,0,0,0,0,0,178,0,0,0,0,0,0,0,27674,27675,51,51,51,38,38,38,38,89,1,1,1,1,879,879,879,879,879,879,879,879,879,879,0,0,65,65,65,65,65,65,0,0,65,26098,45549,45550,1121,1122,1123,1122,1123,1123,1123,45549,45548,36691,21517,21517,21516,36692,161939,161945,161945,14750,8891,8891,14750,14750,1510,1510,1510,1510,1510,1510,1510,1510,1510,1510,14750,14750,13737,8193,13737,161946,161955,161955,161955,161940,161957,161957,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,38,38,38,38,564,564,564,564,564,564,546,546,546,546,546,564,564,564,564,564,546,18,564,546,18,18,18,18,18,564,564,564,564,564,564,1126,1126,1126,1126,1126,1126,1125,1126,1126,1126,1125,1125,1126,1126,51,1126,1126,1126,1126,1126,1125,1125,1126,1126,1126,1126,34,34,34,34,34,34,34,34,34,1126,1126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1690,41268,41268,0,2494,2495,2495,0,2495,2495,0,0,41267,41268,0,4112,4112,4112,0,4112,4112,0,0,41266,41267,419,419,36,419,419,1438,1439,1439,419,0,1439,1439,1439,136,136,136,419,1438,2495,38772,38772,885,885,51,885,885,2473,2473,2473,882,0,2473,2473,2473,379,379,379,885,2473,4112,34660,0,34661,34659,0,0,0,0,34660,41268,232,232,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,64,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,64,65,65,65,65,65,65,65,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Multiplier" 2940415778 635 [238389,238390,238388,140005,139971,238385,3455,3479,3513,3513,3510,3510,3510,3510,238389,0,0,238389,69,69,68,69,69,69,69,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34121,34119,0,0,0,0,1272,0,0,0,0,0,0,0,42,0,0,42,42,42,42,42,14,14,14,14,14,14,14,14,14,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,1739,14,14,14,42,42,56,56,92,92,2812,2812,0,2812,2720,2812,0,0,2812,2719,2812,2811,2812,2812,92,92,92,92,92,92,92,32,92,92,92,92,92,92,92,92,0,92,92,92,92,92,92,92,92,32,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,0,0,92,598,598,598,670,670,670,1268,1,1,1,1,1055,1055,1055,1055,1055,1055,1055,1055,1055,1055,0,0,66,66,66,66,66,0,0,66,421728,421717,421715,248046,173676,421728,7000,7000,7000,7000,7004,7004,7004,7004,7004,281724,463858,463861,7014,7010,7014,463861,238674,248043,248048,43182,43181,43181,43181,0,43182,5285,5285,5285,5285,5288,5288,5288,5288,5288,5288,5288,5288,5288,5288,5288,5288,5288,42989,27583,27583,42989,42989,5288,5285,5288,42989,43181,45310,45309,45309,45310,130498,130499,421731,10509,10509,10509,6994,3515,10509,6994,6994,6994,6994,6994,6992,6992,6992,6992,6992,599,6992,6992,6992,6992,6992,6994,6992,6994,6994,4155,4155,4155,4155,0,4155,4155,4155,4155,4155,4155,4155,4155,4155,0,4155,3445,3445,3445,3445,3445,3445,3445,3445,3445,3445,4155,4155,4155,4155,4155,670,4155,4155,4155,4155,4155,3441,3445,3445,3445,3445,3445,3445,3445,3445,4155,0,4155,4155,4155,4155,4155,4155,4131,4155,3445,710,4155,3445,710,710,4155,4155,3515,3515,3515,3515,3515,24559,24559,24559,24559,3515,3515,3515,3515,3515,3515,3515,3515,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14664,54480,54480,15513,15513,15508,15513,15513,28468,26012,0,26012,26012,1,1,1,1,26012,54481,198,198,30677,15042,4090,4090,4090,30684,18113,18113,18113,30680,30683,447325,447327,447326,415391,415392,415392,30683,18113,30683,30683,30684,30682,30683,29,29,29,29,29,29,29,29,66,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Shift" 2773701619 648 [822,195,822,66,66,66,66,66,66,66,66,8,66,66,66,66,66,66,822,822,822,822,822,105,39,5,39,448,90,27,3,27,374,822,0,0,822,65,65,65,0,0,0,5,65,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14125,14124,25,0,0,0,0,0,0,0,9,17,0,8,8,8,8,8,8,17,17,17,17,17,17,17,17,17,33,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,0,0,0,0,0,0,65,65,65,65,65,65,65,65,65,0,0,65,195,756,756,66,66,66,66,66,66,66,756,756,171212,171211,171209,338,170869,171217,338,338,135,203,338,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,135,90,90,135,45,135,135,171076,171071,171071,203,170854,171077,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,203,126,126,203,21,203,203,498,498,498,498,170866,170857,171975,21,21,21,21,21,21,52,52,52,21,21,21,21,21,66,66,66,66,66,8,66,66,21,66,45,45,45,45,45,45,45,45,45,5,5,5,5,45,14,14,14,2,2,2,2,14,7,7,7,1,1,1,1,7,7,7,7,7,7,7,7,1,1,1,1,7,7,66,66,66,66,66,66,66,66,66,66,66,66,66,66,0,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,0,66,66,66,66,66,66,66,66,66,8,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,0,66,66,66,66,66,66,66,27,27,0,27,27,0,0,27,66,66,66,66,66,66,80,80,80,80,66,66,66,66,66,66,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,0,0,77,77,2655,2732,2732,77,77,77,77,77,77,77,31,77,77,77,77,77,77,77,77,0,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,0,0,77,1,1,1,1,1,1,1,1,38767,38768,167,64,64,64,64,64,98,42,42,42,42,42,69,167,38601,0,38601,38601,0,0,0,0,38601,38768,150,150,0,65,65,0,0,0,0,0,30625,30626],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Types" 2611226026 433 [32030,0,0,32030,1667,8514,8515,8515,10181,46800949,46815638,46818114,46817721,50135,50135,50137,50138,53993,53995,53995,13474,13474,72168,85642,0,20664,26648,22792,26649,26648,26648,26648,26649,26649,16,192,208,21,246,267,1354455,1354447,1354431,1354474,2835702,4189869,271754,271747,271476,271757,271757,271755,235166,235164,235167,235164,0,0,0,0,0,235167,235167,0,0,365,365,935,935,0,0,0,0,0,34877,34877,136424,136429,715,715,639661,639670,116,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16678,16678,46914426,46921829,1354932,1354914,13,13,12368,12368,1500,1500,1500,1500,1178,1178,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3768,0,0,0,0,0,0,31230,0,44,0,0,0,0,1,1,1,1,1,1,1,1,21274,17417,21273,10305,10969,10969,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21274,21274,4151,4151,4151,4151,179650,179648,179640,179648,179648,413783,413781,413779,413783,413785,0,0,0,0,0,0,637064,1230466,1902,1902,1902,6,6,6,6,271,271,271,271,2687,2687,2687,2687,12901,12901,12901,12901,13475,13475,13475,13475,3530,3530,3530,3530,3530,3530,3530,3530,3530,34772,1230478,593422,1230451,1230467,1230477,1230475,19206,19206,1121,1121,18085,19206,144,216,144,144,144,216,216,216,216,8492,2546,21034,0,32072,1,1,1,1,1,1,1,1,588,502,360,161,588,588,62,62,170,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,8338,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,232,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,115,116,116,116,116,116,116,116,116,116,116,115,116,116,116,116,116,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.TargetSystem" 882311302 120 [1651,1651,1651,1651,1651,1651,2978,2978,2978,2978,2978,168774,168779,52661,52663,31254,31253,31256,25,25,25,25,25,25,31252,31252,31259,2530,2530,2530,2530,2530,2530,2530,2530,31254,31257,31256,152,152,152,152,152,152,152,152,31256,31257,31259,298,298,298,299,299,299,299,299,31256,31260,31261,2159,2159,2159,2160,2160,2160,2160,2160,83103,83088,83106,20015,20012,20012,20011,20015,20018,31263,31258,31270,6011,6011,6011,6011,6011,6011,0,0,0,0,0,0,0,0,0,19,19,19,0,0,0,1902,1902,1902,0,0,0,0,0,0,0,0,0,0,0,0,0,70,70,70],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Time" 1573352703 150 [0,0,0,0,60942,60942,81029,81033,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,22,2,24,22,22,22,22,2,2,2,2,2,2,2,24,24,12,12,12,12,12,12,12,12],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project" 677452831 448 [94,0,0,0,0,94,94,94,0,290,290,290,1481,1481,94,1959,196,0,196,0,115,196,196,196,196,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,196,196,196,196,196,196,196,1,1,754,0,754,94,120,754,754,754,754,754,0,0,0,0,0,754,754,754,754,0,0,0,0,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,0,0,0,0,0,0,0,0,0,0,0,0,572,384,384,188,188,188,188,572,572,572,572,572,572,572,572,572,572,572,282,572,572,572,572,0,1481,0,415,3222,466,588,588,588,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,15,15,15,15,15,15,15,24,196,196,196,196,196,196,196,196,196,0,0,0,0,0,196,196,196,196,196,196,196,196,196,196,196,196,196,0,0,0,0,0,0,0,0,0,0,0,196,196,196,196,196,196,196,192,192,196,196,196,196,196,196,196,196,196,196,196,192,192,192,192,192,192,192,192,192,12,12,12,12,12,12,12,12,196,192,196,196,178,18,196,178,178,0,0,0,0,0,178,18,18,0,0,0,0,0,18,18,0,18,18,0,18,18,18,0,0,18,18,0,18,18,0,18,18,18,0,0,18,18,196,194,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,0,115,196,196,196,196,26,120,196,196,196,196,196,196,196,196,0,0,0,0,0,196,196,196,196,196,196,196,196,196,0,0,0,0,0,196,196,196],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project.Context" 1478755045 89 [3155,3155,94,0,94,94,94,94,94,94,3154,3154,3155,94,0,94,94,94,0,94,94,94,94,94,94,94,0,94,94,94,3155,3155,3155,3155,478,478,3155,3155,3154,2489,2489,2489,2489,2489,2489,2489,3155,3155,3155,3154,3155,290,3061,3061,0,0,0,0,0,0,0,0,290,290,290,754,94,94,305,305,305,305,305,305,305,305,305,305,0,0,0,0,0,0,0,0,214,754,754],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project.Template" 1092448132 336 [290,290,290,290,289,290,290,290,290,1050,1050,1050,1050,0,1050,1050,0,0,1050,1050,1050,1050,1050,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,854,854,854,854,0,0,0,0,854,854,854,854,853,854,853,854,854,853,854,854,854,854,854,854,853,854,854,854,854,854,854,854,854,854,854,0,0,0,0,0,0,0,854,854,0,854,854,854,853,853,854,854,854,854,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,290,0,0,0,0,0,290,282,0,0,0,0,0,0,0,0,290,290,290,290,290,572,572,572,572,572,572,478,478,290,290,188,188,478,478,0,0,0,478,478,478,478,478,478,478,477,477,0,478,478,478,0,94,94,94,477,478,478,478,479,479,196,196,196,196,196,290,290,0,0,0,290,290,290,290,290,290,290,290,94,94,94,290,290,290,1049,1050,1050,1050,1050,1050,0,1050,1050,1050,1050,1050,290,290,290,290,290,290,290,853,854,854,854,854,853,290,290,290,196,196,196,196,1,1,0,0,94,94,94,94,94,94,0,188,188,188,188,188,188,188,188,94,94,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,0,94,94,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,94,94,94,0,0,94,94,94,94,188,188,0,0,188,188,0,0,0,0,1,1,1,1,1,1,1,1,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project.TestBench" 2986761594 557 [277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,102,102,102,102,102,68,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,0,0,102,102,102,102,102,13672,13672,13673,5094,5094,5094,8579,0,8579,8579,13673,13671,13673,13673,13672,13673,13672,13673,13673,13673,13673,13673,13673,13673,13673,13672,13673,13673,13673,13673,922,13673,13673,13673,13673,13673,13673,13673,13673,13673,13673,13673,13672,13673,13673,13673,13673,13673,13672,13673,13673,13672,13672,13672,13672,13673,13673,13673,13672,13673,13673,102,102,102,102,102,102,102,102,102,13673,13673,13673,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,490,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,4822,8851,0,8851,8851,8851,8851,8851,8851,8851,8851,8851,8851,8851,13673,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,26,102,102,102,102,102,102,102,102,0,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,26,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,2959,2959,2959,2959,2959,2959,2959,2959,10827,2958,2959,2959,10827,10827,10826,9080,9081,9081,9081,9081,45654,45657,45656,45656,45657,0,68524,3163,3163,3163,3163,3163,3163,3163,3163,3163,0,3001,3162,3163,3163,3163,3163,3163,3163,3163,3163,2489,2489,2489,2489,2489,2489,2489,2489,2489,0,0,0,0,0,0,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,524,524,524,524,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project.Types" 1842455975 82 [0,1178,0,1178,195,1695,0,1695,195,1695,0,1695,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project.VerilogSnippets" 253713695 42 [196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,1,1,1,1,1,1,1,1,1,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis" 2813874017 216 [95,95,95,95,95,95,95,94,95,95,0,0,0,18,18,18,18,18,18,0,0,18,18,18,18,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,20,0,20,20,20,20,20,20,20,20,18,0,18,18,18,18,18,18,2,2,2,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,20,0,0,20,20,20,0,20,20,20,20,20,20,20,20,2,2,2,2,18,18,18,18,18,20,20,0,20,20,20,20,20,20,20,18,20,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,16,20,20,18,18,18,18,18,18,0,20,20],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Analysis" 1330783176 184 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Explore" 3459675169 446 [26801,26801,26798,26801,26801,22142,22143,22143,22143,31252,31247,31249,31251,31256,31251,31257,3984,31247,31256,31255,31252,31257,31256,31254,31257,31255,31255,31256,31257,77882,52054,0,38634,0,13419,52054,52053,52054,52054,52054,25828,77882,5520,5520,5520,5520,5536,52082,52083,83095,20140,83094,83095,83094,83095,83095,83095,259,82836,83095,259,5536,5536,5231,5231,5231,5070,5070,5070,5231,5231,5230,5231,22143,13,13,22134,22134,24696,80417,85353,85351,24697,24697,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31255,31255,174833,39164,174838,174831,174824,0,174832,174832,174836,174834,90949,0,10535,174829,174834,174830,174830,0,3942,9696,174830,174830,3984,3984,31150,31158,174836,174831,174839,1573,1573,1573,1573,1430,0,1431,58,58,31249,31251,31257,5536,5536,31250,31251,31256,22134,22134,31248,31247,31257,2659,2659,31257,31256,31256,3984,3984,31251,31253,31257,546,546,31256,31255,31256,279,279,31254,31256,31254,31256,31256,31256,31256,31257,31256,31253,31254,31253,31251,31254,31254,31256,174839,0,0,0,0,0,31157,174833,31159,1431,1431,1572,1572,174835,174837,174835,29727,31255,31255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31257,31256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31255,31257,34516,34513,34515,3259,3259,3259,3259,31255,31255,31254,1918,31257,31252,31257,31255,31254,31253,34514,34509,34516,34511,34515,31257,31256,34516,0,0,0,0,0,34516,1693,32823,34516,1693,1693,32822,32823,0,32823,32823,32823,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34516,34512,34513,32823,32823,32823,32823,32823,32823,32823,34516,34511,34513,34514,34516,34516,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,97,97,97,0,97,0,97,0,0,1,1,97,97,97,97,97,97,97,97],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Method" 2435376704 483 [97,95,0,0,0,95,95,95,192,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1976,1976,1821,1821,1976,342,388,388,388,388,46,56,56,2978,2978,1902,1902,2978,302,332,332,388,388,677,677,677,537,537,140,140,677,675,675,675,677,677,677,677,677,5478,5478,2312,2312,5478,535,535,535,537,537,537,537,537,537,537,537,537,97,97,440,440,379,379,379,440,440,440,537,537,537,6644,6644,2933,2933,6644,686,686,686,688,688,688,688,688,688,97,97,591,591,488,488,488,591,591,591,688,688,688,97,97,97,97,97,0,0,97,0,0,1030,97,97,0,97,97,97,97,97,97,97,97,97,97,97,53,97,97,97,44,97,97,97,97,97,192,192,192,192,97,97,95,95,192,192,192,192,192,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32028,32030,32031,32034,1685,1685,30341,30342,30346,30348,30348,18513,18515,18514,30344,30344,30349,32034,32025,32034,0,0,0,0,0,0,0,1,1,1280,1280,1280,1280,194,194,194,192,192,192,192,192,194,194,194,2,194,194,194,194,1474,97,97,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,53,53,53,97,97,97,97,0,97,97,97,97,97,97,97,97,97,97],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.MlBackend.Client" 2271012487 78 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.MlBackend.FixedCache" 2172739969 30 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.MlBackend.ServerInstance" 952259310 199 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps" 150431044 26 [0,12795,299,12496,12795,299,0,12496,133,12363,12496,133,0,12363,6,12357,12363,6,0,12357,59,12298,12357,59,12298,12795],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.Allocation" 1412369283 127 [0,0,0,0,0,0,0,0,0,0,0,23,23,23,91,91,91,187,143,187,187,321,195,321,321,0,31,31,91,91,91,91,91,91,91,91,91,91,91,91,40,40,40,40,40,40,13,13,13,13,91,91,91,91,91,31,31,0,0,0,0,91,91,133,113,113,113,133,133,133,91,91,91,91,91,91,0,0,0,0,13,13,13,13,13,13,91,91,91,91,60,31,91,60,31,31,18,13,31,18,18,13,13,13,0,0,0,0,0,0,13,13,0,13,13,13,13,0,13,13,0,13,0,13,13,13,91],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.Bind" 89116494 381 [1616,1691,95,1596,1691,627,671,211,460,671,9731,12122,6877,5245,12122,110138,110135,110138,110137,110137,110138,110137,110137,110137,51836,51835,51836,51836,51836,110136,110137,110138,46060,51836,51836,51836,51836,0,51836,51835,51835,51836,190,190,190,18246,18246,18246,18246,18246,18246,18246,18246,18246,28487,190,190,190,190,28487,51836,51836,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,5998,5998,5998,77927,77926,77927,51833,51836,51833,51834,51834,51834,51833,51833,51836,51836,29160,51834,44439,51836,51836,51836,51835,51835,51834,51835,51836,51836,51646,51836,28487,28487,28487,28487,2414,51836,51835,51836,51835,190,190,190,190,51836,51836,51836,51836,51834,51835,51836,51836,51835,51835,52083,52082,52083,51836,51835,51836,51835,51836,51836,51836,51834,51836,51836,36556,36555,36555,36556,36555,36555,36554,36556,36554,36554,51836,51836,51836,51835,51835,51836,51834,15280,36556,51835,15280,36554,36556,36556,51835,51836,51836,36555,36556,51836,51835,51836,51836,51835,51836,15280,15280,36556,36556,36556,0,36556,36556,36556,36556,36556,36556,36556,0,51835,51836,52083,51687,51683,51685,51687,51687,51687,51687,25841,25843,25843,25843,25844,49149,49151,49153,49152,49152,25843,25843,25844,25842,25844,25844,0,0,0,0,0,25844,25844,25844,25844,25844,25843,25843,25844,25844,25843,25843,25843,25844,25844,25844,25843,25843,25843,0,0,0,0,0,0,0,0,0,0,0,25844,25843,25844,25842,25844,25844,25844,25842,25843,25842,25844,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25844,77926,25843,25844,2254,25844,25844,25844,25843,25844,25844,25844,25844,25844,25841,25843,25844,25843,25843,25844,25844,247,51836,51835,7388,51836,51831,51836,51832,24996,51833,51836,51836,51836,51835,51836,51835,0,0,51836,51836,51836,51836,51836,51835,51836,51836,51836,51836,51836,51836,51835,51836,51836,51835,51835,51835,77927],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.BreakLoop" 4143268321 11 [0,2156,2156,2156,4455,4455,4455,4455,4455,4455,4455],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.ConstantFolding" 1358338631 11 [0,152,152,152,304,304,304,303,303,303,303],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.Dataflow" 2140200850 110 [80415,80415,0,0,0,0,0,0,0,0,20004,19997,19997,3855,20002,20002,20005,80416,80415,80417,80409,80413,80410,80411,80417,80416,80410,80405,80405,80417,422283,422274,422258,422262,422267,422261,422268,422276,80414,80417,80417,80414,80415,80415,80417,80413,80415,80413,80416,80416,80414,80413,80416,80413,80415,80415,80416,80411,80411,80413,80413,3261064,3261023,3261028,2323677,3261049,3261052,3261068,80417,80411,80406,80406,85347,85353,85348,85348,80416,80408,80411,80411,80416,80415,80416,80408,80409,80414,80412,80414,80417,80411,80410,80414,80416,14627,80416,80414,725,80416,80412,80411,80407,80417,80416,80409,80413,80414,80417,80416,80415,80417],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.OptimizeAccum" 1466200532 11 [0,298,298,298,1108,1108,1108,1108,1108,1108,1108],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.ResolveDeadlock" 2620079439 87 [10535,0,0,10535,0,10535,10487,10535,0,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,0,0,0,0,0,0,10534,2528,2528,2528,10537,10537,10537,10535,10535,10535,10535,10534,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10534,10535,10535,10535,10535,0,10535,10535,0,0,10535,10534,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Types" 3173509026 170 [49990,240349,290340,483905,483906,483925,483925,483926,483900,483918,483924,483917,483917,483929,483919,483926,483926,483926,483902,483916,483933,0,483925,483925,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1704,1704,31252,31255,31245,31255,31250,31257,31257,31257,31253,31256,31257,31257,31246,31256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,131,516492,516505,0,0,1840,1841,1996,1996,0,0,0,483923,0,0,483928,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.UIBackend.Types" 4008972383 18 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.UIBackend.ViewHelper" 1750079147 529 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.UIBackend.ViewHelperCls" 3847394799 0 [],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Utils" 1394508968 327 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211438,211441,211441,12511,12511,12512,12511,12512,12512,12510,12510,12512,12512,12512,12512,12512,12512,12512,12512,12512,12511,12512,12512,5288,5288,5288,5288,5288,5288,5288,5288,5288,5288,555222,555221,40539,248682,306541,555222,466841,466835,466837,466841,466841,472517,472533,162430,162429,310101,472529,1834,1869,1834,1868,1869,1869,1869,1869,1869,1595,1653,1653,1653,1653,1653,1653,1653,1788465,1788476,5159,184807,1603673,1788488,34,65,34,65,65,65,65,65,65,1699772,1699787,1699804,1699809,1699810,27076,27346,27345,27345,27346,27346,19832,19832,7514,0,0,0,0,0,0,0,0,0,0,0,27346,27346,398,195,398,398,8,398,398,398,398,3408,43728,43727,43728,43727,43728,43727,43728,43728,47136,3408,2192,3408,3408,3408,0,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,1264,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,0,3408,3408,0,0,0,0,0,0,0,0,3408,3408,3408,4185,170712,174890,4185,4185,4185,170714,174893,3408,3408,3408,176,191,202,271,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,1174,1174,1174,1174,1174,1174,2546,32576,1174,1174,1174,1174,1174,1174,8781,8781,8781,8781,8781,8781,8781,8781,9954,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,4,1170,1174,4,1170,1170,1170,1170,1170,1170,1170,1174,1174,8781,8781,8781,8781,1174,1174,1174,1174,1174,1174,12217,30531,42748,15698,15698,15698,15698,15698,1,1,1,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Utils.Base" 3620565322 67 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2001750,2001791,2001703,2001711,2001779,2001778,46032,46031,46030,46031,46031,216,216,216,216,216,1013,1013,1013,1013,1012,10841,10841,10840,10841,10841,141652,141654,141649,141650,141652,18894,30882,30882,4973,4973,4973,4973,4973,797,3117,3117,1,1,1,1,1405281,1219810,1405209,1405256,1405321,1405344],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Utils.ProcessDescription" 1668079291 276 [208153,208151,208152,835401,835388,835394,835395,835395,835396,835401,1190131,27828,27829,27829,27829,27829,27829,1,29207,29217,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1896675,1896684,1896462,100597,96534,41950,41950,141289,100597,100596,100596,1896523,1896671,1896498,1896666,1896666,1436813,1436805,1436735,84548,84548,68759,1431177,1431177,1431165,1436743,1436802,1436796,44457,1389354,1436802,1436732,1436723,3530,563416,1230453,3530,1230454,1230486,1230480,1230481,1230395,1230428,1230433,1230470,1230430,1230489,0,0,1230478,1230456,0,0,1230471,1230419,1230466,65229,200687,200727,200730,200726,206361,206361,34873,29247,29247,29247,29247,34873,29253,1553,1553,1553,1553,29253,34873,34873,34873,2304,2303,2303,2303,2303,2304,2304,204,204,204,204,2304,2304,2304,2304,25,25,25,25,25,25,6,25,25,25,25,21713,21715,21716,21716,21715,21715,15327,15327,15327,15317,11263,15326,15327,1202,15317,15317,15317,15317,15317,15317,15317,15317,15317,15317,15326,0,15326,15327,15327,12967,12957,12967,12967,12966,12967,12967,5283,5285,263,5285,5285,5285,58331,58341,58333,58335,58342,58343,58291,58291,58343,4710,58340,58340,58342,1302,1302,1302,1302,1302,1302,81476,81469,81459,75652,81460,81470,81465,81470,81470,81476,81450,81474,31313,0,31313,81466,81469,81475,75656,75654,75652,75654,81472,60629,81474,81474,81474,438,438,28,438,438,438,0,0,130171,130167,0,0,130170,130163,13061,130167,130172,130173,130173,0,78589,78590,78589,78593,78593,51580,0,51579,51579,51580,51580,51580,57323,57321,57319,57318,57321,57322,161741,161743,0,0,1,1,1,1]] \ No newline at end of file +Tix [TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends" 4085714144 29 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends.Common" 1224644586 92 [1,1,1,15,30,45,45,45,45,0,45,45,45,45,45,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,6,14,14,14,14,6,6,6,6,6,105,105,105,105,105,105,105,105,105,105,105,45,45,45,45,45,45,45,45,45,45,45,45,45,105,105,30,30,30,30,30,30,30,30,6,6,6,6,79,79,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends.Lua" 1623325596 1160 [6,13,14,14,14,6,6,424,424,424,418,424,424,0,0,0,0,0,0,0,0,0,0,0,424,424,11,11,11,11,11,11,8,8,8,8,8,8,101,103,103,103,103,43,43,43,94,94,94,94,94,94,94,94,19,19,19,19,19,19,19,19,36,36,36,36,36,36,36,36,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,3,3,3,3,3,3,29,29,29,29,4,4,4,4,4,4,4,2,2,2,2,2,2,2,89,90,90,90,90,90,90,0,0,0,0,0,0,455,455,455,455,455,455,455,455,0,0,455,455,455,85,85,85,85,85,85,85,85,85,85,0,0,0,0,0,0,0,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,0,87,87,87,87,87,0,0,87,302,302,302,302,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,0,0,0,0,0,0,0,17,17,17,415,415,415,415,415,415,0,0,0,0,0,0,0,0,415,415,415,285,285,272,272,272,272,285,285,285,285,285,285,274,274,274,274,285,285,285,285,285,285,285,24,24,24,24,24,261,261,261,261,285,285,270,285,285,285,270,270,270,270,267,267,267,267,267,267,267,270,270,270,270,269,270,270,270,270,270,270,270,42,42,42,42,42,42,1,1,1,1,1,1,1,1,1,41,39,39,39,28,28,28,28,28,28,28,28,41,41,41,42,42,228,228,228,228,228,228,228,270,270,270,62,62,62,11,51,62,11,11,11,11,11,11,11,11,51,51,51,8,43,51,8,8,8,8,8,8,8,8,43,43,43,43,0,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,29,29,29,29,0,29,29,29,29,29,29,29,29,0,0,0,0,0,0,91,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,90,90,89,90,90,90,94,94,0,94,94,94,94,89,90,94,0,0,67,85,85,67,67,67,85,85,0,85,85,0,85,118,118,25,93,118,25,25,25,25,25,25,93,0,93,93,93,93,93,30,19,19,19,19,19,19,30,30,30,30,30,30,30,30,30,30,30,30,30,63,29,29,29,29,63,63,63,63,63,63,63,63,93,93,118,197,0,0,0,0,0,0,197,88,88,88,88,88,88,88,88,422,422,422,93,328,422,93,328,0,328,328,329,329,329,329,328,329,328,329,329,328,510,88,88,81,88,88,88,88,88,88,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,81,81,81,81,81,81,81,81,79,79,81,81,81,81,81,81,66,64,66,66,66,41,41,41,41,81,81,81,81,81,88,88,0,88,415,415,415,415,415,415,322,321,321,415,321,415,415,415,414,414,414,414,414,414,415,415,415,415,415,0,0,0,0,0,0,0,0,0,0,0,415,415,415,88,88,88,15,15,15,15,15,15,15,15,15,322,322,322,71,71,71,71,71,71,71,71,71,4,4,4,7,7,7,7,7,7,7,7,7,0,505,0,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,2,2,2,2,2,2,2,2,2,2,2,2,39,42,42,42,42,42,42,39,42,42,97,20,37,17,0,0,0,0,0,0,171,34,171,171,20,170,171,171,171,171,171,171,171,171,171,171,171,2,2,2,14,0,14,14,14,14,14,0,3,3,3,3,3,3,3,3,3,3,3,7,19,48,48,48,48,48,48,48,48,5,5,5,5,0,0,0,0,0,0,291,0,0,0,0,111,111,111,111,111,111,111,0,1,0,1,1,1,1,1,1,1,182,182,182,182,182,182,24,24,24,24,6,6,6,6,6,0,6,0,12,12,12,12,12,12,12,12,12,0,0,6,6,6,6,6,6,12,12,12,12,6,6,6,6,12,90,90,90,90,90,90,90,90,89,90,90,90,90,90,90,90,90,90,90,121,121,78,43,121,78,0,0,65,65,65,65,65,65,65,65,65,65,65,90,90,90,90,90,65,65,65,65,65,78,78,65,64,64,64,65,65,78,78,78,20,43,43,43,43,43,43,0,0,0,43,43,5,10,0,15,9,9,9,9,9,9,9,9,9,9,9,5,5,5,5,4,9,6,6,6,6,6,6,0,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,4,4,4,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,430,85,0,0,85,85,85,44,85,65,49,6,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,7,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,6,6,6,6,6,6,85,85,85,85,85,85,6,6,6,6,6,85,85,0,6,6,85,85,0,0,0,0,0,0,0,0,6,6,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,1298,1699,1699,1699,1699,1697,1699,1699,1699,1699,1699,1699,1699,1698,1699,1699,1699],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends.XMILE.DocumentParser" 296006627 239 [1,1,1,1,3,3,3,3,3,3,15,15,15,15,15,15,5,5,5,5,5,5,5,5,5,5,2,2,1,1,1,1,1,1,1,2,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,2,0,1,0,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends.XMILE.Frontend" 207445762 705 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Frontends.XMILE.MathParser" 977926443 198 [9,0,0,0,0,0,0,0,0,5,5,5,0,4,4,4,5,1,1,1,2,2,1,1,2,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,5,14,3,67,70,20,20,20,20,20,20,20,20,20,20,20,20,20,20,3,23,23,23,23,0,12,12,12,12,12,12,35,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,11,11,11,11,11,11,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,3,35,1,12],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Analysis" 2168027235 182 [143402,143394,0,143534,143458,143433,115975,143359,143388,0,0,0,0,0,2745763,577928,2167837,2745877,577946,577967,578056,578021,539373,539229,539287,577925,546595,577953,2167972,0,2167955,2167802,1521272,2032357,2032443,2032386,1262644,2032102,2032364,2167968,2888730,829148,829127,829119,2226636,2226416,2226406,2226375,1978791,2226491,2226478,2226665,2226473,2226670,1369495,856777,2226198,1369525,856781,829044,829076,829185,721372,856822,609589,856899,655422,856476,856684,856452,856231,856375,856841,2226227,2226354,159501,27483,132129,159558,27479,132077,132043,131998,0,132047,132113,0,0,132013,0,132009,132082,131987,132046,132011,132105,104502,104584,131996,159548,27454,27467,27477,27443,27437,4167,23298,27458,4168,4162,4162,4154,4164,27468,27473,27456,27444,27436,27449,27484,27480,27474,27466,4166,27463,27422,27473,27449,27450,27484,27450,27481,27455,27476,27476,8381,8387,8393,20356,20381,20364,20369,20368,20379,20349,209275,53506,209299,20365,20384,5230,25603,5238,5238,5227,5237,5231,5233,5236,5238,5238,105,105,105,105,105,105,105,0,0,0,0,0,0,27480,27483,360,360,4157,4167,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.DataFlow" 474046137 101 [475,475,475,475,475,0,0,0,0,0,475,5167,5167,5167,5167,5167,5167,22,0,0,2533,2533,2533,2532,2532,2533,2533,2533,2533,0,0,298,298,298,298,298,298,298,0,0,152,152,152,152,152,152,152,0,0,2158,2159,2159,2159,2158,2159,0,0,2159,2157,2156,0,0,2158,2158,2159,2158,2159,2159,2159,2158,2159,2159,1024508,1888743,57941,58127,58082,1946925,21454,21454,1653,1653,1653,23107,3,3,3,3,3,3,3,3,3,0,0,0,0,3,1,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Functions" 1959522584 848 [33,33,33,33,33,33,33,33,33,33,37,37,37,37,37,37,37,37,37,52,52,52,52,52,52,52,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,39842,39834,7841,32000,0,31998,32001,39844,476,311,311,389,389,389,389,389,389,476,476,5,5,5,5,5,5,5,5,5,5,5,26,26,26,26,26,25,25,25,25,25,25,25,25,26,26,26,61,60,60,60,60,61,51,51,51,51,61,61,61,23,23,23,23,23,23,23,23,23,23,23,23,23,132,132,132,132,132,132,132,132,132,132,132,132,132,14459,13612,13612,14457,14457,14457,14457,14459,14459,14459,865627,865821,8702,857093,0,857099,857009,865862,145,142,142,145,145,145,145,145,143,143,145,145,145,0,0,0,0,0,0,0,0,16047,36,0,51,0,159,59143,19,1001,168159,24844,56962,52608,0,0,24480,517,517,1977,1977,1977,1977,1977,517,517,18,18,0,0,0,0,0,0,0,0,14563,14562,14564,13104,13105,13105,2653,2173,2173,2173,2173,2173,2173,2173,2173,2173,2653,2653,0,0,185,185,185,185,40,145,145,150,150,150,145,185,185,1020,1020,0,0,0,0,0,83059,83058,83058,0,0,311714,41850,41850,311715,311715,260,260,1586,1588,0,0,0,0,0,290809,290907,290976,0,0,277508,72400,72241,52680,72343,277549,277546,25,25,25,25,25,25,25,25,25,25,25,15,15,15,15,15,15,15,15,15,15,15,40,8,8,18,330,330,330,330,330,330,330,0,0,0,0,0,0,0,0,330,2622,2623,2118,2118,4741,1988,1988,1515,1515,3503,0,0,1190,1190,525,525,525,525,525,525,525,525,525,1190,1150,1150,433,433,433,433,433,433,433,433,433,1150,2340,883,883,1295,1295,1295,883,883,14256,14255,0,0,0,0,0,0,3749781,3749748,3750197,2614812,1321268,1321497,367240,367251,367349,367323,1321560,2614149,2614927,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,2,2,0,0,0,0,0,0,0,0,273,273,273,120,120,120,184,96,96,96,96,96,96,96,184,184,0,0,72,72,72,72,72,72,72,72,72,72,72,110,110,91,71,109,110,90,90,50,32,50,90,110,110,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52997,52996,53228,53015,53353,53344,20264,20338,20352,20327,20364,20432,9438,9435,9408,9459,9390,9407,9438,9439,9427,9452,9436,9407,9406,39606,39726,9871,9432,9345,9416,9434,9446,9450,9420,9893,39602,39542,39517,9390,9419,9446,39491,39762,0,0,538,538,538,538,538,538,538,538,538,538,538,538,572,572,1420,1406,1440,572,572,39,39,21716,21716,21716,21716,21716,21716,21716,21716,21716,21716,21716,4099814,4099830,4099990,4099814,4099869,4100061,1701226,1701151,1701264,3938157,3938282,526962,526987,526948,527010,526962,526992,527016,526985,527000,3938054,3938256,0,0,70,70,70,70,70,70,70,70,70,70,70,70,105,105,81,81,116,105,105,19,19,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,475856,475884,476043,475890,475905,476122,237024,236990,237078,59797,59813,59815,468653,468779,59772,59818,59755,59810,468799,468809,468807,59789,59829,59810,468598,468811,0,0,399,399,399,399,399,399,399,399,399,399,399,399,436,436,458,434,471,436,436,81,81,1618,1618,1618,1618,1618,1618,1618,1618,1618,1618,1618,1505384,1505442,1505814,1505473,1505530,1505891,558156,558099,558249,222460,222499,222497,1288299,1288078,224151,222500,222529,224217,1288244,1288144,1288067,222444,222536,222537,1288085,1288473,0,0,382,382,1089,1089,1089,1089,1089,382,382,2539,2539,4,4,4,4,4,4,4,4,1274962,1274969,1274977,463112,463109,463113,2216120,848257,848262,212937,212939,212937,212938,212938,212938,848260,2216103,2216123,0,0,540,540,540,540,0,0,0,0,0,0,0,0,0,0,0,0,876083,875978,876234,0,0,1314016,368457,368462,136751,136199,136262,136841,368484,1313827,1314080,2754,2754,540,540,540,540,0,0,4,4,4,306,306,306,306,306,306,340284,340312,340404,0,0,800742,310199,310247,800545,800794,2754,2754,1223,1223,1223,1223,1012,211,211,557,557,557,211,1223,1223,7378,7374,0,20203,20203,7377,7381,4,4,4,4,4,4,4,4,4,2009545,2009324,2009519,1962641,1962702,1962873,7379,7383,106949,43378,43385,41846,41858,41848,22910,22842,22852,22923,41853,41850,43417,106912,106976,394,394],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Functions.Accum" 2819166775 276 [23,23,23,31,31,31,31,0,0,31,23,23,23,23,23,23,23,23,33,41,41,41,42,42,10,11,11,11,11,11,0,0,53,23,23,23,23,15,84,84,84,0,0,0,0,0,0,15,15,15,15,15,23,23,23,23,23,23,15,15,15,15,15,15,15,1,1,1,15,15,15,15,15,15,117,117,117,102,102,102,0,102,102,15,117,117,15,15,15,15,15,15,15,15,15,15,15,15,15,0,15,15,15,291598,0,0,291597,1604018,0,0,1604017,1687191,701829,2389088,306202,654669,960894,15,15,15,15,15,15,15,2246,2246,2246,2246,2246,0,0,330,0,153809,63391,4401,4401,4401,4404,2288,2288,2288,2288,2291,2113,2113,2113,2113,2113,4404,769,1055,1055,4516,4516,4517,1055,1054,1055,1055,5459,286,286,285,285,286,286,286,286,286,22880,22905,22880,22907,22883,22891,22895,22905,32721,32710,32723,32712,32721,65897,73017,73038,22912,22912,22854,22854,52965,52965,52965,52965,52965,35047,35047,35047,35047,22854,22854,22854,22854,22854,22854,549744,549716,549742,549712,549704,549714,549728,549720,549721,242589,242623,242595,242604,242604,242623,242625,0,0,284739,284740,12834,12834,12834,12834,297573,142889,142889,142889,63713,63713,63713,63713,142889,142889,142889,142889,63713,63713,63713,142889,142889,142889,398940,142889,63713,142889,398939,398939,74261,74243,25244,25248,99501,284739,284740,284740,284740,284741,3525,76547,76547,76547,76547,76547,76547,76547,76547,361287,176898,107842,284740],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Simulation" 2362494313 162 [4366,4366,3554,4366,4366,4366,4366,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4366,614,614,614,614,614,410,410,606,606,606,606,606,472,472,472,472,472,314,410,410,410,410,410,410,614,145,145,145,145,145,0,145,70,614,614,614,614,116,116,116,116,116,0,0,0,116,56,410,410,614,614,614,614,614,614,614,614,614,614,308,314,410,410,410,410,614,614,102,610,610,9,9,9,9,9,9,9,601,601,108,108,108,108,108,108,108,493,0,493,493,493,712,102,102,102,34,34,204,204,102,204,204,204,204,204,94,204,204,102,102,102,102,102,102,102,102,102,102],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Types" 726772409 631 [20341,6,20346,20325,20306,20334,20345,24194,24194,24195,5819,5819,5819,5819,18376,18376,24195,24195,24195,24195,24195,24195,4748,19988,20003,20016,24194,24194,24195,24195,24195,19982,20021,40321,40357,4366,4366,11139,11139,0,11139,11139,0,0,0,0,0,0,11139,0,11139,11139,11139,11139,11139,11139,11139,11139,11139,15505,22628,22628,22628,22628,0,0,0,0,0,0,22628,22628,170,65,65,65,170,170,170,0,170,136,112,112,112,136,136,100,140,140,140,100,100,100,100,136,136,170,0,0,0,0,0,170,34,34,34,34,34,30,30,30,30,30,30,30,30,30,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,30,30,30,30,30,30,30,30,30,6,6,6,6,6,6,6,6,6,6,6,6,6,14,70,70,70,70,63,7,70,63,7,70,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,14,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,878749,2634968,2635392,0,65846076,65846129,64098,0,71683,71682,177413,177410,177408,177422,349110,349116,349093,349111,302794,358528,358530,177420,177419,5060,5060,5060,5060,0,0,0,6,6,0,0,0,0,200,200,0,0,0,0,0,0,0,0,6090952,6091228,364598,364592,44435,44440,3882,0,35026566,50,80,0,0,79,0,6896,0,14882,0,0,0,0,0,0,0,0,16784,0,0,0,0,0,0,0,0,1,1,1,1,9,28,42,42,42,42,0,42,42,42,42,42,42,42,42,28,28,28,28,28,28,28,0,28,0,0,0,0,0,0,0,0,0,0,0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,405275,487156,487156,487157,47904,47904,47904,47904,47904,47904,47903,439260,487154,356122,405271,405264,405267,405265,405268,405273,405268,405267,478793,478809,478807,2,2,2,2,478802,478805,282450,405267,405267,405264,405266,405269,405266,405265,47906,47905,47906,33445,405274,405277,405268,405271,405269,405276,405278,0,0,0,0,0,0,0,3954989,7432429,7209033,7431826,7432590,7432627,4391,4391,4391,47908,47908,47908,0,0,0,47908,47907,6423613,6887464,6616912,6886430,6886059,6887089,207686,224550,224569,0,0,0,3722,4750,5010,5010,7020107,9633582,9633643,1814518,1955736,1956138,0,51777,51825,0,1234041,0,1234002,415531,818463,1234032,415539,415550,415542,415541,415528,818461,0,818460,818462,1234044,11916,11916,14444,14444,14444,60105,60105,93576,93577,47909,45668,93577,47909,45668,93577,60105,60105,60104,60105,60105,60105,60105,60104,102131,102131,5,102126,102131,5,5,102126,0,102126,102126,102131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,102,100,14461,14461,14461,14461,14461,14461,14461,102,102,102,102,102,102,102,102,102,102,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,9178458,9178452,1922703,5044,1917571,1922713,5054,1917666,0,1917650,351234,1917732,1917759,1918013,1917634,1922814,16811352,16812967,16813049,7906671,7907473,7907500],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Value" 1963546617 992 [1217,1214,1213,1213,1214,1242,1242,1328298,0,1327809,1327852,1328270,1328273,25,0,25,25,25,25,25,25,0,25,25,30,30,30,30,0,30,30,0,25,30,0,0,0,0,0,0,0,0,30,3205,3204,3205,3205,3204,3204,3205,3204,3203,3203,3202,3203,3203,3203,3205,3205,3205,0,3161,3161,3161,3162,3162,0,2,2,2,2,2,93,93,0,0,0,0,0,0,0,0,26899,26899,0,18646,18646,18646,18646,18646,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,0,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,16592,1,1,0,1,0,0,0,0,0,4660,0,0,0,0,0,0,0,0,0,0,0,92,32,0,92,92,92,92,0,1328857,1328857,0,1328579,1328575,1328846,1328567,1329061,1329069,0,44,0,44,44,44,44,2812,0,2812,2812,2812,704,704,1650,0,1650,1650,0,1650,1650,1650,0,0,0,1636,1636,1636,0,1010,1010,1010,1010,1010,1010,1010,1010,1010,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,0,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,12,12,27,27,3,3,3,3,3,350,349,350,350,350,410,410,410,0,410,410,410,410,410,228,228,228,228,228,548,548,548,548,548,3,3,3,3,3,78,78,78,78,0,78,78,78,78,78,3,3,0,3,3,3,3,3,3,3,3,10,10,0,10,10,10,10,1,1,1,1253395,1253361,1327791,1327771,0,1327703,1327995,381100,1327991,1328088,0,0,0,0,150,150,150,0,0,0,0,0,150,150,150,150,0,150,150,150,150,150,150,149,150,150,150,0,1742,1742,1742,1742,1742,1742,1742,1742,0,1742,1742,0,0,0,0,0,84,84,3977,0,3977,3977,3977,1488,1488,1488,288,0,288,288,0,288,288,288,27,27,27,2253,2253,2253,30,25,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,38,38,37,37,13,13,38,38,0,0,0,0,0,0,284,284,284,284,284,218,218,218,218,218,91,91,91,91,91,364,364,364,364,364,0,0,0,0,0,1037,1037,1037,1037,1037,1,1,1,1,44,44,44,1,1,1,0,0,0,0,58,58,58,58,58,58,58,0,0,0,0,0,58,58,0,1409,1409,1409,1409,1409,1409,1409,1409,0,1409,1409,0,0,0,0,0,0,0,70,70,0,1671,1671,1264,1264,1264,47,1217,1264,0,0,0,0,0,0,0,0,0,333,333,333,333,1938,1938,2271,0,2172,2172,2172,333,1839,2172,333,1839,2172,2172,2172,2172,0,59,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,43,43,43,44,44,44,43,43,43,43,43,43,43,1,43,44,0,1,0,1,0,1,0,1,1,43,43,43,44,43,43,43,43,14,14,14,14,44,44,0,0,0,0,0,0,168,168,168,168,168,168,168,12,11,12,12,12,12,12,3,3,3,3,3,4,4,4,4,4,0,0,0,0,0,14,14,14,14,14,14,2,2,0,2,2,2,8,8,8,33,37,37,0,0,0,0,63,63,63,63,63,63,63,0,0,0,0,0,63,63,697,26547,26545,27245,1024,1016,1048,1048,179,179,179,179,179,180,179,180,180,180,114,114,114,114,114,0,0,0,0,1954,1954,1216,1216,1216,1216,1216,0,0,0,1,1,0,0,48,48],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Intermediate.Variable" 2817219055 47 [20256,20256,20256,20256,144230,144231,17081,127150,144227,17081,127148,127152,127149,0,0,0,0,127153,0,127152,127148,127145,127145,127144,127153,144227,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Networks.Bus" 915218622 2709 [0,8,0,8,0,8,8,0,0,8,0,8,8,8,0,0,0,8,0,8,0,8,8,8,8,8,8,8,6,6,0,6,6,552,517,161,517,517,517,517,517,65,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,552,547,517,552,552,517,517,517,517,517,552,517,517,517,367,367,367,0,0,0,552,552,552,552,552,552,552,552,509,509,65,509,509,44,44,144,144,0,188,589,589,589,589,589,65,65,589,589,65,65,589,589,0,0,589,589,589,589,94,94,94,94,188,130,1178,1178,1178,1178,1178,1178,130,1178,1178,1178,1178,1178,1178,0,1178,1178,1178,1178,1178,1178,1178,188,188,188,188,188,188,188,188,188,188,188,4051,4045,4050,10604,10607,10606,10607,14661,14659,14654,14651,14658,34198,34198,34197,34198,34198,34198,34195,34197,34198,34197,34197,34196,34197,34197,34197,34198,34198,34198,34198,34198,34198,82,82,82,82,82,82,0,0,0,82,82,152,150,150,150,150,150,150,175,148,175,175,175,175,175,175,175,152,152,82,82,82,82,82,82,152,148,175,175,1,1,4829176,4829173,4829173,4829203,9642374,9642342,0,9642354,9642368,18581456,18581453,18580994,18581040,18581382,9642327,9642367,9642378,9642369,9642304,9642356,9642321,9642338,0,0,0,9642356,9642350,9642350,8014600,1634576,9649231,9649140,9649216,9649212,9649187,9649187,9649144,9649182,9649207,9649206,9649206,9649217,9649214,9642364,9649175,4829193,4829203,4829179,4829170,4829186,4829173,4829185,4829186,4829174,4829185,4829179,4829190,4567,4560,4565,4565,4567,4565,4564,4563,4566,28733,248872,248820,248857,248851,248856,243379,219944,219954,219947,219923,219930,219915,248579,248623,248613,271,0,271,197,271,271,277582,4829142,4829141,4824584,9649154,9649194,65860382,65860224,65860269,4824590,9653740,134886,134813,35274,99530,134902,35276,35291,35278,99518,0,99518,99520,134899,82,86,86,86,86,82,81,82,85,86,86,82,81,86,86,86,86,0,0,0,0,0,0,0,0,94,94,94,94,0,0,0,0,91,91,0,0,0,0,93,93,0,0,0,0,94,94,91,91,0,0,94,94,94,94,94,94,94,94,94,94,94,5375,5375,5375,2505,2505,2505,2505,2505,2505,2870,5375,5375,22,22,22,22,22,22,43,72,72,72,72,72,0,0,94,0,3052,3053,3053,3053,3053,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2869,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2870,2505,2505,2505,2505,2505,2504,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,1715,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,2505,5375,5375,5375,2505,5375,5375,5375,470,470,470,470,470,470,94,94,94,94,94,94,94,94,94,94,94,94,470,470,470,470,470,470,470,470,94,94,94,94,94,65,94,94,94,65,94,94,94,94,94,94,94,94,65,94,589,589,589,589,589,94,94,94,94,94,94,94,94,94,94,65,94,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,65,94,94,94,94,94,94,94,65,30,30,30,30,65,65,65,65,65,65,65,589,94,94,94,94,94,94,94,3053,3053,3053,3053,3053,3053,3053,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,94,94,29,65,94,29,65,65,65,65,65,65,65,65,94,94,94,94,94,94,94,94,94,29,65,94,29,65,0,65,65,65,65,65,65,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,33,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,33,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,3053,3053,3053,3052,3053,3052,3053,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,3053,3053,3053,3053,1,1,1,1,0,0,6481,6481,6481,1169,1169,1169,32028,32031,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,94,94,94,94,94,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,94,94,94,94,94,589,589,589,589,589,589,589,589,589,589,589,589,589,589,341,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,683,0,3053,3053,3053,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,33,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,3147,3053,3053,3147,3147,3053,3053,3053,3053,3053,94,3147,3053,3147,3147,3147,3147,0,3147,3147,3147,3147,3147,3147,3147,3147,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,65,65,65,94,94,94,94,94,94,94,65,65,65,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,33,94,94,94,94,94,94,94,94,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,0,94,26,94,94,94,61,31259,31230,164,112,164,358,358,147,31240,31235,31238,31251,31255,25,25,25,25,0,25,25,25,25,25,25,25,0,25,25,25,25,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,25,25,6,25,25,25,24,1,25,24,1,1,1,25,25,25,102452,209542,209574,209606,209715,30643,30681,30637,30639,62276,122596,193031,166002,100011,122594,122412,122548,122548,122467,122554,122565,26111,193877,193824,293580,293560,293623,193870,163146,163100,163164,163121,163126,26115,26111,26114,26102,26084,26083,26089,26067,26067,26048,26046,26046,31208,31235,31257,31229,31207,31248,31248,0,6683,6683,6683,6683,6683,0,6683,6683,0,0,0,0,0,0,0,0,0,6683,3986,31092,31071,3986,3986,3986,31081,130906,124264,6620,130901,124271,6620,6620,6620,6620,6620,6620,6620,6620,6620,6620,6620,130959,31083,3986,3986,31088,31067,31082,31087,31073,31072,126647,126691,126709,122535,122566,126735,126773,31085,31256,31231,31221,31221,31220,31256,213418,1094542,1094473,911334,183164,1094666,301925,880003,879995,879998,6345693,6345944,6345939,888809,5436652,5436911,6346767,911430,911397,4141,907364,911371,4141,4141,4141,4141,31222,31254,31254,31246,31197,31253,31218,31219,31250,2530,7469,7469,7469,7469,7469,7469,7469,7469,7469,7469,7469,2530,2530,2530,2530,2530,2530,2530,2530,2,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,0,2530,2530,2530,2530,2530,2530,28,2530,2530,2530,2530,2530,31208,31193,31255,152,152,152,152,0,152,152,152,152,152,152,20,152,152,152,152,152,31220,31238,31253,299,298,298,298,0,299,299,298,298,298,298,10,299,299,299,299,299,31204,31260,31228,31212,31241,31254,2160,2158,2159,2160,2158,2158,2160,2158,2160,2160,2160,2158,2159,2159,2159,2159,2158,2158,2158,2159,2159,2159,2159,2159,2159,2160,2160,2160,2159,2160,2159,2159,2158,2159,2159,2159,38813,38821,269089,269119,52140,217079,269204,52111,52103,52091,38819,38821,5603,31257,31234,31234,31258,5601,5603,5596,5599,5598,31222,31242,31228,31224,31235,28951,2263,31233,28959,2260,0,2259,2254,2263,2254,2254,2263,2259,31248,5595,5591,5598,5596,5599,31236,31217,31216,31231,26636,4564,31206,26640,4562,0,4564,1747,1756,1752,1753,4567,4567,4568,4565,4566,4566,4567,4566,4568,4567,4566,4567,4561,4562,4559,4561,4565,4561,31245,5599,5546,5545,5596,31216,31204,31211,31229,31225,31212,31223,31205,31265,234608,234579,234570,234605,234551,234591,14659,14660,14652,14661,0,14657,14656,474,14665,14665,14659,14653,14653,14650,14654,234613,2047,2046,2048,3313,3313,3313,3312,2048,2047,2048,2048,2046,2047,236656,32030,32031,32030,32030,32030,32031,32031,7601,7601,7601,7601,7601,7601,3744,7601,7601,7601,0,0,7601,1169,32030,32031,32031,32031,32031,32031,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,1169,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,0,0,0,0,0,0,0,0,496,496,504,504,493,11,504,493,492,491,492,493,493,19,8,19,11,11,11,11,0,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,504,91860,91858,0,3530,1230410,1230487,0,0,0,1230456,1230464,47363,91858,91863,91862,0,0,0,0,0,0,0,0,993989,0,0,0,0,0,0,0,0,0,46935,91859,91858,91863,91863,13372,13372,466834,208148,258691,466845,208148,0,208152,208147,208153,208153,0,208150,208152,208154,208150,13371,13371,13373,0,13890,13890,13885,13885,13890,13885,13889,13890,13890,13890,13890,13890,1699737,0,413780,413785,413777,413780,413780,413780,413782,1285966,1699759,13857,13888,13890,13890,416292,416298,416303,416299,0,0,0,0,0,0,416299,416299,13373,13890,13890,385792,385787,385789,385800,0,0,0,0,0,0,385796,385801,179646,179645,179646,179643,179646,0,0,13357,13890,13857,13890,13890,13890,13890,13890,13890,13890,13890,0,0,0,1902,1902,1902,1902,1902,1902,1902,1902,28445,82343,82403,82400,82355,82393,82436,82343,82367,82405,82406,82414,82359,82416,82428,82430,22335,28444,28445,59350,101289,101187,331133,331272,331407,331100,331347,331265,331189,331285,68424,410163,170193,410013,409964,410054,410079,410136,59279,59345,59299,59246,59353,59291,59292,19982,376690,376700,117780,572341,187626,571887,572131,572278,571999,572309,83093,83090,83035,83024,83086,83084,59349,59333,59352,59330,59351,83095,567735,567384,567644,567804,567658,376809,376839,376781,376706,376755,376760,376680,376835,376841,101239,78284,78299,22836,22869,101165,101193,101285,101147,101205,101226,101251,101248,74632,376658,376660,376853,376692,376732,376734,19982,74603,74593,74581,74581,98603,108540,108544,583372,583473,583509,583454,400822,400813,400638,400762,400746,400649,400626,376810,376803,376700,59354,83037,83064,82930,83081,40296,40335,40281,40256,40264,40296,40289,19979,20012,19976,19985,20013,0,20011,20013,0,0,0,0,0,0,0,0,0,0,0,0,20005,0,20008,20005,20015,19981,20003,19990,19990,20007,19993,19990,20014,20008,20011,19981,19991,19991,20017,20002,20008,20016,20016,20018,20303,20322,20317,20303,20334,20301,20330,20015,19981,20000,19996,20004,19992,19990,20016,20000,20013,20013,19995,20000,19963,19976,20000,0,20004,20018,20335,20334,20334,20340,20341,20341,20341,515,515,20341,20333,20016,20018,20013,20013,20018,20000,20012,80507,80482,80462,80467,80485,80512,46769,48469,48451,48442,48445,48440,48444,48451,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Networks.Types" 1232122936 230 [1178,1178,1178,1695,1695,1695,1695,1695,1695,0,9649225,9649221,0,0,0,0,0,0,0,0,0,0,0,0,65,0,589,589,0,0,0,0,0,0,0,0,0,0,250,250,589,589,0,5488,20294,20294,0,0,0,0,213552,213494,213480,0,213454,213524,0,0,0,0,0,0,213473,0,213486,1143848,1143785,1143794,45623,213534,151091,213492,213493,1127516,1127511,1127526,45597,213449,213423,213535,213473,163271,163271,163270,163268,162820,163269,163269,163270,12153,213518,213461,213495,213443,16263,16263,16263,16263,15747,16263,16263,16263,7908,213430,213382,213459,213568,213449,213541,2,2,3,3,3,3,3,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,2530,28,2530,2530,806023,766763,805990,265511,60686,474,286384,587680,0,218563,806042,806111,91861,91860,91860,91860,46814,47363,91859,91859,91857,91860,91861,91860,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62321,213426,213387,2159,2157,2159,2159,108,2160,2159,505697,506391,1243972,1243564,1244101,1243527,1244200,40338,40356,40341,40281,40303,40314,40339,40319,1016,40340,40317],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Allocation" 2290091167 15 [0,0,0,0,19,6,6,6,6,6,6,6,6,6,6],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Bind" 2589207016 85 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56430675,56414238,56423240,56430670,56430697,9689239,9698267,9698267,66128948,66129014,66128909,66128982,4855029,4854969,4854993,4855036,4855036,0,0,0,0,0,0,0,0,62,0,0,25840,25835,25836,25820,25837,48324,48313,24135,24149,24154,24143,24136,24140,24148,72449,87,0,0,0,0,87,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,95],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Dataflow" 4034102819 95 [19971,19976,19979,19970,19965,19965,20012,19960,19978,19981,20016,19971,20010,19973,19971,19999,19992,19992,20012,19995,19980,19971,20017,19962,19996,19980,20004,19972,19958,19958,20018,19975,19972,20008,20009,20009,20001,20002,20017,20000,19989,19984,20016,20337,20310,20323,20316,20314,20317,20327,20310,20321,20013,20008,20012,19980,20017,19995,20014,0,0,400652,400858,20,20,20,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,10355,0,0,0,0,0,0,0,0,0,0,0,10355,10355],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Endpoint" 1025167856 125 [20838,20838,20838,20838,20838,20838,20838,20838,20838,20838,20838,20838,20838,20841,20838,20838,20838,20859,20858,66,66,66,27,27,27,3,96,203415,102712,102777,203412,203484,19980,20017,19960,20015,383476,392244,775956,376686,371156,748043,364917,364993,200803,200940,64,0,6,0,0,6,1971338,1970432,1970737,1970708,1971325,1971942,8,8,8,8,8,8,8,8,8,8,8,8,12,12,12,12,12,12,12,12,12,12,12,12,1020863,1021156,1021514,1271012,1434696,1434317,2705675,1163478,789164,789087,788998,789246,789339,789255,1163315,1222288,845211,1116447,1116654,1179917,1179593,1179861,1179973,1180003,845166,845122,844884,844915,845026,844885,1221961,2384578,6726,2692,6726,6726,6726,6726,6482,6482,6482,6482,13208],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Refactor.BreakLoop" 879766220 55 [8117,108,108,108,108,108,108,108,7201,7201,7203,8111,8117,8007,0,0,2755,2755,0,0,2755,8005,8007,8007,8004,8009,16087,10306,10306,10115,10112,9173,9173,10308,16075,16087,0,0,0,0,0,0,172273,172253,0,0,0,14,107,107,74,74,74,107,107],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Refactor.ConstantFolding" 2490480099 181 [623,12256,536685,536685,524429,12256,536685,524429,524429,524429,524429,524429,524429,524429,28762,495667,524429,28452,623,623,623,0,0,366,366,366,366,366,0,0,366,366,168,168,0,168,168,168,168,168,168,366,366,366,53,313,366,53,313,0,313,177,253,253,340,313,168,313,313,313,169,313,366,366,366,54489,54498,54494,54484,54490,54486,54498,54496,5592,5590,5590,5589,38761,38777,25338,38779,38778,38780,38774,38775,54488,54492,54490,54489,54491,8002,8555,8550,8550,38768,8556,30224,38776,366,8001,8552,8556,30228,0,30225,0,30226,38776,5595,31208,31253,31253,0,0,0,0,0,0,0,0,0,20,1,288,288,288,288,288,288,288,31221,31263,31264,306,5593,5588,5588,31239,5589,31255,31254,38405,366,5593,31264,31265,31265,31265,366,366,313,53,366,313,313,313,31241,31241,288,31241,31254,31253,31253,31262,623,623,0,623,623,0,623,0,623,623,623,623,623,388,623,623,623],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Refactor.OptimizeAccum" 1184757828 360 [2876,2876,938,579,122,232,579,122,139,486,579,469,469,471,471,471,471,471,471,471,469,579,579,938,1938,1938,1910,1642,480,1180,1642,480,480,942,1642,942,942,1134,1134,1134,1134,1134,1134,1134,942,1642,1642,1910,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,28,3,28,0,0,0,0,2876,309,309,309,309,309,309,0,309,309,0,0,0,0,0,0,0,0,0,0,0,309,2557,2557,1136,1136,1144,1144,1144,1144,1144,0,1119,1119,1119,1119,1120,1120,1120,1120,1120,1120,1120,1120,1120,1119,1120,1120,1119,1,1120,3,3,3,3,3,1,1,1,1,1,617,617,309,309,309,0,0,930,503,503,503,622,622,622,622,309,313,622,309,309,309,309,309,313,313,289,24,313,289,289,289,289,24,24,24,0,24,24,24,24,24,0,1125,1119,309,309,309,309,309,309,309,1119,1119,1438,1438,1438,1438,1438,1438,1438,1438,1438,1438,1112,326,1438,1112,1112,1112,1112,1112,0,0,0,1112,326,0,326,326,326,326,2557,1445,0,5811,1445,1445,5811,5811,2890,2890,2890,2890,2890,2890,2890,1445,1445,1445,1445,1445,1445,1445,1445,2544,3989,3989,3989,2544,1445,1445,1445,1445,3989,2890,2890,2890,2890,2890,2890,2890,1445,1445,1445,1445,38817,38807,5672,33144,33148,2167,30974,30985,8,30972,30979,1168,29810,0,29814,29809,38814,137709,137702,137708,137701,137698,137702,69566,69576,69562,69572,69573,68134,68128,68130,68135,68136,69569,69570,2563,2563,2563,2563,2563,689,31275,9001,78571,78556,69569,8996,78581,69566,69566,2879,66696,69568,2879,2879,2879,31235,31273,31273,0,0,0,0,0,0,0,0,0,9,773,31247,5605,31239,31240,31275,1445,1445,1445,1445,1445,1445,1445,1119,326,1445,1035,309,1119,31234,31263,31263,31263,31263,605,605,605,605,605,605],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.Refactor.ResolveDeadlock" 2001936048 39 [1,1,14421,14421,14421,13576,13576,13576,13576,13576,8813,8813,18216,18216,18216,18216,8813,8813,8813,8813,8813,8813,13576,14421,14423,8813,14423,14423,0,0,0,0,0,0,0,0,0,10600,48513],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Problems.ViewHelper" 220874579 161 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessIntegrity" 479600604 214 [90362,90362,41700,41700,41700,41700,48662,0,48662,48662,90362,301,300,301,301,301,301,301,301,301,301,180684,180684,83375,83375,83375,83375,97309,0,97309,97309,180684,595,593,595,595,595,595,595,595,595,595,90322,90322,4930,4930,4930,4930,85392,0,85392,85392,90322,294,293,294,294,294,294,294,294,294,294,133986,133991,133990,133993,133989,133992,133991,0,0,133990,599,599,599,170649,170651,170649,170644,170651,584,599,599,599,599,599,599,599,599,85625,85625,85625,85625,0,85625,299,299,299,299,299,299,299,299,299,299,85623,85626,85624,85621,0,85619,300,300,300,300,300,300,300,300,300,300,1,1,1,755,755,24,718,37,37,37,37,37,0,2,35,21,35,35,35,37,755,755,604,47,65014,65014,65014,65014,64967,64967,64967,65014,65014,65014,64967,47,65014,0,64967,47,47,47,47,47,47,47,47,47,47,65014,599,604,604,604,604,604,604,149,149,151,151,143,143,6,151,150,150,151,151,143,143,7,151,150,150,151,151,150,150,6,151,150,150,151,151,150,150,8,151,151,151,151],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Accum" 4222517280 933 [48611,48589,48584,48552,0,48590,48594,36074,36079,48573,0,0,0,0,48576,253175,253115,253105,213481,39620,253149,213446,213508,213409,213454,39624,0,39623,39624,253180,11834,13546,13556,13553,13548,13557,13558,4359,4359,4359,33374,33381,0,0,13490,13489,13491,0,4777,4777,4776,4775,4780,0,0,4562,4558,4563,13549,13553,13555,13567,25399,11855,11857,11849,11842,11852,2992,2993,2929,11850,11856,11859,11857,11859,490551,490250,490232,490415,490490,490496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75662,75690,20748,20741,90447,90461,0,0,6908,0,0,0,0,0,0,0,0,0,0,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,4371,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,8519,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,60,0,0,60,60,60,60,60,20,20,20,60,60,39,39,9,39,39,39,39,80,80,113,113,3090,3203,3203,113,113,113,113,113,113,113,34,113,113,113,113,113,113,113,113,0,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,0,0,113,6423,6407,6411,11563,11579,0,0,19645,15859,15855,15856,19623,19619,19646,216599,216578,216584,216604,334142,334148,334141,19642,19642,19639,10145,19624,19620,19646,17953,17944,17950,17960,20420,20421,20415,19627,19627,19627,19646,19629,31217,316,316,316,316,316,316,4043,4043,4043,4043,4043,4043,2549,2549,2549,6908,1,1,1,1,1,1,1161,1161,1161,1161,1161,1161,1161,1161,1161,1161,1161,1161,1161,950,211,1161,1161,1161,1161,1161,0,0,0,0,81,81,81,81,81,81,81,0,0,81,236813,236932,16209,1649,1649,1649,1649,3748,3747,2628,3747,10818,10821,16226,16225,214930,358525,358818,16296,16303,16301,16279,16279,16304,358672,188080,197259,197138,197163,197220,197174,197301,39605,39639,10287,6610,6614,6616,6614,3679,3679,3679,3679,0,0,10292,10292,39590,27110,27123,39565,39592,10284,10297,10300,10294,10294,10294,10300,39582,39651,154217,154122,154147,154207,154254,46214,113661,113761,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,350664,3817,3818,3821,3823,3816,3820,3817,3821,3820,3820,3818,3822,3822,3820,3817,3819,3822,3815,3824,16282,16287,16280,16282,16278,16274,16277,16291,16289,16281,16276,16279,0,0,16293,4359,316,316,4043,4043,4359,4359,16280,16289,16273,16292,16286,4359,16291,16289,16289,16290,16290,16295,16290,16292,16284,16284,16293,0,5407,5407,5394,5407,5406,10867,10866,10872,10873,10821,10868,10874,16290,16296,8962,8967,8962,8958,8957,8960,8962,8967,8966,8965,8965,8958,8965,8958,8961,8964,2549,8964,8962,8961,8965,5390,5386,5393,5391,8962,8965,3746,3746,3746,3746,3746,3746,3746,3746,3746,3746,3746,3745,456,3745,3745,3745,3745,3746,3746,3746,3746,3746,3746,3745,3745,3744,3745,8964,8963,8962,8962,8964,8962,8958,8961,8962,8958,3744,1648,1648,1648,1648,1648,3571,3571,3571,3571,3571,3571,3571,8959,8967,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29082,51347,51350,13206,424,7365,7368,424,7362,7362,1764,7363,7369,7369,7363,7368,13201,38134,38163,4694,134,2510,2504,134,2508,2504,387,2506,2509,2509,2505,2510,4691,33454,33468,29,3,19,19,11,19,19,19,19,19,29,33425,33441,3122,1964,1964,1964,3122,30314,0,30319,30314,0,0,0,0,30309,51363,389,389,87,87,86,87,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Broken" 3203004534 885 [17235,17235,17235,1968,17235,946,946,929,929,932,932,932,944,944,944,944,17235,0,0,17235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10364,10364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3117,0,0,0,0,0,0,0,105,0,0,105,105,105,105,105,35,35,35,35,35,35,35,35,35,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,2452,35,35,35,105,105,51,51,51,51,0,0,51,51,51,51,51,140,140,49,49,476,427,476,476,476,476,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,6,49,49,49,49,49,49,49,49,0,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,3,46,49,3,46,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,0,0,49,461,461,461,1081,1081,1081,1542,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,98,98,98,98,98,98,98,98,98,98,0,0,14,14,14,14,14,0,0,14,0,944,944,944,944,951,951,785,951,951,951,951,1020,1500,1500,951,944,951,1500,16287,26,2872,2872,2872,2872,0,2872,2103,2103,2103,2103,2111,2111,2111,2111,2111,2111,2111,2111,2111,2288,2204,2204,2288,2288,2111,2103,2111,2288,2872,114,114,114,82,32,114,0,0,0,0,82,82,82,82,1697,1697,1697,1697,2281,2281,21548,948,948,948,0,948,944,19,925,944,19,925,944,944,944,944,948,948,948,948,944,461,948,948,948,948,948,948,948,926,926,926,948,931,931,931,931,948,948,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2112,2112,2112,2112,0,2112,2112,2112,2112,2112,2112,2112,2112,2112,0,2112,2112,2112,22,2081,2103,22,2081,2081,2103,2103,2103,2103,2103,2112,2112,2112,2112,2103,1092,2112,5,2107,2112,5,2107,2112,6,2101,2107,6,2101,2107,2112,2102,2112,2112,2112,2112,2112,929,929,929,929,932,932,926,926,926,926,3,929,932,3,929,932,3,926,929,3,926,929,932,932,2112,1176,2112,2112,2112,2112,2112,2083,2109,929,1180,2109,929,1180,2109,2013,833,1180,2013,833,1174,1180,1180,1180,2013,2009,833,1176,2009,833,1176,1176,1176,2009,2112,948,948,948,948,948,7697,7697,7697,7697,948,948,948,948,948,948,948,948,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4008,1178,1178,1016,1006,1015,1016,1016,1106,72,0,72,72,0,0,0,0,72,1178,95,95,486,96,0,0,0,486,234,234,234,486,486,468,468,468,0,0,0,486,486,486,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,0,49,49,49,49,49,49,49,49,49,0,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Divider" 2788359334 837 [926,924,921,925,922,920,926,926,369,371,368,372,370,367,368,371,186,370,370,370,369,372,0,0,0,0,0,369,374,371,374,20,375,375,20,375,373,374,375,0,0,0,0,0,0,0,0,0,372,2739,2208,4914,4377,202064,202089,202083,202300,199783,2186,202024,199798,2189,7,2190,2187,2185,202007,202168,3843,3834,7719,66,66,66,66,66,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16580,16590,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,89,0,0,0,0,0,0,0,546,0,27,729,40,0,21,0,0,21,21,21,21,21,7,7,7,7,7,7,7,7,7,7,7,7,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,7,7,7,21,21,28,28,84,84,2760,2760,0,2760,2676,2760,0,0,2760,2676,2760,2760,2760,2760,84,84,84,84,84,84,84,38,84,84,84,84,84,84,84,84,0,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,38,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,0,0,84,20,20,20,20,20,20,20,20,20,20,20,20,19,19,19,19,8,8,8,8,87,1,1,1,1,1,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,0,0,0,65,65,65,65,65,65,0,0,65,1464,2186,2193,743,738,738,743,2192,2192,10041,17871,17888,743,742,744,746,745,747,747,17932,17926,171501,171517,558,559,561,561,552,561,560,560,560,560,1645,1101,1644,1634,1638,169832,0,169820,169830,171548,169971,1666,1662,1663,1650,1658,1658,171713,3299,171488,171649,171490,171487,3284,171680,1646,169861,171654,1649,169872,0,169871,6745,6729,6714,6676,6720,6725,169829,169856,171700,171707,171583,171578,171590,171547,171709,565,569,570,568,1117,1118,373,374,372,373,369,372,373,373,372,374,374,742,743,738,740,740,747,371,371,371,369,371,741,742,742,740,745,743,742,40,738,737,0,0,743,743,3,3,3,3,3,3,0,3,369,370,368,372,369,369,371,369,371,371,371,371,370,370,371,372,372,372,372,370,372,20,20,371,372,371,372,20,370,372,371,372,373,375,375,374,375,375,375,374,373,375,375,375,20,20,375,374,374,375,374,746,552,550,552,552,555,555,554,551,552,553,555,551,27,550,552,550,552,0,0,549,555,553,555,555,555,0,555,554,554,551,552,552,554,364,185,553,366,185,185,185,185,185,553,553,555,554,555,555,555,555,555,555,27,27,555,555,555,555,555,547,553,553,553,553,553,553,553,553,555,555,555,555,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1673,30584,30567,547,547,546,547,544,547,545,543,547,547,545,544,542,547,727,1,727,727,729,1,1,1,544,30033,0,30035,30036,30621,1097,30593,30628,556,544,541,553,553,97,547,551,547,362,362,362,556,556,539,544,556,550,548,546,548,781,781,784,551,551,30039,0,30059,1379,30029,30033,30606,30630,30606,30603,30561,30616,30617,39510,39533,631,631,633,633,632,987,38557,0,38557,38546,0,0,0,0,38554,39543,168,168,0,0,32,32,32,0,32,32,32,32,32,66,66,66,66,0,0,0,3521,3476,3476,3498,3492,1109,1105,1107,1104,1104,4610],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Fram" 1971896070 1307 [0,0,422,422,422,422,422,422,422,422,161,161,161,161,161,161,161,161,161,161,161,161,2350,2348,2350,0,0,0,0,2349,1307,34209,35516,6470224,1662922,8132836,507589,507465,507602,507638,507595,507527,507463,507457,507539,507539,507535,507511,507656,501764,501811,501744,507633,5817,5817,5817,5814,5814,5814,5817,507387,205,507571,507378,507416,507363,507383,205,507526,507636,3060,3059,3060,3060,3060,3060,3060,1307,1753,1753,1753,1753,1753,1753,1753,3060,3059,209758,0,0,209741,209739,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1913587,1913520,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1669,0,0,0,0,0,0,0,0,0,0,526,526,211,211,0,211,211,211,211,3408,3408,211,211,211,211,211,211,211,211,6108,6319,6319,211,211,211,211,211,211,211,79,211,211,211,211,211,211,211,211,0,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,0,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,0,0,211,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,366,1217,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,1583,26,26,26,26,26,78,0,0,78,78,78,78,78,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,78,78,1223,1223,1223,1223,1223,1223,426,426,426,426,426,426,1649,1,1,1,1,1,9272,7538,1734,1734,1734,1734,1734,9272,9272,9272,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,2314,0,0,161,161,161,161,161,161,161,161,161,161,161,161,161,0,0,161,30812,20397,20395,30827,30829,3785,3788,3784,3787,3788,3789,3787,3789,3785,3789,3788,3789,30826,873270,541214,541142,872914,873235,47843,47881,47905,47929,47903,47918,47683,47704,47724,47920,872960,904008,5401,5398,5019,5401,5401,38252,58063,58084,5401,5401,5398,5393,5395,5400,5401,58081,58083,42331,331721,1414057,375168,375327,374876,375243,375071,375098,375120,374012,944,375007,19124,27004,23248,23248,23247,373822,374008,944,375038,375039,4441738,416538,517575,511398,308481,511521,517694,166710,0,162267,162267,162266,162266,162267,162267,162267,106481,162266,166711,111629,73611,234030,230050,230171,230193,230153,230098,230130,230148,230079,146637,230200,233960,32075,19129,31073,32061,5996143,375169,375281,374980,375158,375016,375006,374987,375013,374990,375285,22341,22334,22334,22329,22332,22342,131558,13198,13196,13191,13178,13197,4599,4604,4606,4601,4601,4609,4612,4611,4607,4612,4594,4608,4606,4611,4603,334,334,4611,4611,4609,4612,4597,4612,3590,3590,3588,3590,3590,3590,3590,3589,4611,4603,4608,4608,4598,3581,1867,3580,3579,1016,1022,1017,1016,4606,4604,4607,4607,4611,4602,4604,4604,4604,4609,4611,9413,9412,9422,9411,9411,9424,79094,8586,8583,8578,8576,8586,4573,4584,4579,4584,4584,4587,4587,4582,4587,4583,4582,4575,4586,4588,366,366,4587,4588,4578,4582,4588,2363,2363,2362,2363,2363,2363,2363,2363,4588,0,4586,4580,4575,4578,4586,4587,4573,2215,2355,4583,2218,2187,0,0,0,0,0,0,0,2187,2190,2224,1872,2221,2220,2355,2344,0,0,0,0,0,0,0,2346,2347,2363,2350,2349,2357,2356,4584,4586,4571,4579,4580,4578,4586,4587,4579,4583,4581,2683,2683,2686,54988,5400,5400,5399,5396,5401,2337,732,2334,2337,2337,2341,2341,2341,2341,2341,2341,2341,202,202,2340,2341,2341,2341,2341,2341,2341,2340,2338,2338,2341,2339,2341,2337,2335,2337,2337,2340,2341,3060,3060,4449,4449,4449,3060,3060,3060,3060,3031,2953,2921,2921,2953,3031,3031,3060,3060,3060,3060,3060,3060,3060,3060,2358,2358,2358,3060,3060,3060,3060,3060,3060,3060,3060,224,224,3060,3060,3060,3060,3060,3060,3060,3060,3060,3059,3060,3059,3060,3060,3060,7342,7342,7342,7342,7342,7342,15768,4000,4000,3999,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,523,523,4000,4000,4000,4000,4000,4000,2921,2921,2921,2921,2921,2921,2921,2921,4000,4000,4000,4000,4000,2921,1981,2921,2921,1079,1079,1079,1079,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18592,64820,64848,2284,2282,2284,2283,2285,2285,2284,4584,64809,64859,2285,9192,9193,9191,9192,155,2285,2285,2282,2283,2285,2285,2285,2285,2285,2285,2285,202,202,2285,2285,202,202,2284,2283,202,202,2285,2284,2284,2284,2284,203,2285,2285,2285,2285,2285,2285,2285,2285,2285,2285,2285,2174,2159,2284,2284,2285,2284,2272,2269,2269,2269,2174,0,0,2270,2270,2162,2161,2157,2159,2159,2159,2159,2284,2270,2272,1327,1327,1326,1327,1327,1327,1327,2281,2284,2159,2284,2284,2284,2285,2283,2282,2284,2284,2284,2282,2285,2285,2284,62335,62334,583001,582957,582919,582865,582928,582910,582923,9414,573594,582963,0,9407,573436,573423,343618,343665,4781,4783,184,4772,4776,146215,17577,17590,146201,131937,131930,3267,131930,131951,131673,131662,0,184,146181,146181,146207,146197,146191,146181,146169,146180,146195,4780,146204,343587,229990,230068,163943,163978,2447,2447,202,2447,2447,77625,70354,70330,2221,70332,70362,69907,69902,2220,202,77734,77734,77750,77744,77720,77735,77727,77732,77744,2447,77751,163876,66175,66196,2316,7559,14666,100535,24540,24541,24540,24539,24540,24541,24540,24541,0,24541,7032,7032,224,7032,7032,3015,3041,2905,3041,3041,10916,10916,3040,10916,10916,10916,7032,10916,24541,41647,0,41653,41650,0,0,0,0,41645,583031,518751,518968,18,18,583016,465359,582986,582842,582945,582989,583008,583014,9312,9312,9312,582847,582853,582957,582983,582942,582956,583037,583024,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,0,147,147,143,147,147,1868390,1868465,1868393,7461913,9332048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.IO.SPI" 2017104757 1834 [60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,65,65,65,65,31,65,65,65,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,130,130,130,130,130,0,0,65,65,0,65,65,65,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,30,30,31,65,65,973,973,973,120,853,973,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,853,0,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,973,34,34,34,34,34,34,34,51,51,38,34,65,65,65,65,65,34,34,34,34,34,34,87,87,36,36,36,36,36,36,51,87,34,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,30,30,30,30,30,30,30,30,30,30,30,30,710,710,710,710,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,710,710,626,710,710,710,710,500,710,710,710,710,710,710,65,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,0,235,235,235,235,235,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,133,168,168,168,168,168,96,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,16,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,31,30,61,31,30,61,61,61,61,61,61,61,61,61,61,31,30,61,31,30,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,40,40,40,40,40,40,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,4,0,4,4,4,4,4,4,65,0,0,65,0,0,65,65,65,65,65,2400,2335,2400,2335,2400,2335,2400,2335,2400,2335,2400,2335,2400,2335,2400,2335,2400,2335,2400,2400,2400,2400,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,65,61,4,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,31,65,65,65,65,65,65,65,65,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,31,31,31,31,34,65,31,34,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,0,0,65,65,65,65,65,65,65,183,183,183,183,183,12,12,12,195,183,183,183,12,12,12,12,12,195],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.IO.SimpleIO" 721697917 528 [87,87,51,36,0,36,36,87,87,87,36,51,0,51,51,87,65,65,65,65,65,0,65,65,0,0,65,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,0,65,65,65,0,65,65,20,20,20,65,34,65,65,65,34,34,34,65,34,65,65,65,65,65,65,65,65,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,17744,17747,37441,37473,0,0,0,0,0,178,0,0,0,0,0,0,0,27647,27666,51,51,51,38,38,38,38,89,1,1,1,1,879,879,879,879,879,879,879,879,879,879,0,0,65,65,65,65,65,65,0,0,65,26071,45383,45461,1117,1117,1122,1122,1123,1121,1123,45407,45400,36687,21463,21500,21503,36672,161627,161824,161824,14750,8891,8891,14750,14750,1510,1510,1510,1510,1510,1510,1510,1510,1510,1510,14750,14750,13737,8193,13737,161703,161693,161691,161689,161695,161782,161899,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,38,38,38,38,564,564,564,564,564,564,546,546,546,546,546,564,564,564,564,564,546,18,564,546,18,18,18,18,18,564,564,564,564,564,564,1124,1126,1121,1126,1120,1123,1123,1126,1125,1125,1125,1124,1125,1126,51,1124,1126,1124,1126,1126,1126,1126,1124,1124,1124,1121,34,34,34,34,34,34,34,34,34,1125,1125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1688,41250,41253,0,2495,2495,2495,0,2495,2495,0,0,41244,41267,0,4105,4105,4097,0,4107,4110,0,0,41233,41255,419,419,36,419,419,1439,1439,1439,419,0,1439,1439,1439,136,136,136,419,1439,2495,38735,38772,882,885,51,885,885,2470,2470,2463,882,0,2469,2471,2470,378,379,379,885,2473,4109,34657,0,34660,34649,0,0,0,0,34651,41260,232,232,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Multiplier" 3923437066 635 [239814,239859,239831,140001,139994,239844,3470,3495,3526,3529,3521,3522,3526,3526,239837,0,0,239831,69,69,68,69,69,69,69,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34110,34124,0,0,0,0,1196,0,0,0,0,0,0,0,42,0,0,42,42,42,42,42,14,14,14,14,14,14,14,14,14,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,1629,14,14,14,42,42,56,56,92,92,2812,2812,0,2812,2720,2812,0,0,2812,2720,2812,2812,2812,2812,92,92,92,92,92,92,92,32,92,92,92,92,92,92,92,92,0,92,92,92,92,92,92,92,92,32,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,0,0,92,564,564,564,628,628,628,1192,1,1,1,1,1055,1055,1055,1055,1055,1055,1055,1055,1055,1055,0,0,66,66,66,66,66,0,0,66,423223,423059,423012,249530,173496,423146,7031,7031,7028,7028,7031,7033,7036,7031,7031,281691,463687,463808,7046,7039,7044,463742,238672,249520,249567,43177,43160,43165,43156,0,43164,5328,5332,5333,5333,5331,5334,5332,5335,5337,5337,5337,5336,5337,5329,5334,5336,5336,43034,27616,27621,43013,43032,5337,5329,5335,43025,43161,45285,45234,45224,45241,130357,130310,423205,10556,10549,10548,7024,3526,10557,7023,7022,7018,7026,7023,7020,7023,7018,7024,7023,565,7021,7024,7024,7022,7022,7026,7022,7026,7026,4203,4204,4198,4203,0,4204,4203,4199,4203,4200,4199,4203,4204,4202,0,4203,3461,3461,3461,3461,3461,3461,3461,3461,3461,3461,4204,4204,4204,4204,4204,628,4204,4204,4204,4204,4204,3457,3461,3461,3461,3461,3461,3461,3461,3461,4204,0,4204,4204,4204,4204,4201,4204,4180,4200,3458,743,4201,3457,743,743,4201,4204,3531,3530,3529,3531,3531,24971,24971,24967,24966,3530,3530,3531,3531,3527,3531,3529,3531,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14759,54464,54477,15528,15528,15523,15527,15528,28483,26008,0,26010,26002,1,1,1,1,26004,54489,198,198,30636,15024,4090,4085,4087,30679,18105,18098,18100,30619,30680,447248,447264,447277,415392,415392,415392,30660,18095,30652,30654,30623,30670,30660,29,29,29,29,29,29,29,29,66,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Shift" 2965023697 648 [822,195,822,66,66,66,66,66,66,66,66,8,66,66,66,66,66,66,822,822,822,822,822,105,39,5,39,448,90,27,3,27,374,822,0,0,822,65,65,65,0,0,0,5,65,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14124,14125,25,0,0,0,0,0,0,0,9,17,0,8,8,8,8,8,8,17,17,17,17,17,17,17,17,17,33,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,1047,0,0,0,0,0,0,65,65,65,65,65,65,65,65,65,0,0,65,195,756,756,66,66,66,66,66,66,66,756,756,171141,171072,171026,338,170663,171138,338,338,135,203,338,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,135,90,90,135,45,135,135,171028,170885,170825,203,170513,170918,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,203,126,126,203,21,203,203,498,498,498,498,170644,170535,171940,21,21,21,21,21,21,52,52,52,21,21,21,21,21,66,66,66,66,66,8,66,66,21,66,45,45,45,45,45,45,45,45,45,5,5,5,5,45,14,14,14,2,2,2,2,14,7,7,7,1,1,1,1,7,7,7,7,7,7,7,7,1,1,1,1,7,7,66,66,66,66,66,66,66,66,66,66,66,66,66,66,0,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,0,66,66,66,66,66,66,66,66,66,8,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,0,66,66,66,66,66,66,66,27,27,0,27,27,0,0,27,66,66,66,66,66,66,80,80,80,80,66,66,66,66,66,66,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,0,0,77,77,2655,2732,2732,77,77,77,77,77,77,77,31,77,77,77,77,77,77,77,77,0,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,0,0,77,1,1,1,1,1,1,1,1,38737,38757,167,64,64,64,64,64,98,42,42,42,42,42,69,167,38598,0,38599,38585,0,0,0,0,38594,38764,150,150,0,65,65,0,0,0,0,0,30602,30610],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.ProcessorUnits.Types" 1936249510 433 [32031,0,0,32031,1672,8423,8420,8434,10101,63740065,63736588,63740903,63740786,51929,51929,51927,51929,55786,55785,55785,14005,14005,74790,88795,0,21264,27246,23389,27245,27246,27245,27246,27246,27246,16,192,208,21,246,267,1354429,1354416,1354396,1354445,2851630,4205689,271599,271556,271267,271676,271662,271663,235116,235093,235140,235151,0,0,0,0,0,235158,235155,0,0,365,365,935,935,0,0,0,0,0,34876,34876,136490,136490,715,715,639647,639802,116,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17532,17532,63845921,63844942,1354895,1354904,13,13,12368,12368,1500,1500,1500,1500,1178,1178,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3184,0,0,0,0,0,0,31610,0,44,0,0,0,0,1,1,1,1,1,1,1,1,21871,18013,21871,10371,11500,11500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21871,21871,4151,4151,4151,4151,179643,179648,179635,179645,179642,413777,413773,413772,413779,413780,0,0,0,0,0,0,637045,1230433,1922,1922,1922,6,6,6,6,269,269,269,269,2571,2571,2571,2571,13140,13140,13140,13140,13715,13715,13715,13715,3530,3530,3530,3530,3530,3530,3530,3530,3530,35153,1230478,593412,1230402,1230432,1230479,1230475,20040,20040,1057,1057,18983,20040,144,216,144,144,144,216,216,216,216,8492,2546,21034,0,32072,1,1,1,1,1,1,1,1,588,502,360,161,588,588,62,62,170,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,7094,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,232,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.TargetSystem" 1020697367 120 [1651,1651,1651,1651,1651,1651,2978,2978,2978,2978,2978,168687,168744,52609,52637,31221,31189,31253,25,25,25,25,25,25,31216,31181,31256,2530,2530,2530,2530,2530,2530,2530,2530,31236,31246,31251,152,152,152,152,152,152,152,152,31216,31228,31243,298,298,298,299,299,299,299,299,31177,31232,31248,2159,2159,2158,2158,2159,2158,2158,2160,83039,82978,83093,19981,19999,19989,19984,19981,20017,31228,31196,31263,6008,6008,6008,6010,6008,6011,0,0,0,0,0,0,0,0,0,19,19,19,0,0,0,1902,1902,1902,0,0,0,0,0,0,0,0,0,0,0,0,0,70,70,70],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Model.Time" 3198244134 150 [0,0,0,0,61475,61462,81492,81540,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,22,2,24,22,22,22,22,2,2,2,2,2,2,2,24,24,12,12,12,12,12,12,12,12],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project" 1430427169 448 [94,0,0,0,0,94,94,94,0,290,290,290,1481,1481,94,1959,196,0,196,0,115,196,196,196,196,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,196,196,196,196,196,196,196,1,1,754,0,754,94,120,754,754,754,754,754,0,0,0,0,0,754,754,754,754,0,0,0,0,754,754,754,754,754,754,754,754,754,754,754,753,754,754,754,0,0,0,0,0,0,0,0,0,0,0,0,572,384,384,188,188,188,188,572,572,572,572,572,572,572,572,572,572,572,282,572,572,572,572,0,1481,0,415,3222,466,588,588,588,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,15,15,15,15,15,15,15,24,196,196,196,196,196,196,196,196,196,0,0,0,0,0,196,196,196,196,196,196,196,196,196,196,196,196,196,0,0,0,0,0,0,0,0,0,0,0,196,196,196,196,196,196,196,192,192,196,196,196,196,196,196,196,196,196,196,196,192,192,192,192,192,192,192,192,192,12,12,12,12,12,12,12,12,196,192,196,196,178,18,196,178,178,0,0,0,0,0,178,18,18,0,0,0,0,0,18,18,0,18,18,0,18,18,18,0,0,18,18,0,18,18,0,18,18,18,0,0,18,18,196,194,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,0,115,196,196,196,196,26,120,196,196,196,196,196,196,196,196,0,0,0,0,0,196,196,196,196,196,196,196,196,196,0,0,0,0,0,196,196,196],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project.Context" 2574843223 89 [3155,3155,94,0,94,94,94,94,94,94,3155,3155,3155,94,0,94,94,94,0,94,94,94,94,94,94,94,0,94,94,94,3155,3155,3155,3155,478,478,3155,3155,3155,2489,2489,2489,2489,2489,2489,2489,3155,3155,3155,3155,3155,290,3061,3061,0,0,0,0,0,0,0,0,290,290,290,754,94,94,305,305,305,305,305,305,305,305,305,305,0,0,0,0,0,0,0,0,214,754,754],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project.Template" 1910928873 336 [290,290,290,290,290,290,290,290,290,1050,1050,1050,1050,0,1050,1050,0,0,1050,1050,1050,1050,1050,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,854,854,854,854,0,0,0,0,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,0,0,0,0,0,0,0,854,854,0,854,854,854,854,854,854,854,854,854,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,290,0,0,0,0,0,290,282,0,0,0,0,0,0,0,0,290,290,290,290,290,572,572,572,572,572,572,478,478,290,290,188,188,478,478,0,0,0,478,478,478,478,478,478,478,478,478,0,478,478,478,0,94,94,94,478,478,478,478,479,479,196,196,196,196,196,290,290,0,0,0,290,290,290,290,290,290,290,290,94,94,94,290,290,290,1050,1050,1050,1050,1050,1050,0,1050,1050,1050,1050,1050,290,290,290,290,290,290,290,854,854,854,854,854,854,290,290,290,196,196,196,196,1,1,0,0,94,94,94,94,94,94,0,188,188,188,188,188,188,188,188,94,94,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,0,94,94,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,94,94,94,0,0,94,94,94,94,188,188,0,0,188,188,0,0,0,0,1,1,1,1,1,1,1,1,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project.TestBench" 3561718796 557 [277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,102,102,102,102,102,68,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,0,0,102,102,102,102,102,14270,14270,14270,5394,5394,5394,8876,0,8876,8876,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,963,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,14270,102,102,102,102,102,102,102,102,102,14270,14270,14270,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,504,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,5053,9217,0,9217,9217,9217,9217,9217,9217,9217,9217,9217,9217,9217,14270,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,26,102,102,102,102,102,102,102,102,0,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,26,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,2959,2959,2959,2959,2959,2959,2959,2959,10827,2959,2959,2959,10827,10827,10827,9080,9080,9081,9081,9080,45656,45658,45658,45658,45658,0,68524,3161,3163,3163,3163,3163,3163,3163,3163,3163,0,3001,3163,3163,3163,3163,3163,3163,3163,3163,3163,2489,2489,2489,2489,2489,2489,2489,2489,2489,0,0,0,0,0,0,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,524,524,524,524,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project.Types" 1947585841 82 [0,1178,0,1178,195,1695,0,1695,195,1695,0,1695,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Project.VerilogSnippets" 456904524 42 [196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,1,1,1,1,1,1,1,1,1,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis" 1037525058 216 [95,95,95,95,95,95,95,94,95,95,0,0,0,18,18,18,18,18,18,0,0,18,18,18,18,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,20,0,20,20,20,20,20,20,20,20,18,0,18,18,18,18,18,18,2,2,2,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,20,0,0,20,20,20,0,20,20,20,20,20,20,20,20,2,2,2,2,18,18,18,18,18,20,20,0,20,20,20,20,20,20,20,18,20,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,16,20,20,18,18,18,18,18,18,0,20,20],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Analysis" 2476425614 184 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Explore" 1757024047 446 [26797,26775,26758,26795,26796,22139,22121,22141,22141,31234,31227,31227,31212,31250,31203,31257,3984,31205,31252,31257,31235,31247,31244,31200,31254,31197,31243,31213,31256,77793,52021,0,38607,0,13415,52034,52015,52023,52008,51991,25773,77770,5519,5513,5517,5518,5536,52047,52046,83052,20122,83064,83079,83066,83068,83052,83040,259,82783,83047,259,5535,5536,5223,5222,5226,5066,5069,5070,5228,5230,5227,5229,22136,13,13,22128,22133,24690,80401,85329,85337,24687,24697,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31251,31251,174677,39153,174811,174776,174719,0,174791,174790,174805,174823,90916,0,10535,174729,174776,174735,174735,0,3942,9684,174737,174763,3984,3984,31117,31138,174774,174716,174798,1573,1573,1573,1573,1431,0,1431,58,58,31216,31227,31255,5531,5534,31215,31196,31251,22114,22129,31220,31215,31254,2658,2658,31246,31223,31256,3984,3984,31215,31214,31250,546,546,31225,31220,31253,279,279,31217,31236,31242,31238,31255,31239,31249,31251,31245,31240,31237,31221,31236,31237,31240,31248,174798,0,0,0,0,0,31140,174792,31145,1431,1431,1572,1572,174794,174787,174786,29719,31234,31243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31257,31249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31246,31247,34508,34496,34509,3258,3257,3258,3253,31236,31254,31229,1917,31248,31197,31257,31234,31251,31229,34501,34486,34506,34477,34514,31245,31249,34513,0,0,0,0,0,34512,1693,32816,34514,1693,1693,32819,32821,0,32816,32818,32822,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34512,34495,34507,32818,32817,32820,32822,32822,32820,32819,34516,34496,34464,34500,34507,34507,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,97,97,97,0,97,0,97,0,0,1,1,97,97,97,97,97,97,97,97],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Method" 617286486 483 [97,95,0,0,0,95,95,95,192,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1976,1976,1821,1821,1976,342,388,388,388,388,46,56,56,2978,2978,1902,1902,2978,302,332,332,388,388,676,674,677,537,536,140,140,677,675,675,675,676,677,677,677,677,5449,5460,2301,2310,5465,535,534,535,537,535,537,535,531,536,537,536,534,96,97,438,440,379,378,375,438,438,440,536,537,537,6615,6617,2928,2929,6641,686,686,686,688,687,687,687,688,688,97,97,588,590,488,488,487,590,591,591,688,687,687,97,97,97,97,97,0,0,97,0,0,1030,97,97,0,97,97,97,97,97,97,97,97,97,97,97,53,97,97,97,44,97,97,97,97,97,192,192,192,192,97,97,95,95,192,192,192,192,192,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32008,31985,32027,32033,1685,1685,30321,30311,30304,30330,30341,18514,18509,18511,30318,30325,30342,32033,31969,32023,0,0,0,0,0,0,0,1,1,1279,1280,1280,1280,194,194,194,191,192,192,192,191,194,194,194,2,194,194,194,194,1474,97,97,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,53,53,53,97,97,97,97,0,97,97,97,97,97,97,97,97,97,97],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.MlBackend.Client" 2075840839 78 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.MlBackend.FixedCache" 4148176799 30 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.MlBackend.ServerInstance" 4138587522 199 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps" 2101076063 26 [0,12779,299,12455,12777,299,0,12429,133,12332,12455,133,0,12310,6,12324,12329,6,0,12308,59,12264,12320,59,12269,12777],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.Allocation" 2399169351 127 [0,0,0,0,0,0,0,0,0,0,0,23,23,23,91,91,91,187,143,187,187,321,195,321,321,0,31,31,91,91,91,91,91,91,91,91,91,91,91,91,40,40,40,40,40,40,13,13,13,13,91,91,91,91,91,31,31,0,0,0,0,91,91,133,113,113,113,133,133,133,91,91,91,91,91,91,0,0,0,0,13,13,13,13,13,13,91,91,91,91,60,31,91,60,31,31,18,13,31,18,18,13,13,13,0,0,0,0,0,0,13,13,0,13,13,13,13,0,13,13,0,13,0,13,13,13,91],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.Bind" 2628846512 381 [1616,1691,95,1596,1691,627,671,211,460,671,9698,12100,6840,5229,12098,110093,110060,110075,110063,110054,110065,110072,110058,110056,51791,51830,51826,51806,51805,110062,110061,110057,46057,51833,51800,51808,51815,0,51810,51801,51801,51826,184,189,189,18193,18234,18205,18176,18216,18195,18219,18194,18237,28476,190,187,190,190,28477,51811,51811,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,5994,5995,5998,77859,77881,77908,51822,51818,51772,51768,51828,51791,51795,51779,51821,51829,29151,51794,44426,51829,51782,51824,51777,51794,51810,51805,51795,51805,51641,51830,28478,28459,28463,28439,2411,51831,51797,51811,51829,189,189,186,189,51790,51810,51832,51826,51781,51797,51799,51781,51784,51817,52061,52029,52071,51776,51777,51817,51804,51798,51777,51831,51783,51814,51814,36554,36555,36531,36541,36533,36525,36513,36535,36521,36521,51835,51786,51807,51780,51779,51802,51765,15248,36531,51808,15252,36522,36547,36526,51822,51816,51826,36517,36548,51823,51786,51765,51802,51776,51815,15262,15235,36509,36545,36521,0,36549,36550,36527,36538,36552,36533,36519,0,51819,51825,52051,51661,51626,51624,51635,51644,51655,51654,25815,25810,25808,25839,25834,49100,49093,49116,49109,49113,25838,25828,25826,25834,25841,25841,0,0,0,0,0,25836,25825,25822,25817,25817,25838,25810,25827,25833,25825,25819,25819,25836,25818,25835,25817,25828,25832,0,0,0,0,0,0,0,0,0,0,0,25842,25838,25833,25807,25839,25836,25833,25831,25830,25830,25833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25827,77884,25823,25836,2254,25826,25838,25829,25820,25834,25824,25843,25835,25830,25821,25825,25827,25835,25828,25837,25841,247,51828,51793,7380,51832,51780,51823,51757,24981,51757,51760,51822,51832,51771,51794,51782,0,0,51800,51799,51797,51740,51825,51790,51789,51758,51819,51776,51825,51775,51777,51762,51794,51789,51810,51801,77921],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.BreakLoop" 1381952408 11 [0,2153,2156,2156,4454,4454,4455,4454,4454,4453,4455],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.ConstantFolding" 1628401336 11 [0,152,152,152,304,304,304,303,303,303,303],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.Dataflow" 1664650939 110 [80376,80379,0,0,0,0,0,0,0,0,19981,19969,19969,3856,19970,19993,20001,80400,80342,80404,80382,80367,80356,80355,80407,80411,80366,80290,80288,80411,422178,422033,422023,422052,422036,422049,422029,422104,80388,80403,80400,80361,80330,80329,80400,80372,80366,80381,80381,80408,80380,80379,80376,80344,80405,80368,80408,80373,80377,80355,80355,3260465,3260241,3260195,2323244,3260527,3260526,3260390,80405,80351,80372,80372,85275,85317,85307,85312,80407,80363,80362,80360,80407,80385,80384,80358,80374,80336,80380,80379,80404,80378,80363,80365,80379,14627,80398,80337,725,80335,80360,80346,80320,80412,80409,80355,80363,80366,80412,80380,80393,80406],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.OptimizeAccum" 1431813656 11 [0,298,298,298,1108,1108,1108,1108,1108,1108,1108],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Steps.ResolveDeadlock" 3351715338 87 [10535,0,0,10535,0,10535,10487,10535,0,10535,10534,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535,0,0,0,0,0,0,10535,2528,2528,2528,10537,10537,10537,10535,10535,10535,10535,10535,10535,10534,10535,10535,10535,10535,10535,10534,10535,10535,10535,10535,10535,10535,10535,10535,10535,10534,10535,10535,10535,10535,10535,0,10535,10535,0,0,10535,10534,10535,10535,10535,10535,10535,10535,10535,10535,10535,10535],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Synthesis.Types" 54167871 170 [49969,240139,290174,483580,483543,483639,483674,483670,483537,483641,483652,483635,483590,483692,483642,483676,483679,483681,483479,483737,483787,0,483751,483726,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1704,1704,31240,31246,31204,31249,31186,31252,31238,31244,31201,31244,31233,31243,31201,31242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,131,516199,516308,0,0,1841,1841,1996,1996,0,0,0,483661,0,0,483651,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.UIBackend.Types" 699800829 18 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.UIBackend.ViewHelper" 2225108542 529 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.UIBackend.ViewHelperCls" 1998341663 0 [],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Utils" 2658210490 327 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212417,212420,212420,12610,12607,12607,12604,12605,12608,12609,12609,12610,12607,12607,12607,12608,12606,12605,12605,12605,12610,12606,12606,5337,5337,5330,5334,5329,5335,5334,5335,5336,5336,557186,557183,41700,249849,307351,557187,466837,466834,466827,466841,466840,483728,483740,166388,166382,317361,483744,1834,1869,1834,1869,1869,1869,1869,1869,1869,1595,1653,1653,1653,1653,1653,1653,1653,1790431,1790438,5017,184661,1605778,1790455,34,65,34,65,65,65,65,65,65,1699762,1699767,1699786,1699787,1699785,28276,28540,28540,28540,28540,28540,20894,20894,7646,0,0,0,0,0,0,0,0,0,0,0,28540,28540,398,195,398,398,8,398,398,398,398,3408,43728,43726,43728,43728,43727,43728,43728,43728,47136,3408,2192,3408,3408,3408,0,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,1264,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,0,3408,3408,0,0,0,0,0,0,0,0,3408,3408,3408,4325,170584,174910,4325,4325,4325,170585,174910,3408,3408,3408,176,186,209,269,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,3408,1174,1174,1174,1174,1174,1174,2546,32577,1174,1174,1174,1174,1174,1174,8781,8781,8781,8781,8781,8781,8781,8781,9955,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,4,1170,1174,4,1170,1170,1170,1170,1170,1170,1170,1174,1174,8781,8781,8781,8781,1174,1174,1174,1174,1174,1174,13004,33080,46084,15354,15359,15349,15367,15369,1,1,1,1,1],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Utils.Base" 420336657 67 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2001250,2001472,2001038,2001132,2001338,2001333,47687,47687,47688,47687,47687,216,216,216,216,216,1013,1013,1012,1013,1013,10840,10840,10841,10840,10841,141591,141630,141614,141628,141613,18889,30879,30879,4963,4965,4965,4967,4969,797,3113,3113,1,1,1,1,1404450,1219213,1404133,1404604,1404712,1404772],TixModule "nitta-0.0.0.1-Bv1VcjPxpSzB9i0NGusGVn/NITTA.Utils.ProcessDescription" 647525383 276 [208155,208150,208150,905720,905703,905708,905698,905708,905706,905719,1261814,27894,27894,27892,27892,27893,27893,1,29175,29184,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1897097,1897067,1896861,101036,96957,42987,42987,142331,101035,101036,101036,1896903,1897059,1896855,1897058,1897058,1437731,1437672,1437486,85530,85532,69866,1432128,1432141,1432133,1437553,1437664,1437647,45440,1390346,1437635,1437639,1437628,3530,563423,1230412,3530,1230451,1230468,1230447,1230455,1230376,1230398,1230437,1230458,1230412,1230481,0,0,1230479,1230458,0,0,1230455,1230422,1230476,66336,201663,201696,201702,201705,207293,207293,34776,29180,29180,29179,29179,34804,29186,1575,1575,1575,1575,29186,34798,34799,34799,2285,2284,2284,2284,2284,2285,2285,202,202,202,202,2285,2282,2284,2284,25,25,25,25,25,25,6,25,25,25,25,21642,21634,21645,21644,21635,21635,15295,15295,15294,15285,11215,15284,15293,1170,15285,15285,15284,15285,15285,15284,15285,15285,15285,15285,15295,0,15291,15289,15289,12954,12944,12954,12954,12951,12949,12949,5264,5266,261,5266,5265,5266,59144,59114,59143,59149,59124,59141,59107,59106,59113,4671,59119,59105,59152,1302,1295,1301,1299,1299,1299,82046,82016,81980,76169,81988,82017,81976,82016,82015,82050,82026,82043,31845,0,31845,82043,81998,82050,76210,76154,76166,76178,82043,61208,82019,82041,82042,438,438,28,437,438,438,0,0,130661,130616,0,0,130684,130593,12780,130659,130684,130677,130678,0,79074,79045,79068,79101,79102,51576,0,51567,51570,51565,51578,51579,58199,58188,58164,58139,58192,58194,162133,162148,0,0,1,1,1,1]] \ No newline at end of file