mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Merge branch 'main' of github.com:davidharrishmc/riscv-wally into main
Conflicts: wally-pipelined/src/ifu/ifu.sv
This commit is contained in:
commit
88bd151d55
@ -41,8 +41,8 @@ module fpu (
|
|||||||
|
|
||||||
//temporarily assign pipe clear and enable signals
|
//temporarily assign pipe clear and enable signals
|
||||||
//to never flush & always be running
|
//to never flush & always be running
|
||||||
assign PipeClear = 1'b0;
|
localparam PipeClear = 1'b0;
|
||||||
assign PipeEnable = 1'b1;
|
localparam PipeEnable = 1'b1;
|
||||||
always_comb begin
|
always_comb begin
|
||||||
|
|
||||||
PipeEnableDE = PipeEnable;
|
PipeEnableDE = PipeEnable;
|
||||||
@ -154,6 +154,7 @@ module fpu (
|
|||||||
logic [10:0] AddExpPostSumE;
|
logic [10:0] AddExpPostSumE;
|
||||||
logic AddCorrSignE, AddOp1NormE, AddOp2NormE, AddOpANormE, AddOpBNormE, AddInvalidE;
|
logic AddCorrSignE, AddOp1NormE, AddOp2NormE, AddOpANormE, AddOpBNormE, AddInvalidE;
|
||||||
logic AddDenormInE, AddSwapE, AddNormOvflowE, AddSignAE;
|
logic AddDenormInE, AddSwapE, AddNormOvflowE, AddSignAE;
|
||||||
|
logic AddConvertE;
|
||||||
logic [63:0] AddFloat1E, AddFloat2E;
|
logic [63:0] AddFloat1E, AddFloat2E;
|
||||||
logic [10:0] AddExp1DenormE, AddExp2DenormE, AddExponentE;
|
logic [10:0] AddExp1DenormE, AddExp2DenormE, AddExponentE;
|
||||||
logic [63:0] AddOp1E, AddOp2E;
|
logic [63:0] AddOp1E, AddOp2E;
|
||||||
@ -310,6 +311,7 @@ module fpu (
|
|||||||
logic [10:0] AddExpPostSumM;
|
logic [10:0] AddExpPostSumM;
|
||||||
logic AddCorrSignM, AddOp1NormM, AddOp2NormM, AddOpANormM, AddOpBNormM, AddInvalidM;
|
logic AddCorrSignM, AddOp1NormM, AddOp2NormM, AddOpANormM, AddOpBNormM, AddInvalidM;
|
||||||
logic AddDenormInM, AddSwapM, AddNormOvflowM, AddSignAM;
|
logic AddDenormInM, AddSwapM, AddNormOvflowM, AddSignAM;
|
||||||
|
logic AddConvertM, AddSignM;
|
||||||
logic [63:0] AddFloat1M, AddFloat2M;
|
logic [63:0] AddFloat1M, AddFloat2M;
|
||||||
logic [10:0] AddExp1DenormM, AddExp2DenormM, AddExponentM;
|
logic [10:0] AddExp1DenormM, AddExp2DenormM, AddExponentM;
|
||||||
logic [63:0] AddOp1M, AddOp2M;
|
logic [63:0] AddOp1M, AddOp2M;
|
||||||
|
@ -64,6 +64,7 @@ module fpuaddcvt2 (AddResultM, AddFlagsM, AddDenormM, AddSumM, AddSumTcM, AddSel
|
|||||||
wire [63:0] Result;
|
wire [63:0] Result;
|
||||||
wire [63:0] sum_norm, sum_norm_w_bypass;
|
wire [63:0] sum_norm, sum_norm_w_bypass;
|
||||||
wire [5:0] norm_shift, norm_shift_denorm;
|
wire [5:0] norm_shift, norm_shift_denorm;
|
||||||
|
wire exp_valid;
|
||||||
wire DenormIO;
|
wire DenormIO;
|
||||||
wire [4:0] FlagsIn;
|
wire [4:0] FlagsIn;
|
||||||
wire Sticky_out;
|
wire Sticky_out;
|
||||||
|
@ -57,7 +57,7 @@ module icache(
|
|||||||
logic [`XLEN-1:0] LastReadDataF, LastReadAdrF, InDataF;
|
logic [`XLEN-1:0] LastReadDataF, LastReadAdrF, InDataF;
|
||||||
|
|
||||||
// instruction for NOP
|
// instruction for NOP
|
||||||
logic [31:0] nop = 32'h00000013;
|
localparam [31:0] nop = 32'h00000013;
|
||||||
|
|
||||||
// Temporary change to bridge the new interface to old behaviors
|
// Temporary change to bridge the new interface to old behaviors
|
||||||
logic [`XLEN-1:0] PCPF;
|
logic [`XLEN-1:0] PCPF;
|
||||||
|
@ -75,7 +75,7 @@ module ifu (
|
|||||||
logic [`XLEN-1:0] PCPlusUpperF, PCPlus2or4F, PCD, PCW, PCLinkD, PCLinkM, PCPF;
|
logic [`XLEN-1:0] PCPlusUpperF, PCPlus2or4F, PCD, PCW, PCLinkD, PCLinkM, PCPF;
|
||||||
logic CompressedF;
|
logic CompressedF;
|
||||||
logic [31:0] InstrRawD, InstrE, InstrW;
|
logic [31:0] InstrRawD, InstrE, InstrW;
|
||||||
logic [31:0] nop = 32'h00000013; // instruction for NOP
|
localparam [31:0] nop = 32'h00000013; // instruction for NOP
|
||||||
|
|
||||||
tlb #(.ENTRY_BITS(3), .ITLB(1)) itlb(.TLBAccessType(2'b10), .VirtualAddress(PCF),
|
tlb #(.ENTRY_BITS(3), .ITLB(1)) itlb(.TLBAccessType(2'b10), .VirtualAddress(PCF),
|
||||||
.PageTableEntryWrite(PageTableEntryF), .PageTypeWrite(PageTypeF),
|
.PageTableEntryWrite(PageTableEntryF), .PageTypeWrite(PageTypeF),
|
||||||
|
@ -46,7 +46,8 @@ module div (Q, rem0, done, divBusy, div0, N, D, clk, reset, start);
|
|||||||
logic [64:0] Qd, Rd, Qd2, Rd2;
|
logic [64:0] Qd, Rd, Qd2, Rd2;
|
||||||
logic [3:0] quotient;
|
logic [3:0] quotient;
|
||||||
logic otfzero;
|
logic otfzero;
|
||||||
logic shiftResult;
|
logic shiftResult;
|
||||||
|
logic enablev, state0v, donev, divdonev, oftzerov, divBusyv, ulp;
|
||||||
|
|
||||||
// Divider goes the distance to 37 cycles
|
// Divider goes the distance to 37 cycles
|
||||||
// (thanks the evil divisor for D = 0x1)
|
// (thanks the evil divisor for D = 0x1)
|
||||||
|
@ -55,6 +55,7 @@ module muldiv (
|
|||||||
logic enable_q, gclk;
|
logic enable_q, gclk;
|
||||||
|
|
||||||
logic [2:0] Funct3E_Q;
|
logic [2:0] Funct3E_Q;
|
||||||
|
logic div0error;
|
||||||
|
|
||||||
|
|
||||||
// Multiplier
|
// Multiplier
|
||||||
|
@ -299,11 +299,13 @@ module testbench_busybear();
|
|||||||
`ERROR \
|
`ERROR \
|
||||||
end \
|
end \
|
||||||
end else begin \
|
end else begin \
|
||||||
for(integer j=0; j<totalCSR; j++) begin \
|
if (!(`BUILDROOT == 1 && "MSTATUS" == `"CSR`")) begin \
|
||||||
if(!StartCSRname[j].icompare(`"CSR`")) begin \
|
for(integer j=0; j<totalCSR; j++) begin \
|
||||||
if(``PATH``.``CSR``_REGW != StartCSRexpected[j]) begin \
|
if(!StartCSRname[j].icompare(`"CSR`")) begin \
|
||||||
$display("%0t ps, instr %0d: %s does not equal %s expected: %x, %x", $time, instrs, `"CSR`", StartCSRname[j], ``PATH``.``CSR``_REGW, StartCSRexpected[j]); \
|
if(``PATH``.``CSR``_REGW != StartCSRexpected[j]) begin \
|
||||||
`ERROR \
|
$display("%0t ps, instr %0d: %s does not equal %s expected: %x, %x", $time, instrs, `"CSR`", StartCSRname[j], ``PATH``.``CSR``_REGW, StartCSRexpected[j]); \
|
||||||
|
`ERROR \
|
||||||
|
end \
|
||||||
end \
|
end \
|
||||||
end \
|
end \
|
||||||
end \
|
end \
|
||||||
|
Loading…
Reference in New Issue
Block a user