FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Tenstorrentの公開したRISC-V検証パタン riscv_arch_tests を試す (6. Tenstorrent のISSであるWhisperを試す)

TenstorrentのISSであるWhisperを使って、riscv_arch_testsのテストパタンがどのように動くのかを確認してみる。

使用環境はUbuntu-22.04 LTSである。

以下のパッケージをインストールする必要がある。

sudo apt install libboost-dev libboost-program-options-dev
git clone https://github.com/tenstorrent/riscv_arch_tests.git --recurse-submodules
cd riscv_arch_tests
make -j$(nproc) BOOST_DIR=/usr/include/boost/

ビルド後に、build-Linux/whisperが作成される。

./build-Linux/whisper --version
Version 1.792 compiled on Mar 23 2023 at 10:49:36

次にスクリプトを実行するのだが、quals fileと書いてあるが、このquals fileの定義が書いていなくて意味が分からない。 とりあえず中身を見てみると、whisper_config.jsonを直下のディレクトリにコピーしなければならないらしい。

cd riscv_tests
ln -s ../infra/whisper_config.json
../infra/quals.py --quals_file rv_i/rvi_compute_register_immediate.list
subprocess.CalledProcessError: Command '/home/msyksphinz/work/riscv/riscv_arch_tests/infra/../whisper/whisper ..//riscv_tests/rv_i/rvi_compute_register_immediate/rvi_compute_register_immediate_10 --configfile /home/msyksphinz/work/riscv/riscv_arch_tests/infra/whisper_config.json --maxinst 50000 --csv --memorysize 0x40000000000000 --logfile rvi_compute_register_immediate_10_whisper.log ' returned non-zero exit status 127.

これはバイナリの位置が違うのでこうなるのは当たり前なのだが、これでいいのだろうか? とりあえずLinux向けに改造してみる。

diff --git a/infra/quals.py b/infra/quals.py
index 6a08194..7cb42bb 100755
--- a/infra/quals.py
+++ b/infra/quals.py
@@ -111,7 +111,7 @@ class WhisperRunner(Runner):
                         f'--memorysize 0x40000000000000 '
                         f'--logfile {testname}_whisper.log '
     )
-    self._tool = f'{current_path}/../whisper/whisper'
+    self._tool = f'{current_path}/../whisper/build-Linux/whisper'

     if opts == "default":
       self._opts = self._default_opts

簡単なテストは全部PASSしたようだ。

../infra/quals.py --quals_file rv_i/rvi_compute_register_immediate.list
|TESTNAME                                          |STATUS                                            |
|rvi_compute_register_immediate_10                 |PASS                                              |
|rvi_compute_register_immediate_11                 |PASS                                              |
|rvi_compute_register_immediate_1                  |PASS                                              |
|rvi_compute_register_immediate_12                 |PASS                                              |
|rvi_compute_register_immediate_2                  |PASS                                              |
|rvi_compute_register_immediate_3                  |PASS                                              |
|rvi_compute_register_immediate_4                  |PASS                                              |
|rvi_compute_register_immediate_5                  |PASS                                              |
|rvi_compute_register_immediate_6                  |PASS                                              |
|rvi_compute_register_immediate_7                  |PASS                                              |
|rvi_compute_register_immediate_8                  |PASS                                              |
|rvi_compute_register_immediate_9                  |PASS                                              |
../infra/quals.py --quals_file rv_i/rvi_load_store.list
|TESTNAME                                          |STATUS                                            |
|rvi_load_store_10                                 |PASS                                              |
|rvi_load_store_11                                 |PASS                                              |
|rvi_load_store_12                                 |PASS                                              |
|rvi_load_store_13                                 |PASS                                              |
|rvi_load_store_14                                 |PASS                                              |
|rvi_load_store_15                                 |PASS                                              |
|rvi_load_store_1                                  |PASS                                              |
|rvi_load_store_2                                  |PASS                                              |
|rvi_load_store_3                                  |PASS                                              |
|rvi_load_store_4                                  |PASS                                              |
|rvi_load_store_5                                  |PASS                                              |
|rvi_load_store_6                                  |PASS                                              |
|rvi_load_store_7                                  |PASS                                              |
|rvi_load_store_8                                  |PASS                                              |
|rvi_load_store_9                                  |PASS                                              |