Chiselのイントロダクションを一通りやり終えたので、次はより実践的なデザインを見ていくために、RISC-V Sodorを見ていくことにした。
Sodorは教育用に作られたRISC-Vのプロセッサで、Rocketよりも単純な構成を取っている。 デザインも1ステージのものから5ステージのものまで用意されており、徐々にスケールアップしていくには良いデザインではなかろうか。
まずはデザインをコンパイルしてからシミュレーションをするところまで進めてみる。
まずはリポジトリをダウンロードする。RISC-V Fesvrも一緒に落ちてくるので、--recurse-submodules
を付けておくとよいかもしれない。
git clone https://github.com/ucb-bar/riscv-sodor.git --recurse-submodules
fesvrのビルドをする。これはシミュレーションを行うときに必要だ。
cd riscv-sodor/riscv-fesvr mkdir build cd build ../configure --prefix=${PWD}/../local make make install
次に、Sodorの本体に戻ってビルドを実行する。
cd ${riscv-sodor repository} ./configure --with-riscv=${PWD}/riscv-fesvr/local make
シミュレーションを実行するためには、run-emulator
を実行すればよい。
make run-emulator ... ./emulator +max-cycles=10000000 +verbose +loadmem=/home/msyksphinz/work/riscv/riscv-sodor/install/riscv-bmarks/rsort.riscv none 3>&1 1>&2 2>&3 | /home/msyksphinz/riscv64/bin/spike-dasm > output/rsort.riscv.out mcycle = minstret = mkdir -p output ./emulator +max-cycles=10000000 +verbose +loadmem=/home/msyksphinz/work/riscv/riscv-sodor/install/riscv-bmarks/towers.riscv none 3>&1 1>&2 2>&3 | /home/msyksphinz/riscv64/bin/spike-dasm > output/towers.riscv.out mcycle = minstret = mkdir -p output ./emulator +max-cycles=10000000 +verbose +loadmem=/home/msyksphinz/work/riscv/riscv-sodor/install/riscv-bmarks/vvadd.riscv none 3>&1 1>&2 2>&3 | /home/msyksphinz/riscv64/bin/spike-dasm > output/vvadd.riscv.out mcycle = minstret = [ PASSED ] output/median.riscv.out [ PASSED ] output/multiply.riscv.out [ PASSED ] output/qsort.riscv.out [ PASSED ] output/rsort.riscv.out [ PASSED ] output/towers.riscv.out [ PASSED ] output/vvadd.riscv.out make[1]: Leaving directory '/home/msyksphinz/work/riscv/riscv-sodor/emulator/rv32_ucode' install -d emulator/rv32_ucode/generated-src/ date > emulator/rv32_ucode/generated-src/timestamp
とりあえず動作することは確認した。