[min:max]` のようにすると、範囲を指定できます。
1. vadd カーネルの `sp` コマンド オプションを定義し、これを makefile に追加します。
カーネル インスタンス名は `vadd_1` になります。vadd カーネルのカーネル引数は、`vadd.cpp` ファイルで指定します。カーネル引数 (`in1`、`in2`、および `out`) を `DDR[0]`、`DDR[1]`、および `DDR[2]` に接続する必要があるので、
`sp` オプションは次のようになります。
```
sp = vadd_1.in1:DDR[0]
sp = vadd_1.in2:DDR[1]
sp = vadd_1.out:DDR[2]
```
* 引数 `in1` は DDR Bank0 にアクセス
* 引数 `in2` は DDR Bank1 にアクセス
* 引数 `out` は DDR Bank2 にアクセス
3 つの `sp` オプションが `connectivity.cfg` ファイルに追加され、その config ファイルを使用するために makefile を変更する必要があります。
2. makefile を開いて 18 行目のコメントをはずし、config ファイルが `v++` リンカー オプションに追加されるようにします。
config ファイルの使用は、Vitis ソフトウェア プラットフォームの新機能です。オプションをさまざまなファイルに含め、`--config` でそれらを指定できます。
3. 変更を保存したら、\[HW-Emulation] モードでデザインのビルドを終了します。
```bash
make clean
make all
```
\[Console] ビューにリンク段階で表示されるメッセージを確認します。次のようなメッセージが表示されます。
```
ip_name: vadd
Creating apsys_0.xml
INFO: [CFGEN 83-0] Port Specs:
INFO: [CFGEN 83-0] kernel: vadd_1, k_port: in1, sptag: DDR[0]
INFO: [CFGEN 83-0] kernel: vadd_1, k_port: in2, sptag: DDR[1]
INFO: [CFGEN 83-0] kernel: vadd_1, k_port: out, sptag: DDR[2]
INFO: [CFGEN 83-2228] Creating mapping for argument vadd_1.in1 to DDR[0] for directive vadd_1.in1:DDR[0]
INFO: [CFGEN 83-2228] Creating mapping for argument vadd_1.in2 to DDR[1] for directive vadd_1.in2:DDR[1]
INFO: [CFGEN 83-2228] Creating mapping for argument vadd_1.out to DDR[2] for directive vadd_1.out:DDR[2]
```
このメッセージには、Vitis コア開発キットが `--sp` オプションの設定に基づいて、カーネル引数を指定の DDR バンクに正しくマップしたことを示しています。
4. ハードウェア エミュレーションを実行して、デザインが正しいかどうか確認します。
```bash
make check
```
シミュレーションが終了すると、次に示すようにカーネル データ転送のメモリ接続がレポートされます。
```
TEST PASSED
INFO: [Vitis-EM 22] [Wall clock time: 23:15, Emulation time: 0.054906 ms] Data transfer between kernel(s) and global memory(s)
vadd_1:m_axi_gmem0-DDR[0] RD = 0.391 KB WR = 0.000 KB
vadd_1:m_axi_gmem1-DDR[1] RD = 0.391 KB WR = 0.000 KB
vadd_1:m_axi_gmem2-DDR[2] RD = 0.000 KB WR = 0.391 KB
```
プロファイル サマリ レポート (`profile_summary.html`) の [Kernel to Global Memory] セクションの [Memory Resources] からもデータ転送を確認できます。各カーネル引数に割り当てた DDR バンクと、ハードウェア エミュレーション中の各インターフェイスのトラフィックが表示されます。
![](./images/mult-ddr-banks_img_vitis.png)
### まとめ
このチュートリアルでは、カーネル vadd の `in1`、`in2`、および `out` ポートのデフォルトのマップを 1 つの DDR バンクから複数の DDR バンクに変更する方法を示しました。次の方法も学びました。
* `--sp` オプションを使用して `v++` リンカー オプションを設定し、カーネル引数を複数の DDR バンクに接続。
* アプリケーションをビルドして DDR マップを確認。
* ハードウェア エミュレーションを実行し、各ポートの転送レートおよび帯域幅使用率を確認。
メイン ページに戻る
Copyright© 2020 Xilinx
この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。
日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。