diff --git a/src/main/scala/xiangshan/cache/dtlb.scala b/src/main/scala/xiangshan/cache/dtlb.scala index 8b2fa13a710aafaa7bed16195cb653525089b8bd..52c0f2bb9e99c682116fc8a1e656e514d385ef05 100644 --- a/src/main/scala/xiangshan/cache/dtlb.scala +++ b/src/main/scala/xiangshan/cache/dtlb.scala @@ -117,7 +117,7 @@ class TlbEntry extends TlbBundle { class TlbEntires(num: Int, tagLen: Int) extends TlbBundle { require(log2Up(num)==log2Down(num)) /* vpn can be divide into three part */ - // vpn: tagPart + addrPart + // vpn: tagPart(17bit) + addrPart(8bit) + cutLenPart(2bit) val cutLen = log2Up(num) val tag = UInt(tagLen.W) // NOTE: high part of vpn @@ -127,9 +127,10 @@ class TlbEntires(num: Int, tagLen: Int) extends TlbBundle { val vs = Vec(num, Bool()) def tagClip(vpn: UInt, level: UInt) = { // full vpn => tagLen - Mux(level===0.U, Cat(vpn(vpnLen-1, vpnnLen*2+cutLen), 0.U(vpnnLen*2+cutLen)), - Mux(level===1.U, Cat(vpn(vpnLen-1, vpnnLen*1+cutLen), 0.U(vpnnLen*1+cutLen)), - Cat(vpn(vpnLen-1, vpnnLen*0+cutLen), 0.U(vpnnLen*0+cutLen))))(tagLen-1, 0) + val tmp = Mux(level===0.U, Cat(vpn(vpnLen-1, vpnnLen*2+cutLen), 0.U(vpnnLen*2)), + Mux(level===1.U, Cat(vpn(vpnLen-1, vpnnLen*1+cutLen), 0.U(vpnnLen*1)), + Cat(vpn(vpnLen-1, vpnnLen*0+cutLen), 0.U(vpnnLen*0)))) + tmp(tmp.getWidth-1, tmp.getWidth-tagLen) } // NOTE: get insize idx @@ -527,4 +528,4 @@ object TLB { tlb.io.ptw } -} \ No newline at end of file +}