-
Notifications
You must be signed in to change notification settings - Fork 0
/
Top.bsv
45 lines (33 loc) · 1.18 KB
/
Top.bsv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// bsv libraries
import Vector::*;
import FIFO::*;
import Connectable::*;
// portz libraries
import Directory::*;
import CtrlMux::*;
import Portal::*;
import Leds::*;
import MemTypes::*;
import MemPortal::*;
// generated by tool
import SimpleIndicationProxy::*;
import SimpleRequestWrapper::*;
// defined by user
import Simple::*;
typedef enum {SimpleIndication, SimpleRequest} IfcNames deriving (Eq,Bits);
module mkPortalTop(StdPortalTop#(PhysAddrWidth));
// instantiate user portals
SimpleIndicationProxy simpleIndicationProxy <- mkSimpleIndicationProxy(SimpleIndication);
SimpleRequest simpleRequest <- mkSimpleRequest(simpleIndicationProxy.ifc);
SimpleRequestWrapper simpleRequestWrapper <- mkSimpleRequestWrapper(SimpleRequest,simpleRequest);
Vector#(2,StdPortal) portals;
portals[0] = simpleRequestWrapper.portalIfc;
portals[1] = simpleIndicationProxy.portalIfc;
// instantiate system directory
StdDirectory dir <- mkStdDirectory(portals);
let ctrl_mux <- mkSlaveMux(dir,portals);
interface interrupt = getInterruptVector(portals);
interface slave = ctrl_mux;
interface masters = nil;
interface leds = default_leds;
endmodule : mkPortalTop