1b2954a066a51eded20eee6a67bce47c0c7463f7
[barrelfish] / tools / sockeye / SockeyeASTInstantiator.hs
1 {-
2   SockeyeASTInstantiator.hs: AST with instantiated modules for Sockeye
3
4   Part of Sockeye
5
6   Copyright (c) 2017, ETH Zurich.
7
8   All rights reserved.
9
10   This file is distributed under the terms in the attached LICENSE file.
11   If you do not find this file, copies can be found by writing to:
12   ETH Zurich D-INFK, CAB F.78, Universitaetstr. 6, CH-8092 Zurich,
13   Attn: Systems Group.
14 -}
15
16 module SockeyeASTInstantiator
17     ( module SockeyeASTInstantiator
18     , module SockeyeAST
19     ) where
20
21 import Data.Map (Map)
22
23 import SockeyeAST
24     ( NodeType(Other, Memory, Device) )
25
26 data SockeyeSpec = SockeyeSpec
27     { root :: ModuleInst
28     , modules :: Map String Module
29     } deriving (Show)
30
31 data Module = Module
32     { inputPorts   :: Map String Integer
33     , outputPorts  :: Map String Integer
34     , nodeDecls    :: Map String NodeSpec
35     , moduleInsts  :: Map String ModuleInst
36     } deriving (Show)
37
38 data ModuleInst
39     = ModuleInst
40         { moduleName :: String
41         , inPortMap  :: Map String String
42         , outPortMap :: Map String String
43         } deriving (Show)
44
45 data NodeSpec = NodeSpec
46     { nodeType  :: NodeType
47     , accept    :: [BlockSpec]
48     , translate :: [MapSpec]
49     , reserved  :: [BlockSpec]
50     , overlay   :: Maybe OverlaySpec
51     } deriving (Show)
52
53 data BlockSpec 
54     = BlockSpec
55         { base  :: !Integer
56         , limit :: !Integer
57         } deriving (Show)
58
59 data MapSpec 
60     = MapSpec
61         { block    :: BlockSpec
62         , destNode :: !String
63         , destBase :: !Integer
64         } deriving (Show)
65
66 data OverlaySpec
67     = OverlaySpec
68         { over  :: !String
69         , width :: !Integer
70         } deriving (Show)
71