インテル® Quartus® Primeプロ・エディションのユーザーガイド: デザインのコンパイル

ID 683236
日付 6/26/2023
Public
ドキュメント目次

1.3. デザイン・ネットリストのインフラストラクチャー (ベータ版)

デザイン・ネットリスト・インフラストラクチャー (DNI) は、 インテル® Quartus® Prime開発ソフトウェアの基盤における大きな進化です。これにより、デザイン・コンバージェンスの高速化とユーザー・エクスペリエンスの向上を可能にする新機能を実現することができます。

最初の段階として、早期デザイン解析のアプリケーションとフローが可能になっており、次のような大きなメリットを得ることができます。

  • デザイン (RTL) のビューを変更することなく包括的かつインタラクティブに図式的に視覚化
  • 分かりやすく豊富なTclスクリプト・インターフェイスでのより深く高度なデザイン解析
  • 細かい合成でデザイン・インタラクションを高速化
  • RTLでのSDCターゲットを許可することにより、簡略でユーザーが使いやすい制約作成
  • SDCクリーンアップおよび合成後のタイミングでの早期タイミング解析により、デザインの反復を高速化

さらに、このリリースでは、DNIコンパイルフローの機能が完全になっています。アセンブラーをサポートするため、テスト目的でビットストリームを生成してハードウェアにダウンロードすることができます。従来のフローと同様に、DNIフローは、Signal Tap、さまざまなデザインフロー (パーシャル・リコンフィグレーション、ブラック・ボックス・インクリメンタル・コンパイルおよびインポート/エクスポート・フロー)、およびシミュレーション・モデルの生成に対応しています。ただし、今後の インテル® Quartus® Prime開発ソフトウェアのリリースでは、DNIフローでさらに多くの拡張機能をサポートしていると考えられます。

DNIフロー (ベータ版)

DNIフロー (ベータ版) では、DNIベースのコンパイルフローの初期段階で、デザインの完全なビューを変更することなく提供します。これは、デザインをより適切に解析し、改善するためのプラットフォームとして機能します。このベータ機能では、モノリシックなAnalysis & SynthesisステージがAnalysis & ElaborationステージとSynthesisステージに分割されます。

DNIフローを開始するには、 インテル® Quartus® Primeプロ・エディション・ソフトウェアを--dniオプションとともに実行する必要があります。次に例を示します。

quartus --dni <project>

フローを有効にすると、コンパイル・ダッシュボードが更新されます。ここでは、次の図に示すように、Analysis & Elaborationステージのプレビューモードにアクセスすることができます。

図 3. Analysis & ElaborationステージとSynthesisステージ

Analysis & Elaborationステージは一連の変更で構成され、Analysis & ElaborationステージとSynthesisステージで示すように、各ステージでデザインをプレビューすることができます。

  1. Elaborated: RTLから直接キャプチャーしたデザインのプレビューを変更することなく提供します。
  2. Instrumented: システムレベルのデバッグで測定されたプレビューを提供します (デバッグ・ファブリックとSignal Tapロジック・アナライザーがデザインに挿入されます)。
  3. Constrained: SDC制約を備えるデザインプレビューを提供します。
  4. Swept: デザインから不要なロジックを削除したデザインプレビューを提供します。

次の図は、Analysis & Synthesisステージの詳細な内訳を示しています。

図 4. DNIフローのAnalysis & Synthesis

Synthesisステージに関しては、デザインの合成 を参照してください。

注意:
クラシックフローとの非互換性

DNIコンパイルフローでコンパイルされたデザインは、クラシックフローと互換性がありません。次の内容を確認してください。

  • DNIコンパイルフローを使用してデザインをコンパイルし、プロジェクトを インテル® Quartus® Prime開発ソフトウェアのGUIで起動する際にDNIオプションを指定しないと、デザインを別のコンパイルエンジンでコンパイルしたことを示すメッセージが表示されます。プロジェクトの起動を続行すると、デザインをコンパイルすることができません。これは、クラシック・コンパイルフローでコンパイルされたデザインにも当てはまります。
  • パーティションベースのデザイン (例えば、パーシャル・リコンフィグレーションなど) の場合、ユーザー定義のパーティション間でDNIとクラシック・コンパイルフローが混在する状態はサポートされません。すべてのパーティションを同じコンパイルフロー (DNIまたはクラシック) でコンパイルする必要があります。
  • バージョン間で互換性のあるデザインのエクスポートまたはインポート機能を使用する場合、クラシック・コンパイルフローでコンパイルされ、以前の インテル® Quartus® Primeのバージョンからエクスポートされたデザインには、 インテル® Quartus® Primeのクラシック環境が必要です。同様に、バージョン互換のデータベースをDNIフローでコンパイルしている場合は、 インテル® Quartus® Prime DNI環境が必要です。ただし、この機能はまだサポートされていません。

DNIネットリストの5ボックス・データ・モデル

DNIは、従来のネットリスト5ボックス・データ・モデルを導入しています。これは、ほとんどのEDAツールで使用されており、通常はTclコマンドを使用してネットリストを走査します。次の2つのインスタンス例で説明します。

