add zscale
only supports generating Verilog, which plugs into the fpga-spartan6 repository, for now
This commit is contained in:
		
							
								
								
									
										69
									
								
								src/main/scala/ZscaleChip.scala
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								src/main/scala/ZscaleChip.scala
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | ||||
| // See LICENSE for license details. | ||||
|  | ||||
| package rocketchip | ||||
|  | ||||
| import Chisel._ | ||||
| import uncore._ | ||||
| import rocket._ | ||||
| import zscale._ | ||||
|  | ||||
| class ZscaleSystem extends Module { | ||||
|   val io = new Bundle { | ||||
|     val host = new HTIFIO | ||||
|     val jtag = new HASTIMasterIO().flip | ||||
|     val bootmem = new HASTISlaveIO().flip | ||||
|     val dram = new HASTISlaveIO().flip | ||||
|     val spi = new HASTISlaveIO().flip | ||||
|     val led = new POCIIO | ||||
|     val corereset = new POCIIO | ||||
|   } | ||||
|  | ||||
|   val core = Module(new Zscale(io.host.reset), {case TLId => "L1ToL2"}) | ||||
|  | ||||
|   val bootmem_afn = (addr: UInt) => addr(31, 14) === UInt(0) | ||||
|  | ||||
|   val sbus_afn = (addr: UInt) => addr(31, 29).orR | ||||
|   val dram_afn = (addr: UInt) => addr(31, 26) === UInt(8) | ||||
|   val spi_afn = (addr: UInt) => addr(31, 26) === UInt(9) && addr(25, 14) === UInt(0) | ||||
|  | ||||
|   val pbus_afn = (addr: UInt) => addr(31) === UInt(1) | ||||
|   val led_afn = (addr: UInt) => addr(31) === UInt(1) && addr(30, 10) === UInt(0) | ||||
|   val corereset_afn = (addr: UInt) => addr(31) === UInt(1) && addr(30, 10) === UInt(1) | ||||
|  | ||||
|   val xbar = Module(new HASTIXbar(3, Seq(bootmem_afn, sbus_afn))) | ||||
|   val sadapter = Module(new HASTISlaveToMaster) | ||||
|   val sbus = Module(new HASTIBus(Seq(dram_afn, spi_afn, pbus_afn))) | ||||
|   val padapter = Module(new HASTItoPOCIBridge) | ||||
|   val pbus = Module(new POCIBus(Seq(led_afn, corereset_afn))) | ||||
|  | ||||
|   core.io.host <> io.host | ||||
|   xbar.io.masters(0) <> io.jtag | ||||
|   xbar.io.masters(1) <> core.io.dmem | ||||
|   xbar.io.masters(2) <> core.io.imem | ||||
|  | ||||
|   io.bootmem <> xbar.io.slaves(0) | ||||
|   sadapter.io.in <> xbar.io.slaves(1) | ||||
|  | ||||
|   sbus.io.master <> sadapter.io.out | ||||
|   io.dram <> sbus.io.slaves(0) | ||||
|   io.spi <> sbus.io.slaves(1) | ||||
|   padapter.io.in <> sbus.io.slaves(2) | ||||
|  | ||||
|   pbus.io.master <> padapter.io.out | ||||
|   io.led <> pbus.io.slaves(0) | ||||
|   io.corereset <> pbus.io.slaves(1) | ||||
| } | ||||
|  | ||||
| class ZscaleTop extends Module { | ||||
|   val io = new Bundle { | ||||
|     val host = new HTIFIO | ||||
|   } | ||||
|  | ||||
|   val sys = Module(new ZscaleSystem) | ||||
|   val bootmem = Module(new HASTISRAM(4096)) | ||||
|   val dram = Module(new HASTISRAM(4194304)) | ||||
|  | ||||
|   sys.io.host <> io.host | ||||
|   bootmem.io <> sys.io.bootmem | ||||
|   dram.io <> sys.io.dram | ||||
| } | ||||
		Reference in New Issue
	
	Block a user