More broadcast hub bugfixes
This commit is contained in:
		@@ -276,17 +276,17 @@ class XactTracker(id: Int) extends Component with FourStateCoherence {
 | 
			
		||||
    when(req_data.ready && req_data.valid) {
 | 
			
		||||
      pop_data := UFix(1) << tile_id 
 | 
			
		||||
      mem_cnt  := mem_cnt_next
 | 
			
		||||
    }
 | 
			
		||||
      when(mem_cnt_next === UFix(0)) {
 | 
			
		||||
        pop_dep := UFix(1) << tile_id
 | 
			
		||||
        trigger := Bool(false)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  def doMemReqRead(req_cmd: ioDecoupled[MemReqCmd], trigger: Bool) {
 | 
			
		||||
    req_cmd.valid := Bool(true)
 | 
			
		||||
    req_cmd.bits.rw := Bool(false)
 | 
			
		||||
    when(req_cmd.ready ) {
 | 
			
		||||
    when(req_cmd.ready) {
 | 
			
		||||
      trigger := Bool(false)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -535,10 +535,11 @@ class CoherenceHubBroadcast extends CoherenceHub  with FourStateCoherence{
 | 
			
		||||
      rep.bits.t_type := getTransactionReplyType(t_type_arr(ack_idx), sh_count_arr(ack_idx))
 | 
			
		||||
      rep.bits.tile_xact_id := tile_xact_id_arr(ack_idx)
 | 
			
		||||
      rep.bits.global_xact_id := ack_idx
 | 
			
		||||
      rep.valid := (UFix(j) === init_tile_id_arr(ack_idx)) && send_x_rep_ack_arr.toBits.orR
 | 
			
		||||
      val do_send_ack = (UFix(j) === init_tile_id_arr(ack_idx)) && send_x_rep_ack_arr.toBits.orR
 | 
			
		||||
      rep.valid := do_send_ack
 | 
			
		||||
      sent_x_rep_ack_arr(ack_idx) := do_send_ack
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  sent_x_rep_ack_arr(ack_idx) := !io.mem.resp.valid
 | 
			
		||||
  // If there were a ready signal due to e.g. intervening network use:
 | 
			
		||||
  //io.mem.resp.ready  := io.tiles(init_tile_id_arr.read(mem_idx)).xact_rep.ready
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user