mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Remove conditional from inside decompress module
This commit is contained in:
parent
0a011f4548
commit
d1839b6db2
@ -42,11 +42,7 @@ module decompress (
|
|||||||
logic [5:0] immSH;
|
logic [5:0] immSH;
|
||||||
logic [1:0] op;
|
logic [1:0] op;
|
||||||
|
|
||||||
// if the system handles compressed instructions, decode appropriately
|
// Extrac op and register source/destination fields
|
||||||
if (!(`C_SUPPORTED)) begin:decompress // no compressed mode
|
|
||||||
assign InstrD = InstrRawD;
|
|
||||||
assign IllegalCompInstrD = 0;
|
|
||||||
end else begin : decompress // COMPRESSED mode supported
|
|
||||||
assign instr16 = InstrRawD[15:0]; // instruction is already aligned
|
assign instr16 = InstrRawD[15:0]; // instruction is already aligned
|
||||||
assign op = instr16[1:0];
|
assign op = instr16[1:0];
|
||||||
assign rds1 = instr16[11:7];
|
assign rds1 = instr16[11:7];
|
||||||
@ -176,6 +172,5 @@ module decompress (
|
|||||||
end
|
end
|
||||||
endcase
|
endcase
|
||||||
end
|
end
|
||||||
end
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
@ -87,7 +87,6 @@ module ifu (
|
|||||||
);
|
);
|
||||||
(* mark_debug = "true" *) logic [`XLEN-1:0] PCNextF;
|
(* mark_debug = "true" *) logic [`XLEN-1:0] PCNextF;
|
||||||
logic BranchMisalignedFaultE;
|
logic BranchMisalignedFaultE;
|
||||||
logic IllegalCompInstrD;
|
|
||||||
logic [`XLEN-1:0] PCPlus2or4F, PCLinkD;
|
logic [`XLEN-1:0] PCPlus2or4F, PCLinkD;
|
||||||
logic [`XLEN-1:2] PCPlus4F;
|
logic [`XLEN-1:2] PCPlus4F;
|
||||||
logic CompressedF;
|
logic CompressedF;
|
||||||
@ -340,8 +339,14 @@ module ifu (
|
|||||||
flopenrc #(`XLEN) PCDReg(clk, reset, FlushD, ~StallD, PCF, PCD);
|
flopenrc #(`XLEN) PCDReg(clk, reset, FlushD, ~StallD, PCF, PCD);
|
||||||
|
|
||||||
// expand 16-bit compressed instructions to 32 bits
|
// expand 16-bit compressed instructions to 32 bits
|
||||||
decompress decomp(.InstrRawD, .InstrD, .IllegalCompInstrD); // *** move the config logic outside
|
if (`C_SUPPORTED) begin
|
||||||
|
logic IllegalCompInstrD;
|
||||||
|
decompress decomp(.InstrRawD, .InstrD, .IllegalCompInstrD);
|
||||||
assign IllegalIEUInstrFaultD = IllegalBaseInstrFaultD | IllegalCompInstrD; // illegal if bad 32 or 16-bit instr
|
assign IllegalIEUInstrFaultD = IllegalBaseInstrFaultD | IllegalCompInstrD; // illegal if bad 32 or 16-bit instr
|
||||||
|
end else begin
|
||||||
|
assign InstrD = InstrRawD;
|
||||||
|
assign IllegalIEUInstrFaultD = IllegalBaseInstrFaultD;
|
||||||
|
end
|
||||||
|
|
||||||
// Misaligned PC logic
|
// Misaligned PC logic
|
||||||
// Instruction address misalignement only from br/jal(r) instructions.
|
// Instruction address misalignement only from br/jal(r) instructions.
|
||||||
|
Loading…
Reference in New Issue
Block a user