2012-02-14 11:53:43 +01:00
|
|
|
package Top
|
2011-10-26 08:02:47 +02:00
|
|
|
|
|
|
|
import Chisel._
|
|
|
|
import Node._;
|
|
|
|
import Constants._;
|
|
|
|
|
|
|
|
class ioTop extends Bundle {
|
|
|
|
val debug = new ioDebug();
|
|
|
|
val console = new ioConsole();
|
|
|
|
val host = new ioHost();
|
|
|
|
val mem = new ioMem();
|
|
|
|
}
|
|
|
|
|
|
|
|
class Top() extends Component {
|
|
|
|
val io = new ioTop();
|
|
|
|
|
|
|
|
val cpu = new rocketProc();
|
2012-01-25 01:51:30 +01:00
|
|
|
val icache = new rocketICache(128, 2); // 128 sets x 2 ways
|
2011-10-26 08:02:47 +02:00
|
|
|
val icache_pf = new rocketIPrefetcher();
|
2012-02-15 08:34:57 +01:00
|
|
|
val vicache = new rocketICache(128, 2); // 128 sets x 2 ways
|
2012-02-13 05:32:06 +01:00
|
|
|
val dcache = new HellaCache();
|
2011-10-26 08:02:47 +02:00
|
|
|
val arbiter = new rocketMemArbiter();
|
|
|
|
|
2012-01-23 18:51:35 +01:00
|
|
|
arbiter.io.mem <> io.mem;
|
2011-10-26 08:02:47 +02:00
|
|
|
arbiter.io.dcache <> dcache.io.mem;
|
|
|
|
arbiter.io.icache <> icache_pf.io.mem;
|
2012-02-15 08:34:57 +01:00
|
|
|
arbiter.io.vicache <> vicache.io.mem
|
2011-10-26 08:02:47 +02:00
|
|
|
|
2012-01-23 18:51:35 +01:00
|
|
|
cpu.io.host <> io.host;
|
|
|
|
cpu.io.debug <> io.debug;
|
|
|
|
cpu.io.console <> io.console;
|
2011-10-26 08:02:47 +02:00
|
|
|
|
|
|
|
icache.io.mem <> icache_pf.io.icache;
|
|
|
|
cpu.io.imem <> icache.io.cpu;
|
2012-02-15 08:34:57 +01:00
|
|
|
cpu.io.vimem <> vicache.io.cpu;
|
2011-10-26 08:02:47 +02:00
|
|
|
cpu.io.dmem <> dcache.io.cpu;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
object top_main {
|
|
|
|
def main(args: Array[String]) = {
|
2012-02-14 11:53:43 +01:00
|
|
|
chiselMain(args, () => new Top());
|
2011-10-26 08:02:47 +02:00
|
|
|
}
|
|
|
|
}
|