FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages

AWS F1インスタンス上のFireSimでBOOMコアをシミュレーションする試行(5. オリジナルAFI(Amazon FPGA Image)の生成方法調査)

f:id:msyksphinz:20190405012417p:plain

AWS F1インスタンス上でRISC-Vコアを動かすことのできるFireSimは、徐々にバージョンが上がっており、現在はBOOM(Berkeley Out-of Order Machine)のLinux起動もサポートできるようになっているらしい。

fires.im

一度、F1インスタンスチュートリアルはやってみたことがあるのだが、しばらく時間もたっているし、前回はRocketコアで検証した環境を、BOOMコアを使って再検証してみたい。

チュートリアルを見ながら、再度FireSimをF1インスタンス上に構築するチュートリアルを試してみることにした。以下の資料を参考にした。

docs.fires.im

docs.fires.im

このセクションではFireSimのシミュレーションに使用する独自のAFIイメージの作成を行う。 AFIとは、Amazon FPGA Imageの略称で、AFIを作成しておけばすぐにAWS F1インスタンスにデザインをデプロイすることができる。

Amazon S3のアカウントをセットアップしていることを前提にする。Amazon S3のコンソール上で[Create bucket]をクリックして新しいバケットをセットアップする。

[Bucket name]は"firesim-(アカウント名)"とする必要がある。そうしないとfiresimがS3バケットを認識してくれない。次に[Next]をクリックした。

そのまま[Next]をクリックし続け、[Create Bucket]をクリックして新しいバケットを生成する。

f:id:msyksphinz:20190414233926p:plain
作成されたS3 firesim-msyksphinzバケット

S3上でバケットの構築が完了すると、次にマネージャインスタンス上で作業を行う。firesim/deploy/config_build.iniを編集した。

[afibuild]

s3bucketname=firesim-msyksphinz

[builds]
# this section references builds defined in config_build_recipes.ini
# if you add a build here, it will be built when you run buildafi
firesim-singlecore-no-nic-lbp
# #firesim-singlecore-nic-lbp
# #firesim-quadcore-no-nic-lbp
# #firesim-quadcore-nic-lbp
# firesim-quadcore-no-nic-ddr3-llc4mb
# firesim-quadcore-nic-ddr3-llc4mb
# #fireboom-singlecore-no-nic-lbp
# fireboom-singlecore-no-nic-ddr3-llc4mb
# #fireboom-singlecore-nic-lbp
# fireboom-singlecore-nic-ddr3-llc4mb
# #firesim-supernode-singlecore-nic-ddr3-llc4mb
# #firesim-supernode-quadcore-nic-ddr3-llc4mb
# firesim-supernode-singlecore-nic-lbp


[agfistoshare]
firesim-singlecore-no-nic-lbp
# #firesim-singlecore-nic-lbp
# #firesim-quadcore-no-nic-lbp
# #firesim-quadcore-nic-lbp
# firesim-quadcore-no-nic-ddr3-llc4mb
# firesim-quadcore-nic-ddr3-llc4mb
# #fireboom-singlecore-no-nic-lbp
# fireboom-singlecore-no-nic-ddr3-llc4mb
# #fireboom-singlecore-nic-lbp
# fireboom-singlecore-nic-ddr3-llc4mb
# #firesim-supernode-singlecore-nic-ddr3-llc4mb
# #firesim-supernode-quadcore-nic-ddr3-llc4mb
# firesim-supernode-singlecore-nic-lbp

ターゲットとなるfiresim-singlecore-no-nic-lbpのみを残し、あとはコメントアウトした。これをしっかり行わないと、ターゲットとなるイメージの数だけインスタンスが生成されてしまい、料金がめっちゃかさむことになる。 上記のように編集した後、firesim buildafiを実行します。処理が完了するのに、3~4時間程度かかる。

しかし一応ビルドが完了したと思われる段階で、Current state : pendingと表示された。これ、合っているのかなあ?

send e-mail to $env(EMAIL)";
[192.168.3.37] out: #   exec $env(AWS_FPGA_REPO_DIR)/shared/bin/scripts/notify_via_sns.py
[192.168.3.37] out: # }
[192.168.3.37] out: # puts "AWS FPGA: ([clock format [clock seconds] -format %T]) - Build complete.";
[192.168.3.37] out: AWS FPGA: (14:12:45) - Build complete.
[192.168.3.37] out: INFO: [Common 17-206] Exiting Vivado at Sun Apr 14 14:12:45 2019...
[192.168.3.37] out:
Resulting AGFI: agfi-0cf781ba8d9a177c3
Resulting AFI: afi-04cf716b0e6f8b13f
Waiting for create-fpga-image completion.
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending
Current state: pending

一応、RTLの生成と、Vivadoでの論理合成とイメージの作成が行われ、その結果がS3に書き込まれている。この中身を確認していこう。

f:id:msyksphinz:20190414234141p:plain
生成されたFireimのAFIイメージ