small changes to the dtlb arbiter
This commit is contained in:
parent
69260756bd
commit
766a039ffe
@ -41,17 +41,22 @@ class rocketProc(resetSignal: Bool = null) extends Component(resetSignal)
|
|||||||
val dtlbchosen = Reg(resetVal=Bits(DTLB_CPU,log2up(3)))
|
val dtlbchosen = Reg(resetVal=Bits(DTLB_CPU,log2up(3)))
|
||||||
when( dtlb.io.cpu_req.ready && dtlbarb.io.out.valid ) { dtlbchosen := dtlbarb.io.chosen }
|
when( dtlb.io.cpu_req.ready && dtlbarb.io.out.valid ) { dtlbchosen := dtlbarb.io.chosen }
|
||||||
|
|
||||||
|
// tlb respones come out a cycle later
|
||||||
val chosen_vec = dtlbchosen === Bits(DTLB_VEC)
|
val chosen_vec = dtlbchosen === Bits(DTLB_VEC)
|
||||||
val chosen_pf = dtlbchosen === Bits(DTLB_VPF)
|
val chosen_pf = dtlbchosen === Bits(DTLB_VPF)
|
||||||
val chosen_cpu = dtlbchosen === Bits(DTLB_CPU)
|
val chosen_cpu = dtlbchosen === Bits(DTLB_CPU)
|
||||||
|
|
||||||
// vector prefetch doesn't care about exceptions
|
dtlbarb.io.in(DTLB_VEC) <> vu.io.vec_tlb_req
|
||||||
// and shouldn't cause any anyways
|
|
||||||
vu.io.vec_tlb_resp.xcpt_ld := chosen_vec && dtlb.io.cpu_resp.xcpt_ld
|
vu.io.vec_tlb_resp.xcpt_ld := chosen_vec && dtlb.io.cpu_resp.xcpt_ld
|
||||||
vu.io.vec_tlb_resp.xcpt_st := chosen_vec && dtlb.io.cpu_resp.xcpt_st
|
vu.io.vec_tlb_resp.xcpt_st := chosen_vec && dtlb.io.cpu_resp.xcpt_st
|
||||||
vu.io.vec_tlb_resp.miss := chosen_vec && dtlb.io.cpu_resp.miss
|
vu.io.vec_tlb_resp.miss := chosen_vec && dtlb.io.cpu_resp.miss
|
||||||
vu.io.vec_tlb_resp.ppn := dtlb.io.cpu_resp.ppn
|
vu.io.vec_tlb_resp.ppn := dtlb.io.cpu_resp.ppn
|
||||||
|
|
||||||
|
// vector prefetch doesn't care about exceptions
|
||||||
|
// and shouldn't cause any anyways
|
||||||
|
dtlbarb.io.in(DTLB_VPF) <> vu.io.vec_pftlb_req
|
||||||
|
|
||||||
vu.io.vec_pftlb_resp.xcpt_ld := Bool(false)
|
vu.io.vec_pftlb_resp.xcpt_ld := Bool(false)
|
||||||
vu.io.vec_pftlb_resp.xcpt_st := Bool(false)
|
vu.io.vec_pftlb_resp.xcpt_st := Bool(false)
|
||||||
vu.io.vec_pftlb_resp.miss := chosen_pf && dtlb.io.cpu_resp.miss
|
vu.io.vec_pftlb_resp.miss := chosen_pf && dtlb.io.cpu_resp.miss
|
||||||
@ -69,10 +74,6 @@ class rocketProc(resetSignal: Bool = null) extends Component(resetSignal)
|
|||||||
ctrl.io.xcpt_dtlb_st := chosen_cpu && dtlb.io.cpu_resp.xcpt_st
|
ctrl.io.xcpt_dtlb_st := chosen_cpu && dtlb.io.cpu_resp.xcpt_st
|
||||||
ctrl.io.dtlb_miss := chosen_cpu && dtlb.io.cpu_resp.miss
|
ctrl.io.dtlb_miss := chosen_cpu && dtlb.io.cpu_resp.miss
|
||||||
|
|
||||||
dtlbarb.io.in(DTLB_VEC) <> vu.io.vec_tlb_req
|
|
||||||
dtlbarb.io.in(DTLB_VPF) <> vu.io.vec_pftlb_req
|
|
||||||
|
|
||||||
|
|
||||||
dtlb.io.cpu_req <> dtlbarb.io.out
|
dtlb.io.cpu_req <> dtlbarb.io.out
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user