タイミング・アナライザー・クックブックこのマニュアルでは、デザイン・シナリオ、制約のガイドライン、および推奨事項より構成されています。基本的な知識が必要となります。クロックと生成クロック50/50ではない基本的なデューティー・サイクル・クロッククロックのデューティー・サイクルは、デザインごとに異なる場合があります。-waveformオプションを使用すれば、クロックのデューティー・サイクルを変更することができます。{clk}]オフセットクロックタイミング・アナライザーにクロックを含める場合、クロックの最初の立ち上がりエッジまたは立下りエッジは、デフォルトで絶対値0で発生します。-waveformオプションを使用すれば、クロックに対してオフセットを作成することができます。ロックを派生させることができます。合、-divide_byオプションを使用します。clk-edgesオプションを使用すれば、分周クロックを作成することができます。このオプションを使用することで、クロックの立ち上がり、立下り、および次の立ち上がりエッジを指定することが可能となります。{DIV|q}]トグルレジスターによるクロックの生成2分周クロックを作成するには、トグルレジスターを使用します。nsの周期を持つクロックとなります。トグルレジスター・クロックに対する制約は、前の例と非常に似ています。{tff|q}]PLLクロックこのセクションでは、derive_pll_clocks、create_clock、およびcreate_generated_clock制約を例として説明します。FPGAでクロックを合成する目的で使用します。適切な解析を実行するためには、すべての出力クロックを制約する必要があります。FPGAにPLLを統合します。PLLを制約するには、以下の方法を使用します。ベースクロックとPLL出力クロックを自動で作成する。ベースクロックを手動で生成し、PLL出力クロックを自動で作成する。ベースクロックとPLL出力クロックを手動で作成する。このセクションは、それぞれの方法の利点を記載しています。IPコアこの方法では、PLLの入力クロックと出力クロックを自動で作成することが可能です。IPコアで指定されたすべてのPLLパラメーターは、PLLの入力クロックと出力クロックを制約します。PLLの入力クロックと出力クロックを作成する際、PLLパラメーターの変更を追跡したり、正しい値を指定したりする必要はありません。すべての入力と出力を自動的に制限するには、-create_base_clocksオプションのderive_pll_clocksコマンドを使用します。タイミング・アナライザーは、PLLのIPカタログのインスタンシエーションに基づいて正しい設定を決定します。ベースクロックを手動で生成し、PLL出力クロックを自動で作成するこの方法では、PLLの入力クロックを手動で制限し、タイミング・アナライザーが自動的にPLLの出力クロックを制限することが可能です。IPコアで指定された入力クロック周波数の代わりに、別の入力クロック周波数を指定することも可能です。IPコアは、指定されたパラメーターでPLL出力クロックを自動的に作成します。同じPLL出力クロック・パラメーターを維持しながら、異なる入力クロック周波数を試すことも可能です。指定した入力クロック周波数が、現在設定されているPLLと互換性があることを確認してください。この方法は、derive_pll_clocksコマンドを使用してPLLに対して入力クロックを手動で作成することが可能です。ベースクロックとPLL出力クロックを手動で作成するこの方法では、PLLの入力クロックと出力クロックを手動で制限することが可能です。すべてのPLLパラメーターは指定されています。IPコアで指定された値とは別の値を設定することが可能です。加えて、さまざまなPLL入出力周波数とパラメーターを試すことができます。この方法は、create_clockコマンドとcreate_generate_clockコマンドを組み合わせて使用することができます。一部のデザインにはFPGAをドライブするクロックを複数必要とします。この場合、あるクロックが他のクロックよりも速くなったり、遅くなったりすることがあります。制約を使用することで2つ以上のクロックを選択することが可能です。{clkB}外部からクロックを切り替える外部マルチプレクサやジャンパーの設定により、デジタルシステムは同一のクロックポートに対して異なるクロック周波数を提供することが可能です。タイミング・アナライザーはcreate_clock制約と-addオプションを使用して、このビヘイビアをモデル化することが可能です。次の図は、クロックポートのクロックを100-MHzクロックあるいは50-MHzクロックでドライブ可能な単純なレジスター間パスを示しています。FPGAのPLLクロック・スイッチオーバー機能を使用することで2つの入力クロックからクロックを選択することが可能です。仮想クロックを使用した入力遅延と出力遅延すべての入力遅延と出力遅延は、仮想クロックを参照する必要があります。仮想クロックを使用することで、タイミング・アナライザーはderive_clock_uncertaintyコマンドを使用して、適切なクロック不確実性の値を導出し、適用することができます。入力と出力の遅延が仮想クロックではなく、ベースクロックまたはPLLクロックを参照する場合、derive_clock_uncertaintyによって決定されるクロック内およびクロック間転送クロックの不確実性がI/Oポートに誤って適用されます。仮想クロックを使用すると、derive_clock_uncertaintyによって決定されるクロック不確実性の独立性とは無関係に追加の外部のクロック不確実性を適用することが可能となります。ポートのいずれかに使用した元のクロックと同じものでなければいけません。{data_out}]トライステート出力トライステート出力は、有効なデータ信号またはハイインピーダンス信号のいずれかを出力ポートまたはI/Oポートからドライブすることを可能とします。どちらの信号のタイミングも、デザインの全体的なシステムのタイミングにおいて重要となります。トライステート出力のタイミング制約は、通常の出力ポートと同じです。次の図は、一般的なチップ間入力インターフェイスと、このインターフェイスに向けた入力遅延の指定に必要なさまざまなパラメーターを示しています。次の図は、一般的なチップ間出力インターフェイスと、このインターフェイスに向けた出力遅延の指定に必要なさまざまなパラメーターを示しています。(tSU、tH、およびtCO)次の例は、set_input_delayを使用したtSUとtHの指定方法とset_output_delayを使用したtCOの指定方法を示しています。[*]}]例外マルチサイクル例外デフォルトでは、タイミング・アナライザーはシングルサイクル解析を使用して、レジスター間パスのセットアップとホールドの両方の関係を決定します。これにより、設定および保留の要件は最も制限されたものとなりますが、マルチサイクル例外を使用することで、レジスター間パスのセットアップまたはホールド関係を緩和することができます。レジスター間パスマルチサイクルは、クロック間転送あるいは個別のレジスターに適用可能です。クロック間転送にマルチサイクルを適用すると、ソースクロックとデスティネーション・クロックによって供給されるレジスター間パスのターゲットクロックで指定するすべての設定またはホールド関係が影響を受けます。2クロック間のマルチサイクル化の例では、ソースクロックがclkA、そしてデスティネーション・クロックがclkBである任意のレジスター間パスに対して、デスティネーション・クロックが追加されることでセットアップ関係が緩和されています。レジスターreg2とレジスターreg3間のセットアップ関係は、このマルチサイクルによる影響は受けません。個々のレジスターにマルチサイクルを適用する場合、指定されたレジスターのセットアップまたはホールド関係にのみ影響します。上記のクロック間のマルチサイクル化の例では、レジスターreg1からレジスターreg2までのレジスター間パスに対しデスティネーション・クロック周期を追加することで、セットアップ関係が緩和されています。レジスターreg2とレジスターreg3間のセットアップ関係は、このマルチサイクルによる影響は受けません。タイミング・アナライザーフォルスパスすべてのパスでタイミングを分析する必要はありません。クリティカルではないパスの同期は、タイミング解析から削除または切断できます。Primeフィッターはクリティカルパスの最適化に集中し、全体的なコンパイル時間を短縮することが可能となります。レジスター間の切断パスフォルスパスは、クロック間転送あるいは個別のレジスターに適用可能です。クロック間転送にフォルスパスを適用すると、ターゲットとするクロック間のすべてのパスが切断されます。フォルスパスのクロック間の例では、パスは切断されており、ソースクロックがclkAでデスティネーション・クロックがclkBであるレジスター間パスに対しては、タイミング・アナライザーは解析を行いません。これは、ソースレジスターがclkBでクロックされ、デスティネーション・レジスターがclkAでクロックされるレジスター間のパスには影響しません。set_false_pathコマンドは、clkAからclkBへのパスを切断します。このコマンドは、clkBからclkAまでのパスは切断しません。clkAといった別のset_false_pathコマンドを適用する必要があります。別の方法としては、set_clock_groupsを使用してclkAからclkBまでのパスとclkBからclkAまでのパスを一つのコマンドで切断することができます。フォルスパスを個別のレジスターに適用すると、指定したパスだけが切断されます。{clkB}]フォールスパス・レジスター間の例では、レジスターreg1からレジスターreg2までのレジスター間パスが切断されています。これ以外のすべてのパスには影響はありません。FPGAのJTAGインターフェイスを使用します。JTAGインターフェイスを使用してデザインをデバッグする場合、JTAG信号であるTCK、TMS、TDI、およびTDOがデザインの一部として実装されます。このため、タイミング・アナライザーは制約されていないパスのレポートが生成される際、これらの信号を制約されていなものとしてフラグします。JTAGテストデータ出力ライン出力ポート次のSDCコマンドを適用することで、JTAG信号を抑制することができます。よってデフォルトで制約されています。複数のクロックを使用した入力遅延と出力遅延これらの制約は、プライマリーとセカンダリーの両方のクロックを提供します。プライマリークロックはメインクロックとして動作し、セカンダリークロックはより低速な冗長クロックとして動作します。\-add_delayクロック・イネーブル・マルチサイクルレジスターのイネーブルされたポートに基づいて、クロックがイネーブルされたマルチサイクルを使用してマルチサイクルを指定することができます。次の図はレジスターのdin_a_reg[7..0]、din_b_reg[7..0]、din_x_reg[7..0]、din_y_reg[7..0]、a_times_b、およびx_times_yに対して登録された有効な信号を使用する目的でレジスターenable_regが使用されている単純な回路を表しています。enable_regレジスターは、レジスターのクロック周期の2倍のイネーブルパルスを生成します。したがって、正しい解析を行うためには、マルチサイクル例外を適用する必要があります。enable_regレジスターによって供給されるイネーブル駆動レジスターに対してマルチサイクル・セットアップ2とマルチサイクル・ホールド1を適用する必要があります。このマルチサイクル例外は、デスティネーション・レジスターがenable_regによって制御されているレジスター間パスにもに適用されます。すべてのイネーブル駆動レジスターにset_multicycle_path例外を適用することで、これを達成することができます。これは、すべてのイネーブル駆動レジスターを指定しなければいけないため、時間のかかる作業となります。set_multicycle_pathとget_fanoutsの組み合わせを使用することも可能です。-setupset_multicycle_path例外のターゲットは、レジスターのイネーブルポートを供給するenable_regレジスターのすべてのファンアウトに制限されています。*|ena]]セットアップとホールドの関係は、enable_regレジスターで開始し、2と1のいずれかのイネーブル駆動レジスターで終了します。デバイスJTAGコントローラーを非同期にリセットするオプションを含めるため、JTAG信号制約のサンプルコードを更新しました。カスタマーフィードバックを反映し、マルチサイクル例外のトピックを更新しました。16.0.0JTAG信号のSDC例を更新しました。パックされたFFのOEのUnatenessに関するセクションを追加しました。クロック・イネーブル・マルチサイクルのトピックを加筆修正しました。スクリプトの例と回路図の誤植を修正しました。11.0.0トグルレジスターによるクロックの生成とトライステート出力のセクションを新しく追加しました。編集上の軽微な変更を行いました。スクリプト例の誤植を修正しました。