Revert "For D$, use source 0 through N-1 for MMIO, not 1 through N"
This reverts commit 0538dc77ce.
			
			
This commit is contained in:
		@@ -87,8 +87,9 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
 | 
				
			|||||||
  io.cpu.req.ready := (release_state === s_ready) && !cached_grant_wait && !s1_nack
 | 
					  io.cpu.req.ready := (release_state === s_ready) && !cached_grant_wait && !s1_nack
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // I/O MSHRs
 | 
					  // I/O MSHRs
 | 
				
			||||||
  val uncachedInFlight = Seq.fill(cacheParams.nMMIOs) { RegInit(Bool(false)) }
 | 
					  val mmioOffset = if (outer.scratch().isDefined) 0 else 1
 | 
				
			||||||
  val uncachedReqs = Seq.fill(cacheParams.nMMIOs) { Reg(new HellaCacheReq) }
 | 
					  val uncachedInFlight = Seq.fill(maxUncachedInFlight) { RegInit(Bool(false)) }
 | 
				
			||||||
 | 
					  val uncachedReqs = Seq.fill(maxUncachedInFlight) { Reg(new HellaCacheReq) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // hit initiation path
 | 
					  // hit initiation path
 | 
				
			||||||
  dataArb.io.in(3).valid := io.cpu.req.valid && isRead(io.cpu.req.bits.cmd)
 | 
					  dataArb.io.in(3).valid := io.cpu.req.valid && isRead(io.cpu.req.bits.cmd)
 | 
				
			||||||
@@ -251,13 +252,13 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
 | 
				
			|||||||
  metaWriteArb.io.in(0).bits.data.tag := s2_req.addr(paddrBits-1, untagBits)
 | 
					  metaWriteArb.io.in(0).bits.data.tag := s2_req.addr(paddrBits-1, untagBits)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Prepare a TileLink request message that initiates a transaction
 | 
					  // Prepare a TileLink request message that initiates a transaction
 | 
				
			||||||
  val a_source = PriorityEncoder(~uncachedInFlight.asUInt) // skip the MSHR
 | 
					  val a_source = PriorityEncoder(~uncachedInFlight.asUInt << mmioOffset) // skip the MSHR
 | 
				
			||||||
  val acquire_address = s2_req_block_addr
 | 
					  val acquire_address = s2_req_block_addr
 | 
				
			||||||
  val access_address = s2_req.addr
 | 
					  val access_address = s2_req.addr
 | 
				
			||||||
  val a_size = s2_req.typ(MT_SZ-2, 0)
 | 
					  val a_size = s2_req.typ(MT_SZ-2, 0)
 | 
				
			||||||
  val a_data = Fill(beatWords, pstore1_storegen.data)
 | 
					  val a_data = Fill(beatWords, pstore1_storegen.data)
 | 
				
			||||||
  val acquire = if (edge.manager.anySupportAcquireB) {
 | 
					  val acquire = if (edge.manager.anySupportAcquireB) {
 | 
				
			||||||
    edge.Acquire(UInt(cacheParams.nMMIOs), acquire_address, lgCacheBlockBytes, s2_grow_param)._2 // Cacheability checked by tlb
 | 
					    edge.Acquire(UInt(0), acquire_address, lgCacheBlockBytes, s2_grow_param)._2 // Cacheability checked by tlb
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    Wire(new TLBundleA(edge.bundle))
 | 
					    Wire(new TLBundleA(edge.bundle))
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -285,7 +286,7 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
 | 
				
			|||||||
  tl_out.a.bits := Mux(!s2_uncached, acquire, Mux(!s2_write, get, Mux(!pstore1_amo, put, atomics)))
 | 
					  tl_out.a.bits := Mux(!s2_uncached, acquire, Mux(!s2_write, get, Mux(!pstore1_amo, put, atomics)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Set pending bits for outstanding TileLink transaction
 | 
					  // Set pending bits for outstanding TileLink transaction
 | 
				
			||||||
  val a_sel = UIntToOH(a_source, cacheParams.nMMIOs)
 | 
					  val a_sel = UIntToOH(a_source, maxUncachedInFlight+mmioOffset) >> mmioOffset
 | 
				
			||||||
  when (tl_out.a.fire()) {
 | 
					  when (tl_out.a.fire()) {
 | 
				
			||||||
    when (s2_uncached) {
 | 
					    when (s2_uncached) {
 | 
				
			||||||
      (a_sel.toBools zip (uncachedInFlight zip uncachedReqs)) foreach { case (s, (f, r)) =>
 | 
					      (a_sel.toBools zip (uncachedInFlight zip uncachedReqs)) foreach { case (s, (f, r)) =>
 | 
				
			||||||
@@ -312,7 +313,7 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
 | 
				
			|||||||
      assert(cached_grant_wait, "A GrantData was unexpected by the dcache.")
 | 
					      assert(cached_grant_wait, "A GrantData was unexpected by the dcache.")
 | 
				
			||||||
      when(d_last) { cached_grant_wait := false }
 | 
					      when(d_last) { cached_grant_wait := false }
 | 
				
			||||||
    } .elsewhen (grantIsUncached) {
 | 
					    } .elsewhen (grantIsUncached) {
 | 
				
			||||||
      val d_sel = UIntToOH(tl_out.d.bits.source, cacheParams.nMMIOs)
 | 
					      val d_sel = UIntToOH(tl_out.d.bits.source, maxUncachedInFlight+mmioOffset) >> mmioOffset
 | 
				
			||||||
      val req = Mux1H(d_sel, uncachedReqs)
 | 
					      val req = Mux1H(d_sel, uncachedReqs)
 | 
				
			||||||
      (d_sel.toBools zip uncachedInFlight) foreach { case (s, f) =>
 | 
					      (d_sel.toBools zip uncachedInFlight) foreach { case (s, f) =>
 | 
				
			||||||
        when (s && d_last) {
 | 
					        when (s && d_last) {
 | 
				
			||||||
@@ -390,7 +391,7 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  val voluntaryReleaseMessage = if (edge.manager.anySupportAcquireB) {
 | 
					  val voluntaryReleaseMessage = if (edge.manager.anySupportAcquireB) {
 | 
				
			||||||
                                edge.Release(
 | 
					                                edge.Release(
 | 
				
			||||||
                                  fromSource = UInt(cacheParams.nMMIOs - 1),
 | 
					                                  fromSource = UInt(maxUncachedInFlight - 1),
 | 
				
			||||||
                                  toAddress = probe_bits.address,
 | 
					                                  toAddress = probe_bits.address,
 | 
				
			||||||
                                  lgSize = lgCacheBlockBytes,
 | 
					                                  lgSize = lgCacheBlockBytes,
 | 
				
			||||||
                                  shrinkPermissions = s2_shrink_param,
 | 
					                                  shrinkPermissions = s2_shrink_param,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,6 +60,7 @@ trait HasL1HellaCacheParameters extends HasL1CacheParameters with HasCoreParamet
 | 
				
			|||||||
  def encRowBits = encDataBits*rowWords
 | 
					  def encRowBits = encDataBits*rowWords
 | 
				
			||||||
  def lrscCycles = 32 // ISA requires 16-insn LRSC sequences to succeed
 | 
					  def lrscCycles = 32 // ISA requires 16-insn LRSC sequences to succeed
 | 
				
			||||||
  def nIOMSHRs = cacheParams.nMMIOs
 | 
					  def nIOMSHRs = cacheParams.nMMIOs
 | 
				
			||||||
 | 
					  def maxUncachedInFlight = cacheParams.nMMIOs
 | 
				
			||||||
  def dataScratchpadSize = cacheParams.dataScratchpadBytes
 | 
					  def dataScratchpadSize = cacheParams.dataScratchpadBytes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  require(rowBits >= coreDataBits, s"rowBits($rowBits) < coreDataBits($coreDataBits)")
 | 
					  require(rowBits >= coreDataBits, s"rowBits($rowBits) < coreDataBits($coreDataBits)")
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user