FPGA開発日記

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

ChipsAllianceのRISC-V命令セット・シミュレータWhisper(VeeR-ISS)がかなり使いやすくなっている

かつてWestern Digitalが開発していて、今はChipsAllianceに管理が移っているWhisper(VeeR-ISS)がかなり使いやすくなっていたのでメモ。 使い勝手としてはSpikeに近くなって、Linuxユーザモード向けのプログラムとかもかなり動かしやすくなっている。

github.com

  • hello.cpp
#include <iostream>

int main ()
{
  std::cout << "Hello World\n";

  return 0;
}
riscv64-unknown-linux-gnu-g++ hello.cpp -o hello -static
  • Whisperでの実行:
$ ../whisper/build-Linux/whisper hello
Warning: Write mask of CSR VSTART changed to 0x7f to be compatible with VLEN=128
Hello World
Target program exited with code 0
Retired 55382 instructions in 0.00s  15508821 inst/s

これくらいの簡単なプログラムであればサクッと実行してくれる。Linux Userモード向けのバイナリを作るときは-staticで全部入りのものを作っておくこと。

ファイルの扱いとかもちゃんと処理してくれる:

#include <iostream>
#include <fstream>

int main ()
{
  std::cout << "Hello World\n";

  std::ofstream wr_fp;
  wr_fp.open("sample.txt", std::ios::out);
  std::string writing_text = "Hello World\n";
  wr_fp << writing_text << std::endl;
  wr_fp.close();

  return 0;
}
$ ../whisper/build-Linux/whisper hello >& /dev/null
$ cat sample.txt
Hello World

過去にWhisperをちょっと試した記事はこちら:

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com