1
0

add vec countq interface

This commit is contained in:
Yunsup Lee 2012-03-02 00:43:32 -08:00
parent 8678b3d70c
commit 1054cec087
6 changed files with 18 additions and 5 deletions

View File

@ -144,8 +144,9 @@ object Constants
val PCR_VECBANK = UFix(18, 5);
// temporaries for vector, these will go away
val PCR_VEC_TMP1 = UFix(30, 5)
val PCR_VEC_TMP2 = UFix(31, 5)
val PCR_VEC_CNT = UFix(29, 5)
val PCR_VEC_EADDR = UFix(30, 5)
val PCR_VEC_XCPT = UFix(31, 5)
// definition of bits in PCR status reg
val SR_ET = 0; // enable traps

View File

@ -169,6 +169,7 @@ class rocketProc(resetSignal: Bool = null) extends Component(resetSignal)
vu.io.vec_ximm1q.bits := dpath.io.vec_iface.vximm1q_bits
vu.io.vec_ximm2q.valid := ctrl.io.vec_iface.vximm2q_valid
vu.io.vec_ximm2q.bits := dpath.io.vec_iface.vximm2q_bits
vu.io.vec_cntq <> dpath.io.vec_iface.vcntq
// prefetch queues
vu.io.vec_pfcmdq.valid := ctrl.io.vec_iface.vpfcmdq_valid

View File

@ -10,6 +10,7 @@ class ioCtrlDpathVec extends Bundle
val valid = Bool(INPUT)
val inst = Bits(32, INPUT)
val appvl0 = Bool(INPUT)
val replay_cntq = Bool(INPUT)
val wen = Bool(OUTPUT)
val fn = Bits(1, OUTPUT)
val sel_vcmd = Bits(3, OUTPUT)
@ -160,7 +161,8 @@ class rocketCtrlVec extends Component
wb_vec_ximm2q_enq && !io.iface.vximm2q_ready ||
wb_vec_pfcmdq_enq && !io.iface.vpfcmdq_ready ||
wb_vec_pfximm1q_enq && !io.iface.vpfximm1q_ready ||
wb_vec_pfximm2q_enq && !io.iface.vpfximm2q_ready
wb_vec_pfximm2q_enq && !io.iface.vpfximm2q_ready ||
io.dpath.replay_cntq
)
val reg_cpfence = Reg(resetVal = Bool(false))

View File

@ -385,6 +385,9 @@ class rocketDpath extends Component
vec.io.rs2 := wb_reg_rs2
vec.io.vec_eaddr := pcr.io.vec_eaddr
vec.io.vec_exception := pcr.io.vec_exception
vec.io.pcr_wport.addr := wb_reg_raddr2
vec.io.pcr_wport.en := io.ctrl.wen_pcr
vec.io.pcr_wport.data := wb_reg_wdata
wb_wdata :=
Mux(vec.io.wen, Cat(Bits(0,52), vec.io.appvl),

View File

@ -211,8 +211,8 @@ class rocketDpathPCR extends Component
when (waddr === PCR_K1) { reg_k1 := wdata; }
when (waddr === PCR_PTBR) { reg_ptbr := Cat(wdata(PADDR_BITS-1, PGIDX_BITS), Bits(0, PGIDX_BITS)).toUFix; }
when (waddr === PCR_VECBANK) { reg_vecbank := wdata(7,0) }
when (waddr === PCR_VEC_TMP1) { reg_vec_eaddr := wdata(VADDR_BITS,0) }
when (waddr === PCR_VEC_TMP2) { reg_vec_exception:= wdata(0) }
when (waddr === PCR_VEC_EADDR) { reg_vec_eaddr := wdata(VADDR_BITS,0) }
when (waddr === PCR_VEC_XCPT) { reg_vec_exception:= wdata(0) }
}
rdata := Bits(0, 64)

View File

@ -11,6 +11,7 @@ class ioDpathVecInterface extends Bundle
val vcmdq_bits = Bits(SZ_VCMD, OUTPUT)
val vximm1q_bits = Bits(SZ_VIMM, OUTPUT)
val vximm2q_bits = Bits(SZ_VSTRIDE, OUTPUT)
val vcntq = (new ioDecoupled()){ Bits(width = 11) }
val eaddr = Bits(64, OUTPUT)
val exception = Bool(OUTPUT)
}
@ -29,6 +30,7 @@ class ioDpathVec extends Bundle
val rs2 = Bits(64, INPUT)
val vec_eaddr = Bits(64, INPUT)
val vec_exception = Bool(INPUT)
val pcr_wport = new ioWritePort()
val wen = Bool(OUTPUT)
val appvl = UFix(12, OUTPUT)
}
@ -129,6 +131,10 @@ class rocketDpathVec extends Component
io.iface.vximm2q_bits := io.rs2
io.iface.vcntq.bits := io.pcr_wport.data
io.iface.vcntq.valid := io.pcr_wport.en && io.pcr_wport.addr === PCR_VEC_CNT
io.ctrl.replay_cntq := io.iface.vcntq.valid && !io.iface.vcntq.ready
io.iface.eaddr := io.vec_eaddr
io.iface.exception := io.vec_exception