Sniperのビルドについていくつかうまくいかなかった部分があるので、 ビルドスクリプトを修正してく。
結論としては、riscv/build-riscv.sh
を以下のように修正した。また、自分はSPEC2006を持っていないので、Dhrystoneなので代用しないとしようがない。
commit 5c943662ef5390218305f9e05bc035150b107b85 (HEAD -> master, origin/master, origin/HEAD) Author: msyksphinz-self <msyksphinz.dev@gmail.com> Date: Sat Aug 20 23:35:49 2022 +0900 Fix for RISC-V environment diff --git a/riscv/build-riscv.sh b/riscv/build-riscv.sh index dd2c57e..f854c67 100755 --- a/riscv/build-riscv.sh +++ b/riscv/build-riscv.sh @@ -1,3 +1,5 @@ +#!/usr/bin/bash + ENV_SCR=$(readlink -f "${BASH_SOURCE}") TOOLS_DIR=$(dirname $(dirname "${ENV_SCR}")) LOCAL_ROOT="${TOOLS_DIR}/riscv" @@ -30,12 +32,12 @@ if [ -z "$CPU2006_ROOT" ]; then fi export RISCV=$LOCAL_ROOT/riscv-tools/RV64G -export PATH=$RISCV/bin:$PATH +export PATH=$RISCV/bin:"${PATH}" export RV8_HOME=$LOCAL_ROOT/rv8 export SPECKLE_ROOT=$LOCAL_ROOT/Speckle export SPEC_DIR=$CPU2006_ROOT -NPROC=(`nproc --all`) +NPROC=`nproc --all` updateGitRepo() { URL=$1 BRANCH=$2 @@ -65,7 +67,28 @@ echo "Setting up riscv-tools..." URL=https://github.com/nus-comparch/riscv-tools.git BRANCH=sift FOLDER=riscv-tools -updateGitRepo "$URL" "$BRANCH" "$FOLDER" +git clone https://github.com/nus-comparch/riscv-tools.git -b sift +pushd riscv-tools +git submodule update --init --recursive riscv-fesvr +git submodule update --init riscv-gnu-toolchain + +pushd riscv-gnu-toolchain +git submodule update --init --recursive riscv-binutils-gdb +git submodule update --init --recursive riscv-dejagnu +git submodule update --init --recursive riscv-gcc +git submodule update --init --recursive riscv-glibc +git submodule update --init --recursive riscv-newlib +# git submodule update --init --recursive riscv-qemu +popd + +git submodule update --init --recursive riscv-isa-sim +git submodule update --init --recursive riscv-opcodes +# git submodule update --init --recursive riscv-openocd +git submodule update --init --recursive riscv-pk +git submodule update --init --recursive riscv-tests +popd + +# updateGitRepo "$URL" "$BRANCH" "$FOLDER"
すでにビルドされているDhrystone (RV64G、つまりCを使わないことがが重要らしい)を使ってSIFTファイルを生成してみた。
./riscv/riscv-tools/RV64G/build-isa-sim/spike --sift dhrystone.sift riscv/riscv-tools/RV64G/riscv64-unknown-elf/share/riscv-tests/benchmarks/dhrystone.riscv
なるほど、これはバイナリファイルらしい、よくわからない。次にこれをSniperのコマンドに渡してみる。
cd ${SPECKLE_ROOT} ../sniper/run-sniper -criscv --traces=../sniper/dhrystone.sift
sim.info
が出てきたが、これの意味はよくわからんな。どうとらえればいいんだ?
{'cmdline': ['../sniper/run-sniper', '-criscv', '--traces=../sniper/dhrystone.sift'], 'git_revision': '52e8d391ca96991d559e65ae91280977c0ae1e6e', 'host': 'ms-x1carbon', 'pin_version': 'unknown', 'rusage': (0.039094, 0.0069229999999999995, 8124, 0, 0, 0, 1975, 1, 0, 40, 0, 0, 0, 0, 271, 0), 'snipercmd': ['bash', '-c', '/home/msyksphinz/work/sniper/sniper/lib/sniper -c /home/msyksphinz/work/sniper/sniper/config/base.cfg --general/total_cores=1 --general/output_dir=/home/msyksphinz/work/sniper/Speckle -g --traceinput/mirror_output=true --config=/home/msyksphinz/work/sniper/Speckle/riscv.cfg -g --traceinput/stop_with_first_app=true -g --traceinput/restart_apps=false -g --traceinput/enabled=true -g --traceinput/emulate_syscalls=false -g --traceinput/num_apps=1 -g --traceinput/thread_0=/home/msyksphinz/work/sniper/sniper/dhrystone.sift'], 't_elapsed': 0.19097399711608887, 't_start': 1661007329.295105, 'tracecmds': [], 'user': 'msyksphinz', 'vmem': 7409664L}