トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF 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 を参考に,サンプル 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になるなあ.