This commit is contained in:
cxy004 2021-08-02 17:16:34 +08:00
parent 3c5c9724bb
commit b4760f89fd
3 changed files with 12 additions and 12 deletions

View File

@ -62,7 +62,7 @@ module Controller (
assign ctrl.MCtrl0.HW = ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & inst[4] & (inst[3] | ~inst[1] & inst[0]);
assign ctrl.MCtrl0.LW = ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & inst[4] & (inst[3] | inst[1] & inst[0]);
assign ctrl.MCtrl0.HLS = HLS_t'({inst[30] | inst[29] | inst[28] | inst[27] | inst[26] | inst[4] & ~inst[3], inst[1:0]});
assign ctrl.MCtrl0.HLS = HLS_t'({~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & (~inst[4] | inst[3]), inst[1:0]});
assign ctrl.MCtrl0.C0D = inst[15:11];
assign ctrl.MCtrl0.C0W = inst[30] & inst[23];
assign ctrl.MCtrl0.RS0 = RS0_t'({inst[29] | inst[26] | ~inst[4], inst[30] | ~inst[29] & ~inst[26] & inst[4] & ~inst[1]});

View File

@ -426,7 +426,7 @@ module Datapath (
| E.I1.WCtrl.RW & D.IB.RT == E.I1.RD & D.IB.ET & E.I1.MCtrl.MR
| D.IA.WCtrl.RW & D.IB.RS == D.IA.RD & D.IB.ES
| D.IA.WCtrl.RW & D.IB.RT == D.IA.RD & D.IB.ET
| D.IA.WCtrl.RW & D.IB.RS == D.IA.RD & ~D.IB.DP1 & (D.IB.MCtrl0.HW ^ D.IB.MCtrl0.LW) & ~D.IA.DP0
| D.IA.WCtrl.RW & D.IB.RS == D.IA.RD & ~D.IB.DP1 & D.IB.MCtrl0.HLS[2] & ~D.IA.DP0
| D.IA.WCtrl.RW & D.IB.RT == D.IA.RD & ~D.IB.DP1 & D.IB.MCtrl0.C0W & ~D.IA.DP0;
assign D.A = (D.IA.DP0 & D.IA.DP1 | D.IA_ExcValid) ? D.IB.DP0 : D.IA.DP1;
@ -882,7 +882,7 @@ module Datapath (
ffenr #(6) M_I0_MULT_CNTR_ff (
clk,
rst | rstM,
{E.I0.MCtrl.HLS[2:1] == 2'b00 & E_go & E_I0_go & M.en, M_I0_MULT_CNTR[5:1]},
{E.I0.MCtrl.HLS[2:1] == 2'b10 & E_go & E_I0_go & M.en, M_I0_MULT_CNTR[5:1]},
1'b1,
M_I0_MULT_CNTR
);
@ -982,7 +982,7 @@ module Datapath (
{M_I0_DIVHB, M_I0_DIVLB},
{M_I0_DIVUHB, M_I0_DIVULB},
{M_I0_ForwardS, M_I0_ForwardS},
M.I0.MCtrl.HLS,
{~M.I0.MCtrl.HLS[2], M.I0.MCtrl.HLS[1:0]},
{M_I0_HI, M_I0_LO}
);
ffen #(32) HI_ff (
@ -1051,9 +1051,9 @@ module Datapath (
);
assign M.en = M_go & W.en;
assign M_go = (M.I0.MCtrl.HLS != DIV | M_I0_DIV_bvalid)
& (M.I0.MCtrl.HLS != DIVU | M_I0_DIVU_bvalid)
& (M.I0.MCtrl.HLS[2:1] != 2'b00 | M_I0_MULT_bvalid)
assign M_go = (M.I0.MCtrl.HLS[2:1] != 2'b10 | M_I0_MULT_bvalid)
& (M.I0.MCtrl.HLS != DIV | M_I0_DIV_bvalid)
& (M.I0.MCtrl.HLS != DIVU | M_I0_DIVU_bvalid)
& (~M.I1.MCtrl.MR | M_I1_DataR_OK)
& (~M_exception.ExcValid | fetch_i.req & fetch_i.addr_ok);

View File

@ -66,11 +66,11 @@ typedef enum logic [1:0] {
} RS0_t;
typedef enum logic [2:0] {
MULT = 3'b000,
MULTU = 3'b001,
DIV = 3'b010,
DIVU = 3'b011,
HLRS = 3'b100 // 3'b1??
HLRS = 3'b000, // 3'b0??
MULT = 3'b100,
MULTU = 3'b101,
DIV = 3'b110,
DIVU = 3'b111
} HLS_t;
typedef struct packed {