V-scale 開発環境の構築 再び

前回はいろいろ中途半端になったので、V-scale のシミュレーション、FPGA 上での実行に必要な環境構築の話を書き直します。
RISC-V に固有でない開発環境の話は ここ にあります。

■ 実体
僕がいじっているものは V-scale 本体 と、FPGA 用の周辺回路 に置いてあります。本体は 本家の物を fork して手を入れているものですが、本家の方は結構古いまま放置されていて最新の開発環境では使えないと思います。
本体にはそのまま実行できる ISA テストも含んでいます。これは後述する tests をアセンブルして、Intel-Hex フォーマットに変換したものです。オリジナルの tests からは src/test/input/ で make すると変換できます。FPGA 用のブートROMはソースファイルしか置いていません。後述する開発環境を使って、src/main/c で make することで作成します。
Verilog シミュレータには Model-Sim か Verilator を使います。FPGA 用の環境で端末を含めてシミュレーションするには Verilator が必須です。Veriloator のバージョンは 3.884 以降がおすすめで、 3.882 以前の物を使う場合は Makefile から ”--l2-name v” を削除してください。

■ RISC-V 開発環境
本家の GNU Compiler Toolchain を使います。コンパイラは 32bit 版と 64bit 版を両方作ることになります。以前は 64bit 版のコンパイラでも、”-m32” オプションで 32bit 用のバイナリが作れたのですが、今は出来なくなった様です。聞いた話では、以前もライブラリのリンクの時に失敗していたとのこと。僕はライブラリを使っていないので、気付いていませんでした。インストールは配布サイトにある通り。とっても時間がかかるので Newlib 用しかインストールしてません。
[追記 rv32ima に変えました。Freedom E310 にも対応するためです。c を付けると vscale が動かなくなりそうなので付けません。a はたぶん勝手に使うことはないでしょうし、付けても大丈夫と判断。]
sudo apt-get install ........
./configure --prefix=/opt/riscv --with-arch=rv32ima --with-abi=ilp32
sudo make
./configure --prefix=/opt/riscv
sudo make
■ ISA テスト
こちらも本家の riscv-tests を使います。使うのは rv32mi, rv32ui, rv32um 辺りかな。
アセンブラの引数チェックが厳しくなったのか、以下のファイルに修正が必要になりました。ってか、除算系は今まで意味のあるチェックが出来ていなかったっぽいです。

■ 命令セットシミュレータ
これは本当にいろいろなものがあるらしいですが、一番露出の多い本家の spike を使います。と言っても、ほとんど使う機会はありませんけど。リポジトリは Frontend ServerISA Simulatorpk の3つに分かれています。 これも配布サイトにある通りで簡単にインストールできますが、ISA Simulator は最後に make するのがいいみたい。また、先述の ISA テストももちろん spike で実行できますが、流したところで何の反応も示さないのでつまらない。spike を作る時に configure のオプションに --enable-commitlog を付けて make すると、とっても不親切ではありますが命令実行ログが取れるようです。[ -l オプションを付けて実行すると実行ログが出るそうです。]こんな感じなのですが、最初の2命令は何でしょうか?
~/RISC-V/riscv-tests/isa$ spike -l --isa=RV32 rv32uf-p-ldst
warning: only got 1401946112 bytes of target mem (wanted 4026531840)
core 0: 0x0000000000001000 (0x7ffff297) auipc t0, 0x7ffff
core 0: 0x0000000000001004 (0x00028067) jr t0
core 0: 0xffffffff80000000 (0x04c0006f) j pc + 0x4c
core 0: 0xffffffff8000004c (0xf1402573) csrr a0, mhartid
core 0: 0xffffffff80000050 (0x00051063) bnez a0, pc + 0
core 0: 0xffffffff80000054 (0x30102573) csrr a0, misa
core 0: 0xffffffff80000058 (0x00055863) bgez a0, pc + 16
core 0: 0xffffffff80000068 (0x00000e13) li t3, 0
core 0: 0xffffffff8000006c (0x00000297) auipc t0, 0x0

[PR]
トラックバックURL : http://tom01h.exblog.jp/tb/27477748
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
by tom01h | 2017-01-25 23:34 | PCとか | Trackback | Comments(0)