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ビットファイルを生成できます。