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

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

1.3.2.1.4. RTLでのSDCに向けたSDCファイルにおける制約の作成

SDC 2.1への準拠

RTLでのSDCに向けたSDCは、RTLを対象とした制約を提供する業界標準です。ターゲットノードはエラボレーションされたネットリストからのもので、RTLと密接にアライメントされています。階層ノードをターゲットにし、さまざまなコンパイル段階を通じて制約をコンパイルフローに伝播することができます。

注: read_sdc コマンドにより、RTLでのSDCに向けたSDCファイルをタイミング・アナライザーにロードします。ロードするスナップショットに応じて、read_sdc ではそのスナップショットに適した他のSDCの読み取りを試みます。さまざまなユースケースで使用されるSDCファイルの種類に関しては、 インテル® Quartus® Prime開発ソフトウェアで使用されるSDCファイルの種類を参照してください。

インテル® Quartus® Prime開発ソフトウェアは、RTLでのSDCに向けたSDCファイル内の制約順序を維持します。SDCファイル内に制約をリストする順序によって、それらが インテル® Quartus® Prime開発ソフトウェアにロードされる順序が定義されます。

RTL SDC制約は、SDC 2.1準拠のコマンドのみをサポートするように設計されています。オブジェクト・ アクセサー (get_keepersget_registersget_nodesなど) はありません。次のリストはサポートされているSDCコマンドです。これらの詳細に関しては、Intel Quartus Prime Pro Edition User Guide: Scripting で、TCL Commands and Packages Summaryのセクションを参照してください。

  • create_clock
  • create_generated_clock
  • set_input_delay
  • set_output_delay
  • set_false_path
  • set_max_delay
  • set_min_delay
  • set_multicycle_path
  • set_clock_groups
  • set_clock_latency
  • set_clock_uncertainty
  • set_data_delay
  • set_net_delay
  • set_max_skew
注: タイミング・アナライザーですべての引数をサポートしているわけではないため、これらのコマンドのすべてがSDC 2.1の引数を完全にサポートしているわけではありません。サポートされていない引数を指定すると、そのコマンドでは警告メッセージが発行され、引数は無視されます。タイミング・アナライザーで警告が発生した際にTclエラーを表示する場合は、ERROR_ON_WARNINGS_LOADING_SDC_ON_RTL_CONSTRAINTS QSF変数を ON に設定します。

タイミングパスの特定

タイミングパスを定義する場合は、SDC標準アクセサー (get_pins など) を使用します。 インテル® Quartus® Prime開発ソフトウェア固有のコマンド (get_keepersget_registers など) は使用しません。 インテル® では、オブジェクトをターゲットにする場合に、明示的な get_<pins|ports|nets> コマンドの使用を推奨しています。そのままの名前を使用すると、意図しないターゲットとなる可能性があり、場合によってはDNIで警告が発行されます。

インテル® Quartus® Primeの従来のSDC (ターゲットは インテル® Quartus® Primeのタイミンググラフ)
set_false_path -from [get_keepers { reg_A }] -to [get_keepers { reg_B }]
RTLでのSDCに向けたSDC (ターゲットはネットリスト・ノード)
set_false_path -from [get_pins { reg_A|clk }] -to [get_pins { reg_B|d }]
注: パスはレジスターの clk ピンから開始する必要があります。それにより、タイミングパスを特定します。デザインで reg_A|d または reg_A|q を使用している場合は、タイミング・アナライザーのタイミングパスは無効です。それらはReport Exceptionレポートに示されます。
ステータス 例外コマンド Fromフラグ 開始 Toフラグ 終了 セットアップ・スラック
完了 set_false_path -from

[get_pins{tf_sync[0] |ff_src|clk}]

-to

[get_pins{tf_sync[0] |ff_dst|d}]

3.603
無効 set_false_path -from

[get_pins{tf_sync[2] |ff_src|q}]

-to

[get_pins{tf_sync[2] |ff_dst|d}]

無効
無効 set_false_path -from

[get_pins{tf_sync[3] |ff_src|d}]

-to

[get_pins{tf_sync[3] |ff_dst|d}]

無効
注: ネットリストのターゲットでは大文字と小文字が区別されます。場合によっては、下位モジュールのポートが大文字で表記されることがあります。この場合は、-nocase オプションを get_<pins|ports|nets> コマンドで使用すると、大文字と小文字の区別が無視されます。

RTL SDC制約のデバッグ

RTL SDC制約のデバッグには、いくつかの方法があります。例えば、デザインで制約が使用されている位置を切り離し、それをフロー内で解析することができます。制約に関するコンパイルレポートを使用することもできます (Post-Synthesis Constraintsコンパイルレポートを参照してください)。ただし、制約をデバッグする際は、次の点を考慮します。

制約ロード時の明示的なエラー

RTL SDC制約の読み取り時にエラーが発生すると、コマンドスタックとともにエラーメッセージが発行され、問題のあるコマンドの行番号が示されます。次の図に例を示します。

エラーのある制約は、DNI Tclコンソールから直接デバッグすることができます。この段階は、 インテル® Quartus® Prime開発ソフトウェアでRTLでのSDCに向けたSDCファイルをロードする段階です。よって、この早期段階では、最初のターゲットの分解能やコマンド構文の問題を簡単に反復することができます。

注:

一般的に、RTL SDC制約をタイミング・アナライザーに直接ロードすることはできません。理由は次のとおりです。

  • ターゲット・ネットリストは、エラボレーション後のネットリストでは異なり、タイミング・ネットリストではありません。場合によっては、この2つのネットリストには一部共通のノードがありますが、これらのネットリストは異なります。
  • RTLでのSDCで使用されるSDC 2.1準拠の構文は、従来のQuartus SDCコマンドとは異なる場合があります。

制約の動作と解釈の問題

制約で作業する際は、次の点を確認します。

  • ターゲットと基本構文が正しいこと (ノードの検索またはターゲットの取得)。RTLアナライザーを使用して、エラボレーション後のネットリストでノードを検索することができます。
  • 制約がタイミンググラフ (制約の動作) に対して理にかなっていること。これは、タイミング・アナライザーで確認することができます。

    デザイン・ネットリストからタイミング・アナライザーに伝達されるRTL SDC制約を検査します (import_sdc は、RTL SDCコマンドのみをロードします)。import_sdc コマンドは、コンパイルフローのさまざまな段階を伝播後、RTL SDC制約のバージョンをロードします。このステップ後は、通常のタイミング・アナライザー・セッションと同じになります。

注: インテル® では、RTLでのSDCに向けたRawのSDCファイルをタイミング・アナライザーからロードすることを推奨していません。ただし、タイミング・アナライザーのTclコンソールを使用してタイミング・アナライザーと互換性のあるSDCコマンドを発行し、デザインをデバッグすることが可能です。SDCコマンドを直接発行することで、RTL SDC制約をオーバーライドし、値の変更による影響を調べることができます。ただし、変更はそのタイミング解析セッションでのみ有効です。永続的な変更を行うには、RTLでのSDCに向けたソースSDCファイルを更新し、Analysis & Elaborationを再度実行する必要があります。