never executed always true always false
1 {-# LANGUAGE GADTs #-}
2 {-# LANGUAGE NoMonomorphismRestriction #-}
3
4 {-# OPTIONS -fno-warn-orphans #-}
5
6 {- |
7 Module : NITTA.Synthesis.Steps.OptimizeLogicalUnit
8 Description :
9 Copyright : (c) Boris Novoselov, 2025
10 License : BSD3
11 Maintainer : borisnovoselov602@gmail.com
12 Stability : experimental
13 -}
14 module NITTA.Synthesis.Steps.OptimizeLogicalUnit (
15 OptimizeLogicalUnitMetrics (..),
16 ) where
17
18 import Data.Aeson (ToJSON)
19 import GHC.Generics
20 import NITTA.Model.Networks.Bus
21 import NITTA.Model.Problems.Refactor
22 import NITTA.Model.ProcessorUnits.Types
23 import NITTA.Model.TargetSystem
24 import NITTA.Model.Time
25 import NITTA.Synthesis.Types
26
27 newtype OptimizeLogicalUnitMetrics = OptimizeLogicalUnitMetrics {mergedFuncNumber :: Int}
28 deriving (Generic)
29
30 instance ToJSON OptimizeLogicalUnitMetrics
31
32 instance
33 (UnitTag tag, VarValTime v x t) =>
34 SynthesisDecisionCls
35 (SynthesisState (TargetSystem (BusNetwork tag v x t) tag v x t) tag v x t)
36 (TargetSystem (BusNetwork tag v x t) tag v x t)
37 (OptimizeLogicalUnit v x)
38 (OptimizeLogicalUnit v x)
39 OptimizeLogicalUnitMetrics
40 where
41 decisions SynthesisState{sTarget} o = [(o, optimizeLogicalUnitDecision sTarget o)]
42
43 parameters SynthesisState{} OptimizeLogicalUnit{} _ = OptimizeLogicalUnitMetrics 0
44
45 estimate _ctx _o _d OptimizeLogicalUnitMetrics{} = 6000