decommission Slave top-level module for fpga build
This commit is contained in:
		| @@ -1,86 +0,0 @@ | |||||||
| package rocketchip |  | ||||||
|  |  | ||||||
| import Chisel._ |  | ||||||
|  |  | ||||||
| abstract class AXISlave extends Module { |  | ||||||
|   val aw = 5 |  | ||||||
|   val dw = 32 |  | ||||||
|   val io = new Bundle { |  | ||||||
|     val in = Decoupled(Bits(width = dw)).flip |  | ||||||
|     val out = Decoupled(Bits(width = dw)) |  | ||||||
|     val addr = Bits(INPUT, aw) |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class Slave extends AXISlave |  | ||||||
| { |  | ||||||
|   val top = Module(new Top) |  | ||||||
|  |  | ||||||
|   val memw = top.io.mem.resp.bits.data.getWidth |  | ||||||
|   val htifw = top.io.host.in.bits.getWidth |  | ||||||
|    |  | ||||||
|   val n = 4 |  | ||||||
|   def wen(i: Int) = io.in.valid && io.addr(log2Up(n)-1,0) === UInt(i) |  | ||||||
|   def ren(i: Int) = io.out.ready && io.addr(log2Up(n)-1,0) === UInt(i) |  | ||||||
|   val rdata = Vec.fill(n){Bits(width = dw)} |  | ||||||
|   val rvalid = Vec.fill(n){Bool()} |  | ||||||
|   val wready = Vec.fill(n){Bool()} |  | ||||||
|  |  | ||||||
|   io.in.ready := wready(io.addr) |  | ||||||
|   io.out.valid := rvalid(io.addr) |  | ||||||
|   io.out.bits := rdata(io.addr) |  | ||||||
|  |  | ||||||
|   // write r0 -> htif.in (blocking) |  | ||||||
|   wready(0) := top.io.host.in.ready |  | ||||||
|   top.io.host.in.valid := wen(0) |  | ||||||
|   top.io.host.in.bits := io.in.bits |  | ||||||
|  |  | ||||||
|   // read cr0 -> htif.out (nonblocking) |  | ||||||
|   rdata(0) := Cat(top.io.host.out.bits, top.io.host.out.valid) |  | ||||||
|   rvalid(0) := Bool(true) |  | ||||||
|   top.io.host.out.ready := ren(0) |  | ||||||
|   require(dw >= htifw + 1) |  | ||||||
|  |  | ||||||
|   // read cr1 -> mem.req_cmd (nonblocking) |  | ||||||
|   // the memory system is FIFO from hereon out, so just remember the tags here |  | ||||||
|   val tagq = Module(new Queue(top.io.mem.req_cmd.bits.tag, 4)) |  | ||||||
|   tagq.io.enq.bits := top.io.mem.req_cmd.bits.tag |  | ||||||
|   tagq.io.enq.valid := ren(1) && top.io.mem.req_cmd.valid && !top.io.mem.req_cmd.bits.rw |  | ||||||
|   top.io.mem.req_cmd.ready := ren(1) |  | ||||||
|   rdata(1) := Cat(top.io.mem.req_cmd.bits.addr, top.io.mem.req_cmd.bits.rw, top.io.mem.req_cmd.valid && (tagq.io.enq.ready || top.io.mem.req_cmd.bits.rw)) |  | ||||||
|   rvalid(1) := Bool(true) |  | ||||||
|   require(dw >= top.io.mem.req_cmd.bits.addr.getWidth + 1 + 1) |  | ||||||
|  |  | ||||||
|   // write cr1 -> mem.resp (nonblocking) |  | ||||||
|   val in_count = Reg(init=UInt(0, log2Up(memw/dw))) |  | ||||||
|   val rf_count = Reg(init=UInt(0, log2Up(params(CacheBlockBytes)*8/memw))) |  | ||||||
|   require(memw % dw == 0 && isPow2(memw/dw)) |  | ||||||
|   val in_reg = Reg(top.io.mem.resp.bits.data) |  | ||||||
|   top.io.mem.resp.bits.data := Cat(io.in.bits, in_reg(in_reg.getWidth-1,dw)) |  | ||||||
|   top.io.mem.resp.bits.tag := tagq.io.deq.bits |  | ||||||
|   top.io.mem.resp.valid := wen(1) && in_count.andR |  | ||||||
|   tagq.io.deq.ready := top.io.mem.resp.fire() && rf_count.andR |  | ||||||
|   wready(1) := top.io.mem.resp.ready |  | ||||||
|   when (wen(1) && wready(1)) { |  | ||||||
|     in_count := in_count + UInt(1) |  | ||||||
|     in_reg := top.io.mem.resp.bits.data |  | ||||||
|   } |  | ||||||
|   when (top.io.mem.resp.fire()) { |  | ||||||
|     rf_count := rf_count + UInt(1) |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   // read cr2 -> mem.req_data (blocking) |  | ||||||
|   val out_count = Reg(init=UInt(0, log2Up(memw/dw))) |  | ||||||
|   top.io.mem.req_data.ready := ren(2) && out_count.andR |  | ||||||
|   rdata(2) := top.io.mem.req_data.bits.data >> (out_count * UInt(dw)) |  | ||||||
|   rvalid(2) := top.io.mem.req_data.valid |  | ||||||
|   when (ren(2) && rvalid(2)) { out_count := out_count + UInt(1) } |  | ||||||
|  |  | ||||||
|   // read cr3 -> debug signals (nonblocking) |  | ||||||
|   rdata(3) := Cat(top.io.mem.req_cmd.valid, tagq.io.enq.ready) |  | ||||||
|   rvalid(3) := Bool(true) |  | ||||||
|  |  | ||||||
|   // writes to cr2, cr3 ignored |  | ||||||
|   wready(2) := Bool(true) |  | ||||||
|   wready(3) := Bool(true) |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user