記事 ID: 000087898 コンテンツタイプ: トラブルシューティング 最終改訂日: 2024/11/18

タイミング・アナライザーで PLL クロックが正しく派生しないのはなぜですか?

環境

    インテル® Quartus® Prime 開発ソフトウェア・プロ・エディション
BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

Quartus® Prime 開発ソフトウェア・プロ・エディションでは、PLL リファレンス・クロックに複数のマスタークロックがある場合、フェーズロック・ループ (PLL) クロックが正しく派生しないことがあります。これは、タイミング・アナライザーが複数のマスタークロックのどれを使用すべきかを識別できないために発生します。

クロックスキームが以下の場合、タイミング・アナライザーに以下のような警告メッセージが表示されることがあります。

警告(332036): クロック: 潜在的なマスタークロック候補として clk0 が見つかりました
警告 (332036): クロック: マスタークロック候補として clk1 が見つかりました
警告(332087): このクロック割り当てのマスタークロックを取得できませんでした。クロック: u0_pll450m|iopll_0_n_cnt_clk は作成されませんでした。
警告(332036): クロック: 潜在的なマスタークロック候補として clk0 が見つかりました
警告 (332036): クロック: マスタークロック候補として clk1 が見つかりました
警告(332087): このクロック割り当てのマスタークロックを取得できませんでした。クロック: u0_pll450m|iopll_0_m_cnt_clk は作成されませんでした。
警告(332036): クロック: 潜在的なマスタークロック候補として clk0 が見つかりました
警告 (332036): クロック: マスタークロック候補として clk1 が見つかりました
警告(332087): このクロック割り当てのマスタークロックを取得できませんでした。クロック: u0_pll450m|iopll_0_outclk0 は作成されませんでした。

これは、Stratix® 10 デバイスと Agilex™ デバイスを対象とするデザインでのみ発生します。

解決方法

PLL 出力クロックを正しく制約するには、マスタークロックを手動で生成し、各 PLL 出力クロックのマスタークロックを指定しクロックグループを追加して異なるリファレンスクロックから PLL 出力クロックをカットします。

上記のクロックスキームでは、以下のタイミング制約を使用できます。

create_clock -name clk0 -period 100MHz [get_ports clk0]
create_clock -名前 clk1 -周期 100MHz [get_ports clk1]


create_generated_clock -name {u0|iopll_0_m_cnt_clk} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 12 -multiply_by 1 -duty_cycle 50.00 -master {clk0} { u0_pll450m|iopll_0|tennm_pll~mcntr_reg } -add
create_generated_clock -name {u0|iopll_0_n_cnt_clk} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 1 -multiply_by 1 -duty_cycle 50.00 -master {clk0} { u0_pll450m|iopll_0|tennm_pll~ncntr_reg } -add
create_generated_clock -name {u0|iopll_0_outclk0} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 3 -multiply_by 12 -duty_cycle 50.00 -master {clk0} { u0_pll450m|iopll_0|tennm_pll|outclk[1] } -add

create_generated_clock -name {u1|iopll_0_m_cnt_clk} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 12 -multiply_by 1 -duty_cycle 50.00 -master {clk1} { u0_pll450m|iopll_0|tennm_pll~mcntr_reg } -add
create_generated_clock -name {u1|iopll_0_n_cnt_clk} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 1 -multiply_by 1 -duty_cycle 50.00 -master {clk1} { u0_pll450m|iopll_0|tennm_pll~ncntr_reg } -add
create_generated_clock -name {u1|iopll_0_outclk0} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 3 -multiply_by 12 -duty_cycle 50.00 -master {clk1} { u0_pll450m|iopll_0|tennm_pll|outclk[1] } -add

set_clock_groups -exclusive -group {u0|iopll_0_outclk0} -group {u1|iopll_0_outclk0}

ノード・ファインダーで正しいノード名を取得し、PLL コンフィグレーションからディバイダーとマルチプライヤーのパラメーターを取得できます。

関連製品

本記事の適用対象: 2 製品

インテル® Agilex™ FPGA & SoC FPGA
インテル® Stratix® 10 FPGA & SoC FPGA

1

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。このコンテンツはお客様の便宜と一般的な情報のみを目的として提供されており、情報の正確さと完全性を保証するものではありません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。