Don't emit writeback state machine logic for scratchpad (#1127)
Firrtl can't DCE it because it would require analyzing the state machine.
This commit is contained in:
		@@ -558,6 +558,7 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
 | 
			
		||||
  val newCoh = Wire(init = probeNewCoh)
 | 
			
		||||
  releaseWay := s2_probe_way
 | 
			
		||||
 | 
			
		||||
  if (!usingDataScratchpad) {
 | 
			
		||||
    when (s2_victimize && s2_victim_dirty) {
 | 
			
		||||
      assert(!(s2_valid && s2_hit_valid && !s2_data_error))
 | 
			
		||||
      release_state := s_voluntary_writeback
 | 
			
		||||
@@ -602,7 +603,6 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
 | 
			
		||||
      when (releaseDone) { release_state := s_probe_write_meta }
 | 
			
		||||
    }
 | 
			
		||||
    when (release_state.isOneOf(s_voluntary_writeback, s_voluntary_write_meta)) {
 | 
			
		||||
    if (edge.manager.anySupportAcquireT)
 | 
			
		||||
      tl_out_c.bits := edge.Release(fromSource = 0.U,
 | 
			
		||||
                                    toAddress = 0.U,
 | 
			
		||||
                                    lgSize = lgCacheBlockBytes,
 | 
			
		||||
@@ -621,6 +621,7 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
 | 
			
		||||
      when (tl_out_c.fire()) { accrued := next }
 | 
			
		||||
      next
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  dataArb.io.in(2).valid := inWriteback && releaseDataBeat < refillCycles
 | 
			
		||||
  dataArb.io.in(2).bits.write := false
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user