Mercurial > pygar
annotate common/InterfaceTypes.bsv @ 44:9b0dfce52c29 pygar svn.45
[svn r45] adding mixer
author | punk |
---|---|
date | Wed, 05 May 2010 12:30:18 -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 |