HDL をブロック デザインに追加するには、まず RTL ソース ファイルを Vivado プロジェクトに追加する必要があります。デザイン ソースの追加に関する詳細は、 『Vivado Design Suite ユーザー ガイド: システム レベル デザイン入力』 (UG895) のこのセクションを参照してください。追加したソース ファイルが Sources ウィンドウの Design Sources フォルダーの下に表示されます。
1 つの RTL ソース ファイル内で、1 つまたは複数のモジュールまたはエンティティを定義できます。モジュールには、1 つまたは複数の IP インスタンス (HLS IP、ELF との依存関係が含まれた IP、OOC IP など、すべての IP タイプをサポート)、1 つまたは複数のブロック デザイン、1 つまたは複数の OOC/グローバル ソース (IP またはブロック デザイン)、またはこれらを混ぜて含めることが可能です。次の図に示すように、Vivado IP インテグレーターでは、追加されたソース ファイルで定義されているどのモジュールにもアクセスできます。
ブロック デザインの場合、デザイン キャンバスで右クリックして Add Module コマンドをクリックし、RTL モジュールへのリファレンスを追加できます。
Add Module ダイアログ ボックスが表示され、プロジェクトに追加されている RTL ソース ファイルで定義されている有効なモジュールがすべてリストされます。次の図に示すように、リストからモジュールを選択して OK をクリックすると、ブロック デザインにそれが追加されます。
Add Module ダイアログ ボックスには、Hide incompatible modules チェック ボックス (デフォルトでオン) も含まれます。このチェック ボックスをオンにすると、ソース ファイルで定義されているモジュールで、モジュール参照機能の要件を満たさず、追加不可能なモジュールが非表示となります。
このチェック ボックス ボックスをオフにすると、追加されているソース ファイルで定義されているすべての RTL モジュールが表示されますが、要件を満たしていないモジュールはブロック デザインには追加できません。このチェック ボックスをオフにしたときに表示されるモジュールには、次のようなものがあります。
- 構文エラーを含むファイル
- ソースのないモジュール
- EDIF ネットリスト、DCP ファイル、別のブロック デザイン、サポートされない IP を含むか参照しているモジュール定義
RTL モジュールのインスタンス名が、RTL ブロックの最上位ソースからエンティティ/モジュール定義で定義されたように参照されます。次の図に示す my_dff8_inst は、次のコード サンプルでは最上位エンティティとして表示されています。
Sources ウィンドウでモジュールを右クリックし、Add Module to Block Design をクリックしても、開いているブロック デザインにモジュールを追加できます。
最後に、次の図に示すように RTL を Sources ウィンドウからブロック デザイン キャンバスにドラッグ アンド ドロップできます。
IP インテグレーターで選択したモジュールがブロック デザインに追加され、デザインのほかの IP と同様に接続できるようになります。追加された RTL モジュールには、次の図に示すように、ブロック デザイン内でシンボルの中央に「RTL」と表示されます。
プロジェクトにデザイン ソースを追加した後に新しいブロック デザインを作成すると、Sources ウィンドウでブロック デザインはデザインの最上位として設定されません。プロジェクトにソース ファイルを追加すると、Vivado Design Suite によりデザインの最上位モジュールが自動的に設定されます。
ブロック デザインをデザインの最上位として設定するには、Sources ウィンドウでブロック デザインを右クリックして Create HDL Wrapper をクリックします。詳細は、ブロック デザインの最上位デザインへの統合 を参照してください。
ラッパーを作成した後、Sources ウィンドウでそれを右クリックして Set as Top をクリックします。次の図に示すように、ブロック デザインにより参照されている RTL モジュールは HDL ラッパーの下のデザイン階層に移動します。
ブロック デザインから参照モジュールを削除すると、Sources ウィンドウでそのモジュールがブロック デザイン階層の外に移動されます。