mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Remove old imperas tests
This commit is contained in:
parent
2f09369921
commit
ef442808a9
@ -2,26 +2,26 @@
|
||||
// testbench.sv
|
||||
//
|
||||
// Written: David_Harris@hmc.edu 9 January 2021
|
||||
// Modified:
|
||||
// Modified:
|
||||
//
|
||||
// Purpose: Wally Testbench and helper modules
|
||||
// Applies test programs from the riscv-arch-test and Imperas suites
|
||||
//
|
||||
// Applies test programs from the riscv-arch-test and other custom tests
|
||||
//
|
||||
// A component of the Wally configurable RISC-V project.
|
||||
//
|
||||
//
|
||||
// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1
|
||||
//
|
||||
// Licensed under the Solderpad Hardware License v 2.1 (the “License”); you may not use this file
|
||||
// except in compliance with the License, or, at your option, the Apache License version 2.0. You
|
||||
// Licensed under the Solderpad Hardware License v 2.1 (the “License”); you may not use this file
|
||||
// except in compliance with the License, or, at your option, the Apache License version 2.0. You
|
||||
// may obtain a copy of the License at
|
||||
//
|
||||
// https://solderpad.org/licenses/SHL-2.1/
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, any work distributed under the
|
||||
// License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
// either express or implied. See the License for the specific language governing permissions
|
||||
// Unless required by applicable law or agreed to in writing, any work distributed under the
|
||||
// License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
// either express or implied. See the License for the specific language governing permissions
|
||||
// and limitations under the License.
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -50,7 +50,7 @@ module testbench;
|
||||
parameter I_CACHE_ADDR_LOGGER=0;
|
||||
parameter D_CACHE_ADDR_LOGGER=0;
|
||||
parameter RVVI_SYNTH_SUPPORTED=0;
|
||||
|
||||
|
||||
`ifdef USE_IMPERAS_DV
|
||||
import idvPkg::*;
|
||||
import rvviApiPkg::*;
|
||||
@ -64,7 +64,7 @@ module testbench;
|
||||
`elsif VCS
|
||||
import "DPI-C" function string getenv(input string env_name);
|
||||
string RISCV_DIR = getenv("RISCV");
|
||||
string WALLY_DIR = getenv("WALLY");
|
||||
string WALLY_DIR = getenv("WALLY");
|
||||
`else
|
||||
string RISCV_DIR = "$RISCV";
|
||||
string WALLY_DIR = "$WALLY";
|
||||
@ -82,7 +82,7 @@ module testbench;
|
||||
|
||||
// DUT signals
|
||||
logic [P.AHBW-1:0] HRDATAEXT;
|
||||
logic HREADYEXT, HRESPEXT;
|
||||
logic HREADYEXT, HRESPEXT;
|
||||
logic [P.PA_BITS-1:0] HADDR;
|
||||
logic [P.AHBW-1:0] HWDATA;
|
||||
logic [P.XLEN/8-1:0] HWSTRB;
|
||||
@ -102,12 +102,12 @@ module testbench;
|
||||
logic SDCCmd;
|
||||
logic SDCIn;
|
||||
logic [3:0] SDCCS;
|
||||
logic SDCCLK;
|
||||
logic SDCCLK;
|
||||
|
||||
logic HREADY;
|
||||
logic HSELEXT;
|
||||
|
||||
|
||||
|
||||
string ProgramAddrMapFile, ProgramLabelMapFile;
|
||||
integer ProgramAddrLabelArray [string];
|
||||
|
||||
@ -118,7 +118,7 @@ module testbench;
|
||||
|
||||
string tests[];
|
||||
logic DCacheFlushDone, DCacheFlushStart;
|
||||
logic riscofTest;
|
||||
logic riscofTest;
|
||||
logic Validate;
|
||||
logic SelectTest;
|
||||
logic TestComplete;
|
||||
@ -134,36 +134,30 @@ module testbench;
|
||||
if (!$value$plusargs("INSTR_LIMIT=%d", INSTR_LIMIT))
|
||||
INSTR_LIMIT = 0;
|
||||
//$display("TEST = %s ElfFile = %s", TEST, ElfFile);
|
||||
|
||||
|
||||
// pick tests based on modes supported
|
||||
//tests = '{};
|
||||
if (P.XLEN == 64) begin // RV64
|
||||
case (TEST)
|
||||
"arch64i": tests = arch64i;
|
||||
"arch64priv": tests = arch64priv;
|
||||
"arch64c": if (P.C_SUPPORTED)
|
||||
"arch64c": if (P.ZCA_SUPPORTED)
|
||||
if (P.ZICSR_SUPPORTED) tests = {arch64c, arch64cpriv};
|
||||
else tests = {arch64c};
|
||||
"arch64m": if (P.M_SUPPORTED) tests = arch64m;
|
||||
"arch64a_amo": if (P.ZAAMO_SUPPORTED) tests = arch64a_amo;
|
||||
"arch64f": if (P.F_SUPPORTED) tests = arch64f;
|
||||
"arch64d": if (P.D_SUPPORTED) tests = arch64d;
|
||||
"arch64d": if (P.D_SUPPORTED) tests = arch64d;
|
||||
"arch64f_fma": if (P.F_SUPPORTED) tests = arch64f_fma;
|
||||
"arch64d_fma": if (P.D_SUPPORTED) tests = arch64d_fma;
|
||||
"arch64d_fma": if (P.D_SUPPORTED) tests = arch64d_fma;
|
||||
"arch64f_divsqrt": if (P.F_SUPPORTED) tests = arch64f_divsqrt;
|
||||
"arch64d_divsqrt": if (P.D_SUPPORTED) tests = arch64d_divsqrt;
|
||||
"arch64d_divsqrt": if (P.D_SUPPORTED) tests = arch64d_divsqrt;
|
||||
"arch64zifencei": if (P.ZIFENCEI_SUPPORTED) tests = arch64zifencei;
|
||||
"arch64zicond": if (P.ZICOND_SUPPORTED) tests = arch64zicond;
|
||||
"imperas64i": tests = imperas64i;
|
||||
"imperas64f": if (P.F_SUPPORTED) tests = imperas64f;
|
||||
"imperas64d": if (P.D_SUPPORTED) tests = imperas64d;
|
||||
"imperas64m": if (P.M_SUPPORTED) tests = imperas64m;
|
||||
"wally64q": if (P.Q_SUPPORTED) tests = wally64q;
|
||||
"wally64a_lrsc": if (P.ZALRSC_SUPPORTED) tests = wally64a_lrsc;
|
||||
"imperas64c": if (P.C_SUPPORTED) tests = imperas64c;
|
||||
else tests = imperas64iNOc;
|
||||
"custom": tests = custom;
|
||||
"wally64i": tests = wally64i;
|
||||
"wally64i": tests = wally64i;
|
||||
"wally64priv": tests = wally64priv;
|
||||
"wally64periph": tests = wally64periph;
|
||||
"coremark": tests = coremark;
|
||||
@ -177,7 +171,7 @@ module testbench;
|
||||
"arch64zicboz": if (P.ZICBOZ_SUPPORTED) tests = arch64zicboz;
|
||||
"arch64zcb": if (P.ZCB_SUPPORTED) tests = arch64zcb;
|
||||
"arch64zfh": if (P.ZFH_SUPPORTED) tests = arch64zfh;
|
||||
"arch64zfh_fma": if (P.ZFH_SUPPORTED) tests = arch64zfh_fma;
|
||||
"arch64zfh_fma": if (P.ZFH_SUPPORTED) tests = arch64zfh_fma;
|
||||
"arch64zfh_divsqrt": if (P.ZFH_SUPPORTED) tests = arch64zfh_divsqrt;
|
||||
"arch64zfaf": if (P.ZFA_SUPPORTED) tests = arch64zfaf;
|
||||
"arch64zfad": if (P.ZFA_SUPPORTED & P.D_SUPPORTED) tests = arch64zfad;
|
||||
@ -188,32 +182,27 @@ module testbench;
|
||||
"arch64zknd": if (P.ZKND_SUPPORTED) tests = arch64zknd;
|
||||
"arch64zkne": if (P.ZKNE_SUPPORTED) tests = arch64zkne;
|
||||
"arch64zknh": if (P.ZKNH_SUPPORTED) tests = arch64zknh;
|
||||
endcase
|
||||
endcase
|
||||
end else begin // RV32
|
||||
case (TEST)
|
||||
"arch32e": tests = arch32e;
|
||||
"arch32e": tests = arch32e;
|
||||
"arch32i": tests = arch32i;
|
||||
"arch32priv": tests = arch32priv;
|
||||
"arch32c": if (P.C_SUPPORTED)
|
||||
"arch32c": if (P.C_SUPPORTED)
|
||||
if (P.ZICSR_SUPPORTED) tests = {arch32c, arch32cpriv};
|
||||
else tests = {arch32c};
|
||||
"arch32m": if (P.M_SUPPORTED) tests = arch32m;
|
||||
"arch32a_amo": if (P.ZAAMO_SUPPORTED) tests = arch32a_amo;
|
||||
"arch32a_amo": if (P.ZAAMO_SUPPORTED) tests = arch32a_amo;
|
||||
"arch32f": if (P.F_SUPPORTED) tests = arch32f;
|
||||
"arch32d": if (P.D_SUPPORTED) tests = arch32d;
|
||||
"arch32f_fma": if (P.F_SUPPORTED) tests = arch32f_fma;
|
||||
"arch32d_fma": if (P.D_SUPPORTED) tests = arch32d_fma;
|
||||
"arch32f_divsqrt": if (P.F_SUPPORTED) tests = arch32f_divsqrt;
|
||||
"arch32d_divsqrt": if (P.D_SUPPORTED) tests = arch32d_divsqrt;
|
||||
"arch32d_divsqrt": if (P.D_SUPPORTED) tests = arch32d_divsqrt;
|
||||
"arch32zifencei": if (P.ZIFENCEI_SUPPORTED) tests = arch32zifencei;
|
||||
"arch32zicond": if (P.ZICOND_SUPPORTED) tests = arch32zicond;
|
||||
"imperas32i": tests = imperas32i;
|
||||
"imperas32f": if (P.F_SUPPORTED) tests = imperas32f;
|
||||
"imperas32m": if (P.M_SUPPORTED) tests = imperas32m;
|
||||
"wally32a_lrsc": if (P.ZALRSC_SUPPORTED) tests = wally32a_lrsc;
|
||||
"imperas32c": if (P.C_SUPPORTED) tests = imperas32c;
|
||||
else tests = imperas32iNOc;
|
||||
"wally32i": tests = wally32i;
|
||||
"wally32a_lrsc": if (P.ZALRSC_SUPPORTED) tests = wally32a_lrsc;
|
||||
"wally32i": tests = wally32i;
|
||||
"wally32priv": tests = wally32priv;
|
||||
"wally32periph": tests = wally32periph;
|
||||
"ahb32" : tests = ahb32;
|
||||
@ -226,7 +215,7 @@ module testbench;
|
||||
"arch32zicboz": if (P.ZICBOZ_SUPPORTED) tests = arch32zicboz;
|
||||
"arch32zcb": if (P.ZCB_SUPPORTED) tests = arch32zcb;
|
||||
"arch32zfh": if (P.ZFH_SUPPORTED) tests = arch32zfh;
|
||||
"arch32zfh_fma": if (P.ZFH_SUPPORTED) tests = arch32zfh_fma;
|
||||
"arch32zfh_fma": if (P.ZFH_SUPPORTED) tests = arch32zfh_fma;
|
||||
"arch32zfh_divsqrt": if (P.ZFH_SUPPORTED) tests = arch32zfh_divsqrt;
|
||||
"arch32zfaf": if (P.ZFA_SUPPORTED) tests = arch32zfaf;
|
||||
"arch32zfad": if (P.ZFA_SUPPORTED & P.D_SUPPORTED) tests = arch32zfad;
|
||||
@ -236,6 +225,7 @@ module testbench;
|
||||
"arch32zknd": if (P.ZKND_SUPPORTED) tests = arch32zknd;
|
||||
"arch32zkne": if (P.ZKNE_SUPPORTED) tests = arch32zkne;
|
||||
"arch32zknh": if (P.ZKNH_SUPPORTED) tests = arch32zknh;
|
||||
"arch32c_misalign": if (P.C_SUPPORTED) tests = arch32c_misalign;
|
||||
endcase
|
||||
end
|
||||
if (tests.size() == 0 & ElfFile == "none") begin
|
||||
@ -292,13 +282,13 @@ module testbench;
|
||||
|
||||
always_ff @(posedge clk)
|
||||
if (TestBenchReset) CurrState <= STATE_TESTBENCH_RESET;
|
||||
else CurrState <= NextState;
|
||||
else CurrState <= NextState;
|
||||
|
||||
// fsm next state logic
|
||||
always_comb begin
|
||||
// riscof tests have a different signature, tests[0] == "1" refers to RiscvArchTests
|
||||
// and tests[0] == "2" refers to WallyRiscvArchTests
|
||||
riscofTest = tests[0] == "1" | tests[0] == "2";
|
||||
// riscof tests have a different signature, tests[0] == "0" refers to RiscvArchTests
|
||||
// and tests[0] == "1" refers to WallyRiscvArchTests
|
||||
riscofTest = tests[0] == "0" | tests[0] == "1";
|
||||
pathname = tvpaths[tests[0].atoi()];
|
||||
|
||||
case(CurrState)
|
||||
@ -321,11 +311,11 @@ module testbench;
|
||||
default: NextState = STATE_TESTBENCH_RESET;
|
||||
endcase
|
||||
end // always_comb
|
||||
// fsm output control logic
|
||||
assign reset_ext = CurrState == STATE_TESTBENCH_RESET | CurrState == STATE_INIT_TEST |
|
||||
CurrState == STATE_RESET_MEMORIES | CurrState == STATE_RESET_MEMORIES2 |
|
||||
// fsm output control logic
|
||||
assign reset_ext = CurrState == STATE_TESTBENCH_RESET | CurrState == STATE_INIT_TEST |
|
||||
CurrState == STATE_RESET_MEMORIES | CurrState == STATE_RESET_MEMORIES2 |
|
||||
CurrState == STATE_LOAD_MEMORIES | CurrState ==STATE_RESET_TEST;
|
||||
// this initialization is very expensive, only do it for coremark.
|
||||
// this initialization is very expensive, only do it for coremark.
|
||||
assign ResetMem = (CurrState == STATE_RESET_MEMORIES | CurrState == STATE_RESET_MEMORIES2) & TEST == "coremark";
|
||||
assign LoadMem = CurrState == STATE_LOAD_MEMORIES;
|
||||
assign ResetCntRst = CurrState == STATE_INIT_TEST;
|
||||
@ -356,7 +346,7 @@ module testbench;
|
||||
assign EcallFaultM = dut.core.priv.priv.EcallFaultM;
|
||||
else
|
||||
assign EcallFaultM = 0;
|
||||
|
||||
|
||||
always @(posedge clk) begin
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Verify the test ran correctly by checking the memory against a known signature.
|
||||
@ -368,12 +358,12 @@ module testbench;
|
||||
$stop;
|
||||
end
|
||||
if(SelectTest) begin
|
||||
if (riscofTest) begin
|
||||
if (riscofTest) begin
|
||||
memfilename = {pathname, tests[test], "/ref/ref.elf.memfile"};
|
||||
elffilename = {pathname, tests[test], "ref/ref.elf"};
|
||||
ProgramAddrMapFile = {pathname, tests[test], "/ref/ref.elf.objdump.addr"};
|
||||
ProgramLabelMapFile = {pathname, tests[test], "/ref/ref.elf.objdump.lab"};
|
||||
end else if(TEST == "buildroot") begin
|
||||
end else if(TEST == "buildroot") begin
|
||||
memfilename = {RISCV_DIR, "/linux-testvectors/ram.bin"};
|
||||
elffilename = "buildroot";
|
||||
bootmemfilename = {RISCV_DIR, "/linux-testvectors/bootmem.bin"};
|
||||
@ -397,8 +387,8 @@ module testbench;
|
||||
ProgramAddrMapFile = {pathname, tests[test], ".elf.objdump.addr"};
|
||||
ProgramLabelMapFile = {pathname, tests[test], ".elf.objdump.lab"};
|
||||
end
|
||||
// declare memory labels that interest us, the updateProgramAddrLabelArray task will find
|
||||
// the addr of each label and fill the array. To expand, add more elements to this array
|
||||
// declare memory labels that interest us, the updateProgramAddrLabelArray task will find
|
||||
// the addr of each label and fill the array. To expand, add more elements to this array
|
||||
// and initialize them to zero (also initilaize them to zero at the start of the next test)
|
||||
updateProgramAddrLabelArray(ProgramAddrMapFile, ProgramLabelMapFile, memfilename, WALLY_DIR, ProgramAddrLabelArray);
|
||||
end
|
||||
@ -408,9 +398,9 @@ module testbench;
|
||||
$fclose(uartoutfile);
|
||||
if (TEST == "embench") begin
|
||||
// Writes contents of begin_signature to .sim.output file
|
||||
// this contains instret and cycles for start and end of test run, used by embench
|
||||
// python speed script to calculate embench speed score.
|
||||
// also, begin_signature contains the results of the self checking mechanism,
|
||||
// this contains instret and cycles for start and end of test run, used by embench
|
||||
// python speed script to calculate embench speed score.
|
||||
// also, begin_signature contains the results of the self checking mechanism,
|
||||
// which will be read by the python script for error checking
|
||||
$display("Embench Benchmark: %s is done.", tests[test]);
|
||||
if (riscofTest) outputfile = {pathname, tests[test], "/ref/ref.sim.output"};
|
||||
@ -433,17 +423,17 @@ module testbench;
|
||||
`else
|
||||
$finish;
|
||||
`endif
|
||||
end else begin
|
||||
end else begin
|
||||
// for tests with no self checking mechanism, read .signature.output file and compare to check for errors
|
||||
// clear signature to prevent contamination from previous tests
|
||||
if (!begin_signature_addr)
|
||||
$display("begin_signature addr not found in %s", ProgramLabelMapFile);
|
||||
else if (TEST != "embench") begin
|
||||
else if (TEST != "embench") begin
|
||||
CheckSignature(pathname, tests[test], riscofTest, begin_signature_addr, errors);
|
||||
if(errors > 0) totalerrors = totalerrors + 1;
|
||||
end
|
||||
end
|
||||
test = test + 1;
|
||||
test = test + 1;
|
||||
if (test == tests.size()) begin
|
||||
if (totalerrors == 0) $display("SUCCESS! All tests ran without failures.");
|
||||
else $display("FAIL: %d test programs had errors", totalerrors);
|
||||
@ -473,7 +463,7 @@ module testbench;
|
||||
if (LoadMem) begin
|
||||
string romfilename, sdcfilename;
|
||||
romfilename = {"../tests/custom/fpga-test-sdc/bin/fpga-test-sdc.memfile"};
|
||||
sdcfilename = {"../testbench/sdc/ramdisk2.hex"};
|
||||
sdcfilename = {"../testbench/sdc/ramdisk2.hex"};
|
||||
//$readmemh(romfilename, dut.uncoregen.uncore.bootrom.bootrom.memory.ROM);
|
||||
//$readmemh(sdcfilename, sdcard.sdcard.FLASHmem);
|
||||
// shorten sdc timers for simulation
|
||||
@ -548,7 +538,7 @@ module testbench;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if (P.DTIM_SUPPORTED) begin
|
||||
always @(posedge clk) begin
|
||||
if (LoadMem) begin
|
||||
@ -569,9 +559,9 @@ module testbench;
|
||||
|
||||
integer adrindex;
|
||||
if (P.UNCORE_RAM_SUPPORTED)
|
||||
always @(posedge clk)
|
||||
always @(posedge clk)
|
||||
if (ResetMem) // program memory is sometimes reset (e.g. for CoreMark, which needs zeroed memory)
|
||||
for (adrindex=0; adrindex<(P.UNCORE_RAM_RANGE>>1+(P.XLEN/32)); adrindex = adrindex+1)
|
||||
for (adrindex=0; adrindex<(P.UNCORE_RAM_RANGE>>1+(P.XLEN/32)); adrindex = adrindex+1)
|
||||
dut.uncoregen.uncore.ram.ram.memory.ram.RAM[adrindex] = '0;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@ -584,10 +574,10 @@ module testbench;
|
||||
assign SPIIn = 1'b0;
|
||||
|
||||
if(P.EXT_MEM_SUPPORTED) begin
|
||||
ram_ahb #(.P(P), .BASE(P.EXT_MEM_BASE), .RANGE(P.EXT_MEM_RANGE))
|
||||
ram (.HCLK, .HRESETn, .HADDR, .HWRITE, .HTRANS, .HWDATA, .HSELRam(HSELEXT),
|
||||
ram_ahb #(.P(P), .BASE(P.EXT_MEM_BASE), .RANGE(P.EXT_MEM_RANGE))
|
||||
ram (.HCLK, .HRESETn, .HADDR, .HWRITE, .HTRANS, .HWDATA, .HSELRam(HSELEXT),
|
||||
.HREADRam(HRDATAEXT), .HREADYRam(HREADYEXT), .HRESPRam(HRESPEXT), .HREADY, .HWSTRB);
|
||||
end else begin
|
||||
end else begin
|
||||
assign HREADYEXT = 1'b1;
|
||||
assign {HRESPEXT, HRDATAEXT} = '0;
|
||||
end
|
||||
@ -597,7 +587,7 @@ module testbench;
|
||||
/* -----\/----- EXCLUDED -----\/-----
|
||||
sdModel sdcard
|
||||
(.sdClk(SDCCLK),
|
||||
.cmd(SDCCmd),
|
||||
.cmd(SDCCmd),
|
||||
.dat(SDCDat));
|
||||
|
||||
assign SDCCmd = SDCCmdOE ? SDCCmdOut : 1'bz;
|
||||
@ -607,14 +597,14 @@ module testbench;
|
||||
-----/\----- EXCLUDED -----/\----- */
|
||||
end else begin
|
||||
assign SDCIn = 1'b1;
|
||||
|
||||
|
||||
end
|
||||
|
||||
wallypipelinedsoc #(P) dut(.clk, .reset_ext, .reset, .ExternalStall(RVVIStall),
|
||||
wallypipelinedsoc #(P) dut(.clk, .reset_ext, .reset, .ExternalStall(RVVIStall),
|
||||
.HRDATAEXT, .HREADYEXT, .HRESPEXT, .HSELEXT,
|
||||
.HCLK, .HRESETn, .HADDR, .HWDATA, .HWSTRB, .HWRITE, .HSIZE, .HBURST, .HPROT,
|
||||
.HTRANS, .HMASTLOCK, .HREADY, .TIMECLK(1'b0), .GPIOIN, .GPIOOUT, .GPIOEN,
|
||||
.UARTSin, .UARTSout, .SPIIn, .SPIOut, .SPICS, .SPICLK, .SDCIn, .SDCCmd, .SDCCS, .SDCCLK);
|
||||
.UARTSin, .UARTSout, .SPIIn, .SPIOut, .SPICS, .SPICLK, .SDCIn, .SDCCmd, .SDCCS, .SDCCLK);
|
||||
|
||||
// generate clock to sequence tests
|
||||
always begin
|
||||
@ -629,17 +619,17 @@ module testbench;
|
||||
logic [3:0] mii_txd;
|
||||
logic mii_tx_en, mii_tx_er;
|
||||
|
||||
rvvitbwrapper #(P, MAX_CSRS, RVVI_INIT_TIME_OUT, RVVI_PACKET_DELAY)
|
||||
rvvitbwrapper #(P, MAX_CSRS, RVVI_INIT_TIME_OUT, RVVI_PACKET_DELAY)
|
||||
rvvitbwrapper(.clk, .reset, .RVVIStall, .mii_tx_clk(clk), .mii_txd, .mii_tx_en, .mii_tx_er,
|
||||
.mii_rx_clk(clk), .mii_rxd('0), .mii_rx_dv('0), .mii_rx_er('0));
|
||||
end else begin
|
||||
assign RVVIStall = '0;
|
||||
end
|
||||
|
||||
|
||||
|
||||
/*
|
||||
// Print key info each cycle for debugging
|
||||
always @(posedge clk) begin
|
||||
always @(posedge clk) begin
|
||||
#2;
|
||||
$display("PCM: %x InstrM: %x (%5s) WriteDataM: %x IEUResultM: %x",
|
||||
dut.core.PCM, dut.core.InstrM, InstrMName, dut.core.WriteDataM, dut.core.ieu.dp.IEUResultM);
|
||||
@ -667,7 +657,7 @@ module testbench;
|
||||
|
||||
// watch for problems such as lockup, reading unitialized memory, bad configs
|
||||
watchdog #(P.XLEN, 1000000) watchdog(.clk, .reset, .TEST); // check if PCW is stuck
|
||||
ramxdetector #(P.XLEN, P.LLEN) ramxdetector(clk, dut.core.lsu.MemRWM[1], dut.core.lsu.LSULoadAccessFaultM, dut.core.lsu.ReadDataM,
|
||||
ramxdetector #(P.XLEN, P.LLEN) ramxdetector(clk, dut.core.lsu.MemRWM[1], dut.core.lsu.LSULoadAccessFaultM, dut.core.lsu.ReadDataM,
|
||||
dut.core.ifu.PCM, InstrM, dut.core.lsu.IEUAdrM, InstrMName);
|
||||
riscvassertions #(P) riscvassertions(); // check assertions for a legal configuration
|
||||
loggers #(P, PrintHPMCounters, I_CACHE_ADDR_LOGGER, D_CACHE_ADDR_LOGGER, BPRED_LOGGER)
|
||||
@ -692,7 +682,7 @@ module testbench;
|
||||
end
|
||||
|
||||
// Termination condition
|
||||
// Terminate on
|
||||
// Terminate on
|
||||
// 1. jump to self loop (0x0000006f)
|
||||
// 2. a store word writes to the address "tohost"
|
||||
// 3. or PC is stuck at 0
|
||||
@ -706,13 +696,13 @@ module testbench;
|
||||
// (FunctionName.PCM == 0 & dut.core.ifu.InstrM == 0 & dut.core.InstrValidM & PrevPCZero));
|
||||
// if (FunctionName.PCM == 0 & dut.core.ifu.InstrM == 0 & dut.core.InstrValidM & PrevPCZero)
|
||||
// $error("Program fetched illegal instruction 0x00000000 from address 0x00000000 twice in a row. Usually due to fault with no fault handler.");
|
||||
end
|
||||
end
|
||||
|
||||
DCacheFlushFSM #(P) DCacheFlushFSM(.clk, .start(DCacheFlushStart), .done(DCacheFlushDone));
|
||||
|
||||
if(P.ZICSR_SUPPORTED) begin
|
||||
logic [P.XLEN-1:0] Minstret;
|
||||
assign Minstret = testbench.dut.core.priv.priv.csr.counters.counters.HPMCOUNTER_REGW[2];
|
||||
assign Minstret = testbench.dut.core.priv.priv.csr.counters.counters.HPMCOUNTER_REGW[2];
|
||||
always @(negedge clk) begin
|
||||
if (INSTR_LIMIT > 0) begin
|
||||
if((Minstret != 0) & (Minstret % 'd100000 == 0)) $display("Reached %d instructions", Minstret);
|
||||
@ -758,14 +748,14 @@ end
|
||||
$display($sformatf("%m @ t=%0t: Expecting RVVI API version %0d.", $time, RVVI_API_VERSION));
|
||||
$fatal;
|
||||
end
|
||||
|
||||
|
||||
void'(rvviRefConfigSetString(IDV_CONFIG_MODEL_VENDOR, "riscv.ovpworld.org"));
|
||||
void'(rvviRefConfigSetString(IDV_CONFIG_MODEL_NAME, "riscv"));
|
||||
void'(rvviRefConfigSetString(IDV_CONFIG_MODEL_VARIANT, "RV64GCK"));
|
||||
void'(rvviRefConfigSetInt(IDV_CONFIG_MODEL_ADDRESS_BUS_WIDTH, XLEN==64 ? 56 : 34));
|
||||
void'(rvviRefConfigSetInt(IDV_CONFIG_MAX_NET_LATENCY_RETIREMENTS, 6));
|
||||
|
||||
if(elffilename == "buildroot") filename = "";
|
||||
if(elffilename == "buildroot") filename = "";
|
||||
else filename = elffilename;
|
||||
|
||||
// use the ImperasDV rvviRefInit to load the reference model with an elf file
|
||||
@ -778,8 +768,8 @@ end
|
||||
if (!rvviRefInit("")) begin // still have to call with nothing
|
||||
$display($sformatf("%m @ t=%0t: rvviRefInit failed", $time));
|
||||
$fatal;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
memfilenameImperasDV = {RISCV_DIR, "/linux-testvectors/ram.bin"};
|
||||
bootmemfilenameImperasDV = {RISCV_DIR, "/linux-testvectors/bootmem.bin"};
|
||||
|
||||
@ -797,7 +787,7 @@ end
|
||||
//$display("boot %08X x32[0]=%08X x32[1]=%08X", index, x32[0], x32[1]);
|
||||
end
|
||||
$fclose(memFile);
|
||||
|
||||
|
||||
$display("RVVI Loading ram.bin");
|
||||
memFile = $fopen(memfilenameImperasDV, "rb");
|
||||
index = 'h80000000 - 8;
|
||||
@ -812,9 +802,9 @@ end
|
||||
//$display("ram %08X x32[0]=%08X x32[1]=%08X", index, x32[0], x32[1]);
|
||||
end
|
||||
$fclose(memFile);
|
||||
|
||||
|
||||
$display("RVVI Loading Complete");
|
||||
|
||||
|
||||
void'(rvviRefPcSet(0, P.RESET_VECTOR)); // set BOOTROM address
|
||||
end
|
||||
|
||||
@ -829,22 +819,22 @@ end
|
||||
void'(rvviRefCsrSetVolatile(0, 32'hB80)); // MCYCLEH
|
||||
void'(rvviRefCsrSetVolatile(0, 32'hC82)); // INSTRETH
|
||||
void'(rvviRefCsrSetVolatile(0, 32'hB82)); // MINSTRETH
|
||||
void'(rvviRefCsrSetVolatile(0, 32'hC81)); // TIMEH
|
||||
void'(rvviRefCsrSetVolatile(0, 32'hC81)); // TIMEH
|
||||
end
|
||||
// User HPMCOUNTER3 - HPMCOUNTER31
|
||||
for (iter='hC03; iter<='hC1F; iter++) begin
|
||||
void'(rvviRefCsrSetVolatile(0, iter)); // HPMCOUNTERx
|
||||
if (P.XLEN == 32)
|
||||
if (P.XLEN == 32)
|
||||
void'(rvviRefCsrSetVolatile(0, iter+128)); // HPMCOUNTERxH
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
// Machine MHPMCOUNTER3 - MHPMCOUNTER31
|
||||
for (iter='hB03; iter<='hB1F; iter++) begin
|
||||
void'(rvviRefCsrSetVolatile(0, iter)); // MHPMCOUNTERx
|
||||
if (P.XLEN == 32)
|
||||
if (P.XLEN == 32)
|
||||
void'(rvviRefCsrSetVolatile(0, iter+128)); // MHPMCOUNTERxH
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
// cannot predict this register due to latency between
|
||||
// pending and taken
|
||||
void'(rvviRefCsrSetVolatile(0, 32'h344)); // MIP
|
||||
@ -880,7 +870,7 @@ end
|
||||
end
|
||||
|
||||
void'(rvviRefCsrSetVolatile(0, 32'h104)); // SIE - Temporary!!!!
|
||||
|
||||
|
||||
end
|
||||
|
||||
always @(dut.core.priv.priv.csr.csri.MIP_REGW[7]) void'(rvvi.net_push("MTimerInterrupt", dut.core.priv.priv.csr.csri.MIP_REGW[7]));
|
||||
@ -902,7 +892,7 @@ end
|
||||
task automatic CheckSignature;
|
||||
// This task must be declared inside this module as it needs access to parameter P. There is
|
||||
// no way to pass P to the task unless we convert it to a module.
|
||||
|
||||
|
||||
input string pathname;
|
||||
input string TestName;
|
||||
input logic riscofTest;
|
||||
@ -920,8 +910,8 @@ end
|
||||
string signame;
|
||||
logic [P.XLEN-1:0] testadr, testadrNoBase;
|
||||
|
||||
//$display("Invoking CheckSignature %s %s %0t", pathname, TestName, $time);
|
||||
|
||||
//$display("Invoking CheckSignature %s %s %0t", pathname, TestName, $time);
|
||||
|
||||
// read .signature.output file and compare to check for errors
|
||||
if (riscofTest) signame = {pathname, TestName, "/ref/Reference-sail_c_simulator.signature"};
|
||||
else signame = {pathname, TestName, ".signature.output"};
|
||||
@ -951,8 +941,8 @@ end
|
||||
end
|
||||
|
||||
// Check valid number of lines were read
|
||||
if (siglines == 0) begin
|
||||
errors = 1;
|
||||
if (siglines == 0) begin
|
||||
errors = 1;
|
||||
$display("Error: empty test file %s", signame);
|
||||
end else if (P.XLEN == 64 & (siglines % 2)) begin
|
||||
errors = 1;
|
||||
@ -970,9 +960,9 @@ end
|
||||
testadr = ($unsigned(begin_signature_addr))/(P.XLEN/8);
|
||||
testadrNoBase = (begin_signature_addr - P.UNCORE_RAM_BASE)/(P.XLEN/8);
|
||||
for (i=0; i<sigentries; i++) begin
|
||||
if (signature[i] !== testbench.DCacheFlushFSM.ShadowRAM[testadr+i]) begin
|
||||
if (signature[i] !== testbench.DCacheFlushFSM.ShadowRAM[testadr+i]) begin
|
||||
errors = errors+1;
|
||||
$display(" Error on test %s result %d: adr = %h sim (D$) %h signature = %h",
|
||||
$display(" Error on test %s result %d: adr = %h sim (D$) %h signature = %h",
|
||||
TestName, i, (testadr+i)*(P.XLEN/8), testbench.DCacheFlushFSM.ShadowRAM[testadr+i], signature[i]);
|
||||
$stop; // if this is changed to $finish, wally-batch.do does not get to the next step to run coverage
|
||||
end
|
||||
@ -980,7 +970,7 @@ end
|
||||
if (errors) $display("%s failed with %d errors. :(", TestName, errors);
|
||||
else $display("%s succeeded. Brilliant!!!", TestName);
|
||||
endtask
|
||||
|
||||
|
||||
`ifdef PMP_COVERAGE
|
||||
test_pmp_coverage #(P) pmp_inst(clk);
|
||||
`endif
|
||||
@ -1025,7 +1015,7 @@ task automatic updateProgramAddrLabelArray;
|
||||
returncode = $fscanf(ProgramAddrMapFP, "%s\n", adrstr);
|
||||
if (ProgramAddrLabelArray.exists(label)) ProgramAddrLabelArray[label] = adrstr.atohex();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// if(ProgramAddrLabelArray["begin_signature"] == 0) $display("Couldn't find begin_signature in %s", ProgramLabelMapFile);
|
||||
// if(ProgramAddrLabelArray["sig_end_canary"] == 0) $display("Couldn't find sig_end_canary in %s", ProgramLabelMapFile);
|
||||
|
@ -24,17 +24,15 @@
|
||||
// and limitations under the License.
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
`define IMPERASTEST "0"
|
||||
`define RISCVARCHTEST "1"
|
||||
`define WALLYTEST "2"
|
||||
`define COREMARK "3"
|
||||
`define EMBENCH "4"
|
||||
`define CUSTOM "5"
|
||||
`define COVERAGE "6"
|
||||
`define BUILDROOT "7"
|
||||
`define RISCVARCHTEST "0"
|
||||
`define WALLYTEST "1"
|
||||
`define COREMARK "2"
|
||||
`define EMBENCH "3"
|
||||
`define CUSTOM "4"
|
||||
`define COVERAGE "5"
|
||||
`define BUILDROOT "6"
|
||||
|
||||
string tvpaths[] = '{
|
||||
"$RISCV/imperas-riscv-tests/work/",
|
||||
"../../tests/riscof/work/riscv-arch-test/",
|
||||
"../../tests/riscof/work/wally-riscv-arch-test/",
|
||||
"../../benchmarks/coremark/work/",
|
||||
@ -183,745 +181,6 @@ string embench[] = '{
|
||||
"bd_sizeopt_speed/src/wikisort/wikisort"
|
||||
};
|
||||
|
||||
string imperas32f[] = '{
|
||||
`IMPERASTEST,
|
||||
"rv32i_m/F/FSQRT-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FADD-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FADD-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FADD-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FADD-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FADD-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FADD-S-RDN-01",
|
||||
"rv32i_m/F/FADD-S-RMM-01",
|
||||
"rv32i_m/F/FADD-S-RNE-01",
|
||||
"rv32i_m/F/FADD-S-RTZ-01",
|
||||
"rv32i_m/F/FADD-S-RUP-01",
|
||||
"rv32i_m/F/FCLASS-S-01",
|
||||
"rv32i_m/F/FCVT-S-W-DYN-RDN-01",
|
||||
"rv32i_m/F/FCVT-S-W-DYN-RMM-01",
|
||||
"rv32i_m/F/FCVT-S-W-DYN-RNE-01",
|
||||
"rv32i_m/F/FCVT-S-W-DYN-RTZ-01",
|
||||
"rv32i_m/F/FCVT-S-W-DYN-RUP-01",
|
||||
"rv32i_m/F/FCVT-S-W-RDN-01",
|
||||
"rv32i_m/F/FCVT-S-W-RMM-01",
|
||||
"rv32i_m/F/FCVT-S-W-RNE-01",
|
||||
"rv32i_m/F/FCVT-S-W-RTZ-01",
|
||||
"rv32i_m/F/FCVT-S-W-RUP-01",
|
||||
"rv32i_m/F/FCVT-S-WU-DYN-RDN-01",
|
||||
"rv32i_m/F/FCVT-S-WU-DYN-RMM-01",
|
||||
"rv32i_m/F/FCVT-S-WU-DYN-RNE-01",
|
||||
"rv32i_m/F/FCVT-S-WU-DYN-RTZ-01",
|
||||
"rv32i_m/F/FCVT-S-WU-DYN-RUP-01",
|
||||
"rv32i_m/F/FCVT-S-WU-RDN-01",
|
||||
"rv32i_m/F/FCVT-S-WU-RMM-01",
|
||||
"rv32i_m/F/FCVT-S-WU-RNE-01",
|
||||
"rv32i_m/F/FCVT-S-WU-RTZ-01",
|
||||
"rv32i_m/F/FCVT-S-WU-RUP-01",
|
||||
"rv32i_m/F/FCVT-W-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FCVT-W-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FCVT-W-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FCVT-W-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FCVT-W-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FCVT-W-S-RDN-01",
|
||||
"rv32i_m/F/FCVT-W-S-RMM-01",
|
||||
"rv32i_m/F/FCVT-W-S-RNE-01",
|
||||
"rv32i_m/F/FCVT-W-S-RTZ-01",
|
||||
"rv32i_m/F/FCVT-W-S-RUP-01",
|
||||
"rv32i_m/F/FCVT-WU-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FCVT-WU-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FCVT-WU-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FCVT-WU-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FCVT-WU-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FCVT-WU-S-RDN-01",
|
||||
"rv32i_m/F/FCVT-WU-S-RMM-01",
|
||||
"rv32i_m/F/FCVT-WU-S-RNE-01",
|
||||
"rv32i_m/F/FCVT-WU-S-RTZ-01",
|
||||
"rv32i_m/F/FCVT-WU-S-RUP-01",
|
||||
"rv32i_m/F/FDIV-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FDIV-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FDIV-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FDIV-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FDIV-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FDIV-S-RDN-01",
|
||||
"rv32i_m/F/FDIV-S-RMM-01",
|
||||
"rv32i_m/F/FDIV-S-RNE-01",
|
||||
"rv32i_m/F/FDIV-S-RTZ-01",
|
||||
"rv32i_m/F/FDIV-S-RUP-01",
|
||||
"rv32i_m/F/FEQ-S-01",
|
||||
"rv32i_m/F/FLE-S-01",
|
||||
"rv32i_m/F/FLT-S-01",
|
||||
"rv32i_m/F/FLW-01",
|
||||
"rv32i_m/F/FMADD-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FMADD-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FMADD-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FMADD-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FMADD-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FMADD-S-RDN-01",
|
||||
"rv32i_m/F/FMADD-S-RMM-01",
|
||||
"rv32i_m/F/FMADD-S-RNE-01",
|
||||
"rv32i_m/F/FMADD-S-RTZ-01",
|
||||
"rv32i_m/F/FMADD-S-RUP-01",
|
||||
"rv32i_m/F/FMAX-S-01",
|
||||
"rv32i_m/F/FMIN-S-01",
|
||||
"rv32i_m/F/FMSUB-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FMSUB-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FMSUB-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FMSUB-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FMSUB-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FMSUB-S-RDN-01",
|
||||
"rv32i_m/F/FMSUB-S-RMM-01",
|
||||
"rv32i_m/F/FMSUB-S-RNE-01",
|
||||
"rv32i_m/F/FMSUB-S-RTZ-01",
|
||||
"rv32i_m/F/FMSUB-S-RUP-01",
|
||||
"rv32i_m/F/FMUL-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FMUL-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FMUL-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FMUL-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FMUL-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FMUL-S-RDN-01",
|
||||
"rv32i_m/F/FMUL-S-RMM-01",
|
||||
"rv32i_m/F/FMUL-S-RNE-01",
|
||||
"rv32i_m/F/FMUL-S-RTZ-01",
|
||||
"rv32i_m/F/FMUL-S-RUP-01",
|
||||
"rv32i_m/F/FMV-W-X-01",
|
||||
"rv32i_m/F/FMV-X-W-01",
|
||||
"rv32i_m/F/FNMADD-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FNMADD-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FNMADD-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FNMADD-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FNMADD-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FNMADD-S-RDN-01",
|
||||
"rv32i_m/F/FNMADD-S-RMM-01",
|
||||
"rv32i_m/F/FNMADD-S-RNE-01",
|
||||
"rv32i_m/F/FNMADD-S-RTZ-01",
|
||||
"rv32i_m/F/FNMADD-S-RUP-01",
|
||||
"rv32i_m/F/FNMSUB-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FNMSUB-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FNMSUB-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FNMSUB-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FNMSUB-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FNMSUB-S-RDN-01",
|
||||
"rv32i_m/F/FNMSUB-S-RMM-01",
|
||||
"rv32i_m/F/FNMSUB-S-RNE-01",
|
||||
"rv32i_m/F/FNMSUB-S-RTZ-01",
|
||||
"rv32i_m/F/FNMSUB-S-RUP-01",
|
||||
"rv32i_m/F/FSGNJN-S-01",
|
||||
"rv32i_m/F/FSGNJ-S-01",
|
||||
"rv32i_m/F/FSGNJX-S-01",
|
||||
"rv32i_m/F/FSQRT-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FSQRT-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FSQRT-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FSQRT-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FSQRT-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FSQRT-S-RDN-01",
|
||||
"rv32i_m/F/FSQRT-S-RMM-01",
|
||||
"rv32i_m/F/FSQRT-S-RNE-01",
|
||||
"rv32i_m/F/FSQRT-S-RTZ-01",
|
||||
"rv32i_m/F/FSQRT-S-RUP-01",
|
||||
"rv32i_m/F/FSUB-S-DYN-RDN-01",
|
||||
"rv32i_m/F/FSUB-S-DYN-RMM-01",
|
||||
"rv32i_m/F/FSUB-S-DYN-RNE-01",
|
||||
"rv32i_m/F/FSUB-S-DYN-RTZ-01",
|
||||
"rv32i_m/F/FSUB-S-DYN-RUP-01",
|
||||
"rv32i_m/F/FSUB-S-RDN-01",
|
||||
"rv32i_m/F/FSUB-S-RMM-01",
|
||||
"rv32i_m/F/FSUB-S-RNE-01",
|
||||
"rv32i_m/F/FSUB-S-RTZ-01",
|
||||
"rv32i_m/F/FSUB-S-RUP-01",
|
||||
"rv32i_m/F/FSW-01"
|
||||
};
|
||||
|
||||
string imperas64f[] = '{
|
||||
`IMPERASTEST,
|
||||
"rv64i_m/F/FADD-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FADD-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FADD-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FADD-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FADD-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FADD-S-RDN-01",
|
||||
"rv64i_m/F/FADD-S-RMM-01",
|
||||
"rv64i_m/F/FADD-S-RNE-01",
|
||||
"rv64i_m/F/FADD-S-RTZ-01",
|
||||
"rv64i_m/F/FADD-S-RUP-01",
|
||||
"rv64i_m/F/FCLASS-S-01",
|
||||
"rv64i_m/F/FCVT-L-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FCVT-L-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FCVT-L-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FCVT-L-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FCVT-L-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FCVT-L-S-RDN-01",
|
||||
"rv64i_m/F/FCVT-L-S-RMM-01",
|
||||
"rv64i_m/F/FCVT-L-S-RNE-01",
|
||||
"rv64i_m/F/FCVT-L-S-RTZ-01",
|
||||
"rv64i_m/F/FCVT-L-S-RUP-01",
|
||||
"rv64i_m/F/FCVT-LU-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FCVT-LU-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FCVT-LU-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FCVT-LU-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FCVT-LU-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FCVT-LU-S-RDN-01",
|
||||
"rv64i_m/F/FCVT-LU-S-RMM-01",
|
||||
"rv64i_m/F/FCVT-LU-S-RNE-01",
|
||||
"rv64i_m/F/FCVT-LU-S-RTZ-01",
|
||||
"rv64i_m/F/FCVT-LU-S-RUP-01",
|
||||
"rv64i_m/F/FCVT-S-L-DYN-RDN-01",
|
||||
"rv64i_m/F/FCVT-S-L-DYN-RMM-01",
|
||||
"rv64i_m/F/FCVT-S-L-DYN-RNE-01",
|
||||
"rv64i_m/F/FCVT-S-L-DYN-RTZ-01",
|
||||
"rv64i_m/F/FCVT-S-L-DYN-RUP-01",
|
||||
"rv64i_m/F/FCVT-S-L-RDN-01",
|
||||
"rv64i_m/F/FCVT-S-L-RMM-01",
|
||||
"rv64i_m/F/FCVT-S-L-RNE-01",
|
||||
"rv64i_m/F/FCVT-S-L-RTZ-01",
|
||||
"rv64i_m/F/FCVT-S-L-RUP-01",
|
||||
"rv64i_m/F/FCVT-S-LU-DYN-RDN-01",
|
||||
"rv64i_m/F/FCVT-S-LU-DYN-RMM-01",
|
||||
"rv64i_m/F/FCVT-S-LU-DYN-RNE-01",
|
||||
"rv64i_m/F/FCVT-S-LU-DYN-RTZ-01",
|
||||
"rv64i_m/F/FCVT-S-LU-DYN-RUP-01",
|
||||
"rv64i_m/F/FCVT-S-LU-RDN-01",
|
||||
"rv64i_m/F/FCVT-S-LU-RMM-01",
|
||||
"rv64i_m/F/FCVT-S-LU-RNE-01",
|
||||
"rv64i_m/F/FCVT-S-LU-RTZ-01",
|
||||
"rv64i_m/F/FCVT-S-LU-RUP-01",
|
||||
"rv64i_m/F/FCVT-S-W-DYN-RDN-01",
|
||||
"rv64i_m/F/FCVT-S-W-DYN-RMM-01",
|
||||
"rv64i_m/F/FCVT-S-W-DYN-RNE-01",
|
||||
"rv64i_m/F/FCVT-S-W-DYN-RTZ-01",
|
||||
"rv64i_m/F/FCVT-S-W-DYN-RUP-01",
|
||||
"rv64i_m/F/FCVT-S-W-RDN-01",
|
||||
"rv64i_m/F/FCVT-S-W-RMM-01",
|
||||
"rv64i_m/F/FCVT-S-W-RNE-01",
|
||||
"rv64i_m/F/FCVT-S-W-RTZ-01",
|
||||
"rv64i_m/F/FCVT-S-W-RUP-01",
|
||||
"rv64i_m/F/FCVT-S-WU-DYN-RDN-01",
|
||||
"rv64i_m/F/FCVT-S-WU-DYN-RMM-01",
|
||||
"rv64i_m/F/FCVT-S-WU-DYN-RNE-01",
|
||||
"rv64i_m/F/FCVT-S-WU-DYN-RTZ-01",
|
||||
"rv64i_m/F/FCVT-S-WU-DYN-RUP-01",
|
||||
"rv64i_m/F/FCVT-S-WU-RDN-01",
|
||||
"rv64i_m/F/FCVT-S-WU-RMM-01",
|
||||
"rv64i_m/F/FCVT-S-WU-RNE-01",
|
||||
"rv64i_m/F/FCVT-S-WU-RTZ-01",
|
||||
"rv64i_m/F/FCVT-S-WU-RUP-01",
|
||||
"rv64i_m/F/FCVT-W-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FCVT-W-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FCVT-W-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FCVT-W-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FCVT-W-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FCVT-W-S-RDN-01",
|
||||
"rv64i_m/F/FCVT-W-S-RMM-01",
|
||||
"rv64i_m/F/FCVT-W-S-RNE-01",
|
||||
"rv64i_m/F/FCVT-W-S-RTZ-01",
|
||||
"rv64i_m/F/FCVT-W-S-RUP-01",
|
||||
"rv64i_m/F/FCVT-WU-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FCVT-WU-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FCVT-WU-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FCVT-WU-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FCVT-WU-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FCVT-WU-S-RDN-01",
|
||||
"rv64i_m/F/FCVT-WU-S-RMM-01",
|
||||
"rv64i_m/F/FCVT-WU-S-RNE-01",
|
||||
"rv64i_m/F/FCVT-WU-S-RTZ-01",
|
||||
"rv64i_m/F/FCVT-WU-S-RUP-01",
|
||||
"rv64i_m/F/FDIV-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FDIV-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FDIV-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FDIV-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FDIV-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FDIV-S-RDN-01",
|
||||
"rv64i_m/F/FDIV-S-RMM-01",
|
||||
"rv64i_m/F/FDIV-S-RNE-01",
|
||||
"rv64i_m/F/FDIV-S-RTZ-01",
|
||||
"rv64i_m/F/FDIV-S-RUP-01",
|
||||
"rv64i_m/F/FEQ-S-01",
|
||||
"rv64i_m/F/FLE-S-01",
|
||||
"rv64i_m/F/FLT-S-01",
|
||||
"rv64i_m/F/FLW-01",
|
||||
"rv64i_m/F/FMADD-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FMADD-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FMADD-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FMADD-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FMADD-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FMADD-S-RDN-01",
|
||||
"rv64i_m/F/FMADD-S-RMM-01",
|
||||
"rv64i_m/F/FMADD-S-RNE-01",
|
||||
"rv64i_m/F/FMADD-S-RTZ-01",
|
||||
"rv64i_m/F/FMADD-S-RUP-01",
|
||||
"rv64i_m/F/FMAX-S-01",
|
||||
"rv64i_m/F/FMIN-S-01",
|
||||
"rv64i_m/F/FMSUB-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FMSUB-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FMSUB-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FMSUB-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FMSUB-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FMSUB-S-RDN-01",
|
||||
"rv64i_m/F/FMSUB-S-RMM-01",
|
||||
"rv64i_m/F/FMSUB-S-RNE-01",
|
||||
"rv64i_m/F/FMSUB-S-RTZ-01",
|
||||
"rv64i_m/F/FMSUB-S-RUP-01",
|
||||
"rv64i_m/F/FMUL-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FMUL-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FMUL-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FMUL-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FMUL-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FMUL-S-RDN-01",
|
||||
"rv64i_m/F/FMUL-S-RMM-01",
|
||||
"rv64i_m/F/FMUL-S-RNE-01",
|
||||
"rv64i_m/F/FMUL-S-RTZ-01",
|
||||
"rv64i_m/F/FMUL-S-RUP-01",
|
||||
"rv64i_m/F/FMV-W-X-01",
|
||||
"rv64i_m/F/FMV-X-W-01",
|
||||
"rv64i_m/F/FNMADD-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FNMADD-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FNMADD-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FNMADD-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FNMADD-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FNMADD-S-RDN-01",
|
||||
"rv64i_m/F/FNMADD-S-RMM-01",
|
||||
"rv64i_m/F/FNMADD-S-RNE-01",
|
||||
"rv64i_m/F/FNMADD-S-RTZ-01",
|
||||
"rv64i_m/F/FNMADD-S-RUP-01",
|
||||
"rv64i_m/F/FNMSUB-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FNMSUB-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FNMSUB-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FNMSUB-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FNMSUB-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FNMSUB-S-RDN-01",
|
||||
"rv64i_m/F/FNMSUB-S-RMM-01",
|
||||
"rv64i_m/F/FNMSUB-S-RNE-01",
|
||||
"rv64i_m/F/FNMSUB-S-RTZ-01",
|
||||
"rv64i_m/F/FNMSUB-S-RUP-01",
|
||||
"rv64i_m/F/FSGNJN-S-01",
|
||||
"rv64i_m/F/FSGNJ-S-01",
|
||||
"rv64i_m/F/FSGNJX-S-01",
|
||||
"rv64i_m/F/FSQRT-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FSQRT-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FSQRT-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FSQRT-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FSQRT-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FSQRT-S-RDN-01",
|
||||
"rv64i_m/F/FSQRT-S-RMM-01",
|
||||
"rv64i_m/F/FSQRT-S-RNE-01",
|
||||
"rv64i_m/F/FSQRT-S-RTZ-01",
|
||||
"rv64i_m/F/FSQRT-S-RUP-01",
|
||||
"rv64i_m/F/FSUB-S-DYN-RDN-01",
|
||||
"rv64i_m/F/FSUB-S-DYN-RMM-01",
|
||||
"rv64i_m/F/FSUB-S-DYN-RNE-01",
|
||||
"rv64i_m/F/FSUB-S-DYN-RTZ-01",
|
||||
"rv64i_m/F/FSUB-S-DYN-RUP-01",
|
||||
"rv64i_m/F/FSUB-S-RDN-01",
|
||||
"rv64i_m/F/FSUB-S-RMM-01",
|
||||
"rv64i_m/F/FSUB-S-RNE-01",
|
||||
"rv64i_m/F/FSUB-S-RTZ-01",
|
||||
"rv64i_m/F/FSUB-S-RUP-01",
|
||||
"rv64i_m/F/FSW-01"
|
||||
};
|
||||
|
||||
string imperas64d[] = '{
|
||||
`IMPERASTEST,
|
||||
"rv64i_m/D/FADD-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FADD-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FADD-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FADD-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FADD-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FADD-D-RDN-01",
|
||||
"rv64i_m/D/FADD-D-RMM-01",
|
||||
"rv64i_m/D/FADD-D-RNE-01",
|
||||
"rv64i_m/D/FADD-D-RTZ-01",
|
||||
"rv64i_m/D/FADD-D-RUP-01",
|
||||
"rv64i_m/D/FCLASS-D-01",
|
||||
"rv64i_m/D/FCVT-D-L-DYN-RDN-01",
|
||||
"rv64i_m/D/FCVT-D-L-DYN-RMM-01",
|
||||
"rv64i_m/D/FCVT-D-L-DYN-RNE-01",
|
||||
"rv64i_m/D/FCVT-D-L-DYN-RTZ-01",
|
||||
"rv64i_m/D/FCVT-D-L-DYN-RUP-01",
|
||||
"rv64i_m/D/FCVT-D-L-RDN-01",
|
||||
"rv64i_m/D/FCVT-D-L-RMM-01",
|
||||
"rv64i_m/D/FCVT-D-L-RNE-01",
|
||||
"rv64i_m/D/FCVT-D-L-RTZ-01",
|
||||
"rv64i_m/D/FCVT-D-L-RUP-01",
|
||||
"rv64i_m/D/FCVT-D-LU-DYN-RDN-01",
|
||||
"rv64i_m/D/FCVT-D-LU-DYN-RMM-01",
|
||||
"rv64i_m/D/FCVT-D-LU-DYN-RNE-01",
|
||||
"rv64i_m/D/FCVT-D-LU-DYN-RTZ-01",
|
||||
"rv64i_m/D/FCVT-D-LU-DYN-RUP-01",
|
||||
"rv64i_m/D/FCVT-D-LU-RDN-01",
|
||||
"rv64i_m/D/FCVT-D-LU-RMM-01",
|
||||
"rv64i_m/D/FCVT-D-LU-RNE-01",
|
||||
"rv64i_m/D/FCVT-D-LU-RTZ-01",
|
||||
"rv64i_m/D/FCVT-D-LU-RUP-01",
|
||||
"rv64i_m/D/FCVT-D-S-01",
|
||||
"rv64i_m/D/FCVT-D-W-01",
|
||||
"rv64i_m/D/FCVT-D-WU-01",
|
||||
"rv64i_m/D/FCVT-L-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FCVT-L-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FCVT-L-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FCVT-L-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FCVT-L-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FCVT-L-D-RDN-01",
|
||||
"rv64i_m/D/FCVT-L-D-RMM-01",
|
||||
"rv64i_m/D/FCVT-L-D-RNE-01",
|
||||
"rv64i_m/D/FCVT-L-D-RTZ-01",
|
||||
"rv64i_m/D/FCVT-L-D-RUP-01",
|
||||
"rv64i_m/D/FCVT-LU-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FCVT-LU-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FCVT-LU-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FCVT-LU-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FCVT-LU-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FCVT-LU-D-RDN-01",
|
||||
"rv64i_m/D/FCVT-LU-D-RMM-01",
|
||||
"rv64i_m/D/FCVT-LU-D-RNE-01",
|
||||
"rv64i_m/D/FCVT-LU-D-RTZ-01",
|
||||
"rv64i_m/D/FCVT-LU-D-RUP-01",
|
||||
"rv64i_m/D/FCVT-S-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FCVT-S-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FCVT-S-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FCVT-S-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FCVT-S-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FCVT-S-D-RDN-01",
|
||||
"rv64i_m/D/FCVT-S-D-RMM-01",
|
||||
"rv64i_m/D/FCVT-S-D-RNE-01",
|
||||
"rv64i_m/D/FCVT-S-D-RTZ-01",
|
||||
"rv64i_m/D/FCVT-S-D-RUP-01",
|
||||
"rv64i_m/D/FCVT-W-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FCVT-W-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FCVT-W-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FCVT-W-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FCVT-W-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FCVT-W-D-RDN-01",
|
||||
"rv64i_m/D/FCVT-W-D-RMM-01",
|
||||
"rv64i_m/D/FCVT-W-D-RNE-01",
|
||||
"rv64i_m/D/FCVT-W-D-RTZ-01",
|
||||
"rv64i_m/D/FCVT-W-D-RUP-01",
|
||||
"rv64i_m/D/FCVT-WU-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FCVT-WU-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FCVT-WU-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FCVT-WU-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FCVT-WU-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FCVT-WU-D-RDN-01",
|
||||
"rv64i_m/D/FCVT-WU-D-RMM-01",
|
||||
"rv64i_m/D/FCVT-WU-D-RNE-01",
|
||||
"rv64i_m/D/FCVT-WU-D-RTZ-01",
|
||||
"rv64i_m/D/FCVT-WU-D-RUP-01",
|
||||
"rv64i_m/D/FDIV-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FDIV-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FDIV-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FDIV-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FDIV-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FDIV-D-RDN-01",
|
||||
"rv64i_m/D/FDIV-D-RMM-01",
|
||||
"rv64i_m/D/FDIV-D-RNE-01",
|
||||
"rv64i_m/D/FDIV-D-RTZ-01",
|
||||
"rv64i_m/D/FDIV-D-RUP-01",
|
||||
"rv64i_m/D/FEQ-D-01",
|
||||
"rv64i_m/D/FLD-01",
|
||||
"rv64i_m/D/FLE-D-01",
|
||||
"rv64i_m/D/FLT-D-01",
|
||||
"rv64i_m/D/FMADD-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FMADD-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FMADD-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FMADD-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FMADD-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FMADD-D-RDN-01",
|
||||
"rv64i_m/D/FMADD-D-RMM-01",
|
||||
"rv64i_m/D/FMADD-D-RNE-01",
|
||||
"rv64i_m/D/FMADD-D-RTZ-01",
|
||||
"rv64i_m/D/FMADD-D-RUP-01",
|
||||
"rv64i_m/D/FMAX-D-01",
|
||||
"rv64i_m/D/FMIN-D-01",
|
||||
"rv64i_m/D/FMSUB-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FMSUB-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FMSUB-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FMSUB-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FMSUB-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FMSUB-D-RDN-01",
|
||||
"rv64i_m/D/FMSUB-D-RMM-01",
|
||||
"rv64i_m/D/FMSUB-D-RNE-01",
|
||||
"rv64i_m/D/FMSUB-D-RTZ-01",
|
||||
"rv64i_m/D/FMSUB-D-RUP-01",
|
||||
"rv64i_m/D/FMUL-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FMUL-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FMUL-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FMUL-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FMUL-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FMUL-D-RDN-01",
|
||||
"rv64i_m/D/FMUL-D-RMM-01",
|
||||
"rv64i_m/D/FMUL-D-RNE-01",
|
||||
"rv64i_m/D/FMUL-D-RTZ-01",
|
||||
"rv64i_m/D/FMUL-D-RUP-01",
|
||||
"rv64i_m/D/FMV-D-X-01",
|
||||
"rv64i_m/D/FMV-X-D-01",
|
||||
"rv64i_m/D/FNMADD-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FNMADD-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FNMADD-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FNMADD-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FNMADD-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FNMADD-D-RDN-01",
|
||||
"rv64i_m/D/FNMADD-D-RMM-01",
|
||||
"rv64i_m/D/FNMADD-D-RNE-01",
|
||||
"rv64i_m/D/FNMADD-D-RTZ-01",
|
||||
"rv64i_m/D/FNMADD-D-RUP-01",
|
||||
"rv64i_m/D/FNMSUB-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FNMSUB-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FNMSUB-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FNMSUB-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FNMSUB-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FNMSUB-D-RDN-01",
|
||||
"rv64i_m/D/FNMSUB-D-RMM-01",
|
||||
"rv64i_m/D/FNMSUB-D-RNE-01",
|
||||
"rv64i_m/D/FNMSUB-D-RTZ-01",
|
||||
"rv64i_m/D/FNMSUB-D-RUP-01",
|
||||
"rv64i_m/D/FSD-01",
|
||||
"rv64i_m/D/FSGNJ-D-01",
|
||||
"rv64i_m/D/FSGNJN-D-01",
|
||||
"rv64i_m/D/FSGNJX-D-01",
|
||||
"rv64i_m/D/FSQRT-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FSQRT-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FSQRT-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FSQRT-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FSQRT-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FSQRT-D-RDN-01",
|
||||
"rv64i_m/D/FSQRT-D-RMM-01",
|
||||
"rv64i_m/D/FSQRT-D-RNE-01",
|
||||
"rv64i_m/D/FSQRT-D-RTZ-01",
|
||||
"rv64i_m/D/FSQRT-D-RUP-01",
|
||||
"rv64i_m/D/FSUB-D-DYN-RDN-01",
|
||||
"rv64i_m/D/FSUB-D-DYN-RMM-01",
|
||||
"rv64i_m/D/FSUB-D-DYN-RNE-01",
|
||||
"rv64i_m/D/FSUB-D-DYN-RTZ-01",
|
||||
"rv64i_m/D/FSUB-D-DYN-RUP-01",
|
||||
"rv64i_m/D/FSUB-D-RDN-01",
|
||||
"rv64i_m/D/FSUB-D-RMM-01",
|
||||
"rv64i_m/D/FSUB-D-RNE-01",
|
||||
"rv64i_m/D/FSUB-D-RTZ-01",
|
||||
"rv64i_m/D/FSUB-D-RUP-01"
|
||||
};
|
||||
|
||||
string imperas64m[] = '{
|
||||
`IMPERASTEST,
|
||||
"rv64i_m/M/DIV-01",
|
||||
"rv64i_m/M/DIVU-01",
|
||||
"rv64i_m/M/DIVUW-01",
|
||||
"rv64i_m/M/DIVW-01",
|
||||
"rv64i_m/M/MUL-01",
|
||||
"rv64i_m/M/MULH-01",
|
||||
"rv64i_m/M/MULHSU-01",
|
||||
"rv64i_m/M/MULHU-01",
|
||||
"rv64i_m/M/MULW-01",
|
||||
"rv64i_m/M/REM-01",
|
||||
"rv64i_m/M/REMU-01",
|
||||
"rv64i_m/M/REMUW-01",
|
||||
"rv64i_m/M/REMW-01"
|
||||
};
|
||||
|
||||
string imperas64c[] = '{
|
||||
`IMPERASTEST,
|
||||
"rv64i_m/C/C-ADD-01",
|
||||
"rv64i_m/C/C-ADDI-01",
|
||||
"rv64i_m/C/C-ADDI16SP-01",
|
||||
"rv64i_m/C/C-ADDI4SPN-01",
|
||||
"rv64i_m/C/C-ADDIW-01",
|
||||
"rv64i_m/C/C-ADDW-01",
|
||||
"rv64i_m/C/C-AND-01",
|
||||
"rv64i_m/C/C-ANDI-01",
|
||||
"rv64i_m/C/C-BEQZ-01",
|
||||
"rv64i_m/C/C-BNEZ-01",
|
||||
"rv64i_m/C/C-J-01",
|
||||
"rv64i_m/C/C-JALR-01",
|
||||
"rv64i_m/C/C-JR-01",
|
||||
"rv64i_m/C/C-LD-01",
|
||||
"rv64i_m/C/C-LDSP-01",
|
||||
"rv64i_m/C/C-LI-01",
|
||||
"rv64i_m/C/C-LUI-01",
|
||||
"rv64i_m/C/C-LW-01",
|
||||
"rv64i_m/C/C-LWSP-01",
|
||||
"rv64i_m/C/C-MV-01",
|
||||
"rv64i_m/C/C-OR-01",
|
||||
"rv64i_m/C/C-SD-01",
|
||||
"rv64i_m/C/C-SDSP-01",
|
||||
"rv64i_m/C/C-SLLI-01",
|
||||
"rv64i_m/C/C-SRAI-01",
|
||||
"rv64i_m/C/C-SRLI-01",
|
||||
"rv64i_m/C/C-SUB-01",
|
||||
"rv64i_m/C/C-SUBW-01",
|
||||
"rv64i_m/C/C-SW-01",
|
||||
"rv64i_m/C/C-SWSP-01",
|
||||
"rv64i_m/C/C-XOR-01",
|
||||
"rv64i_m/C/I-C-EBREAK-01",
|
||||
"rv64i_m/C/I-C-NOP-01"
|
||||
};
|
||||
|
||||
string imperas64iNOc[] = {
|
||||
`IMPERASTEST,
|
||||
"rv64i_m/I/I-MISALIGN_JMP-01"
|
||||
};
|
||||
|
||||
string imperas64i[] = '{
|
||||
`IMPERASTEST,
|
||||
"rv64i_m/I/I-DELAY_SLOTS-01",
|
||||
"rv64i_m/I/ADD-01",
|
||||
"rv64i_m/I/ADDI-01",
|
||||
"rv64i_m/I/ADDIW-01",
|
||||
"rv64i_m/I/ADDW-01",
|
||||
"rv64i_m/I/AND-01",
|
||||
"rv64i_m/I/ANDI-01",
|
||||
"rv64i_m/I/AUIPC-01",
|
||||
"rv64i_m/I/BEQ-01",
|
||||
"rv64i_m/I/BGE-01",
|
||||
"rv64i_m/I/BGEU-01",
|
||||
"rv64i_m/I/BLT-01",
|
||||
"rv64i_m/I/BLTU-01",
|
||||
"rv64i_m/I/BNE-01",
|
||||
"rv64i_m/I/I-DELAY_SLOTS-01",
|
||||
"rv64i_m/I/I-EBREAK-01",
|
||||
"rv64i_m/I/I-ECALL-01",
|
||||
"rv64i_m/I/I-ENDIANESS-01",
|
||||
"rv64i_m/I/I-IO-01",
|
||||
// "rv64i_m/I/I-MISALIGN_JMP-01",
|
||||
"rv64i_m/I/I-MISALIGN_LDST-01",
|
||||
"rv64i_m/I/I-NOP-01",
|
||||
"rv64i_m/I/I-RF_size-01",
|
||||
"rv64i_m/I/I-RF_width-01",
|
||||
"rv64i_m/I/I-RF_x0-01",
|
||||
"rv64i_m/I/JAL-01",
|
||||
"rv64i_m/I/JALR-01",
|
||||
"rv64i_m/I/LB-01",
|
||||
"rv64i_m/I/LBU-01",
|
||||
"rv64i_m/I/LD-01",
|
||||
"rv64i_m/I/LH-01",
|
||||
"rv64i_m/I/LHU-01",
|
||||
"rv64i_m/I/LUI-01",
|
||||
"rv64i_m/I/LW-01",
|
||||
"rv64i_m/I/LWU-01",
|
||||
"rv64i_m/I/OR-01",
|
||||
"rv64i_m/I/ORI-01",
|
||||
"rv64i_m/I/SB-01",
|
||||
"rv64i_m/I/SD-01",
|
||||
"rv64i_m/I/SH-01",
|
||||
"rv64i_m/I/SLL-01",
|
||||
"rv64i_m/I/SLLI-01",
|
||||
"rv64i_m/I/SLLIW-01",
|
||||
"rv64i_m/I/SLLW-01",
|
||||
"rv64i_m/I/SLT-01",
|
||||
"rv64i_m/I/SLTI-01",
|
||||
"rv64i_m/I/SLTIU-01",
|
||||
"rv64i_m/I/SLTU-01",
|
||||
"rv64i_m/I/SRA-01",
|
||||
"rv64i_m/I/SRAI-01",
|
||||
"rv64i_m/I/SRAIW-01",
|
||||
"rv64i_m/I/SRAW-01",
|
||||
"rv64i_m/I/SRL-01",
|
||||
"rv64i_m/I/SRLI-01",
|
||||
"rv64i_m/I/SRLIW-01",
|
||||
"rv64i_m/I/SRLW-01",
|
||||
"rv64i_m/I/SUB-01",
|
||||
"rv64i_m/I/SUBW-01",
|
||||
"rv64i_m/I/SW-01",
|
||||
"rv64i_m/I/XOR-01",
|
||||
"rv64i_m/I/XORI-01"
|
||||
};
|
||||
|
||||
string imperas32m[] = '{
|
||||
`IMPERASTEST,
|
||||
"rv32i_m/M/DIV-01",
|
||||
"rv32i_m/M/DIVU-01",
|
||||
"rv32i_m/M/MUL-01",
|
||||
"rv32i_m/M/MULH-01",
|
||||
"rv32i_m/M/MULHSU-01",
|
||||
"rv32i_m/M/MULHU-01",
|
||||
"rv32i_m/M/REM-01",
|
||||
"rv32i_m/M/REMU-01"
|
||||
};
|
||||
|
||||
string imperas32c[] = '{
|
||||
`IMPERASTEST,
|
||||
"rv32i_m/C/C-ADD-01",
|
||||
"rv32i_m/C/C-ADDI-01",
|
||||
"rv32i_m/C/C-ADDI16SP-01",
|
||||
"rv32i_m/C/C-ADDI4SPN-01",
|
||||
"rv32i_m/C/C-AND-01",
|
||||
"rv32i_m/C/C-ANDI-01",
|
||||
"rv32i_m/C/C-BEQZ-01",
|
||||
"rv32i_m/C/C-BNEZ-01",
|
||||
"rv32i_m/C/C-J-01",
|
||||
"rv32i_m/C/C-JAL-01",
|
||||
"rv32i_m/C/C-JALR-01",
|
||||
"rv32i_m/C/C-JR-01",
|
||||
"rv32i_m/C/C-LI-01",
|
||||
"rv32i_m/C/C-LUI-01",
|
||||
"rv32i_m/C/C-LW-01",
|
||||
"rv32i_m/C/C-LWSP-01",
|
||||
"rv32i_m/C/C-MV-01",
|
||||
"rv32i_m/C/C-OR-01",
|
||||
"rv32i_m/C/C-SLLI-01",
|
||||
"rv32i_m/C/C-SRAI-01",
|
||||
"rv32i_m/C/C-SRLI-01",
|
||||
"rv32i_m/C/C-SUB-01",
|
||||
"rv32i_m/C/C-SW-01",
|
||||
"rv32i_m/C/C-SWSP-01",
|
||||
"rv32i_m/C/C-XOR-01",
|
||||
"rv32i_m/C/I-C-EBREAK-01",
|
||||
"rv32i_m/C/I-C-NOP-01"
|
||||
};
|
||||
|
||||
string imperas32iNOc[] = {
|
||||
`IMPERASTEST,
|
||||
"rv32i_m/I/I-MISALIGN_JMP-01"
|
||||
};
|
||||
|
||||
string imperas32i[] = {
|
||||
`IMPERASTEST,
|
||||
"rv32i_m/I/ADD-01",
|
||||
"rv32i_m/I/ADDI-01",
|
||||
"rv32i_m/I/AND-01",
|
||||
"rv32i_m/I/ANDI-01",
|
||||
"rv32i_m/I/AUIPC-01",
|
||||
"rv32i_m/I/BEQ-01",
|
||||
"rv32i_m/I/BGE-01",
|
||||
"rv32i_m/I/BGEU-01",
|
||||
"rv32i_m/I/BLT-01",
|
||||
"rv32i_m/I/BLTU-01",
|
||||
"rv32i_m/I/BNE-01",
|
||||
"rv32i_m/I/I-DELAY_SLOTS-01",
|
||||
"rv32i_m/I/I-EBREAK-01",
|
||||
"rv32i_m/I/I-ECALL-01",
|
||||
"rv32i_m/I/I-ENDIANESS-01",
|
||||
"rv32i_m/I/I-IO-01",
|
||||
// "rv32i_m/I/I-MISALIGN_JMP-01",
|
||||
"rv32i_m/I/I-MISALIGN_LDST-01",
|
||||
"rv32i_m/I/I-NOP-01",
|
||||
"rv32i_m/I/I-RF_size-01",
|
||||
"rv32i_m/I/I-RF_width-01",
|
||||
"rv32i_m/I/I-RF_x0-01",
|
||||
"rv32i_m/I/JAL-01",
|
||||
"rv32i_m/I/JALR-01",
|
||||
"rv32i_m/I/LB-01",
|
||||
"rv32i_m/I/LBU-01",
|
||||
"rv32i_m/I/LH-01",
|
||||
"rv32i_m/I/LHU-01",
|
||||
"rv32i_m/I/LUI-01",
|
||||
"rv32i_m/I/LW-01",
|
||||
"rv32i_m/I/OR-01",
|
||||
"rv32i_m/I/ORI-01",
|
||||
"rv32i_m/I/SB-01",
|
||||
"rv32i_m/I/SH-01",
|
||||
"rv32i_m/I/SLL-01",
|
||||
"rv32i_m/I/SLLI-01",
|
||||
"rv32i_m/I/SLT-01",
|
||||
"rv32i_m/I/SLTI-01",
|
||||
"rv32i_m/I/SLTIU-01",
|
||||
"rv32i_m/I/SLTU-01",
|
||||
"rv32i_m/I/SRA-01",
|
||||
"rv32i_m/I/SRAI-01",
|
||||
"rv32i_m/I/SRL-01",
|
||||
"rv32i_m/I/SRLI-01",
|
||||
"rv32i_m/I/SUB-01",
|
||||
"rv32i_m/I/SW-01",
|
||||
"rv32i_m/I/XOR-01",
|
||||
"rv32i_m/I/XORI-01"
|
||||
};
|
||||
|
||||
string wally64q[] = '{
|
||||
`WALLYTEST,
|
||||
"rv64i_m/Q/src/WALLY-q-01.S"
|
||||
@ -4017,6 +3276,12 @@ string arch32c[] = '{
|
||||
"rv32i_m/C/src/cxor-01.S"
|
||||
};
|
||||
|
||||
string arch32c_misalign[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv32i_m/C/src/misalign1-cjalr-01.S",
|
||||
"rv32i_m/C/src/misalign1-cjr-01.S"
|
||||
};
|
||||
|
||||
string arch32cpriv[] = '{
|
||||
// `RISCVARCHTEST,
|
||||
"rv32i_m/C/src/cebreak-01.S"
|
||||
@ -4231,17 +3496,6 @@ string custom[] = '{
|
||||
"cacheTest"
|
||||
};
|
||||
|
||||
string testsBP64[] = '{
|
||||
`IMPERASTEST,
|
||||
"rv64BP/simple"
|
||||
// "rv64BP/mmm",
|
||||
// "rv64BP/linpack_bench",
|
||||
// "rv64BP/sieve",
|
||||
// "rv64BP/qsort",
|
||||
// "rv64BP/dhrystone"
|
||||
};
|
||||
|
||||
|
||||
string ahb64[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv64i_m/F/src/fadd_b11-01.S"
|
||||
|
Loading…
Reference in New Issue
Block a user