mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Added some updates to divider - still not working all the time. Still a bug with signals within muldiv - specificaly MultDivE being modified during Execute stage. Seems to be triggered by ahblite signal.
This commit is contained in:
parent
59dee5580c
commit
9026357350
3
wally-pipelined/regression/vish_stacktrace.vstf
Normal file
3
wally-pipelined/regression/vish_stacktrace.vstf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# transcript error: error writing "stdout": broken pipe
|
||||||
|
while executing
|
||||||
|
"puts -nonewline stdout $s"
|
@ -42,7 +42,7 @@ vsim workopt
|
|||||||
view wave
|
view wave
|
||||||
|
|
||||||
-- display input and output signals as hexidecimal values
|
-- display input and output signals as hexidecimal values
|
||||||
do ./wave-dos/ahb-waves.do
|
do ./wave-dos/ahb-muldiv.do
|
||||||
|
|
||||||
-- Set Wave Output Items
|
-- Set Wave Output Items
|
||||||
TreeUpdate [SetDefaultTree]
|
TreeUpdate [SetDefaultTree]
|
||||||
|
96
wally-pipelined/regression/wave-dos/ahb-muldiv.do
Normal file
96
wally-pipelined/regression/wave-dos/ahb-muldiv.do
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
add wave /testbench/clk
|
||||||
|
add wave /testbench/reset
|
||||||
|
add wave -divider
|
||||||
|
|
||||||
|
#add wave /testbench/dut/hart/ebu/IReadF
|
||||||
|
add wave -noupdate -divider -height 32 "Stalls"
|
||||||
|
add wave /testbench/dut/hart/DataStall
|
||||||
|
add wave /testbench/dut/hart/InstrStall
|
||||||
|
add wave /testbench/dut/hart/StallF
|
||||||
|
add wave /testbench/dut/hart/StallD
|
||||||
|
add wave /testbench/dut/hart/StallE
|
||||||
|
add wave /testbench/dut/hart/StallM
|
||||||
|
add wave /testbench/dut/hart/StallW
|
||||||
|
add wave /testbench/dut/hart/FlushD
|
||||||
|
add wave /testbench/dut/hart/FlushE
|
||||||
|
add wave /testbench/dut/hart/FlushM
|
||||||
|
add wave /testbench/dut/hart/FlushW
|
||||||
|
|
||||||
|
add wave -noupdate -divider -height 32 "MulDiv"
|
||||||
|
add wave -hex /testbench/dut/hart/mdu/*
|
||||||
|
|
||||||
|
add wave -noupdate -divider -height 32 "Integer Divider"
|
||||||
|
add wave -hex /testbench/dut/hart/mdu/genblk1/div/fsm1/CURRENT_STATE
|
||||||
|
add wave -hex /testbench/dut/hart/mdu/genblk1/div/fsm1/NEXT_STATE
|
||||||
|
add wave -hex /testbench/dut/hart/mdu/genblk1/div/*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
add wave -noupdate -divider -height 32 "RF"
|
||||||
|
add wave -hex /testbench/dut/hart/ieu/dp/regf/*
|
||||||
|
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf
|
||||||
|
|
||||||
|
|
||||||
|
add wave -divider
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/PCF
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/PCD
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/InstrD
|
||||||
|
|
||||||
|
add wave /testbench/InstrDName
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/ic/InstrRawD
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/ic/AlignedInstrD
|
||||||
|
add wave -divider
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/ic/InstrPAdrF
|
||||||
|
add wave /testbench/dut/hart/ifu/ic/DelayF
|
||||||
|
add wave /testbench/dut/hart/ifu/ic/DelaySideF
|
||||||
|
add wave /testbench/dut/hart/ifu/ic/DelayD
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/ic/MisalignedHalfInstrD
|
||||||
|
add wave -divider
|
||||||
|
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/PCE
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/InstrE
|
||||||
|
add wave /testbench/InstrEName
|
||||||
|
add wave -hex /testbench/dut/hart/ieu/dp/SrcAE
|
||||||
|
add wave -hex /testbench/dut/hart/ieu/dp/SrcBE
|
||||||
|
add wave -hex /testbench/dut/hart/ieu/dp/ALUResultE
|
||||||
|
#add wave /testbench/dut/hart/ieu/dp/PCSrcE
|
||||||
|
add wave -divider
|
||||||
|
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/PCM
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/InstrM
|
||||||
|
add wave /testbench/InstrMName
|
||||||
|
add wave /testbench/dut/uncore/dtim/memwrite
|
||||||
|
add wave -hex /testbench/dut/uncore/HADDR
|
||||||
|
add wave -hex /testbench/dut/uncore/HWDATA
|
||||||
|
add wave -divider
|
||||||
|
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/MemReadM
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/InstrReadF
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/BusState
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/NextBusState
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/HADDR
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/HREADY
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/HTRANS
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/HRDATA
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/HWRITE
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/HWDATA
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/CaptureDataM
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/InstrStall
|
||||||
|
add wave -divider
|
||||||
|
|
||||||
|
add wave -hex /testbench/dut/uncore/dtim/*
|
||||||
|
add wave -divider
|
||||||
|
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/PCW
|
||||||
|
add wave -hex /testbench/dut/hart/ifu/InstrW
|
||||||
|
add wave /testbench/InstrWName
|
||||||
|
add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
||||||
|
add wave -hex /testbench/dut/hart/ebu/ReadDataW
|
||||||
|
add wave -hex /testbench/dut/hart/ieu/dp/ResultW
|
||||||
|
add wave -hex /testbench/dut/hart/ieu/dp/RdW
|
||||||
|
add wave -divider
|
||||||
|
|
||||||
|
add wave -hex /testbench/dut/uncore/dtim/*
|
||||||
|
add wave -divider
|
||||||
|
|
||||||
|
add wave -hex -r /testbench/*
|
@ -1,75 +0,0 @@
|
|||||||
# wally-pipelined.do
|
|
||||||
#
|
|
||||||
# Modification by Oklahoma State University & Harvey Mudd College
|
|
||||||
# Use with Testbench
|
|
||||||
# James Stine, 2008; David Harris 2021
|
|
||||||
# Go Cowboys!!!!!!
|
|
||||||
#
|
|
||||||
# Takes 1:10 to run RV64IC tests using gui
|
|
||||||
|
|
||||||
# Use this wally-pipelined.do file to run this example.
|
|
||||||
# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
|
|
||||||
# do wally-pipelined.do
|
|
||||||
# or, to run from a shell, type the following at the shell prompt:
|
|
||||||
# vsim -do wally-pipelined.do -c
|
|
||||||
# (omit the "-c" to see the GUI while running from the shell)
|
|
||||||
|
|
||||||
onbreak {resume}
|
|
||||||
|
|
||||||
# create library
|
|
||||||
if [file exists work] {
|
|
||||||
vdel -all
|
|
||||||
}
|
|
||||||
vlib work
|
|
||||||
|
|
||||||
# compile source files
|
|
||||||
# suppress spurious warnngs about
|
|
||||||
# "Extra checking for conflicts with always_comb done at vopt time"
|
|
||||||
# because vsim will run vopt
|
|
||||||
|
|
||||||
# default to config/rv64ic, but allow this to be overridden at the command line. For example:
|
|
||||||
# do wally-pipelined.do ../config/rv32ic
|
|
||||||
switch $argc {
|
|
||||||
0 {vlog +incdir+../config/rv64ic ../testbench/testbench-imperas.sv ../src/*/*.sv -suppress 2583}
|
|
||||||
1 {vlog +incdir+$1 ../testbench/testbench-imperas.sv ../src/*/*.sv -suppress 2583}
|
|
||||||
}
|
|
||||||
# start and run simulation
|
|
||||||
# remove +acc flag for faster sim during regressions if there is no need to access internal signals
|
|
||||||
vopt +acc work.testbench -o workopt
|
|
||||||
vsim workopt
|
|
||||||
|
|
||||||
view wave
|
|
||||||
|
|
||||||
-- display input and output signals as hexidecimal values
|
|
||||||
# Diplays All Signals recursively
|
|
||||||
-- display input and output signals as hexidecimal values
|
|
||||||
# Diplays All Signals recursively
|
|
||||||
add wave /testbench/clk
|
|
||||||
add wave /testbench/reset
|
|
||||||
add wave -noupdate -divider -height 32 "Datapath"
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/*
|
|
||||||
add wave -noupdate -divider -height 32 "RF"
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/regf/*
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/regf/rf
|
|
||||||
add wave -noupdate -divider -height 32 "Control"
|
|
||||||
add wave -hex /testbench/dut/hart/ieu/c/*
|
|
||||||
add wave -noupdate -divider -height 32 "Multiply/Divide"
|
|
||||||
add wave -hex /testbench/dut/hart/mdu/*
|
|
||||||
|
|
||||||
-- Set Wave Output Items
|
|
||||||
TreeUpdate [SetDefaultTree]
|
|
||||||
WaveRestoreZoom {0 ps} {100 ps}
|
|
||||||
configure wave -namecolwidth 250
|
|
||||||
configure wave -valuecolwidth 120
|
|
||||||
configure wave -justifyvalue left
|
|
||||||
configure wave -signalnamewidth 0
|
|
||||||
configure wave -snapdistance 10
|
|
||||||
configure wave -datasetprefix 0
|
|
||||||
configure wave -rowmargin 4
|
|
||||||
configure wave -childrowmargin 2
|
|
||||||
set DefaultRadix hexadecimal
|
|
||||||
|
|
||||||
-- Run the Simulation
|
|
||||||
#run 1000
|
|
||||||
run -all
|
|
||||||
#quit
|
|
@ -76,7 +76,7 @@ module hazard(
|
|||||||
// Each stage flushes if the previous stage is the last one stalled (for cause) or the system has reason to flush
|
// Each stage flushes if the previous stage is the last one stalled (for cause) or the system has reason to flush
|
||||||
assign FlushF = BPPredWrongE;
|
assign FlushF = BPPredWrongE;
|
||||||
assign FlushD = FirstUnstalledD || BranchFlushDE; // PCSrcE |InstrStall | CSRWritePendingDEM | RetM | TrapM;
|
assign FlushD = FirstUnstalledD || BranchFlushDE; // PCSrcE |InstrStall | CSRWritePendingDEM | RetM | TrapM;
|
||||||
assign FlushE = FirstUnstalledE || BranchFlushDE; //LoadStallD | PCSrcE | RetM | TrapM;
|
assign FlushE = FirstUnstalledE || BranchFlushDE; // LoadStallD | PCSrcE | RetM | TrapM;
|
||||||
assign FlushM = FirstUnstalledM || RetM || TrapM;
|
assign FlushM = FirstUnstalledM || RetM || TrapM;
|
||||||
assign FlushW = FirstUnstalledW | TrapM;
|
assign FlushW = FirstUnstalledW | TrapM;
|
||||||
endmodule
|
endmodule
|
||||||
|
@ -30,7 +30,7 @@ module forward(
|
|||||||
input logic [4:0] Rs1D, Rs2D, Rs1E, Rs2E, RdE, RdM, RdW,
|
input logic [4:0] Rs1D, Rs2D, Rs1E, Rs2E, RdE, RdM, RdW,
|
||||||
input logic MemReadE, MulDivE, CSRReadE,
|
input logic MemReadE, MulDivE, CSRReadE,
|
||||||
input logic RegWriteM, RegWriteW,
|
input logic RegWriteM, RegWriteW,
|
||||||
input logic DivDoneW,
|
input logic DivDoneE, DivBusyE,
|
||||||
// Forwarding controls
|
// Forwarding controls
|
||||||
output logic [1:0] ForwardAE, ForwardBE,
|
output logic [1:0] ForwardAE, ForwardBE,
|
||||||
output logic LoadStallD, MulDivStallD, CSRRdStallD
|
output logic LoadStallD, MulDivStallD, CSRRdStallD
|
||||||
@ -50,7 +50,7 @@ module forward(
|
|||||||
|
|
||||||
// Stall on dependent operations that finish in Mem Stage and can't bypass in time
|
// Stall on dependent operations that finish in Mem Stage and can't bypass in time
|
||||||
assign LoadStallD = MemReadE & ((Rs1D == RdE) | (Rs2D == RdE));
|
assign LoadStallD = MemReadE & ((Rs1D == RdE) | (Rs2D == RdE));
|
||||||
assign MulDivStallD = MulDivE & ((Rs1D == RdE) | (Rs2D == RdE)) | MulDivE&~DivDoneW; // *** extend with stalls for divide
|
assign MulDivStallD = MulDivE & ((Rs1D == RdE) | (Rs2D == RdE)) | MulDivE | DivBusyE; // *** extend with stalls for divide
|
||||||
assign CSRRdStallD = CSRReadE & ((Rs1D == RdE) | (Rs2D == RdE));
|
assign CSRRdStallD = CSRReadE & ((Rs1D == RdE) | (Rs2D == RdE));
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
@ -56,8 +56,8 @@ module ieu (
|
|||||||
input logic FlushE, FlushM, FlushW,
|
input logic FlushE, FlushM, FlushW,
|
||||||
output logic LoadStallD, MulDivStallD, CSRRdStallD,
|
output logic LoadStallD, MulDivStallD, CSRRdStallD,
|
||||||
output logic PCSrcE,
|
output logic PCSrcE,
|
||||||
input logic DivDoneW,
|
input logic DivDoneE,
|
||||||
|
input logic DivBusyE,
|
||||||
output logic CSRReadM, CSRWriteM, PrivilegedM,
|
output logic CSRReadM, CSRWriteM, PrivilegedM,
|
||||||
output logic CSRWritePendingDEM
|
output logic CSRWritePendingDEM
|
||||||
);
|
);
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
|
|
||||||
module div (Q, rem0, divdone, div0, N, D, clk, reset, start);
|
module div (Q, rem0, done, divBusy, div0, N, D, clk, reset, start);
|
||||||
|
|
||||||
input logic [63:0] N, D;
|
input logic [63:0] N, D;
|
||||||
input logic clk;
|
input logic clk;
|
||||||
@ -33,9 +33,10 @@ module div (Q, rem0, divdone, div0, N, D, clk, reset, start);
|
|||||||
output logic [63:0] Q;
|
output logic [63:0] Q;
|
||||||
output logic [63:0] rem0;
|
output logic [63:0] rem0;
|
||||||
output logic div0;
|
output logic div0;
|
||||||
output logic divdone;
|
output logic done;
|
||||||
|
output logic divBusy;
|
||||||
|
|
||||||
logic done;
|
logic divdone;
|
||||||
logic enable;
|
logic enable;
|
||||||
logic state0;
|
logic state0;
|
||||||
logic V;
|
logic V;
|
||||||
@ -86,7 +87,7 @@ module div (Q, rem0, divdone, div0, N, D, clk, reset, start);
|
|||||||
// FSM to control integer divider
|
// FSM to control integer divider
|
||||||
// assume inputs are postive edge and
|
// assume inputs are postive edge and
|
||||||
// datapath (divider) is negative edge
|
// datapath (divider) is negative edge
|
||||||
fsm64 fsm1 (enablev, state0v, donev, divdonev, otfzerov,
|
fsm64 fsm1 (enablev, state0v, donev, divdonev, otfzerov, divBusyv,
|
||||||
start, div0, NumIter, ~clk, reset);
|
start, div0, NumIter, ~clk, reset);
|
||||||
|
|
||||||
flopr #(1) rega (~clk, reset, donev, done);
|
flopr #(1) rega (~clk, reset, donev, done);
|
||||||
@ -94,6 +95,7 @@ module div (Q, rem0, divdone, div0, N, D, clk, reset, start);
|
|||||||
flopr #(1) regc (~clk, reset, otfzerov, otfzero);
|
flopr #(1) regc (~clk, reset, otfzerov, otfzero);
|
||||||
flopr #(1) regd (~clk, reset, enablev, enable);
|
flopr #(1) regd (~clk, reset, enablev, enable);
|
||||||
flopr #(1) rege (~clk, reset, state0v, state0);
|
flopr #(1) rege (~clk, reset, state0v, state0);
|
||||||
|
flopr #(1) regf (~clk, reset, divBusyv, divBusy);
|
||||||
|
|
||||||
// To obtain a correct remainder the last bit of the
|
// To obtain a correct remainder the last bit of the
|
||||||
// quotient has to be aligned with a radix-r boundary.
|
// quotient has to be aligned with a radix-r boundary.
|
||||||
@ -460,7 +462,7 @@ endmodule // lz64
|
|||||||
|
|
||||||
// FSM Control for Integer Divider
|
// FSM Control for Integer Divider
|
||||||
|
|
||||||
module fsm64 (en, state0, done, divdone, otfzero,
|
module fsm64 (en, state0, done, divdone, otfzero, divBusy,
|
||||||
start, error, NumIter, clk, reset);
|
start, error, NumIter, clk, reset);
|
||||||
|
|
||||||
input logic [5:0] NumIter;
|
input logic [5:0] NumIter;
|
||||||
@ -474,6 +476,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
output logic state0;
|
output logic state0;
|
||||||
output logic divdone;
|
output logic divdone;
|
||||||
output logic otfzero;
|
output logic otfzero;
|
||||||
|
output logic divBusy;
|
||||||
|
|
||||||
logic LT, EQ;
|
logic LT, EQ;
|
||||||
logic Divide0;
|
logic Divide0;
|
||||||
@ -519,6 +522,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
begin
|
begin
|
||||||
otfzero = 1'b1;
|
otfzero = 1'b1;
|
||||||
en = 1'b0;
|
en = 1'b0;
|
||||||
|
divBusy = 1'b0;
|
||||||
state0 = 1'b0;
|
state0 = 1'b0;
|
||||||
divdone = 1'b0;
|
divdone = 1'b0;
|
||||||
done = 1'b0;
|
done = 1'b0;
|
||||||
@ -528,6 +532,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
|
divBusy = 1'b1;
|
||||||
state0 = 1'b1;
|
state0 = 1'b1;
|
||||||
if (EQ)
|
if (EQ)
|
||||||
divdone = 1'b1;
|
divdone = 1'b1;
|
||||||
@ -541,6 +546,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S1:
|
S1:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -564,6 +570,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S2:
|
S2:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -587,6 +594,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S3:
|
S3:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -610,6 +618,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S4:
|
S4:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -633,6 +642,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S5:
|
S5:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -656,6 +666,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S6:
|
S6:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -679,6 +690,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S7:
|
S7:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -702,6 +714,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S8:
|
S8:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -725,6 +738,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S9:
|
S9:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -748,6 +762,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S10:
|
S10:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -771,6 +786,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S11:
|
S11:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -794,6 +810,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S12:
|
S12:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -817,6 +834,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S13:
|
S13:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -840,6 +858,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S14:
|
S14:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -863,6 +882,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S15:
|
S15:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -886,6 +906,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S16:
|
S16:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -909,6 +930,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S17:
|
S17:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -932,6 +954,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S18:
|
S18:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -955,6 +978,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S19:
|
S19:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -978,6 +1002,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S20:
|
S20:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1001,6 +1026,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S21:
|
S21:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1024,6 +1050,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S22:
|
S22:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1047,6 +1074,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S23:
|
S23:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1070,6 +1098,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S24:
|
S24:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1093,6 +1122,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S25:
|
S25:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1116,6 +1146,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S26:
|
S26:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1139,6 +1170,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S27:
|
S27:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1162,6 +1194,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S28:
|
S28:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1185,6 +1218,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S29:
|
S29:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1208,6 +1242,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S30:
|
S30:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1231,6 +1266,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S31:
|
S31:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1254,6 +1290,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S32:
|
S32:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1277,6 +1314,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S33:
|
S33:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1300,6 +1338,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S34:
|
S34:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1323,6 +1362,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S35:
|
S35:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
if (LT|EQ)
|
if (LT|EQ)
|
||||||
begin
|
begin
|
||||||
en = 1'b1;
|
en = 1'b1;
|
||||||
@ -1346,6 +1386,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
S36:
|
S36:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b1;
|
otfzero = 1'b1;
|
||||||
|
divBusy = 1'b1;
|
||||||
state0 = 1'b0;
|
state0 = 1'b0;
|
||||||
done = 1'b1;
|
done = 1'b1;
|
||||||
if (EQ)
|
if (EQ)
|
||||||
@ -1363,6 +1404,7 @@ module fsm64 (en, state0, done, divdone, otfzero,
|
|||||||
default:
|
default:
|
||||||
begin
|
begin
|
||||||
otfzero = 1'b0;
|
otfzero = 1'b0;
|
||||||
|
divBusy = 1'b1;
|
||||||
en = 1'b0;
|
en = 1'b0;
|
||||||
state0 = 1'b0;
|
state0 = 1'b0;
|
||||||
done = 1'b0;
|
done = 1'b0;
|
||||||
|
Binary file not shown.
@ -8,8 +8,12 @@ int main() {
|
|||||||
uint64_t D;
|
uint64_t D;
|
||||||
uint64_t Q;
|
uint64_t Q;
|
||||||
|
|
||||||
N = 0xc9649f05a8e1a8bb;
|
//N = 0xc9649f05a8e1a8bb;
|
||||||
D = 0x82f6747f707af2c0;
|
//D = 0x82f6747f707af2c0;
|
||||||
|
//N = 0x10fd3dedadea5195;
|
||||||
|
//D = 0xdf7f3844121bcc23;
|
||||||
|
N = 0x4;
|
||||||
|
D = 0xbfffffffffffffff;
|
||||||
Q = N/D;
|
Q = N/D;
|
||||||
|
|
||||||
printf("N = %" PRIx64 "\n", N);
|
printf("N = %" PRIx64 "\n", N);
|
||||||
|
@ -1,107 +1,67 @@
|
|||||||
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 | 0000000000000000 0000000000000000 1 1
|
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 1
|
||||||
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 | 0000000000000000 0000000000000000 1 1
|
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 1
|
||||||
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 | 0000000000000000 0000000000000000 1 1
|
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 1
|
||||||
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 | 0000000000000000 0000000000000000 1 1
|
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 1
|
||||||
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 | 0000000000000000 0000000000000000 1 1
|
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 1
|
||||||
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 | 0000000000000000 0000000000000000 1 1
|
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 1
|
||||||
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 | 0000000000000000 0000000000000000 1 1
|
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 1
|
||||||
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 | 0000000000000000 0000000000000000 1 1
|
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 1
|
||||||
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 | 0000000000000000 0000000000000000 1 1
|
0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 | 0000000000000000 0000000000000000 1 1
|
||||||
c9649f05a8e1a8bb 82f6747f707af2c0 | 0000000000000000 0000000000000000 0 | 0000000000000001 466e2a863866b5fb 0 0
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 0000000000000000 | 0000000000000000 10fd3dedadea5195 1 0
|
||||||
c9649f05a8e1a8bb 82f6747f707af2c0 | 0000000000000000 0000000000000000 0 | 0000000000000001 466e2a863866b5fb 0 0
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 0000000000000000 | 0000000000000000 10fd3dedadea5195 1 0
|
||||||
c9649f05a8e1a8bb 82f6747f707af2c0 | 0000000000000000 0000000000000000 0 | 0000000000000001 466e2a863866b5fb 0 0
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 0000000000000000 | 0000000000000000 10fd3dedadea5195 1 0
|
||||||
c9649f05a8e1a8bb 82f6747f707af2c0 | 0000000000000000 0000000000000000 0 | 0000000000000001 466e2a863866b5fb 0 0
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 0000000000000000 | 0000000000000000 10fd3dedadea5195 1 0
|
||||||
c9649f05a8e1a8bb 82f6747f707af2c0 | 0000000000000000 0000000000000000 0 | 0000000000000001 466e2a863866b5fb 0 0
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 0000000000000000 0 | 0000000000000000 10fd3dedadea5195 1 0
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 0000000000000000 0 | 0000000000000000 10fd3dedadea5195 1 0
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 0000000000000000 0 | 0000000000000000 10fd3dedadea5195 1 0
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 0000000000000000 0 | 0000000000000000 10fd3dedadea5195 1 0
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 0000000000000000 0 | 0000000000000000 10fd3dedadea5195 1 0
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 | 0000000000000000 10fd3dedadea5195 1 1
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
10fd3dedadea5195 df7f3844121bcc23 | 0000000000000000 10fd3dedadea5195 0 | 0000000000000000 10fd3dedadea5195 1 1
|
|
||||||
|
@ -17,7 +17,16 @@ module tb;
|
|||||||
|
|
||||||
logic [7:0] count [0:15];
|
logic [7:0] count [0:15];
|
||||||
|
|
||||||
|
bit [63:0] Ncomp;
|
||||||
|
bit [63:0] Dcomp;
|
||||||
|
bit [63:0] Qcomp;
|
||||||
|
bit [63:0] Rcomp;
|
||||||
|
|
||||||
int64div dut (Q, done, divdone, rem, div0, N, D, clk, reset, start);
|
int64div dut (Q, done, divdone, rem, div0, N, D, clk, reset, start);
|
||||||
|
assign Ncomp = N;
|
||||||
|
assign Dcomp = D;
|
||||||
|
assign Qcomp = Ncomp/Dcomp;
|
||||||
|
assign Rcomp = Ncomp%Dcomp;
|
||||||
|
|
||||||
initial
|
initial
|
||||||
begin
|
begin
|
||||||
@ -30,6 +39,19 @@ module tb;
|
|||||||
#800 $finish;
|
#800 $finish;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
initial
|
||||||
|
begin
|
||||||
|
handle3 = $fopen("div64.out");
|
||||||
|
desc3 = handle3;
|
||||||
|
end
|
||||||
|
|
||||||
|
always
|
||||||
|
begin
|
||||||
|
desc3 = handle3;
|
||||||
|
#5 $fdisplay(desc3, "%h %h | %h %h | %h %h %b %b",
|
||||||
|
N, D, Q, rem, Qcomp, Rcomp,
|
||||||
|
(Q==Qcomp), (rem==Rcomp));
|
||||||
|
end
|
||||||
|
|
||||||
initial
|
initial
|
||||||
begin
|
begin
|
||||||
@ -38,10 +60,8 @@ module tb;
|
|||||||
#0 start = 1'b0;
|
#0 start = 1'b0;
|
||||||
#0 reset = 1'b1;
|
#0 reset = 1'b1;
|
||||||
#22 reset = 1'b0;
|
#22 reset = 1'b0;
|
||||||
//#25 N = 64'h0000_0000_9830_07C0;
|
#25 N = 64'h10fd_3ded_adea_5195;
|
||||||
//#0 D = 64'h0000_0000_0000_000C;
|
#0 D = 64'hdf7f_3844_121b_cc23;
|
||||||
#25 N = 64'h0000_0000_06b9_7b0d;
|
|
||||||
#0 D = 64'h0000_0000_46df_998d;
|
|
||||||
#0 start = 1'b1;
|
#0 start = 1'b1;
|
||||||
#50 start = 1'b0;
|
#50 start = 1'b0;
|
||||||
|
|
||||||
|
@ -36,7 +36,8 @@ module muldiv (
|
|||||||
// Writeback stage
|
// Writeback stage
|
||||||
output logic [`XLEN-1:0] MulDivResultW,
|
output logic [`XLEN-1:0] MulDivResultW,
|
||||||
// Divide Done
|
// Divide Done
|
||||||
output logic DivDoneW,
|
output logic DivDoneE,
|
||||||
|
output logic DivBusyE,
|
||||||
// hazards
|
// hazards
|
||||||
input logic StallM, StallW, FlushM, FlushW
|
input logic StallM, StallW, FlushM, FlushW
|
||||||
);
|
);
|
||||||
@ -48,10 +49,16 @@ module muldiv (
|
|||||||
logic [`XLEN-1:0] QuotE, RemE;
|
logic [`XLEN-1:0] QuotE, RemE;
|
||||||
logic [`XLEN*2-1:0] ProdE;
|
logic [`XLEN*2-1:0] ProdE;
|
||||||
|
|
||||||
|
logic DivStartE;
|
||||||
|
logic startDivideE;
|
||||||
|
|
||||||
// Multiplier
|
// Multiplier
|
||||||
mul mul(.*);
|
mul mul(.*);
|
||||||
// Divide
|
// Divide
|
||||||
div div (QuotE, RemE, DivDoneE, div0error, SrcAE, SrcBE, clk, reset, MulDivE);
|
div div (QuotE, RemE, DivDoneE, DivBusyE, div0error, SrcAE, SrcBE, clk, reset, startDivideE);
|
||||||
|
|
||||||
|
// Added for debugging of start signal for divide
|
||||||
|
assign startDivideE = MulDivE&DivStartE&~DivBusyE;
|
||||||
|
|
||||||
// Select result
|
// Select result
|
||||||
always_comb
|
always_comb
|
||||||
@ -64,6 +71,19 @@ module muldiv (
|
|||||||
3'b101: PrelimResultE = QuotE;
|
3'b101: PrelimResultE = QuotE;
|
||||||
3'b110: PrelimResultE = RemE;
|
3'b110: PrelimResultE = RemE;
|
||||||
3'b111: PrelimResultE = RemE;
|
3'b111: PrelimResultE = RemE;
|
||||||
|
endcase // case (Funct3E)
|
||||||
|
|
||||||
|
// Start Divide process
|
||||||
|
always_comb
|
||||||
|
case (Funct3E)
|
||||||
|
3'b000: DivStartE = 1'b0;
|
||||||
|
3'b001: DivStartE = 1'b0;
|
||||||
|
3'b010: DivStartE = 1'b0;
|
||||||
|
3'b011: DivStartE = 1'b0;
|
||||||
|
3'b100: DivStartE = 1'b1;
|
||||||
|
3'b101: DivStartE = 1'b1;
|
||||||
|
3'b110: DivStartE = 1'b1;
|
||||||
|
3'b111: DivStartE = 1'b1;
|
||||||
endcase
|
endcase
|
||||||
|
|
||||||
// Handle sign extension for W-type instructions
|
// Handle sign extension for W-type instructions
|
||||||
|
@ -84,7 +84,8 @@ module wallypipelinedhart (
|
|||||||
logic PCSrcE;
|
logic PCSrcE;
|
||||||
logic CSRWritePendingDEM;
|
logic CSRWritePendingDEM;
|
||||||
logic LoadStallD, MulDivStallD, CSRRdStallD;
|
logic LoadStallD, MulDivStallD, CSRRdStallD;
|
||||||
logic DivDoneW;
|
logic DivDoneE;
|
||||||
|
logic DivBusyE;
|
||||||
logic [4:0] SetFflagsM;
|
logic [4:0] SetFflagsM;
|
||||||
logic [2:0] FRM_REGW;
|
logic [2:0] FRM_REGW;
|
||||||
logic FloatRegWriteW;
|
logic FloatRegWriteW;
|
||||||
|
@ -54,9 +54,9 @@ module testbench();
|
|||||||
"rv64m/I-MULH-01", "3000",
|
"rv64m/I-MULH-01", "3000",
|
||||||
"rv64m/I-MULHSU-01", "3000",
|
"rv64m/I-MULHSU-01", "3000",
|
||||||
"rv64m/I-MULHU-01", "3000",
|
"rv64m/I-MULHU-01", "3000",
|
||||||
"rv64m/I-MULW-01", "3000"
|
"rv64m/I-MULW-01", "3000",
|
||||||
// "rv64m/I-DIV-01", "3000",
|
// "rv64m/I-DIV-01", "3000",
|
||||||
// "rv64m/I-DIVU-01", "3000"
|
"rv64m/I-DIVU-01", "3000"
|
||||||
// "rv64m/I-DIVUW-01", "3000",
|
// "rv64m/I-DIVUW-01", "3000",
|
||||||
// "rv64m/I-DIVW-01", "3000",
|
// "rv64m/I-DIVW-01", "3000",
|
||||||
// "rv64m/I-REM-01", "3000",
|
// "rv64m/I-REM-01", "3000",
|
||||||
|
Loading…
Reference in New Issue
Block a user