前段階で用意したデザインを AMD Vivado™ IDE で開き、[Design Runs] ウィンドウを確認します。最上位デザイン合成 run (synth_1) および親インプリメンテーション run (impl_1) は「アクティブ」になっています。Flow Navigator での作業内容は、これらのアクティブな run およびその子 run に適用されるので、[Run Synthesis] または [Run Implementation] をクリックすると、これらの run のみが実行され、また、その完了に必要な OOC 合成 run まで実行されます。特定の親または子インプリメンテーション run を選択し、右クリックして [Launch Runs] を選択すれば、最終ターゲットのフローを最後まで実行できます。
- Flow Navigator で、OK をクリックして合成を実行します。合成が完了したら、Open Synthesized
Design をクリックし、さらに OK をクリックして、その合成済みのデザインを開きます。
これで、すべての OOC モジュールが合成され、それから最上位の合成が実行されます。OOC モジュール (IP であってもなくても) を含んだデザインであればすべて、この同じように実行されます。
合成後に開いたデザインには、2 つの Pblock が既に定義されている点に注目してください。この 2 つの Pblock は pblocks_<board>.xdc にあり、最上位の 2 つのシフト インスタンスにマップされます。デザイン ソースに Pblock がない場合は、フローのこのステップで作成できます。デザイン階層で inst_shift インスタンスで右クリックし、 をクリックすると作成できます。インスタンスごとに Pblock が必要になります。
をクリックします。 - フロアプランにある 2 つの Pblock のいずれかを選択し、そのプロパティを確認します。最後にリストされている 2 つのプロパティは RESET_AFTER_RECONFIG (7 シリーズのみ) および SNAPPING_MODE で、DFX に特化したプロパティです。これらのオプションはどちらも Pblock の XDC でイネーブルになっている点に注目してください。
-
提供されているソースおよび制約に DRC を実行すると、エラーは発生しません。デバイスによっては、Pblock の質を改善する方法を提案するアドバイザリ メッセージが表示される可能性があります。この演習のデザインは単純なので、これらのメッセージが表示されても無視しても問題ありません。
ユーザー独自のフロアプランを作成してあって、それに対して DRC エラーがレポートされている場合は、作業を進める前に問題を修正します。どちらのモジュールにもブロック RAM リソースが必要です。水平方向または垂直方向のアライメントに関するエラーは、SNAPPING_MODE では修正されることを思い出してください。
ヒント: DFX のデザイン ルール チェックを早い段階で、頻繁に実行します。
をクリックして、DFX に特化したデザイン ルール チェックを実行します。時間を節約するには、Dynamic Function eXchange のチェック ボックスだけでなく、すべてのチェック ボックスをすべてオフにできます。 - Flow Navigator で Run
Implementation をクリックし、すべてのコンフィギュレーションで配置配線を実行します。
まず impl_1 のインプリメンテーション、次に child_0_impl_1 のインプリメンテーションが実行されます。詳細はすべて、Vivado で処理されます。すべての DFX 要件が揃った状態でこの 2 つの run で配置配線が実行されるだけでなく、DFX に特化したタスクがさらに 2、3 実行されます。impl_1 が完了すると、Vivado により次の作業が自動的に実行されます。
- 配線済みの shift_right RM それぞれに、モジュール レベル (OOC) のチェックポイントが生成されます。
- 最上位用にスタティックのみのデザイン イメージを作成するため、各 RP のロジックが抜き出されます。そのため、各インスタンスに
update_design -black_box
が呼び出されます。 - デザインのスタティック部分のみの配置配線がすべてロックされます。そのため、
lock_design -level
routing が呼び出されます。 - すべての子 run に再利用できるよう、ロックされたスタティックの親イメージが保存されます。
さらに、子 run が完了すると、モジュール レベルのチェックポイントが配線済みの shift_left RM 用に作成されます。ロックされたスタティック デザインのイメージは、親と同じなので、このステップは不要です。
特定のコンフィギュレーション run のみが必要な場合は、[Design Runs] ウィンドウで個別に実行を選択できます。子 run は親 run からのロックされたスタティック デザインを使用して開始するため、子 run を起動する前に親 run を完了させておく必要があります。
- インプリメンテーションが完了したらダイアログ ボックスが開くので、そこで Cancel をクリックします。注意:デザインが子インプリメンテーション run まで処理されていても、[Open Implemented Design] を選択すると、デフォルトで親 run が開きます。プルダウン メニューを使用して、目的のインプリメンテーション run を選択します。
この時点で、あと 2 つの手順が残っています。1 つ目の手順では、デザイン イメージのスタティック部分が一貫していることを確認するため、PR 検証を実行して 2 つのコンフィギュレーションを比較します。この手順は強く推奨されます。Vivado プロジェクトでは、自動的に実行されます。2 つ目の手順はビットストリームの生成です。
- Flow Navigator で Generate Bitstream をクリックします。これで、アクティブになっている親 run に対しビットストリーム生成が起動し、インプリメント済みの子 run すべてに対し、PR 検証、それからビットストリーム生成が起動します。
各コンフィギュレーション run に対し、フルおよびパーシャルのビットストリームがデフォルトで生成されます。
これで、Dynamic Function eXchange フロー全体をプロジェクト環境で実行できるようになりました。モジュール レベルの合成からビットストリーム生成まで、すべてのステップを GUI で実行できます。