Diary/2019-7-1
気づいたら
7月.2019年も後半戦.
Intel PACでSignal Tap使う
PACでSiganl Tap使う練習.
Accelerator Functional Unit (AFU) Developer’s Guide for Intel(R) Programmable Acceleration Card with Intel(R) Arria(R) 10 GX FPGA を参考に,サンプル nlb_mode_0_stp を動かしてみる.
まずは,
% cd $OPAE_PLATFORM_ROOT/hw/samples/nlb_mode_0_stp/
に移動.
% afu_synth_setup --source hw/rtl/filelist_mode_0_stp.txt build_synth % cd build_synth % rtl_src_config --qsf --rel build ../hw/rtl/filelist_mode_0_stp.txt >hw/afu.qsf # 変更してなければ不要な気が % ${OPAE_PLATFORM_ROOT}/bin/run.sh
としてビルド.
ここで,filelist_mode_0_stp.txt をみてみると,
+define+INCLUDE_REMOTE_STP C:filelist_mode_0.txt QI:../par/${OPAE_PLATFORM_FPGA_FAMILY}/extra_tcl-0_stp.tcl ../par/nlb_0_stp.sdc
と,INCLUDE_REMOTE_STPのバリアントがついていることが確認できる.
参照されている,hw/rtl/filelist_mode_0.txtの中身は,
+define+NLB400_MODE_0 C:filelist_base.txt
で,さらに,hw/rtl/filelist_base.txtの中身は,
+define+BIST_AFU nlb_400.json test_sw1.sv test_rdwr.sv test_lpbk1.sv requestor.sv nlb_lpbk.sv nlb_csr.sv nlb_C1Tx_fifo.sv ccip_std_afu.sv ccip_interface_reg.sv ccip_debug.sv arbiter.sv nlb_gram_sdp.v pipeline.sv platform/${OPAE_PLATFORM_FPGA_FAMILY}/local_mem.sv resync.v altera_std_synchronizer_nocut.v QSYS_IPs/${OPAE_PLATFORM_FPGA_FAMILY}/RAM/req_C1TxRAM2PORT.qsys QSYS_IPs/${OPAE_PLATFORM_FPGA_FAMILY}/RAM/lpbk1_RdRspRAM2PORT.qsys include_files/common ../par/stp_basic.stp ../par/nlb_0_stp.sdc
となっていて,これが実体っぽい.
また,filelist_mode_0_stp.txtに書いてあるpar/${OPAE_PLATFORM_FPGA_FAMILY}/extra_tcl-0_stp.tclには,
set_global_assignment -name ENABLE_SIGNALTAP ON set_global_assignment -name USE_SIGNALTAP_FILE ../hw/par/A10/stp_basic.stp
と書いてあった.このファイルは,build_synth/hw/afu.qsf の中で,
source ../../hw/par/A10/extra_tcl-0_stp.tcl
と参照される.
推測だけど,afu_synth_setup の--sourceに指定するファイルでは,
C: foo
って書くとfooが,afu_synth_setup時に展開されて,
QI: bar
って書くとbarが,build_synth/hw/afu.qsfで参照されるてQuartusで使われる,の,かな.
ビルドがおわったら nlb_400.gbs っていうのができたので,
% sudo fpgaconf nlb_400.gbs
でコンフィグレーション.
ソフトウェアは,$OPAE_PLATFORM_ROOT/hw/samples/nlb_mode_0_stp/sw/READMEにも書いてあるように
$OPAE_PLATFORM_ROOT/sw/opae-1.1.2-1/samples/ の下.
% gcc -std=c99 hello_fpga.c -lopae-c -luuid
とかして,コンパイル.
リモートデバッグには,
- $OPAE_PLATFORM_ROOT/hw/remote_debug/mmlink_setup_profiled.tcl
- $OPAE_PLATFORM_ROOT/hw/remote_debug/remote_debug.sof
を使う.これはインストールされたものを使う.
一つターミナルを開いて
% sudo mmlink -P 3333
を実行.
別のターミナルで
%export PATH=どこか/intelFPGA_pro/quartus/sopc_builder/bin:$PATH
(自分の環境だと)
% export PATH=/home/miyoshi/data/inteldevstack/intelFPGA_pro/quartus/sopc_builder/bin:$PATH
として,
% cd $OPAE_PLATFORM_ROOT/hw/remote_debug % system-console --rc-script=mmlink_setup_profiled.tcl remote_debug.sof localhost 3333
とか.
QuartusでメニューのFileでstpを指定するとSignal Tapが開く.
JTAG Chain configurationに,
"system-console on localhost"っていうのがみえてるのでそれを指定.
とりあえず,JTAG Readyになった.
$OPAE_PLATFORM_ROOT/sw/opae-1.1.2-1/samples/ の下でコンパイルしたa.outを
./a.out -s
として実行(FPGA_OPEN_SHAREDをつけてfpgaOpenを呼ぶ)するとプログラムは実行できた.
...けど,Ready to acquireにならないな
インストール時に展開されたであろう,
- ./hw/par/A10/stp_basic.stp
- ./bin/nlb_mode_0_stp.gbs
ならReady to acquireになるなあ.