インテル® Quartus® Primeプロ・エディションのユーザーガイド: タイミング・アナライザー

ID 683243
日付 1/31/2023
Public
ドキュメント目次

2.6.5.5.3. set_clock_groups 制約のヒント

derive_pll_clocks を使用してクロックを作成する際に、set_clock_groups 制約に含めるクロック名をすべて特定するのは時間がかかる場合があります。ただし、次の手法を使用すると、すべてのクロック名がわからない場合でも、クロック制約の作成をある程度自動化することができます。

  1. 推奨される初期の SDC 制約 を含む基本的な .sdc ファイルを作成します。ただし、この時点では set_clock_groups 制約は省きます。
  2. .sdc をプロジェクトに追加するには、Assignments > Settings > Timing Analyzer をクリックします。SDC files to include in the project で、.sdc ファイルを指定します。
  3. タイミング・アナライザーを開くには、Tools > Timing Analyzer をクリックします。
  4. Task ペインで、Report Clocks をダブルクリックします。タイミング・アナライザーは .sdc を読み込み、制約 (derive_pll_clocks を含む) を適用して、すべてのクロックを報告します。
  5. Clock Summary レポートから、最初の列に表示されているすべてのクロック名をコピーします。このレポートには、タイミング・アナライザーが認識する正しい形式でクロック名がリストされます。
  6. .sdc ファイルを開き、クロック名をファイルに貼り付けます (1 行に 1 つのクロック名)。
  7. クロック名のリストを set_clock_groups コマンドにフォーマット化します。それには、クロック名を適切なグループにカット・アンド・ペーストします。その後、次のテンプレートを .sdc ファイルに貼り付けます。
    set_clock_groups -asynchronous -group { \  
    } \
     -group { \ 
    } \  
    -group  { \
    } \ 
    -group { \
    } 
  8. クロック名をグループにカット・アンド・ペーストしてそれらの関係を定義します。必要に応じてグループを追加または削除します。グループをフォーマット化すると、コードが読みやすくなります。
    注: このコマンドは、単一の行では読むのが難しくなる可能性があります。Tcl の行継続文字「\」を使用して、これをより読みやすくすることができます。最後の文字の後にスペースを入れ、行末に「\」文字を配置します。エスケープ文字の後にスペースを入れないように注意します。これに従わない場合は、スペースが行末文字ではなく、エスケープ文字になります。
    set_clock_groups -asynchronous \  
        -group {adc_clk \ 
           the_adc_pll|altpll_component_autogenerated|pll|clk[0] \
           the_adc_pll|altpll_component_autogenerated|pll|clk[1] \
           the_adc_pll|altpll_component_autogenerated|pll|clk[2] \
        } \
        -group {sys_clk \ 
           the_system_pll|altpll_component_autogenerated|pll|clk[0] \
           the_system_pll|altpll_component_autogenerated|pll|clk[1] \
        } \  
        -group {the_system_pll|altpll_component_autogenerated|pll|clk[2] \
        }
注: 最後のグループには PLL 出力 system_pll|..|clk[2] があります。入力クロックと他の PLL 出力は異なるグループにあります。PLL を使用している際に、入力クロックの周波数が PLL の出力の周波数に関連しない場合は、PLL を非同期で処理する必要があります。PLL の出力は通常関連があり、同じグループに属しますが、これは必須ではありません。

複雑なクロック手法を使用するデザインの場合、クロックグループの作成は反復的なプロセスになることがあります。例えば、2 つの DDR3 コアと高速トランシーバーを備えるデザインでは、30 以上のクロックが存在する可能性があります。このようなケースでは、手動で作成するクロックを追加することから始めます。タイミング・アナライザーは、クロック・グループ・コマンドに表示されないクロックはすべてのクロックに関連していると想定し、既知のクロックを保守的にグループ化します。関係のないクロックドメイン間でデザインに不合格のパスがある場合は、必要に応じて新しいクロックドメインを追加することができます。この場合は、多数のクロックが set_clock_groups コマンドに入りません。それらは IP の .sdc ファイル (DDR3 コアが生成する .sdc ファイルなど) で切断されている、もしくは関連するクロックドメインにのみ接続しています。

多くのデザインでは、IP の制約に必要なのはこれだけです。