module top (input PI_1,
            input PI_2,
            input PI_3,
            output PO_4);
 
    wire net_2;
    wire net_3;
 
    AND_OR inst_1(PI_1, PI_2, PI_3, net_2);
    AND_OR inst_2(PI_3, PI_2, PI_1, net_3);
    assign PO_4 = net_2 | net_3;
endmodule
 
module AND_OR (input in_1,
                input in_2,
                input in_3,
                output out_1);
 
    wire net_1;
 
    assign net_1 = in_1 & in_2;
    assign out_1 = net_1 | in_3;
 
endmodule

DNIネットリストは、モジュール、インスタンス、ポート、インスタンス・ポート、およびネットで構成されます。次の色分けされた図を参照してください。

図 5. DNIネットリストの5ボックス・データ・モデル

次の表は、このネットリスト・データ・モデルのコア要素を説明しています。

表 3.  ネットリスト・データ・モデルのコア要素
データモデルの要素 詳細 Tclコマンド
モジュール 接続された一連のネットリスト・オブジェクトで、インスタンス、ポート、ネット、インスタンス・ポートなどがあります。これは、VerilogモジュールまたはVHDLエンティティーと類似しています。
各デザインには単一のトップモジュールのみがあり、そこに他のモジュールまたはライブラリー・セルのインスタンス・グループを含みます。
注: ライブラリー・セル・インスタンスは、リーフ・インスタンスとも呼ばれます。
ポート モジュールのI/Oインターフェイスです。デザインには入力ポート、出力ポート、または双方向ポートを含めることができます。

DNIデータモデルでは、PI_1PI_2PI_3PO_4がポートです。

dni::get_ports
インスタンス

モジュールまたはプリミティブのインスタンス化です。モジュール・インスタンスは、階層インスタンス、サブモジュール、または最上位モジュールの子とも呼ばれます。

モジュール・インスタンス (サブモジュール) には、他のモジュールまたはライブラリー・セルのインスタンス・グループが含まれる場合もあります。これらのネスト化されたモジュールと子のインスタンスは、デザイン階層と呼ばれます。デザイン全体の階層ツリーを構築することができます。その際は、ルートが最上位モジュールになります。

DNIデータモデルでは、inst_1inst_2AND_1OR_2OR_3がインスタンスです。

注: あるインスタンスが複数回インスタンス化されたネットリストに存在する場合は、複数の一意のオブジェクトでそのインスタンスを参照することができます。
dni::get_cells
インスタンス・ポート (inst_port) インスタンスのターミナルです。階層的I/Oインターフェイスまたはリーフ・インスタンスは、インスタンス・ポートと呼ばれます。それらの方向は入力または出力になります。
注: FPGAハードウェアは双方向信号をサポートしません。したがって、デザインには双方向インスタンス・ポートを含めないでください。

DNIデータモデルでは、inst_1|in_1inst_2|AND_1|in_1がインスタンス・ポートの例になります。

dni::get_pins
ネット インスタンス化またはネットリストのターミナルを接続するワイヤーです。

ローカルネットまたは階層ネットはサブモジュールまたはトップモジュール内のオブジェクトで、子インスタンスのインスタンス・ポート、サブモジュール境界のインスタンス・ポート、またはトップモジュールの一次ポート間の接続を保持します。階層インスタンス・ポートのサブモジュール内およびトップモジュール外の階層ネットには、対応する同じグローバルネットまたはフラットネットがあります。

グローバルネットまたはフラットネットは、リーフ・インスタンスまたは一次ポートの接続を表します。

DNIデータモデルでは、Net_1Net_2Net_3Net_4などがネットです。

dni::get_nets

Tclコマンドの実行

インテル® Quartus® Prime開発ソフトウェアの GUI (quartus) と合成ツール (quartus_syn) は、Tclコマンドをサポートします。

該当する次のいずれかの方法を使用し、Tclコマンドを実行します。

インテル® Quartus® Prime開発ソフトウェア GUI (quartus)

DNIフローを有効にした後、GUIで次の手順を実行します。

  1. Compilation Dashboard で、Analysis & Synthesis > Analysis & Elaboration タスクを実行してDNIネットリストを生成します。

  2. 検索アイコンをクリックし、RTLアナライザーを起動します。
  3. DNI Tclコマンドを Tclコンソール で実行します。

合成ツール (quartus_syn)
  1. プロジェクトのDNIフローを有効にします。次のコマンドを使用してください。
    quartus_syn --dni --analysis_and_elaboration <project_name>
  2. デザインをロードします。
    > quartus_syn --dni -s
    <... Quartus Info Message...>
    tcl> project_open top
    tcl> dni::load_design -checkpoint elaborated
    dms_path::sandboxes::sandbox_1239_0::design
    
  3. DNI Tclコマンドを実行します。
    tcl> foreach_in_collection p [dni::get_pins -of_objects [dni::get_cells inst_1|out_1]] {puts [dni::get_property -name name -object $p]}
    a[0]
    a[1]
    o
    tcl> foreach_in_collection p [dni::get_pins -of_objects [dni::get_cells inst_1|out_1]] {puts [dni::get_property -name direction -object $p]}
    input
    input
    output
    tcl>