トップ 一覧 Farm 検索 ヘルプ RSS ログイン

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|https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug-afu-dev.pdf] を参考に,サンプル 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になるなあ.