Intel PAC向けに既存のstpファイルを埋め込む

Pocket

Intel PACの動作を波形レベルでデバッグしたい場合、mmlinkを使ってデバッグすることができます。新しくstpファイルを作成する場合、Intel PACにSignal Tapを仕込むの手順でデバッグ可能なFPGA用ビットファイルを作ることができます。

ですが、stpファイルと設定済のafu_synth_setup向けファイルが存在している場合に、

$ afu_synth_setup --source hw/rtl/filelist.txt  build_synth
$ cd build_synth/
$ ${OPAE_PLATFORM_ROOT}/bin/run.sh

とゼロからビルドすると、うまくデバッグ可能なFPGA用ビットファイルを生成することができませんでした。毎回stpファイルをSignal Tap Logic Analyzerで作成しデザインに組み込むのは面倒なので、回避策が欲しいところ。というわけで、以下が回避方法です。

解決方法

既存のstpファイルと設定済のafu_synth_setup向けファイルが存在していて、stpファイルでデバッグ可能なFPGAビットファイルを作成するには、

$ afu_synth_setup --source hw/rtl/filelist.txt  build_synth
$ cd build_synth/

の後で、build_synth/build/afu_default.qsf に、

set_global_assignment -name ENABLE_SIGNALTAP ON
set_global_assignment -name USE_SIGNALTAP_FILE STPファイルのパス
set_global_assignment -name SIGNALTAP_FILE STPファイルのパス

を追加し、その後で、

$ {OPAE_PLATFORM_ROOT}/bin/run.sh

を実行しましょう。こうすると、生成したFPGAビットファイルでコンフィギュレーションしたPACに、うまくstpをアタッチしてデバッグすることができます。

実行例

たとえば、Accelerator Functional Unit Developer’s Guide for Intel(R) FPGA Programmable Acceleration Card で 例に取り上げられている nlb_mode_0_stp は、以下のような手順でビルドするとデバッグできます。

まず、ビルド環境を afu_synth_setup で生成します。

$ cd $OPAE_PLATFORM_ROOT/hw/samples/nlb_mode_0_stp/build_synth
$ afu_synth_setup --source hw/rtl/filelist_mode_0_stp.txt build_synth
$ cd build_synth/

build/afu_default.qsfにstp向けの設定を追加します。たとえば、catで追記します。ここで、../../hw/par/stp_basic.stp はデバッグに利用したいstpファイルの build から相対パスです。

cat >> build/afu_default.qsf
set_global_assignment -name ENABLE_SIGNALTAP ON
set_global_assignment -name USE_SIGNALTAP_FILE ../../hw/par/stp_basic.stp
set_global_assignment -name SIGNALTAP_FILE ../../hw/par/stp_basic.stp
Ctrl-D

このように build/afu_default.qsf を変更して、

$ {OPAE_PLATFORM_ROOT}/bin/run.sh

を実行すると、nlb_mode_0.gbsが生成されますので、

$ PACSign PR -t UPDATE -H openssl_manager -i nlb_mode_0.gbs -o nlb_mode_0_stp_unsigned.gbs

で、PACSignを適用します。これで stp_basic.stp でデバッグ可能なFPGAビットファイルを生成できます。