mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
embench and testbench now support running both O2 and Os build variations without overwriting one another
This commit is contained in:
parent
11b4cf9ea3
commit
d077199608
@ -4,20 +4,29 @@
|
|||||||
|
|
||||||
embench_dir = ../../addins/embench-iot
|
embench_dir = ../../addins/embench-iot
|
||||||
|
|
||||||
all: sim size
|
all: build sim size
|
||||||
|
|
||||||
allClean: clean all
|
allClean: clean all
|
||||||
|
|
||||||
build: buildspeed buildsize
|
build: buildspeed buildsize
|
||||||
|
buildspeed: build_speedopt_speed build_sizeopt_speed
|
||||||
|
buildsize: build_speedopt_size build_sizeopt_size
|
||||||
|
|
||||||
# uses the build_all.py python file to build the tests in addins/embench-iot/bd_speed/ optimized for speed
|
# uses the build_all.py python file to build the tests in addins/embench-iot/bd_speed/ optimized for speed and size
|
||||||
buildspeed:
|
build_speedopt_speed:
|
||||||
$(embench_dir)/build_all.py --builddir=bd_speed --arch riscv32 --chip generic --board rv32wallyverilog --ldflags="-nostartfiles ../../../config/riscv32/boards/rv32wallyverilog/startup/crt0.S" --cflags="-O2 -nostartfiles"
|
$(embench_dir)/build_all.py --builddir=bd_speedopt_speed --arch riscv32 --chip generic --board rv32wallyverilog --ldflags="-nostartfiles ../../../config/riscv32/boards/rv32wallyverilog/startup/crt0.S" --cflags="-O2 -nostartfiles"
|
||||||
find $(embench_dir)/bd_speed/ -type f ! -name "*.*" | while read f; do cp "$$f" "$$f.elf"; done
|
find $(embench_dir)/bd_speedopt_speed/ -type f ! -name "*.*" | while read f; do cp "$$f" "$$f.elf"; done
|
||||||
|
|
||||||
# uses the build_all.py python file to build the tests in addins/embench-iot/bd_speed/ optimized for size
|
build_sizeopt_speed:
|
||||||
buildsize:
|
$(embench_dir)/build_all.py --builddir=bd_sizeopt_speed --arch riscv32 --chip generic --board rv32wallyverilog --ldflags="-nostartfiles ../../../config/riscv32/boards/rv32wallyverilog/startup/crt0.S" --cflags="-Os -nostartfiles"
|
||||||
$(embench_dir)/build_all.py --builddir=bd_size --arch riscv32 --chip generic --board rv32wallyverilog --ldflags="-nostdlib -nostartfiles ../../../config/riscv32/boards/rv32wallyverilog/startup/dummy.S" --cflags="-Os -msave-restore" --dummy-libs="libgcc libm libc crt0"
|
find $(embench_dir)/bd_sizeopt_speed/ -type f ! -name "*.*" | while read f; do cp "$$f" "$$f.elf"; done
|
||||||
|
|
||||||
|
# uses the build_all.py python file to build the tests in addins/embench-iot/bd_speed/ optimized for speed and size
|
||||||
|
build_speedopt_size:
|
||||||
|
$(embench_dir)/build_all.py --builddir=bd_speedopt_size --arch riscv32 --chip generic --board rv32wallyverilog --ldflags="-nostdlib -nostartfiles ../../../config/riscv32/boards/rv32wallyverilog/startup/dummy.S" --cflags="-O2 -msave-restore" --dummy-libs="libgcc libm libc crt0"
|
||||||
|
|
||||||
|
build_sizeopt_size:
|
||||||
|
$(embench_dir)/build_all.py --builddir=bd_sizeopt_size --arch riscv32 --chip generic --board rv32wallyverilog --ldflags="-nostdlib -nostartfiles ../../../config/riscv32/boards/rv32wallyverilog/startup/dummy.S" --cflags="-Os -msave-restore" --dummy-libs="libgcc libm libc crt0"
|
||||||
|
|
||||||
# builds dependencies, then launches modelsim and finally runs python wrapper script to present results
|
# builds dependencies, then launches modelsim and finally runs python wrapper script to present results
|
||||||
sim: modelsim_build_memfile modelsim_run speed
|
sim: modelsim_build_memfile modelsim_run speed
|
||||||
@ -28,35 +37,37 @@ modelsim_run:
|
|||||||
cd ../../benchmarks/embench/
|
cd ../../benchmarks/embench/
|
||||||
|
|
||||||
# builds the objdump based on the compiled c elf files
|
# builds the objdump based on the compiled c elf files
|
||||||
objdump: buildspeed
|
objdump:
|
||||||
find $(embench_dir)/bd_speed/ -type f -name "*.elf" | while read f; do riscv64-unknown-elf-objdump -S -D "$$f" > "$$f.objdump"; done
|
find $(embench_dir)/bd_*_speed/ -type f -name "*.elf" | while read f; do riscv64-unknown-elf-objdump -S -D "$$f" > "$$f.objdump"; done
|
||||||
|
|
||||||
# build memfiles, objdump.lab and objdump.addr files
|
# build memfiles, objdump.lab and objdump.addr files
|
||||||
modelsim_build_memfile: objdump
|
modelsim_build_memfile: objdump
|
||||||
find $(embench_dir)/bd_speed/ -type f -name "*.elf" | while read f; do riscv64-unknown-elf-elf2hex --bit-width 32 --input "$$f" --output "$$f.memfile"; done
|
find $(embench_dir)/bd_*_speed/ -type f -name "*.elf" | while read f; do riscv64-unknown-elf-elf2hex --bit-width 32 --input "$$f" --output "$$f.memfile"; done
|
||||||
find $(embench_dir)/bd_speed/ -type f -name "*.elf.objdump" | while read f; do extractFunctionRadix.sh $$f; done
|
find $(embench_dir)/bd_*_speed/ -type f -name "*.elf.objdump" | while read f; do extractFunctionRadix.sh $$f; done
|
||||||
|
|
||||||
# builds the tests for speed, runs them on spike and then launches python script to present results
|
# builds the tests for speed, runs them on spike and then launches python script to present results
|
||||||
# note that the speed python script benchmark_speed.py can get confused if there's both a .output file created from spike and modelsim
|
# note that the speed python script benchmark_speed.py can get confused if there's both a .output file created from spike and modelsim
|
||||||
# you'll need to manually remove one of the two .output files, or run make clean
|
# you'll need to manually remove one of the two .output files, or run make clean
|
||||||
spike: buildspeed objdump spike_run speed
|
spike: buildspeed spike_run speed
|
||||||
|
|
||||||
# command to run spike on all of the benchmarks
|
# command to run spike on all of the benchmarks
|
||||||
spike_run:
|
spike_run:
|
||||||
find $(embench_dir)/bd_speed/ -type f -name "*.elf" | while read f; do spike --isa=rv32imac +signature=$$f.spike.output +signature-granularity=4 $$f; done
|
find $(embench_dir)/bd_*opt_speed/ -type f -name "*.elf" | while read f; do spike --isa=rv32imac +signature=$$f.spike.output +signature-granularity=4 $$f; done
|
||||||
|
|
||||||
# python wrapper to present results of embench size benchmark
|
# python wrapper to present results of embench size benchmark
|
||||||
size: buildsize
|
size: buildsize
|
||||||
$(embench_dir)/benchmark_size.py --builddir=bd_size --json-output > wallySize.json
|
$(embench_dir)/benchmark_size.py --builddir=bd_speedopt_size --json-output > wallySpeedOpt_size.json
|
||||||
|
$(embench_dir)/benchmark_size.py --builddir=bd_sizeopt_size --json-output > wallySizeOpt_size.json
|
||||||
|
|
||||||
# python wrapper to present results of embench speed benchmark
|
# python wrapper to present results of embench speed benchmark
|
||||||
speed:
|
speed:
|
||||||
$(embench_dir)/benchmark_speed.py --builddir=bd_speed --target-module run_wally --cpu-mhz=1 --json-output > wallySpeed.json
|
$(embench_dir)/benchmark_speed.py --builddir=bd_sizeopt_speed --target-module run_wally --cpu-mhz=1 --json-output > wallySizeOpt_speed.json
|
||||||
|
$(embench_dir)/benchmark_speed.py --builddir=bd_speedopt_speed --target-module run_wally --cpu-mhz=1 --json-output > wallySpeedOpt_speed.json
|
||||||
|
|
||||||
# deletes all files
|
# deletes all files
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(embench_dir)/bd_speed/
|
rm -rf $(embench_dir)/bd_*_speed/
|
||||||
rm -rf $(embench_dir)/bd_size/
|
rm -rf $(embench_dir)/bd_*_size/
|
||||||
|
|
||||||
allclean: clean
|
allclean: clean
|
||||||
rm -rf $(embench_dir)/logs/
|
rm -rf $(embench_dir)/logs/
|
||||||
|
@ -65,7 +65,7 @@ logic [3:0] dummy;
|
|||||||
logic [`XLEN-1:0] PCW;
|
logic [`XLEN-1:0] PCW;
|
||||||
|
|
||||||
string ProgramAddrMapFile, ProgramLabelMapFile;
|
string ProgramAddrMapFile, ProgramLabelMapFile;
|
||||||
integer ProgramAddrLabelArray [string];
|
integer ProgramAddrLabelArray [string] = '{ "begin_signature" : 0, "tohost" : 0 };
|
||||||
|
|
||||||
logic DCacheFlushDone, DCacheFlushStart;
|
logic DCacheFlushDone, DCacheFlushStart;
|
||||||
|
|
||||||
@ -197,7 +197,6 @@ logic [3:0] dummy;
|
|||||||
ProgramLabelMapFile = {pathname, tests[test], ".elf.objdump.lab"};
|
ProgramLabelMapFile = {pathname, tests[test], ".elf.objdump.lab"};
|
||||||
// declare memory labels that interest us, the updateProgramAddrLabelArray task will find the addr of each label and fill the 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)
|
// 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)
|
||||||
ProgramAddrLabelArray = '{ "begin_signature" : 0, "tohost" : 0 };
|
|
||||||
updateProgramAddrLabelArray(ProgramAddrMapFile, ProgramLabelMapFile, ProgramAddrLabelArray);
|
updateProgramAddrLabelArray(ProgramAddrMapFile, ProgramLabelMapFile, ProgramAddrLabelArray);
|
||||||
$display("Read memfile %s", memfilename);
|
$display("Read memfile %s", memfilename);
|
||||||
reset_ext = 1; # 42; reset_ext = 0;
|
reset_ext = 1; # 42; reset_ext = 0;
|
||||||
|
@ -37,8 +37,8 @@ string tvpaths[] = '{
|
|||||||
"../../tests/wally-riscv-arch-test/work/",
|
"../../tests/wally-riscv-arch-test/work/",
|
||||||
"../../tests/imperas-riscv-tests/work/",
|
"../../tests/imperas-riscv-tests/work/",
|
||||||
"../../benchmarks/riscv-coremark/work/",
|
"../../benchmarks/riscv-coremark/work/",
|
||||||
"../../addins/embench-iot/bd_speed/src/"
|
"../../addins/embench-iot/"
|
||||||
};
|
};
|
||||||
|
|
||||||
string coremark[] = '{
|
string coremark[] = '{
|
||||||
`COREMARK,
|
`COREMARK,
|
||||||
@ -47,28 +47,50 @@ string tvpaths[] = '{
|
|||||||
|
|
||||||
string embench[] = '{
|
string embench[] = '{
|
||||||
`EMBENCH,
|
`EMBENCH,
|
||||||
"aha-mont64/aha-mont64",
|
"bd_speedopt_speed/src/aha-mont64/aha-mont64",
|
||||||
"crc32/crc32",
|
"bd_speedopt_speed/src/crc32/crc32",
|
||||||
"cubic/cubic",
|
"bd_speedopt_speed/src/cubic/cubic",
|
||||||
"edn/edn",
|
"bd_speedopt_speed/src/edn/edn",
|
||||||
"huffbench/huffbench",
|
"bd_speedopt_speed/src/huffbench/huffbench",
|
||||||
"matmult-int/matmult-int",
|
"bd_speedopt_speed/src/matmult-int/matmult-int",
|
||||||
"md5sum/md5sum",
|
"bd_speedopt_speed/src/md5sum/md5sum",
|
||||||
"minver/minver",
|
"bd_speedopt_speed/src/minver/minver",
|
||||||
"nbody/nbody",
|
"bd_speedopt_speed/src/nbody/nbody",
|
||||||
"nettle-aes/nettle-aes",
|
"bd_speedopt_speed/src/nettle-aes/nettle-aes",
|
||||||
"nettle-sha256/nettle-sha256",
|
"bd_speedopt_speed/src/nettle-sha256/nettle-sha256",
|
||||||
"nsichneu/nsichneu",
|
"bd_speedopt_speed/src/nsichneu/nsichneu",
|
||||||
"picojpeg/picojpeg",
|
"bd_speedopt_speed/src/picojpeg/picojpeg",
|
||||||
"primecount/primecount",
|
"bd_speedopt_speed/src/primecount/primecount",
|
||||||
"qrduino/qrduino",
|
"bd_speedopt_speed/src/qrduino/qrduino",
|
||||||
"sglib-combined/sglib-combined",
|
"bd_speedopt_speed/src/sglib-combined/sglib-combined",
|
||||||
"slre/slre",
|
"bd_speedopt_speed/src/slre/slre",
|
||||||
"st/st",
|
"bd_speedopt_speed/src/st/st",
|
||||||
"statemate/statemate",
|
"bd_speedopt_speed/src/statemate/statemate",
|
||||||
"tarfind/tarfind",
|
"bd_speedopt_speed/src/tarfind/tarfind",
|
||||||
"ud/ud",
|
"bd_speedopt_speed/src/ud/ud",
|
||||||
"wikisort/wikisort"
|
"bd_speedopt_speed/src/wikisort/wikisort",
|
||||||
|
"bd_sizeopt_speed/src/aha-mont64/aha-mont64",
|
||||||
|
"bd_sizeopt_speed/src/crc32/crc32",
|
||||||
|
"bd_sizeopt_speed/src/cubic/cubic",
|
||||||
|
"bd_sizeopt_speed/src/edn/edn",
|
||||||
|
"bd_sizeopt_speed/src/huffbench/huffbench",
|
||||||
|
"bd_sizeopt_speed/src/matmult-int/matmult-int",
|
||||||
|
"bd_sizeopt_speed/src/md5sum/md5sum",
|
||||||
|
"bd_sizeopt_speed/src/minver/minver",
|
||||||
|
"bd_sizeopt_speed/src/nbody/nbody",
|
||||||
|
"bd_sizeopt_speed/src/nettle-aes/nettle-aes",
|
||||||
|
"bd_sizeopt_speed/src/nettle-sha256/nettle-sha256",
|
||||||
|
"bd_sizeopt_speed/src/nsichneu/nsichneu",
|
||||||
|
"bd_sizeopt_speed/src/picojpeg/picojpeg",
|
||||||
|
"bd_sizeopt_speed/src/primecount/primecount",
|
||||||
|
"bd_sizeopt_speed/src/qrduino/qrduino",
|
||||||
|
"bd_sizeopt_speed/src/sglib-combined/sglib-combined",
|
||||||
|
"bd_sizeopt_speed/src/slre/slre",
|
||||||
|
"bd_sizeopt_speed/src/st/st",
|
||||||
|
"bd_sizeopt_speed/src/statemate/statemate",
|
||||||
|
"bd_sizeopt_speed/src/tarfind/tarfind",
|
||||||
|
"bd_sizeopt_speed/src/ud/ud",
|
||||||
|
"bd_sizeopt_speed/src/wikisort/wikisort"
|
||||||
};
|
};
|
||||||
|
|
||||||
string wally64a[] = '{
|
string wally64a[] = '{
|
||||||
|
Loading…
Reference in New Issue
Block a user