手順 3: タイミング制約の作成 - 2023.2 日本語 - 2023.1 日本語

Vivado Design Suite チュートリアル: 制約の使用 (UG945)

Document ID
UG945
Release Date
2023-10-18
Version
2023.2 日本語

この手順では、合成済みデザインを開いて AMD Vivado™ Timing Constraints ウィザードを使用します。Timing Constraints ウィザードは、ゲート レベルのネットリストを解析し、不足している制約を検出します。Timing Constraints ウィザードを使用して、このデザインの制約を生成します。

  1. Flow Navigator で Open Synthesized Design をクリックします。
  2. 合成済みデザインを開いたら、[Synthesized Design] → Constraints Wizard をクリックします。

    Timing Constraints ウィザードの最初のページが開きます。このページには、ウィザードで作成される制約のタイプ (クロック、入力および出力ポート、クロック乗せ換え) が説明されています。

  3. このページを読んだら、Next をクリックして次へ進みます。

    Timing Constraints ウィザードの [Primary Clocks] ページには、クロック定義が不足しているクロック ソースがすべて表示されます。このデザインの場合、ウィザードにより、論理パスを解析するために必要なクロック制約が 5 つ不足しており、パルス幅および最小または最大周期要件のみを検証するためのクロック制約が 4 つ不足していることが検出されました。



    デザインに不足している 5 つのプライマリ クロックの周期を設定します。[Constraints for Pulse Width Check Only] の表に示されている 2 番目のクロック カテゴリはオプションです。この例では、これら制約は追加しないでください。

  4. [Recommended Constraints] の表には、ウィザードにより不足していると判断された制約が各行に表示されます。表で制約を指定するには、[Period] 列のセルをクリックし、次の表の値を入力して、不足している 5 つのプライマリ クロックの周期を指定します。クロックの周期を設定すると、周波数が自動的に入力されます。
    表 1. ウィザードの [Primary Clock] ページで指定する値
    プライマリ クロック 周期 (ns)
    mgtEngine/ROCKETIO_WRAPPER_i/gt0_ROCKETIO_WRAPPER_TILE_i/GT0_TXOUTCLK_OUT 12.8
    mgtEngine/ROCKETIO_WRAPPER_i/gt2_ROCKETIO_WRAPPER_TILE_i/GT2_TXOUTCLK_OUT 12.8
    mgtEngine/ROCKETIO_WRAPPER_i/gt4_ROCKETIO_WRAPPER_TILE_i/GT4_TXOUTCLK_OUT 12.8
    mgtEngine/ROCKETIO_WRAPPER_i/gt6_ROCKETIO_WRAPPER_TILE_i/GT6_TXOUTCLK_OUT 12.8
    sysClk 10.0

    特定のクロックの制約を入力しない場合は、クロックの横にあるチェック ボックスをオフにします。

    ウィザードによるこれらの制約の検出方法の詳細は、ウィザードの左下にある [Quick Help] ボタン ([?]) をクリックします。[Quick Help] のページには、コンテキストによって、ウィザードが求めるトポロジに関する詳細と、特定の制約が推奨される理由が表示されます。

    完成したページは次の図のようになります。



  5. Next をクリックします。

    これでプライマリ クロック制約がデザインに追加されました。次に、ウィザードにより、制約が設定されていない生成クロックが検索されます。生成クロックは、FPGA ファブリックのプライマリ クロックから派生したものです。分周されたクロックを作成するために使用されるバイナリ カウンターなどがその例です。

    ウィザードにより、このデザインには制約が設定されていない生成クロックはないと判断されました。

  6. Next をクリックします。

    次に、フォワード クロックが検索されます。フォワード クロックとは、FPGA のプライマリ出力ポートで生成されたクロックのことです。これらは、一般的にキャプチャ クロックがデータと共に供給されるときに、ソース同期バスに使用されます。

    ウィザードにより、デザインには制約が設定されていないフォワード クロックは存在しないと判断されました。
  7. Next をクリックします。

    次に、外部フィードバック遅延が検索されます。FPGA 外の MMCM または PLL フィードバック遅延は、タイミング レポートでクロック遅延の補正の計算に使用されます。

    ウィザードにより、デザインには制約が設定されていない MMCM 外部フィードバック遅延は存在しないと判断されました。

  8. Next をクリックします。

    次に、入力遅延が確認されます。次の図に、Timing Constraints ウィザードの [Input Delay] ページを示します。このページには 3 つのセクションがあります。



    セクション A には、入力遅延制約が不足している入力ポートがすべて表示されます。この表で、入力に制約を設定するのに使用するタイミング テンプレートを選択します。

    セクション B では、テンプレートの遅延値を指定します。このセクションは、セクション A で選択したテンプレートによって異なります。

    セクション C には、次の 3 つのタブがあります。

    [Tcl Command Preview]
    デザインに制約を設定するために使用される Tcl コマンドを表示します。
    [Existing Set Input Delay Constraints]
    デザインに存在する入力遅延制約を表示します。
    [Waveform]
    テンプレートに関連付けられている波形を表示します。

    次に、下の表に基づいてこのページに入力します。

  9. Clock 列の見出しをクリックして、クロック名をアルファベット順に並べ替えます。
  10. セクション A でテンプレートを選択し、セクション B で値を入力し、セクション C で Tcl コマンド、既存の入力遅延、テンプレート別の波形を確認します。
  11. 次の表の上部 4 つの制約は、左横にあるチェック ボックスをオフにします。この演習では、GTPRESET_IN ポートからのこれらのパスをフォルス パスにします。この信号はデザイン内で同期化される非同期のリセット信号だからです。

    次の表の色付きの行は、Timing Constraints ウィザードの [Input Delays] ページで色ごとに同時に入力可能です。ウィザードで複数行を選択し (Shift キーまたは Ctrl キーを押しながら複数行を選択)、値を一度に入力します。一部の入力は仮想クロックに対して制約されています。これは、これらの入力が、ボードのクロックとは波形が異なるの部生成されたクロックによりキャプチャされるからです。この場合、ウィザードで内部クロックと同じ周波数および波形の仮想クロックが作成されるので、仮想クロックに対する制約が推奨されます。

    次の表で色付きの行は、この方法で入力可能な信号のグループを示しています。

    表 2. 入力制約の値
    インターフェイス クロック 同期 アライメント データ レートおよびエッジ tco_min (ns) tco_max (ns) trce_dly_min (ns) trce_dly_max (ns)
    GTPRESET_IN mgtEngine/... システム エッジ 1 回の立ち上がり 制約をオフ (後でフォルス パスに設定)
    GTPRESET_IN mgtEngine/... システム エッジ 1 回の立ち上がり 制約をオフ (後でフォルス パスに設定)
    GTPRESET_IN mgtEngine/... システム エッジ 1 回の立ち上がり 制約をオフ (後でフォルス パスに設定)
    GTPRESET_IN mgtEngine/... システム エッジ 1 回の立ち上がり 制約をオフ (後でフォルス パスに設定)
    DataIn_pad_0_i[*] sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    DataIn_pad_1_i[*] sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    LineState_pad_0_i[*] sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    LineState_pad_1_i[*] sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    VStatus_pad_0_i[*] sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    VStatus_pad_1_i[*] sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    RxActive_pad_0_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    RxActive_pad_1_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    Rx_Error_pad_0_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    Rx_Error_pad_1_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    Rx_Valid_pad_0_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    Rx_Valid_pad_1_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    TxReady_pad_0_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    TxReady_pad_1_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    usb_vbus_paf_0_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    usb_vbus_paf_1_i sysClk システム エッジ 1 回の立ち上がり 1 2 1 1
    or1200_clmode VIRTUAL_cpuClk_5 システム エッジ 1 回の立ち上がり 0.1 2.5 0.1 0.2
    or1200_pic_ints VIRTUAL_cpuClk_5 システム エッジ 1 回の立ち上がり 0.1 2.5 0.1 0.2
    reset VIRTUAL_cpuCLK_5 システム エッジ 1 回の立ち上がり 0.1 2.5 0.1 0.2

    次の図に、完成した [Input Delays] ページを示します。4 つの制約がオフになっていることに注目してください。



  12. すべての入力制約の値を入力したら、Next をクリックします。

    ウィザードの [Output Delays] ページには、デザインで制約が設定されていない出力すべてが表示されます。このページのレイアウトは [Input Delays] ページと同様です。

  13. [Output Delays] ページで、Clock 列の見出しをクリックしてクロック名をアルファベット順に並べ替えます。
  14. 入力制約の値を設定したのと同様に、次の表を使用してすべての出力を制約します。ウィザードで複数の行を同時に選択すると、複数のエントリを同時に編集できます。
    表 3. 出力制約の値
    インターフェイス クロック 同期 アライメント データ レートおよびエッジ tsu (ns) thd (ns) trce_dly_max (ns) trce_dly_min (ns)
    OpMode_pad_0_o[*] sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    OpMode_pad_1_o[*] sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    VControl_pad_0_o[*] sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    VControl_pad_0_o[*] sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    SuspendM_pad_0_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    SuspendM_pad_1_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    TermSel_pad_0_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    TermSel_pad_1_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    TxValid_pad_0_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    TxValid_pad_1_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    VControl_Load_pad_0_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    VControl_Load_pad_1_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    XcvSelect_pad_0_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    XcvSelect_pad_1_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    phy_rst_pad_0_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    phy_rst_pad_1_o sysClk システム セットアップ/ホールド 1 回の立ち上がり 1.0 0.1 0.1 0.1
    DataOut_pad_0_o[*] VIRTUAL_wbClk_4 システム セットアップ/ホールド 1 回の立ち上がり 2.1 0.6 0.1 0.0
    DataOut_pad_1_o[*] VIRTUAL_wbClk_4 システム セットアップ/ホールド 1 回の立ち上がり 2.1 0.6 0.1 0.0
    or1200_pm_out[*] VIRTUAL_wbClk_4 システム セットアップ/ホールド 1 回の立ち上がり 2.1 0.6 0.1 0.0
  15. Next をクリックします。

    ウィザードにより、制約が設定されていない組み合わせパスが検索されます。組み合わせパスは、FPGA を順次エレメントを通過せずに配線されるパスのことです。このデザインには組み合わせパスは含まれていません。

  16. Next をクリックします。

    物理的に排他的なクロックのグループは、デザインに同時に存在しないクロックです。このデザインには、制約が設定されていない物理的に排他的なクロック グループはありません。

  17. Next をクリックします。

    関連性のない論理的に排他的なクロックは、共有されているクロック ツリー セクションを除き、同時にアクティブになるクロックで、お互いの間と、共有セクション外に論理パスはないので、論理的に排他的です。 このデザインには、制約が設定されていない、関連性のない論理的に排他的なクロック グループはありません。

  18. Next をクリックします。

    関連性のある論理的に排他的なクロックは、共有されているクロック ツリー セクションを除き、同時にアクティブになるクロックで、これらのクロック間に論理パスがある場合、共有のクロック ツリー セクションに限定されているクロックのみが論理的に排他的になるので、関連性のない論理的な排他的クロックとは異なる方法で制約されます。このデザインには、制約が設定されていない、関連性のある論理的に排他的なクロック グループはありません。

  19. Next をクリックします。

    [Asynchronous Clock Domain Crossings] ページでは、安全なクロック乗せ換えのために推奨される制約が表示されています。このデザインには、制約が設定されていないクロック乗せ換えは含まれていません。

  20. Next をクリックします。

    次の図に、Timing Constraints ウィザードの最終ページを示します。リンクをクリックすると、ウィザードで生成された制約をすべて確認できます。ウィザードの終了後にレポートを生成する場合は、該当するチェック ボックスをオンにします。



  21. Finish をクリックして、Timing Constraints ウィザードを終了します。