fix(issue): 修复双发时inst1不能为跳转

This commit is contained in:
Liphen 2023-12-07 17:42:11 +08:00
parent 44ac8853b8
commit 87fc0f60ee
1 changed files with 5 additions and 1 deletions

View File

@ -55,6 +55,9 @@ class Issue(implicit val config: CpuConfig) extends Module {
val inst0_is_bru_inst = ((inst0.fusel === FuType.bru && FuType.bru =/= FuType.alu) || val inst0_is_bru_inst = ((inst0.fusel === FuType.bru && FuType.bru =/= FuType.alu) ||
(inst0.fusel === FuType.alu && ALUOpType.isBru(io.decodeInst(0).op))) (inst0.fusel === FuType.alu && ALUOpType.isBru(io.decodeInst(0).op)))
val inst1_is_bru_inst = ((inst1.fusel === FuType.bru && FuType.bru =/= FuType.alu) ||
(inst1.fusel === FuType.alu && ALUOpType.isBru(io.decodeInst(1).op)))
// 指令1是否允许执行 // 指令1是否允许执行
io.inst1.allow_to_go := io.inst1.allow_to_go :=
io.allow_to_go && // 指令0允许执行 io.allow_to_go && // 指令0允许执行
@ -62,7 +65,8 @@ class Issue(implicit val config: CpuConfig) extends Module {
!struct_conflict && // 无结构冲突 !struct_conflict && // 无结构冲突
!data_conflict && // 无写后读冲突 !data_conflict && // 无写后读冲突
!VecInit(FuType.mou).contains(io.decodeInst(1).fusel) && // 指令1不是mou指令 !VecInit(FuType.mou).contains(io.decodeInst(1).fusel) && // 指令1不是mou指令
!inst0_is_bru_inst // 指令0不是bru指令 !inst0_is_bru_inst && // 指令0不是bru指令
!inst1_is_bru_inst // 指令1不是bru指令
} else { } else {
io.inst1.allow_to_go := false.B io.inst1.allow_to_go := false.B
} }