make sure merged voluntary releases are handled properly
This commit is contained in:
		@@ -247,16 +247,16 @@ trait AcceptsVoluntaryReleases extends HasVoluntaryReleaseMetadataBuffer {
 | 
				
			|||||||
        xact_vol_ir_r_type := io.irel().r_type
 | 
					        xact_vol_ir_r_type := io.irel().r_type
 | 
				
			||||||
        xact_vol_ir_src := io.irel().client_id
 | 
					        xact_vol_ir_src := io.irel().client_id
 | 
				
			||||||
        xact_vol_ir_client_xact_id := io.irel().client_xact_id
 | 
					        xact_vol_ir_client_xact_id := io.irel().client_xact_id
 | 
				
			||||||
 | 
					        // If this release has data, set all the pending bits except the first.
 | 
				
			||||||
 | 
					        // Otherwise, clear all the pending bits
 | 
				
			||||||
        pending_irel_data := Mux(io.irel().hasMultibeatData(),
 | 
					        pending_irel_data := Mux(io.irel().hasMultibeatData(),
 | 
				
			||||||
                               dropPendingBitWhenBeatHasData(io.inner.release),
 | 
					                               dropPendingBitWhenBeatHasData(io.inner.release),
 | 
				
			||||||
                               UInt(0))
 | 
					                               UInt(0))
 | 
				
			||||||
 | 
					      } .elsewhen (irel_same_xact) {
 | 
				
			||||||
 | 
					        pending_irel_data := (pending_irel_data & dropPendingBitWhenBeatHasData(io.inner.release))
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    when (irel_is_merging) {
 | 
					 | 
				
			||||||
      pending_irel_data := (pending_irel_data & dropPendingBitWhenBeatHasData(io.inner.release))
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    io.inner.grant.valid := Vec(s_wb_req, s_wb_resp, s_inner_probe, s_busy).contains(state) &&
 | 
					    io.inner.grant.valid := Vec(s_wb_req, s_wb_resp, s_inner_probe, s_busy).contains(state) &&
 | 
				
			||||||
                              vol_ignt_counter.pending &&
 | 
					                              vol_ignt_counter.pending &&
 | 
				
			||||||
                              !(pending_irel_data.orR || block_vol_ignt)
 | 
					                              !(pending_irel_data.orR || block_vol_ignt)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user