annotate common/InterfaceTypes.bsv @ 75:a15cc186e07d
pygar svn.76
[svn r76] should be fully parameterized for however many cores we want (not fully tested)
author |
punk |
date |
Wed, 12 May 2010 03:14:53 -0400 |
parents |
91a1f76ddd62 |
children |
|
rev |
line source |
punk@1
|
1 import Trace::*;
|
punk@1
|
2
|
punk@1
|
3 `define MAX_VOICES 4
|
punk@1
|
4 `define MAX_CORES 16
|
punk@1
|
5 `define MAX_PATH_LENGTH 8
|
punk@1
|
6
|
punk@1
|
7 // The path is hardwired and so should never be stored in a register. Therefore int type rather than Bit type
|
punk@1
|
8
|
punk@1
|
9 typedef Bit#(32) MemAddr;
|
punk@1
|
10 typedef Int#(TLog#(MAX_CORES+2)) PathId;
|
punk@1
|
11
|
punk@1
|
12 //The mixer is identified as PathId 0, path end is max
|
punk@1
|
13 PathId mixerId = 0;
|
punk@1
|
14 PathId endId = MAX_CORES+1;
|
punk@1
|
15
|
punk@1
|
16 // Path is array of path ids
|
punk@1
|
17 typedef Vector#(MAX_PATH_LENGTH, PathId) CorePath;
|
punk@1
|
18 typedef struct
|
punk@1
|
19 {
|
punk@1
|
20 MemAddr startAddr;
|
punk@1
|
21 CorePath route;
|
punk@1
|
22 } FullPath deriving(Eq, Bits);
|
punk@1
|
23
|
punk@1
|
24 Vector#(MAX_VOICES, FullPath) routeTable;
|
punk@1
|
25 routeTable[0] = {startAddr: 12, route: {1, 2, 3, 0, endId, endId, endId, endId}}
|
punk@1
|
26
|
punk@1
|
27
|
punk@1
|
28
|