From f37bae1062bb559bfeb8c25328bc4218d79ec438 Mon Sep 17 00:00:00 2001 From: David Harris Date: Sun, 29 Jan 2023 11:33:54 -0800 Subject: [PATCH] Converted rv32ic to rv32imc --- pipelined/config/rv32gc/wally-config.vh | 2 +- pipelined/config/{rv32ic => rv32imc}/wally-config.vh | 2 +- pipelined/regression/lint-wally | 2 +- pipelined/regression/regression-wally | 10 +++++----- pipelined/regression/wally-pipelined-batch.do | 4 ++-- synthDC/wallySynth.py | 6 +++--- 6 files changed, 13 insertions(+), 13 deletions(-) rename pipelined/config/{rv32ic => rv32imc}/wally-config.vh (98%) diff --git a/pipelined/config/rv32gc/wally-config.vh b/pipelined/config/rv32gc/wally-config.vh index ef98b0028..1be6b25b4 100644 --- a/pipelined/config/rv32gc/wally-config.vh +++ b/pipelined/config/rv32gc/wally-config.vh @@ -68,7 +68,7 @@ // Integer Divider Configuration // IDIV_BITSPERCYCLE must be 1, 2, or 4 `define IDIV_BITSPERCYCLE 4 -`define IDIV_ON_FPU 0 +`define IDIV_ON_FPU 1 // Legal number of PMP entries are 0, 16, or 64 `define PMP_ENTRIES 16 diff --git a/pipelined/config/rv32ic/wally-config.vh b/pipelined/config/rv32imc/wally-config.vh similarity index 98% rename from pipelined/config/rv32ic/wally-config.vh rename to pipelined/config/rv32imc/wally-config.vh index a80c00e38..5b03d2d58 100644 --- a/pipelined/config/rv32ic/wally-config.vh +++ b/pipelined/config/rv32imc/wally-config.vh @@ -37,7 +37,7 @@ // IEEE 754 compliance `define IEEE754 0 -`define MISA (32'h00000104 | 1 << 20 | 1 << 18 ) +`define MISA (32'h00000104 | 1 << 20 | 1 << 18 | 1 << 12) `define ZICSR_SUPPORTED 1 `define ZIFENCEI_SUPPORTED 1 `define COUNTERS 32 diff --git a/pipelined/regression/lint-wally b/pipelined/regression/lint-wally index 000b63402..4ff93af60 100755 --- a/pipelined/regression/lint-wally +++ b/pipelined/regression/lint-wally @@ -5,7 +5,7 @@ export PATH=$PATH:/usr/local/bin/ verilator=`which verilator` basepath=$(dirname $0)/.. -for config in rv32e rv64gc rv32gc rv32ic rv32i rv64i rv64fpquad; do +for config in rv32e rv64gc rv32gc rv32imc rv32i rv64i rv64fpquad; do #for config in rv64gc; do echo "$config linting..." if !($verilator --lint-only "$@" --top-module wallypipelinedsoc "-I$basepath/config/shared" "-I$basepath/config/$config" $basepath/src/*/*.sv $basepath/src/*/*/*.sv --relative-includes ); then diff --git a/pipelined/regression/regression-wally b/pipelined/regression/regression-wally index 7398d7cec..f99906284 100755 --- a/pipelined/regression/regression-wally +++ b/pipelined/regression/regression-wally @@ -94,13 +94,13 @@ for test in tests32gc: grepstr="All tests ran without failures") configs.append(tc) -tests32icimperas = ["imperas32i", "imperas32c"] # unused -tests32ic = ["arch32i", "arch32c", "wally32periph"] -for test in tests32ic: +tests32imcimperas = ["imperas32i", "imperas32c"] # unused +tests32imc = ["arch32i", "arch32c", "arch32m", "wally32periph"] +for test in tests32imc: tc = TestCase( name=test, - variant="rv32ic", - cmd="vsim > {} -c < {} -c < -# Example: do wally-pipelined-batch.do rv32ic imperas-32i +# Example: do wally-pipelined-batch.do rv32imc imperas-32i # Use this wally-pipelined-batch.do file to run this example. # Either bring up ModelSim and type the following at the "ModelSim>" prompt: @@ -37,7 +37,7 @@ if {$2 eq "ahb"} { # because vsim will run vopt # default to config/rv64ic, but allow this to be overridden at the command line. For example: -# do wally-pipelined-batch.do ../config/rv32ic rv32ic +# do wally-pipelined-batch.do ../config/rv32imc rv32imc if {$2 eq "buildroot" || $2 eq "buildroot-checkpoint"} { vlog -lint -work wkdir/work_${1}_${2} +incdir+../config/$1 +incdir+../config/shared ../testbench/testbench-linux.sv ../testbench/common/*.sv ../src/*/*.sv ../src/*/*/*.sv -suppress 2583 # start and run simulation diff --git a/synthDC/wallySynth.py b/synthDC/wallySynth.py index 6b10f2e8b..9ac3a995d 100755 --- a/synthDC/wallySynth.py +++ b/synthDC/wallySynth.py @@ -17,7 +17,7 @@ def mask(command): if __name__ == '__main__': techs = ['sky90', 'tsmc28'] - allConfigs = ['rv32gc', 'rv32ic', 'rv64gc', 'rv64ic', 'rv32e', 'rv32i', 'rv64i'] + allConfigs = ['rv32gc', 'rv32imc', 'rv64gc', 'rv64imc', 'rv32e', 'rv32i', 'rv64i'] freqVaryPct = [-20, -12, -8, -6, -4, -2, 0, 2, 4, 6, 8, 12, 20] pool = Pool() @@ -25,7 +25,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("-s", "--freqsweep", type=int, help = "Synthesize wally with target frequencies at given MHz and +/- 2, 4, 6, 8 %%") - parser.add_argument("-c", "--configsweep", action='store_true', help = "Synthesize wally with configurations 32e, 32ic, 64ic, 32gc, and 64gc") + parser.add_argument("-c", "--configsweep", action='store_true', help = "Synthesize wally with configurations 32e, 32imc, 64ic, 32gc, and 64gc") parser.add_argument("-f", "--featuresweep", action='store_true', help = "Synthesize wally with features turned off progressively to visualize critical path") parser.add_argument("-v", "--version", choices=allConfigs, help = "Configuration of wally") @@ -47,7 +47,7 @@ if __name__ == '__main__': for freq in [round(sc+sc*x/100) for x in freqVaryPct]: # rv32e freq sweep runSynth(config, mod, tech, freq, maxopt) if args.configsweep: - for config in ['rv32i', 'rv64gc', 'rv64i', 'rv32gc', 'rv32ic', 'rv32e']: #configs + for config in ['rv32i', 'rv64gc', 'rv64i', 'rv32gc', 'rv32imc', 'rv32e']: #configs runSynth(config, mod, tech, freq, maxopt) if args.featuresweep: config = args.version if args.version else 'rv64gc'