sdsoc と vivado
TRANSCRIPT
SDSoC 開発時の Vivado の使い方有限会社シンビー
Xilinx 非推奨(たぶん )
SDSoC でコンパイルする
SDDebug/_sds/p0/ipi/というディレクトリができる。SDSoC では詳細を見ることが出来ない。
Explorer で見てみる
Vivado の プロジェクトファイルがある。適切な Vivado のバージョンで起動
Vivado で見てみる
Synthesis/Implementation は終了しているはず
Complete: 上の段が Synthesis : 下の段がImplementattion
Elapsed が実行時間 :Synthesis 2.25 min :Implementattion は 9.25 min
タイミングがミートしていないとこの辺でエラー ( 赤文字 ) になる
Block Diagram( 回路図 ) を見る
ここをクリック
Block Diagram 出現
このボタンで各ブロックを自動整形
整形された、、、はず
SDSoC が自動生成した I/F部の IP コアSDSoC が Vivado HLS を利用して高位合成した IP コア
SDSoC が差し込んだ Data Mover
PDF に落とすこともできる
マウス右クリックでメニューが出現
詳しく見てみる
FIFO が見える 外部メモリへの I/F関数の I/F
関数のコントロール用I/F
Zynq の何につながっているか?
ACP のためのAXI Interconnect というスイッチングバスの IP コア
Zynq を拡大
ACP (AXI)GP0 (AXI)
DDR
Zynq と PL の接続
UG585 から抜粋HP(AXI)
DDR
ACP(AXI)GP(AXI)
Zynq の AXI の種類• ACP – L2 キャッシュを使った高速アクセス行列計算などに利用• HP – 64 bit 対応の高速バス画像データのやり取りなどに利用• GP – 汎用汎用レジスタインタフェースなどに利用
ビット幅
数ACP 64 1 AXI3.0(?) 64 ビットキ ャ ッシュコ ヒ ーレントマス ターポー トHP 32 /64 4 AXI3.0 高性能 / 広帯域マスター (High Performance) ポー トGP 32 4(Mx2, Sx2) AXI3.0 汎用( General) ポート大半のケースでは HP を使えばいいはず。
SDSoC はなぜか行列計算にスポットを当てているので、 ACP がデフォルト
IP コアをダブルクリックでさらに詳細な設定を見ることが出来る
ダブルクリック
IP コアの設定
クリックで OARG のタブに切り替え
FIFO の深さが見れた
440!!
AP_CTRL も見る
+ マークをクリック
I/F でまとめられていた信号線を見ることが出来る• ap_start – 開始• ap_done – 終了• ap_idle – アイドル• ap_ready – 準備
この辺を ChipScope でみればいいに違いない。もう一度 + をクリックして閉じておく
Mark Debug してみる信号線を左クリックで選択した後、右クリックでメニューを出すそして、 Mark Debug を選択
これにより信号線の属性がデバッグ用に記録される。
デバッグマークの確認
それっぽいデバッグマークがつく
Mark Debug の意味と注意点• 合成後に信号線のキャプチャーが出来る• 注意点– 合成には時間がかかる– コツをつかまないと実装で失敗する– 合成に成功していてもうまくキャプチャ出来ない時もある
どの信号を見るか?• AP_CTRL• ACP の信号線– AXI バスはセンシティブなので工夫が必要。うまくいくと取れることもある。
• FIFO や BRAM のポート– どうやらセンシティブらしい。失敗を繰り返している。実績ゼロ。
• DDR の信号線– あぶないからやっていない。– 取れても、 CPU も使うので雑音が多すぎるだろう
合成~デバッグまでの流れ• Debug Mark をつける• 合成 (Synthesis) をする• Setup Debug で ila を xdc に追加する• 実装 (Implementation) をする• Open Hardware Manager で実機と接続• ビットファイルのダウンロード• Vivado の GUI を使った信号線のデバッグ
どの信号を見るか?その2
今回は折角なので ACP もデバッグマークを付ける
実装の前に
Hierachy のタブを選択。 constrs_1 に制約のための xdc ファイルがないことを確認
合成
Run Synthesis をクリック
合成終了 → 実装に行かずに Design をみる
Set Up Debug を選択
Set Up Debug をクリック
ACP の信号線を Data にする
この作業は必須ではありません。 Data にすれば、 AXI のバスを観測するだけになり、なるべく乱さないようになるということを期待しています。
ILA Core Options はサンプル数を 4096 に
ここを 4096 にする。あとはデフォルトのまま。
Capture Control は特定の条件の時だけ Capture することが出来る機能。ここをチェックしなくても Trigger 契機に Full になるまで Capture する通常の機能は使える。Advanced Trigger をチェックすると Trigger 条件に複雑な構文を使えるようになる。
この作業 (Setup Debug)+ 実装の Save により xdc が生成されるxdc が追加されている
Unassigned Debug Nets が空になっている
ACP は Data に、 AP_CTRL は Data and Trigger に設定されている
実装
Run Implementation をクリック
Open Implemented Design で確認
Generate Bitstream で先に進めてもよい
Desgin Run の結果
21分もかかっている。
Design Timing Summary
Generate Bitstream
Generate Bitstream をクリック
BitStream が出来たら SDSoC に戻る
Launch on Hardware(SDSoC Debgger) を選択
ビットストリームがダウンロードされ
デバッグ パースペクティブで main で止まる
Vivado に戻って HW に接続
Program Device を選択
いままでうまくいっていれば Debug probes file にファイル名が埋めっている
Program を選択
デバッグ画面になる
トリガーを掛け Compare Usage を 1に
1 を選択。これにより AP が関数のスタート時にキャプチャを始められる。
キャプチャーの準備開始
トリガーをきっかけにキャプチャーする。
Waiting for Trigger の状態になる
SDSoC に戻りアプリケーションの実行
Resume で止まっているアプリケーションを再開
信号線をキャプチャ
キャプチャが停止し、Idle 状態になる
結果として信号線の動きをキャプチャ
おしまい