mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Removed PCW and InstrW from ifu
This commit is contained in:
parent
51291949d8
commit
139c2076a1
@ -136,7 +136,7 @@ add wave /testbench_busybear/InstrMName
|
|||||||
#add wave -hex /testbench_busybear/dut/hart/dmem/AdrM
|
#add wave -hex /testbench_busybear/dut/hart/dmem/AdrM
|
||||||
#add wave -hex /testbench_busybear/dut/hart/dmem/WriteDataM
|
#add wave -hex /testbench_busybear/dut/hart/dmem/WriteDataM
|
||||||
#add wave -divider
|
#add wave -divider
|
||||||
add wave -hex /testbench_busybear/dut/hart/ifu/PCW
|
add wave -hex /testbench_busybear/PCW
|
||||||
##add wave -hex /testbench_busybear/dut/hart/ifu/InstrW
|
##add wave -hex /testbench_busybear/dut/hart/ifu/InstrW
|
||||||
add wave /testbench_busybear/InstrWName
|
add wave /testbench_busybear/InstrWName
|
||||||
#add wave /testbench_busybear/dut/hart/ieu/dp/RegWriteW
|
#add wave /testbench_busybear/dut/hart/ieu/dp/RegWriteW
|
||||||
|
@ -69,8 +69,8 @@ add wave -hex /testbench/dut/hart/ifu/PCM
|
|||||||
add wave -hex /testbench/dut/hart/ifu/InstrM
|
add wave -hex /testbench/dut/hart/ifu/InstrM
|
||||||
add wave /testbench/InstrMName
|
add wave /testbench/InstrMName
|
||||||
add wave -divider Write
|
add wave -divider Write
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCW
|
add wave -hex /testbench/PCW
|
||||||
add wave -hex /testbench/dut/hart/ifu/InstrW
|
add wave -hex /testbench/InstrW
|
||||||
add wave /testbench/InstrWName
|
add wave /testbench/InstrWName
|
||||||
#add wave -hex /testbench/dut/hart/ieu/dp/SrcAE
|
#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/SrcBE
|
||||||
@ -81,7 +81,7 @@ add wave -divider Regfile_signals
|
|||||||
#add wave -hex /testbench/dut/uncore/HADDR
|
#add wave -hex /testbench/dut/uncore/HADDR
|
||||||
#add wave -hex /testbench/dut/uncore/HWDATA
|
#add wave -hex /testbench/dut/uncore/HWDATA
|
||||||
#add wave -divider
|
#add wave -divider
|
||||||
#add wave -hex /testbench/dut/hart/ifu/PCW
|
#add wave -hex /testbench/PCW
|
||||||
#add wave /testbench/InstrWName
|
#add wave /testbench/InstrWName
|
||||||
#add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
#add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
||||||
#add wave -hex /testbench/dut/hart/ieu/dp/ResultW
|
#add wave -hex /testbench/dut/hart/ieu/dp/ResultW
|
||||||
|
@ -69,8 +69,8 @@ add wave -hex /testbench/dut/hart/ifu/PCM
|
|||||||
add wave -hex /testbench/dut/hart/ifu/InstrM
|
add wave -hex /testbench/dut/hart/ifu/InstrM
|
||||||
add wave /testbench/InstrMName
|
add wave /testbench/InstrMName
|
||||||
add wave -divider Write
|
add wave -divider Write
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCW
|
add wave -hex /testbench/PCW
|
||||||
add wave -hex /testbench/dut/hart/ifu/InstrW
|
add wave -hex /testbench/InstrW
|
||||||
add wave /testbench/InstrWName
|
add wave /testbench/InstrWName
|
||||||
#add wave -hex /testbench/dut/hart/ieu/dp/SrcAE
|
#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/SrcBE
|
||||||
@ -81,7 +81,7 @@ add wave -divider Regfile_signals
|
|||||||
#add wave -hex /testbench/dut/uncore/HADDR
|
#add wave -hex /testbench/dut/uncore/HADDR
|
||||||
#add wave -hex /testbench/dut/uncore/HWDATA
|
#add wave -hex /testbench/dut/uncore/HWDATA
|
||||||
#add wave -divider
|
#add wave -divider
|
||||||
#add wave -hex /testbench/dut/hart/ifu/PCW
|
#add wave -hex /testbench/PCW
|
||||||
#add wave /testbench/InstrWName
|
#add wave /testbench/InstrWName
|
||||||
#add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
#add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
||||||
#add wave -hex /testbench/dut/hart/ieu/dp/ResultW
|
#add wave -hex /testbench/dut/hart/ieu/dp/ResultW
|
||||||
|
@ -45,7 +45,7 @@ add wave -noupdate /testbench/dut/uncore/dtim/memwrite
|
|||||||
add wave -noupdate -radix hexadecimal /testbench/dut/uncore/HADDR
|
add wave -noupdate -radix hexadecimal /testbench/dut/uncore/HADDR
|
||||||
add wave -noupdate -radix hexadecimal /testbench/dut/uncore/HWDATA
|
add wave -noupdate -radix hexadecimal /testbench/dut/uncore/HWDATA
|
||||||
add wave -noupdate -divider <NULL>
|
add wave -noupdate -divider <NULL>
|
||||||
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCW
|
add wave -noupdate -radix hexadecimal /testbench/PCW
|
||||||
add wave -noupdate /testbench/InstrWName
|
add wave -noupdate /testbench/InstrWName
|
||||||
add wave -noupdate /testbench/dut/hart/ieu/dp/RegWriteW
|
add wave -noupdate /testbench/dut/hart/ieu/dp/RegWriteW
|
||||||
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ieu/dp/ResultW
|
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ieu/dp/ResultW
|
||||||
@ -219,7 +219,7 @@ add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/IllegalCompInstrD
|
|||||||
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCPlusUpperF
|
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCPlusUpperF
|
||||||
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCPlus2or4F
|
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCPlus2or4F
|
||||||
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCD
|
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCD
|
||||||
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCW
|
add wave -noupdate -radix hexadecimal /testbench/PCW
|
||||||
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCLinkD
|
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCLinkD
|
||||||
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCLinkE
|
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCLinkE
|
||||||
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCLinkM
|
add wave -noupdate -radix hexadecimal /testbench/dut/hart/ifu/PCLinkM
|
||||||
|
@ -55,8 +55,8 @@ add wave -hex /testbench/dut/hart/ebu/CaptureDataM
|
|||||||
add wave -hex /testbench/dut/hart/ebu/InstrStall
|
add wave -hex /testbench/dut/hart/ebu/InstrStall
|
||||||
add wave -divider
|
add wave -divider
|
||||||
|
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCW
|
add wave -hex /testbench/PCW
|
||||||
add wave -hex /testbench/dut/hart/ifu/InstrW
|
add wave -hex /testbench/InstrW
|
||||||
add wave /testbench/InstrWName
|
add wave /testbench/InstrWName
|
||||||
add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
||||||
add wave -hex /testbench/dut/hart/ebu/ReadDataW
|
add wave -hex /testbench/dut/hart/ebu/ReadDataW
|
||||||
|
@ -40,8 +40,8 @@ add wave /testbench/dut/uncore/dtim/memwrite
|
|||||||
add wave -hex /testbench/dut/uncore/HADDR
|
add wave -hex /testbench/dut/uncore/HADDR
|
||||||
add wave -hex /testbench/dut/uncore/HWDATA
|
add wave -hex /testbench/dut/uncore/HWDATA
|
||||||
add wave -divider
|
add wave -divider
|
||||||
add wave -hex /testbench/dut/hart/ifu/PCW
|
add wave -hex /testbench/PCW
|
||||||
add wave -hex /testbench/dut/hart/ifu/InstrW
|
add wave -hex /testbench/InstrW
|
||||||
add wave /testbench/InstrWName
|
add wave /testbench/InstrWName
|
||||||
add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
add wave /testbench/dut/hart/ieu/dp/RegWriteW
|
||||||
add wave -hex /testbench/dut/hart/ieu/dp/ResultW
|
add wave -hex /testbench/dut/hart/ieu/dp/ResultW
|
||||||
|
@ -125,7 +125,7 @@ add wave -noupdate -expand -group PCS /testbench/dut/hart/PCF
|
|||||||
add wave -noupdate -expand -group PCS /testbench/dut/hart/ifu/PCD
|
add wave -noupdate -expand -group PCS /testbench/dut/hart/ifu/PCD
|
||||||
add wave -noupdate -expand -group PCS /testbench/dut/hart/PCE
|
add wave -noupdate -expand -group PCS /testbench/dut/hart/PCE
|
||||||
add wave -noupdate -expand -group PCS /testbench/dut/hart/PCM
|
add wave -noupdate -expand -group PCS /testbench/dut/hart/PCM
|
||||||
add wave -noupdate -expand -group PCS /testbench/dut/hart/ifu/PCW
|
add wave -noupdate -expand -group PCS /testbench/PCW
|
||||||
add wave -noupdate -group {function radix debug} /testbench/functionRadix/function_radix/FunctionAddr
|
add wave -noupdate -group {function radix debug} /testbench/functionRadix/function_radix/FunctionAddr
|
||||||
add wave -noupdate -group {function radix debug} -radix unsigned /testbench/functionRadix/function_radix/ProgramAddrIndex
|
add wave -noupdate -group {function radix debug} -radix unsigned /testbench/functionRadix/function_radix/ProgramAddrIndex
|
||||||
add wave -noupdate -group {function radix debug} /testbench/functionRadix/function_radix/reset
|
add wave -noupdate -group {function radix debug} /testbench/functionRadix/function_radix/reset
|
||||||
|
@ -71,9 +71,9 @@ module ifu (
|
|||||||
logic misaligned, BranchMisalignedFaultE, BranchMisalignedFaultM, TrapMisalignedFaultM;
|
logic misaligned, BranchMisalignedFaultE, BranchMisalignedFaultM, TrapMisalignedFaultM;
|
||||||
logic PrivilegedChangePCM;
|
logic PrivilegedChangePCM;
|
||||||
logic IllegalCompInstrD;
|
logic IllegalCompInstrD;
|
||||||
logic [`XLEN-1:0] PCPlusUpperF, PCPlus2or4F, PCD, PCW, PCLinkD, PCLinkM;
|
logic [`XLEN-1:0] PCPlusUpperF, PCPlus2or4F, PCD, PCLinkD, PCLinkM;
|
||||||
logic CompressedF;
|
logic CompressedF;
|
||||||
logic [31:0] InstrF, InstrRawD, InstrE, InstrW;
|
logic [31:0] InstrF, InstrRawD, InstrE;
|
||||||
logic [31:0] nop = 32'h00000013; // instruction for NOP
|
logic [31:0] nop = 32'h00000013; // instruction for NOP
|
||||||
|
|
||||||
// *** temporary hack until walker is hooked up -- Thomas F
|
// *** temporary hack until walker is hooked up -- Thomas F
|
||||||
@ -196,10 +196,10 @@ module ifu (
|
|||||||
|
|
||||||
flopenr #(32) InstrEReg(clk, reset, ~StallE, FlushE ? nop : InstrD, InstrE);
|
flopenr #(32) InstrEReg(clk, reset, ~StallE, FlushE ? nop : InstrD, InstrE);
|
||||||
flopenr #(32) InstrMReg(clk, reset, ~StallM, FlushM ? nop : InstrE, InstrM);
|
flopenr #(32) InstrMReg(clk, reset, ~StallM, FlushM ? nop : InstrE, InstrM);
|
||||||
flopenr #(32) InstrWReg(clk, reset, ~StallW, FlushW ? nop : InstrM, InstrW); // just for testbench, delete later
|
// flopenr #(32) InstrWReg(clk, reset, ~StallW, FlushW ? nop : InstrM, InstrW); // just for testbench, delete later
|
||||||
flopenr #(`XLEN) PCEReg(clk, reset, ~StallE, PCD, PCE);
|
flopenr #(`XLEN) PCEReg(clk, reset, ~StallE, PCD, PCE);
|
||||||
flopenr #(`XLEN) PCMReg(clk, reset, ~StallM, PCE, PCM);
|
flopenr #(`XLEN) PCMReg(clk, reset, ~StallM, PCE, PCM);
|
||||||
flopenr #(`XLEN) PCWReg(clk, reset, ~StallW, PCM, PCW); // *** probably not needed; delete later
|
// flopenr #(`XLEN) PCWReg(clk, reset, ~StallW, PCM, PCW); // *** probably not needed; delete later
|
||||||
|
|
||||||
flopenrc #(4) InstrClassRegE(.clk(clk),
|
flopenrc #(4) InstrClassRegE(.clk(clk),
|
||||||
.reset(reset),
|
.reset(reset),
|
||||||
|
@ -143,6 +143,9 @@ module testbench_busybear();
|
|||||||
logic [63:0] pcExpected;
|
logic [63:0] pcExpected;
|
||||||
logic [63:0] regExpected;
|
logic [63:0] regExpected;
|
||||||
integer regNumExpected;
|
integer regNumExpected;
|
||||||
|
logic [`XLEN-1:0] PCW;
|
||||||
|
|
||||||
|
flopenr #(`XLEN) PCWReg(clk, reset, ~StallW, dut.hart.ifu.PCM, PCW);
|
||||||
|
|
||||||
genvar i;
|
genvar i;
|
||||||
generate
|
generate
|
||||||
@ -349,8 +352,8 @@ module testbench_busybear();
|
|||||||
string PCtextW, PCtext2W;
|
string PCtextW, PCtext2W;
|
||||||
logic [31:0] InstrWExpected;
|
logic [31:0] InstrWExpected;
|
||||||
logic [63:0] PCWExpected;
|
logic [63:0] PCWExpected;
|
||||||
always @(dut.hart.ifu.PCW or dut.hart.ieu.InstrValidW) begin
|
always @(PCW or dut.hart.ieu.InstrValidW) begin
|
||||||
if(dut.hart.ieu.InstrValidW && dut.hart.ifu.PCW != 0) begin
|
if(dut.hart.ieu.InstrValidW && PCW != 0) begin
|
||||||
if($feof(data_file_PCW)) begin
|
if($feof(data_file_PCW)) begin
|
||||||
$display("no more PC data to read");
|
$display("no more PC data to read");
|
||||||
`ERROR
|
`ERROR
|
||||||
@ -363,8 +366,8 @@ module testbench_busybear();
|
|||||||
scan_file_PCW = $fscanf(data_file_PCW, "%x\n", InstrWExpected);
|
scan_file_PCW = $fscanf(data_file_PCW, "%x\n", InstrWExpected);
|
||||||
// then expected PC value
|
// then expected PC value
|
||||||
scan_file_PCW = $fscanf(data_file_PCW, "%x\n", PCWExpected);
|
scan_file_PCW = $fscanf(data_file_PCW, "%x\n", PCWExpected);
|
||||||
if(~equal(dut.hart.ifu.PCW,PCWExpected,2)) begin
|
if(~equal(PCW,PCWExpected,2)) begin
|
||||||
$display("%0t ps, instr %0d: PCW does not equal PCW expected: %x, %x", $time, instrs, dut.hart.ifu.PCW, PCWExpected);
|
$display("%0t ps, instr %0d: PCW does not equal PCW expected: %x, %x", $time, instrs, PCW, PCWExpected);
|
||||||
`ERROR
|
`ERROR
|
||||||
end
|
end
|
||||||
//if(it.InstrW != InstrWExpected) begin
|
//if(it.InstrW != InstrWExpected) begin
|
||||||
@ -505,6 +508,7 @@ module testbench_busybear();
|
|||||||
// Track names of instructions
|
// Track names of instructions
|
||||||
string InstrFName, InstrDName, InstrEName, InstrMName, InstrWName;
|
string InstrFName, InstrDName, InstrEName, InstrMName, InstrWName;
|
||||||
logic [31:0] InstrW;
|
logic [31:0] InstrW;
|
||||||
|
flopenr #(32) InstrWReg(clk, reset, ~dut.hart.hazard.StallW, dut.hart.hazard.FlushW ? nop : dut.hart.ifu.InstrM, InstrW);
|
||||||
instrNameDecTB dec(dut.hart.ifu.InstrF, InstrFName);
|
instrNameDecTB dec(dut.hart.ifu.InstrF, InstrFName);
|
||||||
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
||||||
dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
||||||
|
@ -60,12 +60,18 @@ module testbench();
|
|||||||
assign HRDATAEXT = 0;
|
assign HRDATAEXT = 0;
|
||||||
wallypipelinedsoc dut(.*);
|
wallypipelinedsoc dut(.*);
|
||||||
// Track names of instructions
|
// Track names of instructions
|
||||||
|
logic [31:0] InstrW;
|
||||||
|
flopenr #(32) InstrWReg(clk, reset, ~dut.hart.hazard.StallW, dut.hart.hazard.FlushW ? nop : dut.hart.ifu.InstrM, InstrW);
|
||||||
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
||||||
dut.hart.ifu.InstrF,
|
dut.hart.ifu.InstrF,
|
||||||
dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
||||||
dut.hart.ifu.InstrM, dut.hart.ifu.InstrW,
|
dut.hart.ifu.InstrM, InstrW,
|
||||||
InstrFName, InstrDName, InstrEName, InstrMName, InstrWName);
|
InstrFName, InstrDName, InstrEName, InstrMName, InstrWName);
|
||||||
// initialize tests
|
// initialize tests
|
||||||
|
|
||||||
|
logic [`XLEN-1:0] PCW;
|
||||||
|
flopenr #(`XLEN) PCWReg(clk, reset, ~StallW, dut.hart.ifu.PCM, PCW);
|
||||||
|
|
||||||
integer j;
|
integer j;
|
||||||
initial
|
initial
|
||||||
begin
|
begin
|
||||||
|
@ -59,12 +59,20 @@ module testbench();
|
|||||||
assign HRESPEXT = 0;
|
assign HRESPEXT = 0;
|
||||||
assign HRDATAEXT = 0;
|
assign HRDATAEXT = 0;
|
||||||
wallypipelinedsoc dut(.*);
|
wallypipelinedsoc dut(.*);
|
||||||
|
|
||||||
|
logic [31:0] InstrW;
|
||||||
|
flopenr #(32) InstrWReg(clk, reset, ~dut.hart.hazard.StallW, dut.hart.hazard.FlushW ? nop : dut.hart.ifu.InstrM, InstrW);
|
||||||
|
|
||||||
// Track names of instructions
|
// Track names of instructions
|
||||||
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
||||||
dut.hart.ifu.InstrF,
|
dut.hart.ifu.InstrF,
|
||||||
dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
||||||
dut.hart.ifu.InstrM, dut.hart.ifu.InstrW,
|
dut.hart.ifu.InstrM, InstrW,
|
||||||
InstrFName, InstrDName, InstrEName, InstrMName, InstrWName);
|
InstrFName, InstrDName, InstrEName, InstrMName, InstrWName);
|
||||||
|
|
||||||
|
logic [`XLEN-1:0] PCW;
|
||||||
|
flopenr #(`XLEN) PCWReg(clk, reset, ~StallW, dut.hart.ifu.PCM, PCW);
|
||||||
|
|
||||||
// initialize tests
|
// initialize tests
|
||||||
integer j;
|
integer j;
|
||||||
initial
|
initial
|
||||||
|
@ -38,7 +38,7 @@ module testbench();
|
|||||||
logic [`XLEN-1:0] signature[0:10000];
|
logic [`XLEN-1:0] signature[0:10000];
|
||||||
logic [`XLEN-1:0] testadr;
|
logic [`XLEN-1:0] testadr;
|
||||||
string InstrFName, InstrDName, InstrEName, InstrMName, InstrWName;
|
string InstrFName, InstrDName, InstrEName, InstrMName, InstrWName;
|
||||||
//logic [31:0] InstrW;
|
logic [31:0] InstrW;
|
||||||
logic [`XLEN-1:0] meminit;
|
logic [`XLEN-1:0] meminit;
|
||||||
string tests64a[] = '{
|
string tests64a[] = '{
|
||||||
"rv64a/WALLY-AMO", "2110",
|
"rv64a/WALLY-AMO", "2110",
|
||||||
@ -332,8 +332,10 @@ string tests32i[] = {
|
|||||||
logic [1:0] HTRANS;
|
logic [1:0] HTRANS;
|
||||||
logic HMASTLOCK;
|
logic HMASTLOCK;
|
||||||
logic HCLK, HRESETn;
|
logic HCLK, HRESETn;
|
||||||
|
logic [`XLEN-1:0] PCW;
|
||||||
|
|
||||||
|
flopenr #(`XLEN) PCWReg(clk, reset, ~dut.hart.hazard.StallW, dut.hart.ifu.PCM, PCW);
|
||||||
|
flopenr #(32) InstrWReg(clk, reset, ~dut.hart.hazard.StallW, dut.hart.hazard.FlushW ? nop : dut.hart.ifu.InstrM, InstrW);
|
||||||
// pick tests based on modes supported
|
// pick tests based on modes supported
|
||||||
initial
|
initial
|
||||||
if (`XLEN == 64) begin // RV64
|
if (`XLEN == 64) begin // RV64
|
||||||
@ -372,7 +374,7 @@ string tests32i[] = {
|
|||||||
// Track names of instructions
|
// Track names of instructions
|
||||||
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
||||||
dut.hart.ifu.InstrF, dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
dut.hart.ifu.InstrF, dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
||||||
dut.hart.ifu.InstrM, dut.hart.ifu.InstrW,
|
dut.hart.ifu.InstrM, InstrW,
|
||||||
InstrFName, InstrDName, InstrEName, InstrMName, InstrWName);
|
InstrFName, InstrDName, InstrEName, InstrMName, InstrWName);
|
||||||
|
|
||||||
// initialize tests
|
// initialize tests
|
||||||
|
@ -73,13 +73,15 @@ module testbench();
|
|||||||
assign HRDATAEXT = 0;
|
assign HRDATAEXT = 0;
|
||||||
|
|
||||||
wallypipelinedsoc dut(.*);
|
wallypipelinedsoc dut(.*);
|
||||||
|
flopenr #(32) InstrWReg(clk, reset, ~dut.hart.hazard.StallW, dut.hart.hazard.FlushW ? nop : dut.hart.ifu.InstrM, InstrW);
|
||||||
// Track names of instructions
|
// Track names of instructions
|
||||||
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
||||||
dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
||||||
dut.hart.ifu.InstrM, InstrW,
|
dut.hart.ifu.InstrM, InstrW,
|
||||||
InstrDName, InstrEName, InstrMName, InstrWName);
|
InstrDName, InstrEName, InstrMName, InstrWName);
|
||||||
|
|
||||||
|
logic [`XLEN-1:0] PCW;
|
||||||
|
flopenr #(`XLEN) PCWReg(clk, reset, ~StallW, dut.hart.ifu.PCM, PCW);
|
||||||
// initialize tests
|
// initialize tests
|
||||||
initial
|
initial
|
||||||
begin
|
begin
|
||||||
|
@ -73,13 +73,15 @@ module testbench();
|
|||||||
assign HRDATAEXT = 0;
|
assign HRDATAEXT = 0;
|
||||||
|
|
||||||
wallypipelinedsoc dut(.*);
|
wallypipelinedsoc dut(.*);
|
||||||
|
flopenr #(32) InstrWReg(clk, reset, ~dut.hart.hazard.StallW, dut.hart.hazard.FlushW ? nop : dut.hart.ifu.InstrM, InstrW);
|
||||||
// Track names of instructions
|
// Track names of instructions
|
||||||
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
instrTrackerTB it(clk, reset, dut.hart.ieu.dp.FlushE,
|
||||||
dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
dut.hart.ifu.InstrD, dut.hart.ifu.InstrE,
|
||||||
dut.hart.ifu.InstrM, InstrW,
|
dut.hart.ifu.InstrM, InstrW,
|
||||||
InstrDName, InstrEName, InstrMName, InstrWName);
|
InstrDName, InstrEName, InstrMName, InstrWName);
|
||||||
|
|
||||||
|
logic [`XLEN-1:0] PCW;
|
||||||
|
flopenr #(`XLEN) PCWReg(clk, reset, ~StallW, dut.hart.ifu.PCM, PCW);
|
||||||
// initialize tests
|
// initialize tests
|
||||||
initial
|
initial
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user