7. Quartus II TimeQuest タイミング・アナライザ この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用 ください。設計の際には、最新の英語版で内容をご確認ください。 QII53018-8.0.0 はじめに Quartus® II TimeQuest タイミング・アナライザは、ASIC スタイルの強 力なタイミング解析ツールで、業界標準の制約、解析、およびレポート 手法により、デザイン内のすべてのロジックのタイミング性能を検証し ます。Quartus II TimeQuest タイミング・アナライザの GUI またはコマ ンドライン・インタフェースを使用して、デザインのすべてのタイミン グ・パスを制約および解析し、結果をレポートします。 Quartus II TimeQuest タイミング・アナライザを実行する前に、クロッ ク特性、タイミング例外、信号遷移の到達および所要時間を規定する初 期タイミング制約を指定する必要があります。GUI またはコマンドライ ン・インタフェースを使用して、Synopsys Design Constraints(SDC) ファイル・フォーマットでタイミング制約を指定することができます。 Quartus II フィッタは、ロジックの配置を最適化して制約条件を満たし ます。 Quartus II TimeQuest タイミング・アナライザは、タイミング解析時に デザインのタイミング・パスの解析、各パスでの伝播遅延の計算、タイ ミング制約違反のチェックを実行し、タイミング結果をスラックとして Report ペインおよび Console ペインでレポートします。Quartus II TimeQuest タイミング・アナライザがタイミング違反をレポートした場 合は、レポートをカスタマイズして特定のパスに関する正確なタイミン グ情報を表示し、それらのパスを制約して違反を修正することができま す。デザインにタイミング違反がない場合、ロジックはターゲット・デ バイスで意図したとおり動作します。 Quartus II TimeQuest タイミング・アナライザは、アルテラ FPGA およ び HardCopy® ASIC に対するサイン・オフ・ツールとして使用できる完 全なスタティック・タイミング解析ツールです。 この章は、以下の項で構成されています。 ■ 「Quartus II TimeQuest タイミング・アナライザの使用方法」 ■ ■ ■ ■ ■ Altera Corporation 2008 年 5 月 7–3 ページの「Quartus II TimeQuest タイミング・アナライザのガイ ドラインに準拠したコンパイル・フロー」 7–7 ページの「タイミング解析の概要」 7–27 ページの「Quartus II TimeQuest タイミング・アナライザのフ ローに関するガイドライン」 7–29 ページの「コレクション」 7–31 ページの「SDC 制約ファイル」 7–1 暫定サポート Quartus II ハンドブック Volume 3 ■ ■ ■ ■ ■ ■ ■ ■ 7–33 ページの「クロックの仕様」 7–53 ページの「I/O 規格」 7–57 ページの「タイミング例外」 7–65 ページの「制約と例外の削除」 7–66 ページの「タイミング・レポート」 7–92 ページの「タイミング解析機能」 7–100 ページの「TimeQuest タイミング・アナライザ GUI」 7–113 ページの「まとめ」 TimeQuest タイミング・アナライザおよび SOPC Builder について詳し くは、「Quartus II ハンドブック Volume 4」の「SOPC Builder」の章を 参照してください。 Quartus II TimeQuest タ イミング・ アナライザ の使用方法 Quartus II TimeQuest タイミング・アナライザは、FPGA の最も基本的 なデザインから最も高度なデザインまでのニーズを満たします。 この項では、適切なデザインの制約、完全な配置配線、デザインに関す るレポート作成に必要なステップなど、Quartus II TimeQuest タイミン グ・アナライザの概要を述べます。 Quartus II TimeQuest タイミング・アナライザの設定 Quartus II ソフトウェア v7.2 以降は、Quartus II TimeQuest タイミング・ アナライザと Quartus II クラシック・タイミング・アナライザの 2 つの ネ イ テ ィ ブ・タ イ ミ ン グ 解 析 ツ ー ル を 備 え て い ま す。Quartus II TimeQuest タイミング・アナライザをデフォルトのタイミング解析ツー ルとして指定すると、Quartus II TimeQuest タイミング・アナライザは フィッタをガイドし、コンパイル後のタイミング結果を解析します。 Quartus II TimeQuest タイミング・アナライザをデフォルトのタイミン グ・アナライザとして指定するには、Assignments メニューの Settings をクリックします。Settings ダイアログ・ボックスの Category リストで、 Timing Analysis Settings を選択し、Use TimeQuest Timing Analyzer during compilation をオンにします。 Quartus II ツールバーに TimeQuest のアイコンを追加するには、Tools メニューの Customize をクリックします。Customize ダイアログ・ボッ クスで、Toolbars タブをクリックし、Processing をオンにし、Close を クリックします。 7–2 Altera Corporation 2008 年 5 月 Quartus II TimeQuest タイミング・アナライザのガイドラインに準拠したコンパイル・フロー Quartus II TimeQuest タイミング・ アナライザの ガイドライン に準拠した コンパイル・ フロー Quartus II TimeQuest タイミング・アナライザをデフォルトのタイミン グ・アナライザとしてイネーブルすると、制約検証からタイミング検証 までのあらゆる処理が、Quartus II TimeQuest タイミング・アナライザ によって実行されます。図 7–1 に、Quartus II TimeQuest タイミング・ アナライザの利点を最大限に高め、利用するための推奨デザイン・フ ロー・ステップを示します。各ステップの詳しい説明は、この図の後に あります。 図 7–1. Quartus II TimeQuest タイミング・アナライザのデザイン・ フロー Create Quartus II Project and Specify Design Files Perform Initial Compilation Specify Timing Requirements Perform Compilation Verify Timing ■ Quartus II プロジェクトを作成し、デザイン・ファイルを指定する — デザイン・ファイルをコンパイルするには、まずプロジェクトを 作成します。このステップでは、ターゲット FPGA を指定し、デザ イン・サイクルで使用する EDA ツール、およびすべてのデザイン・ ファイルを指定します。 また、デザインの最適化のために既存のデザイン・ファイルを修正 したり、デザイン・ファイルを追加することもできます。例えば、 プロジェクトに HDL ファイルや回路図を追加できます。 Altera Corporation 2008 年 5 月 7–3 Quartus II ハンドブック Volume 3 ■ 初期コンパイルを実行する—デザインのタイミング制約を指定する 前に、初期デザイン・データベースを作成します。Analysis and Synthesis を実行して、マップ後データベースを作成するか、フル・ コンパイルを実行して、フィッティング後データベースを作成しま す。 初期コンパイル用のマップ後データベースは、フィッティング後 データベースよりも素早く作成されます。初期データベースには マップ後データベースで十分です。 フィッティング後データベースの作成が推奨されるのは、プロジェ クト用の SDC ファイルをすでに作成して指定済みである場合に限 られます。初期コンパイルにはマップ後データベースで十分です。 ■ タイミング要求を指定する — フィッタはデザインを配置配線する 際、タイミング要求によってガイドされます。 SDC ファイルにタイミング制約と例外をすべて入力する必要があ ります。このファイルは、プロジェクトの一部として含める必要が あります。このファイルをプロジェクトに追加するには、Project メ ニューの Add/Remove Files in Project をクリックし、Files ダイア ログ・ボックスで SDC ファイルを追加します。 ■ コンパイルを実行する — デザインを合成し、配置し、ターゲット FPGA に配線します。 コンパイルが完了すると、TimeQuest タイミング・アナライザによ り、デザインに定義されているすべてのクロックについて、クロッ ク・セットアップとクロック・ホールドのサマリ、リカバリ、およ びリムーバル・レポートが生成されます。 ■ 7–4 タイミングを検証する —Quartus II TimeQuest タイミング・アナラ イ ザ で、デ ザ イ ン のタイミングを検証します。7–27 ページの 「Quartus II TimeQuest タイミング・アナライザのフローに関するガ イドライン」を参照してください。 Altera Corporation 2008 年 5 月 Quartus II TimeQuest タイミング・アナライザの実行 Quartus II TimeQuest タイミング・ アナライザ の実行 Quartus II TimeQuest タイミング・アナライザは、以下のいずれかのモー ドで実行できます。 ■ ■ ■ Quartus II ソフトウェアから直接 スタンドアロン・モード コマンドライン・モード この項では、これらの各モードと Quartus II TimeQuest タイミング・ア ナライザの動作について説明します。 Quartus II ソフトウェアから直接 Quartus II TimeQuest タイミング・アナライザを Quartus II ソフトウェア から実行するには、Tools メニューの TimeQuest Timing Analyzer をク リックします。Quartus II TimeQuest タイミング・アナライザは、現在の プロジェクトで使用するデータベースの作成後に使用可能になります。 データベースは、マップ後データベースまたはフィッティング後データ ベースのどちらでも使用できます。マップ後データベースを作成するに は、Analysis and Synthesis を実行し、フィッティング後データベースを 作成するにはフル・コンパイルを実行します。 データベースを作成すると、そのデータベースに基づいてタイミ ング・ネットリストを作成できます。マップ後データベースを作 成すると、Quartus II TimeQuestタイミング・アナライザでフィッ ティング後タイミング・ネットリストは作成できません。 TimeQuest タイミング・アナライザを Quartus II ソフトウェアから直接 起動すると、デフォルトで現在のプロジェクトが開きます。 スタンドアロン・モード Quartus II TimeQuest タイミング・アナライザをスタンドアロン・モード で実行するには、コマンド・プロンプトで次のコマンドを入力します。 quartus_staw ↵ スタンドアロン・モードでは、マップ後データベースまたはフィッティン グ後データベースのいずれかを含むプロジェクトに対して、スタティック 解析を実行できます。プロジェクトを開くには、Tasks ペインの Open Project をダブルクリックします。 Altera Corporation 2008 年 5 月 7–5 Quartus II ハンドブック Volume 3 コマンドライン・モード コマンドライン・モードを使用すると、スクリプト化されたデザイン・ フローと簡単に統合できます。コマンドライン・モードでは、Quartus II TimeQuest タイミング・アナライザのユーザー・インタフェースは使用 できませんが、スタティック・タイミング解析フローの各ステップを自 動化できます。表 7–1 に、コマンドライン・モードで使用可能なオプショ ンの概要を示します。 表 7–1. コマンドライン・オプションの概要 コマンドライン・オプション 説明 -h | --help quartus_sta に関するヘルプ情報を表示します。 -t <script file> | --script=<script file> <script file> を参照します。 -s | --shell シェル・モードに入ります。 --tcl_eval <tcl command> Tcl コマンド <tcl command> を評価します。 --do_report_timing 次のコマンドを実行します。 report_timing -npaths 1 -to_clock $clock。デザイン内のすべ てのクロックが対象です。 --force_dat 最近コンパイルされたデザインからコンパイラ・データベースまでの新しい 遅延が、遅延アノテータによって強制的にアノテーションされます。 --lower_priority quartus_sta プロセスを処理する優先度を低くします。 --post_map マップ後データベースの結果を使用します。 --qsf2sdc Quartus II 設定ファイル(.qsf)形式から Synopsys Design Constraints ファ イル形式にアサインメントを変換します。 --sdc=<SDC file> 読み出す SDC ファイルを指定します。 --fast_model 高速コーナー遅延モデルを使用します。 --report_script=<script> カスタム・レポート・スクリプトを呼び出すよう指定します。 --speed=<value> デバイスのスピード・グレードをタイミング解析で使用するよう指定します。 --tq2hc 一時ファイルを生成し、Quartus II TimeQuest タイミング・アナライザの SDC ファイルを、HardCopy Design Center(HCDC)で使用できる PrimeTime SDC ファイルに変換します。 --tq2pt 一時ファイルを生成し、Quartus II TimeQuest タイミング・アナライザの SDC ファイルを PrimeTime SDC ファイルに変換します。 -f <argument file> 追加コマンドライン引数を含むファイルを指定します。 -c <revision name> | --rev=<revision_name> 使用するリビジョンとその関連する Quartus II 設定ファイル(.qsf)を指定 します。 --multicorner 低速および高速コーナーの両方について、すべてのスラック・サマリ・レポー トを生成するよう指定します。 7–6 Altera Corporation 2008 年 5 月 タイミング解析の概要 Quartus II TimeQuest タイミング・アナライザをコマンドライン・モー ドで実行するには、コマンド・プロンプトで次のコマンドを入力します。 quartus_sta <options> ↵ タイミング 解析の概要 この項では、Quartus II TimeQuest タイミング・アナライザのコンセプ ト の 概 要 を 説 明 し ま す。こ こ で 述 べ る コ ン セ プ ト を 理 解 す る と、 Quartus II TimeQuest タイミング・アナライザで提供される強力なタイ ミング解析機能を利用できるようになります。 Quartus II TimeQuest タイミング・アナライザは、図 7–2 に示すフロー に従ってデザインを解析します。表 7–2 に、各ステップで最も一般的に 使用されるコマンドを示します。 図 7–2. Quartus II TimeQuest タイミング・アナライザのフロー Open Project project_open Create Timing Netlist create_timing_netlist Constrain the Design Create Timing Netlist create_clock create_timing_netlist create_generated_clock set_clock_uncertainty derive_pll_clocks set_clock_latency set_input_delay set_output_delay, ... UpdateTiming Netlist update_timing_netlist Verify Static Timing Analysis Results report_clocks_transfers report_min_pulse_width report_net_timing Altera Corporation 2008 年 5 月 report_sdc report_timing report_clocks report_min_pulse_width report_ucp 7–7 Quartus II ハンドブック Volume 3 表 7–2に、 Quartus II TimeQuestタイミング・アナライザ用語を示します。 表 7–2. Quartus II TimeQuest タイミング・アナライザ用語 用語 定義 Nodes 最も基本的なタイミング・ネットリスト単位。ポート、ピン、およびレジスタを表すの に使用します。 Keepers ポートまたはレジスタ。(1) Cells ルック・アップ・テーブル(LUT)、レジスタ、デジタル信号処理(DSP)ブロック、 TriMatrix メモリ、IOE など。(2) Pins セルの入力または出力。 Nets ピン間の接続。 Ports トップレベル・モジュールの入力または出力(デバイス・ピンなど)。 Clocks デザイン外の抽象オブジェクト。 表 7–2 の注 : (1) (2) ピンはキーパーを間接的に参照できます。例えば、制約の -from フィールドの値が専用メモリへのクロック・ピ ンの場合があります。この場合、クロック・ピンはレジスタの集合を参照します。 Stratix® デバイスとその他の初期デバイス・ファミリの場合、LUT とレジスタは、ロジック・エレメント(LE) に含まれており、これらのデバイス・ファミリのセルとして機能します。 Quartus II TimeQuest タイミング・アナライザで、デザインのタイミン グ解析を実行するには、タイミング・ネットリストが必要です。例えば、 図 7–3 に示すデザインの場合、Quartus II TimeQuest タイミング・アナ ライザは、図 7–4 に示すのと同等のネットリストを生成します。 図 7–3. デザイン例 data1 reg1 and_inst reg3 data2 reg2 clk 7–8 Altera Corporation 2008 年 5 月 タイミング解析の概要 図 7–4. Quartus II TimeQuest タイミング・アナライザのタイミング・ネットリスト Cells Cell data1 datain combout reg1 Cell regout clk and_inst datac datad Pin data2 combout reg3 data_out datain reg2 regout Port clk inclk0] clk~clkctrl Pin outclk Port 図 7–4 に、各種セル、ピン、ネット、およびポートを示します。次のサ ンプル・セル名が使用されます。 ■ reg1 ■ reg2 ■ and_inst 次のサンプル・ピン名が使用されます。 ■ data1|combout ■ reg1|regout ■ and_inst|combout 次のネット名が使用されます。 ■ data1~combout ■ reg1 ■ and_inst 次のポート名が使用されます。 ■ data1, clk ■ data_out あるレジスタの出力を別のレジスタの入力に接続するなど、パスは 2 つ のデザイン・ノードを接続します。タイミング・パスはタイミング解析 において重要な役割を果たします。タイミング・クロージャおよび最適 化のために、タイミング・パスのタイプを理解することが重要です。次 に示すのは、通常解析されるパスです。ここでは、これらのパスについ て説明します。 Altera Corporation 2008 年 5 月 7–9 Quartus II ハンドブック Volume 3 ■ ■ ■ ■ エッジ・パス — ポートからピンの間、ピンからピンの間、およびピ ンからポートの間の接続。 クロック・パス — デバイス・ポートまたは内部で生成されたクロッ ク・ピンから、レジスタのクロック・ピンまでのエッジ。 データ・パス — ポートまたはシーケンシャル・エレメントのデータ 出力ピンから、ポートまたは別のシーケンシャル・エレメントのデー タ入力ピンまでのエッジ。 非同期パス — ポートまたはシーケンシャル・エレメントから、シー ケンシャル・エレメントの非同期セットまたはクリア・ピンまでの エッジ。 図 7–5 に、これらの通常解析されるパスの種類をいくつか示します。 図 7–5. パスの種類 D Q Clock Path D Q Data Path clk CLRN CLRN Asynchronous Clear Path rst Quartus II TimeQuest タイミング・アナライザは、パスの種類を識別す ると、有効なレジスタ間パスのデータ到達時間とクロック到達時間をレ ポートできます。Quartus II TimeQuest タイミング・アナライザは、ク ロック・ソースからソース・レジスタのクロック・ピンまでの遅延、ソー ス・レジスタの clock-to-out(µtCO)、およびソース・レジスタの Q ピン からデスティネーション・レジスタ D ピンまでの遅延を加算することに より、データ到達時間を計算します。ここで、µtCO は FPGA の内部レジ スタに固有の clock-to-out です。 Quartus II TimeQuest タイミング・アナライザは、クロック・ソースか らデスティネーション・レジスタのクロック・ピンまでの遅延を加算す ることにより、クロック到着時間を計算します。図 7–6 にデータ到達パ スとクロック到達パスを示します。Quartus II TimeQuest タイミング・ アナライザは、デスティネーション・レジスタのクロック到達時間とマ イクロ・セットアップ時間(µtSU)を考慮して、データの所要時間を計 算します。ここで、µtSU は FPGA の内部レジスタに固有のセットアップ 時間です。 7–10 Altera Corporation 2008 年 5 月 タイミング解析の概要 図 7–6. データ到達およびクロック到達 D Q D Q Data Arrival Clock Arrival Quartus II TimeQuest タイミング・アナライザは、デザイン内の様々な パスを識別するほか、クロック特性を解析してレジスタ間パスのワース ト・ケース値を計算します。デザインのすべてのクロックを制約してか ら、この解析を実行する必要があります。 ローンチ・エッジは、シーケンシャル・エレメントからデータを送信す るアクティブ・クロック・エッジで、データの転送元として動作します。 ラッチ・エッジは、シーケンシャル・エレメントのデータ・ポートでデー タをキャプチャするアクティブ・クロック・エッジで、データの転送先 として動作します。 図 7–7 に、連続するクロック・エッジを使用してデータの転送とキャプ チャを行うシングル・サイクル・システム、レジスタ間パス、および対 応するローンチ・エッジおよびラッチ・エッジのタイミング図を示しま す。この例では、ローンチ・エッジは、レジスタ reg1 から 0 ns でデー タを送信し、レジスタ reg2 のラッチ・エッジは、5 ns でデータをキャ プチャします。 図 7–7. ローンチ・エッジとラッチ・エッジ D Q D reg1 Q reg2 clk Launch Edge at Source Register reg1 Latch Edge at Destination Register reg2 clk 0 ns Altera Corporation 2008 年 5 月 5 ns 10 ns 15 ns 7–11 Quartus II ハンドブック Volume 3 Quartus II TimeQuest タイミング・アナライザは、ローンチ・エッジと ラッチ・エッジを基準にするクロックのセットアップおよびホールド要 件を検証します。 クロック解析 包括的なスタティック・タイミング解析には、レジスタ間パス、I/O パ ス、お よ び 非 同 期 リ セ ッ ト・パ ス の 解 析 が 含 ま れ ま す。Quartus II TimeQuest タイミング・アナライザは、データ要求時間、データ到達時 間、およびクロック到達時間を使用して、回路性能を検証し、発生する 可能性があるタイミング違反を検出します。Quartus II TimeQuest タイ ミング・アナライザは、デザインが正しく機能するために満足する必要 があるタイミング関係を決定し、到達時間を所要時間と照合してタイミ ングを検証します。 クロック・セットアップ・チェック ク ロ ッ ク・セ ッ ト ア ッ プ・チ ェ ッ ク を 実 行 す る た め に、Quartus II TimeQuest タイミング・アナライザは、各レジスタ間パスのローンチ・ エッジとラッチ・エッジを個々に解析することにより、セットアップ関 係を決定します。デスティネーション・レジスタの各ラッチ・エッジに ついて、Quartus II TimeQuest タイミング・アナライザは、ソース・レ ジスタの直近のクロック・エッジをローンチ・エッジとして使用します。 図 7–8 では、2 つのセットアップ関係を定義して、セットアップ A、セッ トアップ B というラベルを付けています。10 ns におけるラッチ・エッジ の場合、ローンチ・エッジとして動作する直近のクロックは、3 ns のク ロックで、セットアップ A というラベルが付いています。20 ns における ラッチ・エッジの場合、ローンチ・エッジとして動作する直近のクロッ クは、19 ns のクロックで、セットアップ B というラベルが付いています。 図 7–8. セットアップ・チェック Source Clock Setup A Setup B Destination Clock 0 ns 7–12 8 ns 16 ns 24 ns 30 ns Altera Corporation 2008 年 5 月 タイミング解析の概要 Quartus II TimeQuest タイミング・アナライザは、クロック・セットアッ プ・チェックの結果をスラック値としてレポートします。スラックとは、 タイミング要求を満たすかどうかの境目となる指標です。正のスラック は、タイミング要求を満たすことを示し、負のスラックは、タイミング 要求を満たさないことを示します。Quartus II TimeQuest タイミング・ アナライザは、計算式 1 に示す式から、内部レジスタ間パスのクロック・ セットアップ・スラックを決定します。 (1) Clock Setup Slack = Data Required Time – Data Arrival Time Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + µt CO + Register-to-Register Delay Data Required = Clock Arrival Time – µt SU – Setup Uncertainty Clock Arrival Time = Latch Edge + Clock Network Delay to Destination Register データ・パスが入力ポートから内部レジスタまでの場合、Quartus II TimeQuest タイミング・アナライザは、計算式 2 に示す式を使用して、 セットアップ・スラック時間を計算します。 (2) Clock Setup Slack Time = Data Required Time – Data Arrival Time Data Arrival Time = Launch Edge + Clock Network Delay + Input Maximum Delay of Pin + Pin-to-Register Delay Data Required Time = Latch Edge + Clock Network Delay to Destination Register – µt SU データ・パスが内部レジスタから出力ポートまでの場合、Quartus II TimeQuest タイミング・アナライザは、計算式 3 に示す式を使用して、 セットアップ・スラック時間を計算します。 (3) Clock Setup Slack Time = Data Required Time – Data Arrival Time Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + µt CO + Register-to-Pin Delay Data Required Time = Latch Edge + Clock Network Delay – Output Maximum Delay of Pin Altera Corporation 2008 年 5 月 7–13 Quartus II ハンドブック Volume 3 クロック・ホールド・チェック クロック・ホールド・チェックを実行するために、Quartus II TimeQuest タイミング・アナライザは、ソース・レジスタとデスティネーション・ レジスタのすべてのペアで存在する、各セットアップ関係に対するホー ルド関係を決定します。Quartus II TimeQuest タイミング・アナライザ は、すべてのセットアップ関係からすべての隣接クロック・エッジを チェックして、ホールド関係を決定します。Quartus II TimeQuest タイ ミング・アナライザは、各セットアップ関係に対して、2 つのホールド・ チェックを実行します。最初のホールド・チェックでは、現在のローン チ・エッジによって開始するデータが、前のラッチ・エッジによってキャ プチャされないことを判定します。2 番目ホールド・チェックでは、次 のローンチ・エッジによって開始するデータが、現在のラッチ・エッジ によってキャプチャされないことを判定します。図 7–9 に、セットアッ プ A、セットアップ B のラベルが付いた 2 つのセットアップ関係を示し ます。最初のホールド・チェックには、セットアップ A とセットアップ B に対して、それぞれホールド・チェック A1 とホールド・チェック B1 のラベルが付けられています。2 番目のホールド・チェックには、セッ トアップ A とセットアップ B に対して、それぞれホールド・チェック A2 とホールド・チェック B2 のラベルが付けられています。 図 7–9. ホールド・チェック Source Clock Hold Check A1 Setup A Setup B Hold Check A2 Hold Check B1 Hold Check B2 Destination Clock 0 ns 8 ns 16 ns 24 ns 30 ns 可能なホールド関係の中から、Quartus II TimeQuest タイミング・アナ ライザは、最も制限されるホールド関係を選択します。ラッチ・エッジ とローンチ・エッジ間の差(すなわち、ラッチ・ローンチ間で、ラッチ およびローンチの絶対値ではない)が最大のホールド関係が選択されま す。その理由は、この関係によってレジスタ間パスの許容最小遅延が決 定されるためです。図 7–9 の場合、選択されるホールド関係はホールド・ チェック A2 です。 7–14 Altera Corporation 2008 年 5 月 タイミング解析の概要 Quartus II TimeQuest タイミング・アナライザは、計算式 4 に示すとお り、クロック・ホールド・スラックを算出します。 (4) Clock Hold Slack = Data Arrival Time – Data Required Time Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + µt CO + Register-to-Register Delay Data Required Time = Clock Arrival Time + µt H + Hold Uncertainty Clock Arrival Time = Latch Edge + Clock Network Delay to Destination Register データ・パスが入力ポートから内部レジスタまでの場合、Quartus II TimeQuest タイミング・アナライザは、計算式 5 に示す式を使用して、 ホールド・スラック時間を計算します。 (5) Clock Setup Slack Time = Data Arrival Time – Data Required Time Data Arrival Time = Launch Edge + Clock Network Delay + Input Minimum Delay of Pin + Pin-to-Register Delay Data Required Time = Latch Edge + Clock Network Delay to Destination Register + µt H データ・パスが内部レジスタから出力ポートまでの場合、Quartus II TimeQuest タイミング・アナライザは、計算式 6 に示す式を使用して、 セットアップ・ホールド時間を計算します。 (6) Clock Setup Slack Time = Data Arrival Time – Data Required Time Data Arrival Time = Latch Edge + Clock Network Delay to Source Register + µt CO + Register-to-Pin Delay Data Required Time = Latch Edge + Clock Network Delay – Output Minimum Delay of Pin Altera Corporation 2008 年 5 月 7–15 Quartus II ハンドブック Volume 3 リカバリおよびリムーバル リカバリ時間とは、非同期コントロール信号(例えば、clear や preset) のディアサーションが次のアクティブ・クロック・エッジまで安定して いなければならない最小時間です。リカバリ・スラック時間の計算は、 クロック・セットアップ・スラック時間の計算に似ていますが、非同期 コントロール信号に適用される点が異なります。非同期コントロール信 号がラッチされる場合、Quartus II TimeQuest タイミング・アナライザ は、計算式 7 に示す式を使用して、リカバリ・スラック時間を計算します。 (7) Recovery Slack Time = Data Required Time – Data Arrival Time Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + µt CO + Register-to-Register Delay Data Required Time = Latch Edge + Clock Network Delay to Destination Register – µt SU 非同期コントロールがラッチされない場合、Quartus II TimeQuest タイ ミング・アナライザは、計算式 8 に示す式を使用して、リカバリ・スラッ ク時間を計算します。 (8) Recovery Slack Time = Data Required Time – Data Arrival Time Data Arrival Time = Launch Edge + Clock Network Delay + Maximum Input Delay + Port-to-Register Delay Data Required Time = Latch Edge + Clock Network Delay to Destination Register Delay – µt SU 非同期リセット信号がポート(デバイス I/O)からの信号であ る場合、非同期リセット・ポートに Input Maximum Delay ア サインメントを行って、Quartus II TimeQuest タイミング・ア ナライザで、このパスのリカバリ解析を実行できなければなり ません。 リムーバル時間とは、非同期コントロール信号のディアサーションがア クティブ・クロック・エッジ後に安定していなければならない最小時間 です。Quartus II TimeQuest タイミング・アナライザによるリムーバル 時間スラックの計算は、クロック・ホールド・スラック時間の計算に似 ていますが、非同期コントロール信号に適用される点が異なります。非 同期コントロールがラッチされる場合、Quartus II TimeQuest タイミン グ・アナライザは、計算式 9 に示す式を使用して、リムーバル・スラッ ク時間を計算します。 7–16 Altera Corporation 2008 年 5 月 タイミング解析の概要 (9) Removal Slack Time = Data Arrival Time – Data Required Time Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + µt CO of Source Register + Register-to-Register Delay Data Required Time = Latch Edge + Clock Network Delay to Destination Register + µt H 非同期コントロールがラッチされない場合、Quartus II TimeQuest タイ ミング・アナライザは、計算式 10 に示す式を使用して、リムーバル・ス ラック時間を計算します。 (10) Removal Slack Time = Data Arrival Time – Data Required Time Data Arrival Time = Launch Edge + Clock Network Delay + Input Minimum Delay of Pin + Minimum Pin-to-Register Delay Data Required Time = Latch Edge + Clock Network Delay to Destination Register + µt H 非同期リセット信号がデバイス・ピンからの信号である場合、 非同期リセット・ピンに Input Minimum Delay 制約を指定し て、Quartus II TimeQuest タイミング・アナライザがこのパス でリムーバル解析を実行できるようにする必要があります。 マルチサイクル・パス マルチサイクル・パスとは、デスティネーション・レジスタでデータを ラッチするために 2 つ以上のクロック・サイクルを必要とするデータ・ パスのことです。例えば、1 個のレジスタで、2 番目または 3 番目の立ち 上がりエッジごとにデータをキャプチャすることが必要な場合がありま す。図 7–10 に、乗算器の入力レジスタと、デスティネーションが 1 つお きのクロック・エッジでデータをラッチする出力レジスタとの間のマル チサイクル・パスの例を示します。 Altera Corporation 2008 年 5 月 7–17 Quartus II ハンドブック Volume 3 図 7–10. マルチサイクル・パスの例を示す図 D D Q Q ENA D D Q ENA Q ENA 2 Cycles 図 7–11 に、レジスタ間パスを示します。ここで、ソース・クロック src_clk の周期は 10 ns、デスティネーション・クロック dst_clk の周 期は 5 ns です。 図 7–11. レジスタ間パス reg data_in D reg Q D Q data_out src_clk dst_clk 図 7–12 に、ソース・クロックおよびデスティネーション・クロックのタ イミング図と、デフォルトのセットアップ関係およびホールド関係を示 します。デフォルトのセットアップ関係は 5 ns、デフォルトのホールド 関係は 0 ns です。 7–18 Altera Corporation 2008 年 5 月 タイミング解析の概要 図 7–12. デフォルトのセットアップおよびホールドのタイミング図 setup hold 0 10 20 30 デフォルトのセットアップおよびホールド関係は、システム要件を満た すように set_multicycle_path コマンドで修正できます。 表 7–3 に、Quartus II TimeQuest タイミング・アナライザがセットアッ プ関係またはホールド関係を決定するのに使用する、ローンチ・エッジ 時間またはラッチ・エッジ時間を修正するコマンドを示します。 表 7–3. エッジ時間修正コマンド コマンド 修正の説明 set_multicycle_path -setup -end セットアップ関係のラッチ・エッジ時間 set_multicycle_path -setup -start セットアップ関係のローンチ・エッジ時間 set_multicycle_path -hold -end ホールド関係のラッチ・エッジ時間 set_multicycle_path -hold -start ホールド関係のローンチ・エッジ時間 図 7–13 に、2 マルチサイクル・セットアップを適用した後のタイミング 図を示します。このコマンドにより、ラッチ・エッジ時間をデフォルト の 5 ns から 10 ns に移動します。 図 7–13. 修正後のセットアップ図 new setup default setup 0 Altera Corporation 2008 年 5 月 10 20 30 7–19 Quartus II ハンドブック Volume 3 メタスタビリティ すべてのレジスタで、入力でデータをキャプチャ可能なセットアップお よびホールド時間要件が定義されています。キャプチャされたデータは レジスタの出力に送られ、入力でキャプチャされた信号に応じて、High または Low 電圧信号が出力されます。ただし、データがセットアップ時 間やホールド時間に違反している場合、レジスタの出力は準安定状態に なることがあります。この状態では、レジスタの出力は High 状態と Low 状態の間の値で揺らぎます。この値が回路に伝播するとレジスタが不正 な値をラッチして、システムに障害が発生する原因となります。 メタスタビリティの問題は一般に、無関係なクロック・ドメインにある 2 組の回路の間でデータ信号が転送されると発生します。メタスタビリ ティのために発生する障害を少なくするために、回路設計者は一般に、 デスティネーション・クロック・ドメインで一連のバック・ツー・バッ ク・レジスタ(同期レジスタ・チェイン)を使用して、データ信号を新 しいクロック・ドメインに再同期します。 同期レジスタ・チェインは、以下の要件を満たす一連のレジスタとして 定義できます。 ■ ■ レジスタはすべて、同じクロックまたは位相関連クロックによって 駆動される。 最初のレジスタは、関連性のないクロック・ドメインから(つまり、 非同期で)ドライブされ、レジスタのファンアウトは 1 である。 図 7–14 に、同期レジスタ・チェインのサンプルを示します。 図 7–14. 同期レジスタ・チェイン Synchronization Chain Clock 1 Domain DATA CLOCK 1 D Q Clock 2 Domain D Q D Q OUTPUT CLOCK 2 同期レジスタ・チェインの長さは、上記の要件を満たすこの同期クロッ ク・ドメインのレジスタ数によって定義されます。 7–20 Altera Corporation 2008 年 5 月 タイミング解析の概要 同期クロック・ドメイン内の各ネットに有効なセットアップ・ スラックがある限り、これらの同期レジスタ間にロジックが存 在することができます。 同期レジスタ・チェインとみなされる例を図 7–15 に示します。 図 7–15. 同期レジスタ・チェイン Synchronization Chain Clock 1 Domain DATA D SET Q Clock 2 Domain D CLR Q CLOCK 1 SET Q D CLR Q CLOCK 2 SET Q OUTPUT CLR Q CLOCK 2 D SET Q Reg C Q CLOCK 2 メタスタビリティが発生すると、clock-to-output 時間がレジスタの標準 tCO 時間を超えることがあります。出力信号が既知状態に落ち着くのに 要する時間のうち、tCO を超過した時間はセトリング時間(tMET)と呼ば れます。同期レジスタ・チェインの tMET は、チェイン内のレジスタのす べての出力スラックを合計した時間です。図 7–16 に、メタステーブル信 号の tMET を示します。メタステーブル・イベントの解決に要する時間 が、同期チェインのセトリング時間よりも長い場合、このメタステーブ ル・イベントが前方に伝播し、デザインに障害が発生すること可能性が あります。 Altera Corporation 2008 年 5 月 7–21 Quartus II ハンドブック Volume 3 図 7–16. メタスタビリティ・タイミング・パラメータ DATA CLK tSU tH Q tCO tMET 計算された tMET に基づき、計算式 11 に示す式を使用して、同期チェイ ンの平均故障間隔(MTBF)を計算できます。 (11) ( C 2 × t MET ) e MTBF = --------------------------------------------C 1 × f CLOCK × f DATA MTBF は故障が発生してから次に故障が発生するまでの平均時間の概算 値です。定数 C1 および C2 は、デバイスの製造時に使用されるプロセス 技術によって決定され、TimeQuest タイミング・アナライザが適切なデ バイスに対して指定します。 TimeQuest タイミング・アナライザは、デザインの各同期レジスタ・チェ インの MTBF を計算することにより、デザインのメタスタビリティに対 する堅牢性を解析します。次に、デザイン全体の MTBF が、デザイン内 の同期チェインに基づいて見積もられます。 デザイン内の同期レジスタ・チェインをレポートするほか、Quartus II ソフトウェアは、レジスタの重複やロジック・リタイミングなど、MTBF に悪影響を及ぼす可能性がある最適化からこれらのレジスタを保護しま す。また、Quartus II ソフトウェアは、デザインの MTBF が低すぎる場 合にもそれを最適化することができます。 TimeQuest タイミング・アナライザで、メタスタビリティ解析を有効に して、メタスタビリティをレポートする方法については、7–70 ページの 「report_metastability」を参照してください。 7–22 Altera Corporation 2008 年 5 月 タイミング解析の概要 TimeQuest で、メタスタビリティ解析を有効にして、メタスタビリティ を レ ポ ー ト す る 方 法 に ついて詳しくは、「Quartus II ハンドブック Volume 2」の「面積およびタイミングの最適化」の章を参照してくださ い。 コモン・クロック・パス・ペシミズム コモン・クロック・パス・ペシミズム(CCPP)リムーバルは、スタ ティック・タイミング解析で、コモン・クロック・パスに関連する最小 遅延と最大遅延の変動を考慮します。CCPP リムーバルは、この変動を 考慮するために、共通クロックパスの最大遅延と最小遅延の差を適切な スラック式に追加します。 最小遅延と最大遅延の変動は、同じクロック・パスに異なる 2 つの遅延 値を使用すると発生する可能性があります。例えば、簡単なセットアッ プ解析では、データ到達時間はソース・レジスタへの最大クロック・パ ス遅延を使用して求められます。また、データ所要時間はデスティネー ション・レジスタへの最小クロック・パス遅延を使用して求められます。 ただし、ソース・レジスタへのクロック・パスとデスティネーション・ レジスタへのクロック・パスで、クロック・パスを共有する場合、解析 では最大遅延と最小遅延の両方を使用して、共通クロックパスをモデル 化します。2 つの異なる遅延値(最小遅延と最大遅延)を使用して同じ クロック・パスをモデル化することはできないため、結果として、過度 に悲観的な解析になります。 図 7–17 に、標準的なレジスタ間パスを、最大遅延値と最小遅延値と併せ て示します。 図 7–17. 共通クロックパス B D 2.2 ns 2.0 ns Q reg1 A clk 3.2 ns 3.0 ns 5.5 ns 5.0 ns C 2.2 ns 2.0 ns D Q reg2 セグメント A は reg1 と reg2 の間の共通クロックパスです。最小遅延は 5.0 ns、最大遅延は 5.5 ns です。最大遅延値と最小遅延値の差は、CCPP リムーバル値と同じです(このケースでは、CCPP は 0.5 ns)。次に、こ の CCPP リムーバル値は適切なスラック式に追加されます。したがって、 Altera Corporation 2008 年 5 月 7–23 Quartus II ハンドブック Volume 3 図 7–17 に示すレジスタ間のセットアップ・スラックが CCPP リムーバ ルなしで 0.7 ns の場合、このスラックは CCPP リムーバル付きで 1.2 ns になります。 CCPP は、レジスタの最小パルス幅を求める場合にも使用されます。ク ロック信号がレジスタによって認識されるには、レジスタの最小パルス 幅要件を満たしている必要があります。最小 High タイムにより、ポジ ティブ・エッジ・トリガ・レジスタの最小パルス幅が定義されます。最 小 Low タイムにより、ネガティブ・エッジ・トリガ・レジスタの最小パ ルス幅が定義されます。 クロック・パルスがレジスタの最小パルス幅に違反していると、レジス タのデータ・ピンでデータがラッチされません。最小パルス幅のスラッ クを計算するには、必要な最小パルス幅時間を実際の最小パルス幅時間 から減算します。実際の最小パルス幅時間は、レジスタのクロック・ポー トに供給されるクロックに指定されるクロック要件によって決まりま す。必要な最小パルス幅時間は、最大立ち上がり時間、最小立ち上がり 時間、最大立ち下がり時間、および最小立ち下がり時間によって決まり ます。図 7–18 に、High パルスと Low パルスの両方について、必要な最 小パルス幅時間の図を示します。 図 7–18. 必要な最小パルス幅 Minimum and Maximum Rise Rise Arrival Times Minimum and Maximum Fall Arrival Times High Pulse Width Low Pulse Width 0.8 0.5 0.9 0.7 0.8 0.5 CCPP を使用すると、最大立ち上がり時間から最小立ち上がり時間を減 算した時間と、最大立ち下がり時間から最小立ち下がり時間を減算した 時間のうち、小さいほうの時間だけ最小パルス幅スラックを増やすこと ができます。図 7–18 の場合、スラック値は 0.2 ns だけ増やすことができ ます。この 0.2 ns は、0.3 ns(0.8 ns – 0.5 ns)と 0.2 ns(0.9 ns – 0.7 ns) のうち小さいほうの値です。 7–24 Altera Corporation 2008 年 5 月 タイミング解析の概要 TimeQuest タイミング・アナライザで、CCPP をレポートする方法につ いて詳しくは、7–75 ページの「report_min_pulse_width」を参照してく ださい。 Enable common clock path pessimism removal オプションを使用して、 フィッタおよびタイミング解析で CCPP を考慮する必要があります。 Settings メニューのこのオプションには、TimeQuest settings をクリッ クしてアクセスします。 また、タイミング解析で CCPP を考慮するには、TimeQuest コンソー ル・ペインで、Tcl プロンプトまたはスクリプトに次のように入力します。 enable_ccpp_removal Clock-As-Data 大部分の FPGA デザインには、データ・パスまたはクロック・パスと呼 ばれる任意の 2 つのノード間に簡易な接続があります。データ・パスと は、ある同期エレメントの出力から別の同期エレメントの入力までの接 続です。クロックは同期エレメントのクロック・ピンへの接続です。た だし、ソース同期インタフェースを使用するなど、FPGA デザインはよ り複雑になっているため、このような簡単な図では十分に説明できませ ん。 ポート clk_in とポート clk_out の間の接続は、クロック・パスまた はデータ・パスのいずれとしても扱えます。クロック・パスは、ポート clk_in からレジスタ reg_data クロック・ピンまでのパスです。デー タ・パスは、ポート clk_in からポート clk_out までのパスです。 図 7–19 に示すデザインの場合、ポート clk_in からポート clk_out ま でのパスは、クロック・パスでありデータ・パスでもあります。 図 7–19. 簡略化されたソース同期出力 D Q reg_data clk_in Altera Corporation 2008 年 5 月 clk_out 7–25 Quartus II ハンドブック Volume 3 Clock-As-Data 解析により、TimeQuest タイミング・アナライザはユー ザー制約に基づいて、より精密なパス解析を行うことができます。クロッ ク・パス解析の場合、PLL に関連付けられている位相シフトが考慮され ます。データ・パスの場合、PLL に関連付けられている位相シフトが無 視されずに考慮されます。 また、Clock-As-Data 解析は、図 7–20 に示すような内部生成されるク ロック・ディバイダにも適用されます。 図 7–20. クロック・ディバイダ D D Q Q Launch Clock (1/2 T) Data Arrival Time Latch Clock (T) ソース同期インタフェースには、データ信号と並行して伝達されるク ロック信号があります。クロックとデータのペアは、同じデバイスで発 信されるかまたは終了します。 7–26 Altera Corporation 2008 年 5 月 Quartus II TimeQuest タイミング・アナライザのフローに関するガイドライン Quartus II TimeQuest タイミング・ アナライザ のフロー に関する ガイドライン 図 7–21 に示すステップを使用して、TimeQuest タイミング・アナライ ザでタイミングを検証します。 図 7–21. TimeQuest タイミング・アナライザでのタイミング検証 Create a Timing Netlist Read Synopsys Design Constraints File Update Timing Netlist Generate Timing Reports 以下の項では、図 7–21 に示す各ステップについて説明します。 タイミング・ネットリストの作成 フル・コンパイルの実行後、フィッティング後の結果からフル・アノテー ションされたデータベースに基づいて、タイミング・ネットリストを作 成する必要があります。 タイミング・ネットリストを作成するには、Tasks ペインの Create Timing Netlist をダブルクリックするか、Console ペインで次のコマン ドを入力します。 create_timing_netlist ↵ Synopsys Design Constraints ファイルの読み出し タイミング・ネットリストを作成したら、次は SDC ファイルを読み出 す必要があります。このステップでは、SDC ファイルに定義されている 制約と例外をすべて読み出します。 SDC ファイルは、Task ペインまたは Console ペインから読み出すこと ができます。 Altera Corporation 2008 年 5 月 7–27 Quartus II ハンドブック Volume 3 Tasks ペインから SDC ファイルを読み出すには、Read SDC File コマン ドをダブルクリックします。 Read SDC File タスクは、<current revision>.sdc ファイルを読 み出します。 Console ペインから SDC ファイルを読み出すには、Console で次のコマ ンドを入力します。 read_sdc ↵ TimeQuest タイミング・アナライザで SDC ファイルを読み出す方法に ついて詳しくは、7–32 ページの「Synopsys Design Constraints ファイル の優先順位」を参照してください。 タイミング・ネットリストの更新 SDC ファイルを読み出したら、タイミング・ネットリストを更新する必 要があります。TimeQuest タイミング・アナライザは、検証のためにす べての制約をネットリストに適用し、デザイン内の無効なパスやフォル ス・パスをすべて検証から除外します。 タイミング・ネットリストを更新するには、Tasks ペインの Update Timing Netlist をダブルクリックするか、Console ペインで次のコマン ドを入力します。 update_timing_netlist ↵ タイミング・レポートの生成 デザイン内のすべてのクリティカル・パスについてタイミング・レポー トを生成できます。Tasks ペインには、一般的に使用するレポート用コ マンドがあります。デザインに関する個別レポートやカスタム・レポー トを生成できます。 レポートについて詳しくは、7–66 ページの「タイミング・レポート」の 項を参照してください。 提供されているレポート API(Application Program Interface)の全リス トについては、 「SDC & TimeQuest API Reference Manual」を参照して ください。 7–28 Altera Corporation 2008 年 5 月 コレクション タイミングを検証していると、クリティカル・パスに沿ってエラーが発 生することがあります。この場合は、既存の制約を改良するか、新しい 制約を作成して、既存の制約の効果を変更することができます。制約を 修正、削除、または追加した場合は、フル・コンパイルを実行する必要 があります。これにより、フィッタは新しい制約に基づいてデザインを 再び最適化し、プロセスのコンパイル実行ステップに戻します。この繰 り返しプロセスにより、デザインのタイミング違反を解決することがで きます。 タイミング解析フローを自動化するサンプル Tcl スクリプトについては、 「TimeQuest Quick Start Tutorial」を参照してください。 コレクション Quartus II TimeQuest タイミング・アナライザは、デザイン内のポート、 ピン、セル、またはノードへのアクセスを容易にするコレクション API をサポートしています。コレクション API は、Quartus II TimeQuest タ イミング・アナライザで指定される有効な制約や Tcl コマンドとともに 使用します。 表 7–4 に、Quartus II TimeQuest タイミング・アナライザでサポートさ れるコレクション・コマンドを示します。 表 7–4. コレクション・コマンド コマンド 説明 all_clocks デザイン内のすべてのクロックのコレクションを返します。 all_inputs デザイン内のすべての入力ポートのコレクションを返します。 all_outputs デザイン内のすべての出力ポートのコレクションを返します。 all_registers デザイン内のすべてのレジスタのコレクションを返します。 get_cells デザイン内のセルのコレクションを返します。コレクション内のすべてのセル名が指定 されたパターンに一致します。ワイルドカードを使用して、複数のセルを同時に選択で きます。 get_clocks デザイン内のクロックのコレクションを返します。 set_multicycle_path の -from または -to など、別のコマンドへの引数として使用すると、クロックの各ノードは、コ レクション内でクロックで駆動されるすべてのノードを表します。デフォルトでは、特 定のノード(クロックの場合でも)をコマンドのターゲットとして使用します。 get_nets デザイン内のネットのコレクションを返します。コレクション内のすべてのネット名が 指定されたパターンと一致します。ワイルドカードを使用して、複数のネットを同時に 選択できます。 get_pins デザイン内のピンをコレクションとして返します。コレクションに含まれるピン名はす べて、指定されたパターンと一致するものです。ワイルドカードを使用して、同時に複 数のピンを選択できます。 get_ports デザイン内のポート(デザインの入力と出力)のコレクションを返します。 Altera Corporation 2008 年 5 月 7–29 Quartus II ハンドブック Volume 3 表 7–5 に、Quartus II TimeQuest タイミング・アナライザでサポートさ れる SDC 拡張コレクション・コマンドを示します。 表 7–5. SDC 拡張コレクション・コマンド コマンド 説明 get_fanouts <filter> <filter> を先頭にして、ファンアウト・ノードのコレクションを返します。 get_keepers <filter> デザイン内のキーパー・ノード(非組み合わせノード)のコレクションを 返します。 get_nodes <filter> デザイン内のノードのコレクションを返します。制約または例外を指定す るときは、 get_nodes コレクションは使用できません。 get_partitions <filter> <filter> と一致するパーティションのコレクションを返します。 get_registers <filter> デザイン内のレジスタのコレクションを返します。 get_fanins <filter> <filter> を先頭にして、ファンイン・ノードのコレクションを返します。 derive_pll_clocks PLL の出力に生成されたクロックを自動的に作成します。生成されたクロッ クのプロパティには、MegaWizard® Plug-In Manager で指定された PLL プ ロパティが反映されます。 get_assignment_groups <filter> Assignment (Time) Groups オプションを使用して Quartus 設定ファイル (.qsf)に保存されたキーパー、ポート、またはレジスタのコレクションを 返します。 remove_clock <clock list> <clock list> で指定したクロックのリストを削除します。 set_scc_mode <size> 最大 SCC(Strongly Connected Component)ループ・サイズを設定するか、 Quartus II TimeQuest タイミング・アナライザで常に SCC での遅延を見積 もるよう強制することができます。 set_time_format 時間単位や小数点以下の桁数を含む、時間フォーマットを設定します。 コレクションについて詳しくは、SDC ファイルおよび「SDC and TimeQuest API Reference Manual」を参照してください。 アプリケーション例 例 7–1 に、create_clock および create_generated_clock コマン ドのさまざまな使用方法と特定のデザイン構造を示します。 例 7–1. create_clock および set_multicycle_path コマンドと特定のデザイン構造 # デューティ・サイクル 60 % のシンプルな 10 ns を作成 create_clock -period 10 -waveform {0 6} -name clk [get_ports clk] # 以下のマルチサイクルは、clk によってクロックされるレジスタで終了する # すべてのパスに適用 set_multicycle_path -to [get_clocks clk] 2 7–30 Altera Corporation 2008 年 5 月 SDC 制約ファイル SDC 制約 ファイル Quartus II TimeQuest タイミング・アナライザは、すべてのタイミング 制約を SDC ファイルに格納します。配置配線とタイミング解析につい て、異なる制約を持つ SDC ファイルを作成できます。 SDC ファイルには、SDC および Tcl コマンドのみ含めます。タ イミング・ネットリストを操作するコマンドや、コンパイル・ フローを制御するコマンドを SDC ファイルに含めることはで きません。 Quartus II ソフトウェアは SDC ファイルを自動的に更新しません。新し い制約や更新された制約は、TimeQuest タイミング・アナライザ GUI で 明示的に記述する必要があります。write_sdc コマンドを使用するか、 Quartus II TimeQuest タイミング・アナライザで、Constraints メニュー のWrite SDC Fileをクリックして、SDCファイルに制約を書き込みます。 SDC ファイルの制約は順序に関係があります。制約は必ず宣言 した後で参照しなければなりません。例えば、生成されたクロッ クが、clk という名前のベース・クロックを参照する場合、ベー ス・クロックの制約を生成されたクロックの制約より前に宣言 する必要があります。 SDC ファイルによるフィッタおよびタイミング解析 Quartus II フィッタによる配置配線、および Quartus II TimeQuest タイ ミング・アナライザによるスタティック・タイミング解析には、同じ SDC ファイルまたは別の SDC ファイルを指定できます。別の SDC ファ イルを使用すると、Quartus II TimeQuest タイミング・アナライザで、 配置配線に対する制約セットと、最終的なタイミング・サイン・オフに 対する制約セットを持つことができます。 配置配線用 SDC ファイルの指定 フィッタに SDC ファイルを指定するには、Quartus II プロジェクトに SDC ファイルを追加する必要があります。このファイルをプロジェクト に追加するには、Tcl コンソールで次のコマンドを使用します。 set_global_assignment -name SDC_FILE <SDC file name> あるいは、Quartus IIソフトウェアGUIで、ProjectメニューのAdd/Remove Files in Project をクリックします。 フィッタにより、プロジェクトの SDC ファイルの要件に基づいてデザ インが最適化されます。 Altera Corporation 2008 年 5 月 7–31 Quartus II ハンドブック Volume 3 Compilation Report のタイミング解析レポートに示す結果は、プロジェ クトに追加された SDC ファイルに基づきます。 Quartus II TimeQuest タイミング・アナライザをデフォルトの タイミング・アナライザとして指定し、フィッタで SDC ファ イルを読み出すようにする必要があります。 スタティック・タイミング解析用 SDC ファイルの指定 Quartus II TimeQuest タイミング・アナライザでタイミング・ネットリ ストを作成した後、タイミング制約および例外を指定して、タイミング 解析を実行できるようにする必要があります。タイミング要求は、フィッ タに提供されるものと同じである必要はありません。タイミング要求は 手動で指定できます。あるいは、以前に作成された SDC ファイルを読 み出すこともできます。 タイミング要求は手動で入力するには、制約入力ダイアログ・ボックス または SDC コマンドを使用できます。タイミング要求を含む SDC ファ イルがある場合は、そのファイルを使用してタイミング要求を適用しま す。Quartus II TimeQuest タイミング・アナライザで、タイミング解析 用の SDC ファイルを指定するには、次のコマンドを使用します。 read_sdc [<SDC file name>] TimeQuest GUI を使用して、タイミング解析に SDC ファイルを適用す る場合は、Quartus II TimeQuest タイミング・アナライザで、Constraints メニューの Read SDC File をクリックします。 デフォルトでは、Tasks ペインの Read SDC File コマンドは、 Quartus II 設定ファイル(.qsf)に指定される SDC ファイル (フィッタで使用する SDC ファイルと同じ)を読み出します。 Synopsys Design Constraints ファイルの優先順位 Quartus II フィッタと Quartus II TimeQuest タイミング・アナライザは、 SDC ファイルを QSF ファイルのファイル・リストの上から下に順番に 読み出します。 Quartus II ソフトウェアは、図 7–22 に示す方法で、SDC ファイルを検 索します。 7–32 Altera Corporation 2008 年 5 月 クロックの仕様 図 7–22. Synopsys Design Constraints ファイルの優先順位 Is the SDC File Specified in the Add Files to Project Dialog Box? Yes No Does the SDC File <current revision>.sdc Exist? Yes No Manually create SDC File <current revision>.sdc Based on the Current Quartus Settings File (1) Compilation Flow 図 7–22 の注 : (1) これは Quartus II TimeQuest タイミング・アナライザでのみ発生し、Quartus II ソフトウェアでのコンパイル中には発生しません。Quartus II TimeQuest タイミ ング・アナライザは、起動時に SDC ファイルが存在しない場合、SDC への QSF タイミング・アサインメントの変換を自動化する機能を備えています。 read_sdcコマンドを引数なしでコマンドラインに入力すると、 図 7–22 に示す優先順位に従って処理されます。 クロック の仕様 正確なスタティック・タイミング解析結果を得るには、デザイン内のす べ て の ク ロ ッ ク お よ び 関 連 ク ロ ッ ク 特 性 の 仕 様 が 不 可 欠 で す。 Quartus II TimeQuest タイミング・アナライザは、各種クロック方式と 任意のクロック特性に対応する多数の SDC コマンドをサポートしてい ます。 この項では、クロック特性を作成および指定するのに使用可能な SDC ファイル API について説明します。 クロック create_clock コマンドを使用して、任意のレジスタ、ポート、または ピンでクロックを作成します。固有の特性を持つ各クロックを作成でき ます。例 7–2 に、create_clock コマンドとオプションを示します。 Altera Corporation 2008 年 5 月 7–33 Quartus II ハンドブック Volume 3 例 7–2. create_clock コマンド create_clock -period <period value> [-name <clock name>] [-waveform <edge list>] [-add] <targets> 表 7–6 に、create_clock コマンドのオプションを示します。 表 7–6. create_clock コマンドのオプション オプション 説明 -period <period value> クロック周期を指定します。また、クロック周期は、-period <num>MHz などの周波数単位でも指定できます。(1) -name <clock name> 特定のクロックの名前(sysclock など)。クロック名を指定しない場合、 クロック名はクロックが割り当てられるノードと同じになります。 -waveform <edge list> クロックの立ち上がりエッジと立ち下がりエッジを指定します。edge list に は、立ち上がりエッジと立ち下がりエッジを交互に指定します。例えば、最 初の立ち上がりエッジが 0 ns で発生し最初の立ち下がりエッジが 5 ns で発 生する 10 ns 周期の場合、-waveform {0 5} と記述します。差は 1 周期 単位内でなければならず、立ち上がりエッジは立ち下がりエッジの前でなけ ればなりません。デフォルトの edge list は {0 <period>/2}、つまりデュー ティ・サイクル 50% です。 -add 同じポートまたはピンに複数のクロックを指定できます。 <targets> アサインメントを適用するポートまたはピンを指定します。ソース・オブ ジェクトが指定されていない場合、クロックが仮想クロックになります。詳 細は、7–39 ページの「仮想クロック」を参照してください。 表 7–6 の注 : (1) Quartus II TimeQuest タイミング・アナライザのデフォルト時間単位はナノ秒(ns)です。 例 7–3 に、デューティ・サイクル 50% の 10 ns のクロックを作成する方 法を示します。ここで、最初の立ち上がりエッジはポート clk に印加さ れる 0 ns で発生します。 例 7–3. 100 MHz クロックの作成 create_clock –period 10 –waveform { 0 5 } clk 7–34 Altera Corporation 2008 年 5 月 クロックの仕様 例 7–4 に、ポート clk_sys に印加される 90 度位相シフトされデュー ティ・サイクル 50% の 10 ns クロックを作成する方法を示します。 例 7–4. 90 度位相シフトした 100 MHz クロックの作成 create_clock –period 10 –waveform { 2.5 7.5 } clk_sys create_clock コマンドで定義されるクロックのデフォルト・ソース・ レイテンシ値はゼロです。Quartus II TimeQuest タイミング・アナライ ザは、非仮想クロックに対するクロックのネットワーク・レイテンシを 自動的に計算します。 生成クロック Quartus II TimeQuest タイミング・アナライザは、クロック・ディバイ ダ、リップル・クロック、または入力されるクロックまたはマスタ・ク ロックの特性を修正または変更する回路を生成クロックとみなします。 これらの回路の出力は、生成クロックとして定義する必要があります。 この定義により、Quartus II TimeQuest タイミング・アナライザは、こ れらのクロックを解析し、関連するネットワーク・レイテンシを考慮で きるようになります。 create_generated_clock コマンドを使用して、生成クロックを作成 します。例 7–5 に、create_generated_clock コマンドと使用可能な オプションを示します。 例 7–5. create_generated_clock コマンド create_generated_clock [-name <clock name>] -source <master pin> [-edges <edge list>] [-edge_shift <shift list>] [-divide_by <factor>] [-multiply_by <factor>] [-duty_cycle <percent>] [-add] [-invert] [-master_clock <clock>] [-phase <phase>] [-offset <offset>] <targets> Altera Corporation 2008 年 5 月 7–35 Quartus II ハンドブック Volume 3 表 7–7 に、create_generated_clock コマンドのオプションを示しま す。 表 7–7. create_generated_clock コマンドのオプション オプション 説明 -name <clock name> 生成クロックの名前。clk_x2 など。クロック名を指定しない場合、クロック名 はクロックが割り当てられる最初のノードと同じになります。 -source <master pin> <master pin> は、クロック設定が派生するデザイン内のノードを指定します。 -edges <edge list> | -edges オプションは、マスタ・クロックの立ち上がりおよび立ち下がりエッジ -edge_shift <shift list> に対して新しい立ち上がりおよび立ち下がりエッジを指定します。マスタ・ク ロックの立ち上がりおよび立ち下がりエッジには、最初の立ち上がりエッジから 順に 1..<n> の番号が付けられます。例えば、最初の立ち上がりエッジはエッ ジ 1 です。エッジ 1 の後の最初の立ち下がりエッジは、エッジ番号 2、次の立ち 上がりエッジのエッジ番号は 3 と続きます。<edge list> は昇順で指定する必要が あります。同じエッジを 2 つのエントリに使用して、元の波形のデューティ・サ イクルとは関係なくクロック・パルスを示すことができます。 -edge_shift は、<edge list> の各エッジのシフト量を指定します。-invert オ プションを使用すると、-edges と-edge_shifts の印加後にクロックを反転 できます。(1) -divide_by <factor> | -multiply_by <factor> -divide_by および -multiply_by 係数は、クロックの最初の立ち上がりエッ ジに基づき、指定された係数に従って波形を拡張または縮小します。例え ば、-divide_by 2 は -edges {1 3 5} と同じです。 逓倍クロックの場合は、 デューティ・サイクルも指定できます。Quartus II TimeQuest タイミング・アナ ライザでは、逓倍係数と分周係数を同時に指定できます。 -duty_cycle <percent> 生成クロックのデューティ・サイクルを指定します。デューティ・サイクルは最 後に適用されます。 -add 同じピンに複数のクロックを指定できます。 -invert 反転はデューティ・サイクルを除くすべての修正が適用された後、クロックの出 力で適用されます。 -master_clock <clock> マスタ・ピンに複数のクロックが存在する場合は、 -master_clock を使用し てクロックを指定します。 -phase <phase> 生成クロックの位相を指定します。 -offset <offset> 生成クロックのオフセットを指定します。 <targets> アサインメントを適用するポートまたはピンを指定します。 表 7–7 の注 : (1) 7–36 Quartus II TimeQuest タイミング・アナライザでは、edge list に最大 3 つのエッジを指定できます。 Altera Corporation 2008 年 5 月 クロックの仕様 ソース・レイテンシは、マスタ・クロック(必ずしもマスタ・ピンでは ない)からのクロック・ネットワーク遅延に基づきます。set_clock_ latency -source コマンドを使用して、ソース・レイテンシを無視で きます。 図 7–23 に、10 ns クロックに基づいて生成クロックを反転する方法を示 します。 図 7–23. 反転クロックの生成 create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 1 -invert -source [get_registers clk] \ [get_registers gen|clkreg] Edges 1 2 3 4 5 6 7 8 clk gen|clkreg Time Altera Corporation 2008 年 5 月 0 10 20 30 7–37 Quartus II ハンドブック Volume 3 図 7–24 に、-edges および -edge_shift オプションを使用して、生成 クロックを修正する方法を示します。 図 7–24. エッジおよび生成クロックをシフトするエッジ create_clock -period 10 -waveform { 0 5} [get_ports clk] # divide-by-2 クロックを作成 create_generated_clock -source [get_ports clk] -edges {1 3 5 } [get_registers \ clkdivA|clkreg] # マスタ・クロックのデューティ・サイクル(現在 50%)に関係なく、divide-by-2 クロックを作成 create_generated_clock -source [get_ports clk] -edges {1 1 5} -edge_shift { 0 2.5 0 } \ [get_registers clkdivB|clkreg] Edges 1 2 3 4 5 6 7 8 clk clkdivA|clkreg clkdivB|clkreg Time 0 10 20 30 図 7–25 に、-multiply_by オプションが生成クロックに与える影響を 示します。 図 7–25. 生成クロックの逓倍 create_clock -period 10 -waveform { 0 5 } [get_ports clk] # multiply-by-2 クロックを作成 create_generated_clock -source [get_ports clk] -multiply_by 2 [get_registers \ clkmult|clkreg] clk clkmult|clkreg Time 7–38 0 10 20 30 Altera Corporation 2008 年 5 月 クロックの仕様 仮想クロック 仮想クロックとは、デザイン内に実際のソースを持たないクロック、ま たはデザインと直接作用しないクロックです。例えば、外部デバイスの クロック・ポートには供給されるが、デザインのクロック・ポートには 供給されないクロックがあり、デザインのポートに外部デバイスが供給 する(または、デザインのポートから外部デバイスに供給される)場合、 このようなクロックは仮想クロックとみなされます。 create_clock コマンドを使用し、ターゲットを指定しないで仮想ク ロックを作成します。 仮想クロックは、set_input_delayおよびset_output_delay 制約に使用できます。 図 7–26 に、Quartus II TimeQuest タイミング・アナライザで、外部レジ スタとデザインのレジスタとの関係を適切に解析するために、仮想ク ロックが必要となる例を示します。オシレータ virt_clk は、アルテ ラ・デバイスとは交信しませんが、外部レジスタのクロック・ソースと して機能するため、クロック virt_clk を宣言する必要があります。 例 7–6 に、10 ns の仮想クロックを virt_clk という名前で作成するコ マンドを示します。デューティ・サイクルは 50% で、最初の立ち上がり エッジは 0 ns で発生します。仮想クロックは、出力遅延制約のクロッ ク・ソースとして使用されます。 図 7–26. 仮想クロック・ボード・トポロジー Altera FPGA External Device datain reg_a reg_b dataout system_clk virt_clk 仮想クロックを作成した後は、アルテラ・デバイスのレジスタと外部デ バイスのレジスタとのレジスタ間解析を実行できます。 Altera Corporation 2008 年 5 月 7–39 Quartus II ハンドブック Volume 3 例 7–6. 仮想クロック例 1 # デザインのベース・クロックを作成 create_clock -period 5 [get_ports system_clk] # 外部レジスタの仮想クロックを作成 create_clock -period 10 -name virt_clk -waveform { 0 5 } # 仮想クロックを参照する出力遅延を設定 set_output_delay -clock virt_clk -max 1.5 [get_ports dataout] 例 7–7 に、デューティ・サイクル 50% で、90° 位相シフトした 10 ns の 仮想クロックを作成するコマンドを示します。 例 7–7. 仮想クロックの例 2 create_clock -name virt_clk –period 10 –waveform { 2.5 7.5 } マルチ周波数クロック デザインによっては、1 つのクロック・ポートに複数のクロック・ソー スが供給される場合もあります。追加クロックの例として、低消費電力 クロックとして動作する、プライマリ・クロックよりも低周波数のクロッ クがあります。このようなデザインを解析するために、create_clock コマンドは –add オプションをサポートしており、クロック・ノードに 複数のクロックを追加できます。 例 7–8 に、クロック・ポート clk に適用する 10 ns のクロックを作成し、 さらに同じクロック・ポートに 15 ns のクロックを追加するコマンドを 示します。Quartus II TimeQuest タイミング・アナライザは、両方のク ロックを使用してタイミング解析を実行します。 例 7–8. マルチ周波数の例 create_clock –period 10 –name clock_primary –waveform { 0 5 } [get_ports clk] create_clock –period 15 –name clock_secondary –waveform { 0 7.5 } [get_ports clk] -add 自動クロック検出 デザイン内のすべてのクロック・ノードに対するクロックを自動的に作 成するには、derive_clocks コマンドを使用します。このコマンドは、 ポートまたはレジスタのクロックを作成して、デザイン内のどのレジス タもクロックを持つようにします。 7–40 Altera Corporation 2008 年 5 月 クロックの仕様 例 7–9 に、derive_clocks コマンドとオプションを示します。 例 7–9. derive_clocks コマンド derive_clocks [-period <period value>] [-waveform <edge list>] 表 7–8 に、derive_clocks コマンドのオプションを示します。 表 7–8. derive_clocks コマンドのオプション オプション 説明 -period <period value> クロック周期を作成します。周波数は、 -period <num>MHz として指定す ることもできます。(1) -waveform <edge list> クロックの立ち上がりエッジと立ち下がりエッジを作成します。edge list に は、立ち上がりエッジと立ち下がりエッジを交互に指定します。例えば、最初 の立ち上がりエッジが 0 ns で発生し、最初の立ち下がりエッジが 5 ns で発生 する 10 ns 周期の場合、edge list は waveform {0 5} となります。差は 1 周 期単位内でなければならず、立ち上がりエッジは立ち下がりエッジの前でなけ ればなりません。デフォルトの edge list は {0 period/2}、つまりデュー ティ・サイクル 50% です。 表 7–8 の注 : (1) このオプションは、デフォルトの時間単位であるナノ秒(ns)を使用します。 derive_clocks コマンドは PLL の出力にクロックを作成しま せん。 derive_clocks コマンドは、レジスタのクロック・ピンに供給する各 レジスタまたはポートに create_clock を使用するのと同じです。 最終的なタイミング・サイン・オフに derive_clocks コマン ドを使用することはお勧めできません。create_clock および create_generated_clock コマンドを使用して、すべてのク ロック・ソースのクロックを作成する必要があります。 派生 PLL クロック PLL は、アルテラ・デバイスでのクロック管理および合成に使用されま す。デザイン要件に基づいて、PLL の出力から生成されたクロックをカ スタマイズできます。すべてのクロック・ノードに対してクロックを作 成する必要があるため、PLL のすべての出力に関連クロックが必要です。 Altera Corporation 2008 年 5 月 7–41 Quartus II ハンドブック Volume 3 create_generated_clock コマンドを使用して、PLL の各出力に手動 でクロックを作成できます。あるいは、derive_pll_clocks コマンド を使用することもできます。このコマンドは、タイミング・ネットリス トを自動的に検索し、各 PLL 出力に指定された設定に応じて、すべての PLL 出力に生成クロックを作成します。 derive_pll_clocks コマンドを使用して、PLL の各出力に自動的にク ロックを作成します。例 7–10 に、derive_pll_clocks コマンドとオ プションを示します。 例 7–10. derive_pll_clocks コマンド derive_pll_clocks [-create_base_clocks] [-use_tan_name] 表 7–9 に、derive_pll_clocks コマンドのオプションを示します。 表 7–9. derive_pll_clocks コマンドのオプション オプション -use_tan_name 説明 デフォルトでは、クロック名は出力クロック名です。このオプションは、Quartus II クラシック・タイミング・アナライザで使用する名前に類似したネット名を使用 します。 -create_base_clocks デザインの入力クロック・ポートに、PLL に供給するベース・クロックを作成し ます。 derive_pll_clocksコマンドは、create_generated_clockコマンドを呼び 出して、PLL の出力に生成クロックを作成します。create_generated_clock コマンドのソースは PLL の入力クロック・ピンです。derive_pll_clocks コマンドの発行前または発行後は、PLL の入力クロック・ポートのため のベース・クロックを手動で作成する必要があります。PLL の入力ク ロック・ノードにクロックが定義されていない場合、PLL 出力について クロックはレポートされません。代わりに、Quartus II TimeQuest タイ ミング・アナライザは、タイミング・ネットリストが更新されると、 図 7–11 のような警告メッセージを発行します。 例 7–11. 警告メッセージ Warning:The master clock for this clock assignment could not be derived. Clock:<name of PLL output clock pin name> was not created. 7–42 Altera Corporation 2008 年 5 月 クロックの仕様 SDC ファイルにderive_pll_clocksコマンドを含めることができます。 これにより、PLL に対するすべての変更を自動的に derive_pll_clocks コマンドで検出できます。derive_pll_clocks コマンドを SDC ファイル で使用すると、ファイルが読み出されるたびに、PLL 出力クロック・ピンに 対する適切な create_generated_clocks コマンドが生成されます。 write_sdc -expand コマンドを derive_pll_clock コマンドの後で使用 すると、新しい SDC ファイルには PLL 出力クロック・ピンのために、 derive_pll_clocks コマンドではなく、個々の create_generated_clock コマンドが取り込まれます。PLL のプロパティに対する変更は、新しい SDC ファ イルに自動的には反映されません。derive_pll_clocks コマンドによって記 述される新しい SDC ファイル内の create_generated_clock コマンドを手 動で更新して、PLL に対する変更を反映させる必要があります。 また、derive_pll_clocks 制約は、適切なマルチサイクル制 約を追加してパラレル変換係数を考慮することにより、デザイ ン内のLVDSトランスミッタまたはLVDSレシーバも制約します。 例えば、図 7–27 に、レジスタ間パスを持つ簡単な PLL デザインを示し ます。 図 7–27. 簡単な PLL デザイン pll_inst reg1 reg2 dataout pll_inclk derive_pll_clocks コマンドを使用して、PLL を自動的に制約しま す。このコマンドが、図 7–27 に示すデザインに対して発行されると、 例 7–12 に示すメッセージが生成されます。 例 7–12. derive_pll_clocks によって生成されるメッセージ Info: Info:Deriving PLL Clocks: Info:create_generated_clock -source pll_inst|altpll_component|pll|inclk[0] -divide_by 2 -name pll_inst|altpll_component|pll|CLK[0] pll_inst|altpll_component|pll|clk[0] Info: Altera Corporation 2008 年 5 月 7–43 Quartus II ハンドブック Volume 3 ソース・オプション用のノード名 pll_inst|altpll_component|pll|inclk[0] は、PLL の入力クロック・ピンを参照します。また、PLL の出力クロックの名前は、 PLL 出力クロック・ノードの名前 pll_inst|altpll_component|pll|clk[0] で す。 PLL がクロック・スイッチオーバー・モードの場合、PLL の出 力クロックに複数のクロックが作成されます。1 つはプライマ リ入力クロック用のクロック(例えば、inclk[0])、もう 1 つ はセカンダリ入力クロック用のクロック(例えば、inclk[1]) です。この場合、set_clock_groups コマンドを -exclusive オプションを指定して使用することで、プライマリおよびセカ ンダリ出力クロックをカットする必要があります。 このデザインについてのレポートを生成するには、まず PLL の入力ク ロック・ポートにベース・クロックを作成する必要があります。次のよ うなコマンドを使用します。 create_clock -period 5 [get_ports pll_inclk] pll_inst|altpll_component|pll|inclk[0] を 使 用 し て、PLL の入力クロック・ピンにベース・クロックを生成する 必要はありません。PLL の入力クロック・ポートに作成される クロックは、PLL の入力クロック・ピンを含め、クロック・ポー トのすべてのファンアウトに伝播します。 デフォルトのクロック制約 Quartus II TimeQuest タイミング・アナライザは、完全なクロック解析 を提供するために、デザイン内にベース・クロック制約がない場合は、 デフォルトによりデザイン内で検出される制約されていないすべてのク ロック・ノードに対して自動的にクロックを作成します。Quartus II TimeQuest タイミング・アナライザは、次のコマンドを使用して、制約 されていないクロック・ノードに 1 GHz の要件を持つベース・クロック を作成します。 derive_clocks -period 1 デザイン内のすべてのクロックに対して、個別クロック制約(例 えば、create_clock と create_generated_clock)を作 成する必要があります。これにより、デザインのタイミング要 求の完璧で実用的な解析を行うことができます。最終的なタイ ミング・サイン・オフには、derive_clocks を使用しないで ください。 7–44 Altera Corporation 2008 年 5 月 クロックの仕様 デフォルトのクロック制約が適用されるのは、Quartus II TimeQuest タ イミング・アナライザがどの同期エレメントにもクロックが関連付けら れていないことを検出した場合のみです。例えば、デザインに 2 つのク ロックが含まれており、その一方のクロックにのみ制約がある場合、デ フォルトのクロック制約は適用されません。ただし、どちらのクロック も制約されていない場合、デフォルトのクロック制約が適用されます。 クロック・グループ デザインには多くのクロックが存在できますが、すべてのクロックが互 いに交信するわけではなく、交信できないクロックもあります。 set_clock_groups コマンドを使用して、排他的または非同期的なク ロックを指定します。例 7–13 に、set_clock_groups コマンドとオプ ションを示します。 例 7–13. set_clock_groups コマンド set_clock_groups [-asynchronous | -exclusive] -group <clock name> [-group <clock name>] [-group <clock name>] ... 表 7–10 に、set_clock_groups コマンドのオプションを示します。 表 7–10. set_clock_groups コマンドのオプション オプション 説明 -asynchronous 非同期クロック —2 つのクロック間に位相関係はなく、同時にアクティブになる 場合。 -exclusive 排他的クロック —2 つのクロックのいずれか一方が所定のタイミングでアクティ ブになる場合。排他的クロック・グループの例として、2 つのクロックが 2-to-1 MUX に供給される場合があります。 -group <clock name> 相互排他的で有効なデスティネーション・クロック名を指定します。クロック名 は、<clock name> を使用して指定します。 exclusive オプションは、2 つのクロックが相互排他的で、デザインに同 時に存在できないことを宣言する場合に使用します。同じノードに複数 のクロックが作成される場合や、マルチプレクス化されたクロックに対 して複数のクロックが作成されるときに、このような状況が発生するこ とがあります。例えば、ポート A は 25 MHz または 50 MHz クロックで も供給可能で、このポートに 2 つのクロックを作成できる場合は、set_ clock_groups -exclusive を使用して、これらのクロックがデザイ Altera Corporation 2008 年 5 月 7–45 Quartus II ハンドブック Volume 3 ンに同時に存在できないことを宣言する必要があります。これにより、 25 MHz クロックと 50 MHz クロックの間で生成される可能性があるク ロック転送がなくなります。例 7–14 に、この場合の制約を示します。 例 7–14. exclusive オプション create_clock -period 40 -name clk_A [get_ports {port_A}] create_clock -add -period 20 -name clk_B [get_ports {port_A}] set_clock_groups -exclusive -group {clk_A} -group {clk_B} グループは、-group オプションで定義されます。TimeQuest タイミン グ・アナライザは、独立した-group グループのそれぞれのクロック間 のタイミング・パスをカットします。 asynchronous オプションは、関連および非関連クロックをグループ化す るのに使用します。asynchronous オプションを使用すると、グループに 含まれるクロックは互いに非同期とみなされます。各グループ内のク ロックは、互いに同期的とみなされます。 例えば、clk_A、clk_B、および clk_C という 3 つのクロックがあると します。クロック clk_A および clk_B は互いに関連しますが、クロッ クclk_Cはclk_Aまたはclk_Bと完全に非同期的に動作します。例 7–15 では、clk_A と clk_B を同じグループ内で関連付け、clk_C を含む 2 番目のグループとは非関連とします。 例 7–15. asynchronous オプションの例 1 set_clock_groups -asynchronous -group {clk_A clk_B} -group {clk_C} 例 7–16 に、例 7–15 と同じ制約を指定する別の方法を示します。 例 7–16. asynchronous オプションの例 2 set_clock_groups -asynchronous -group {clk_C} この場合、clk_C は制約の唯一のグループなので、デザインのクロック と 1 つおきに非関連になります。 TimeQuest タイミング・アナライザは特に制約されていない限 り、デフォルトではすべてのクロックが関連付けられていると 仮定します。 7–46 Altera Corporation 2008 年 5 月 クロックの仕様 例 7–17 に、set_clock_groups コマンドと、同等の set_false_path コマンドを示します。 例 7–17. set_clock_groups # クロック A および C は、クロック B および D がアクティブになっているときはアクティブにな らない set_clock_groups -exclusive -group {A C} -group {B D} # フォルス・パスを使用して同じ内容を指定 set_false_path -from [get_clocks A] set_false_path -from [get_clocks A] set_false_path -from [get_clocks C] set_false_path -from [get_clocks C] set_false_path -from [get_clocks B] set_false_path -from [get_clocks B] set_false_path -from [get_clocks D] set_false_path -from [get_clocks D] -to -to -to -to -to -to -to -to [get_clocks [get_clocks [get_clocks [get_clocks [get_clocks [get_clocks [get_clocks [get_clocks B] D] B] D] A] C] A] C] クロック作用特性 create_clockおよびcreate_generated_clockコマンドは、ボード の影響を考慮しない理想的なクロックを生成します。この項では、クロッ ク・レイテンシとクロック不確実性に関して、クロック作用特性を考慮 する方法について説明します。 クロック・レイテンシ クロック・レイテンシには、ソースとネットワークの 2 種類があります。 ソース・レイテンシは、クロックの起点からクロック・デスティネーショ ン・ポイント(例えば、クロック・ポート)までの伝播遅延です。ネッ トワーク・レイテンシは、クロック定義ポイントからレジスタのクロッ ク・ピンまでの伝播遅延です。レジスタのクロック・ピンにおけるトー タル・レイテンシ(またはクロック伝播遅延)は、クロック・パスにお けるソース・レイテンシとネットワーク・レイテンシの合計です。 set_clock_latency コマンドは、ソース・レイテンシのみを サポートしています。このコマンドを使用するときは、-source オプションを指定する必要があります。 set_clock_latency コマンドを使用して、デザイン内の任意のクロッ ク・ポートまでのソース・レイテンシを指定します。例 7–18 に、set_ clock_latency コマンドとオプションを示します。 Altera Corporation 2008 年 5 月 7–47 Quartus II ハンドブック Volume 3 例 7–18. set_clock_latency コマンド set_clock_latency -source [-clock <clock_list>] [-rise | -fall] [-late | -early] <delay> <targets> 表 7–11 に、set_clock_latency コマンドのオプションを示します。 表 7–11. set_clock_latency コマンドのオプション オプション 説明 -source ソース・レイテンシを指定します。 -clock <clock list> ターゲットに複数のクロックが割り当てられている場合に、どのクロックを使用 するかを指定します。 -rise | -fall 立ち上がり遅延または立ち下がり遅延を指定します。 -late | -early クロックへの最も早い到達時間、または最も遅い到達時間を指定します。 <delay> 遅延値を指定します。 <targets> クロックが複数のクロックによって駆動されている場合に、クロックまたはク ロック・ソースを指定します。 ネットワーク・レイテンシは、Quartus II TimeQuest タイミング・アナ ライザが自動的に計算します。したがって、set_clock_latency コマ ンドは、ソース・レイテンシのみを指定します。 クロック不確実性 set_clock_uncertainty コマンドは、クロックまたはクロック間転 送のクロック不確実性またはスキューを指定します。不確実性をセット アップとホールドに別々に指定します。立ち上がりクロックと立ち下が りクロックの遷移を別々に指定します。Quartus II TimeQuest タイミン グ・アナライザは、適用可能な各パスのデータ要求時間からセットアッ プ不確実性を減算し、適用可能な各パスのデータ要求時間にホールド不 確実性を加算します。 7–48 Altera Corporation 2008 年 5 月 クロックの仕様 set_clock_uncertainty コマンドを使用して、クロック・ポートへの クロック不確実性を指定します。例 7–19 に、set_clock_uncertainty コマンドとオプションを示します。 例 7–19. set_clock_uncertainty コマンドとオプション set_clock_uncertainty [-rise_from <rise from clock> | -fall_from <fall from clock> | -from <from clock>] [-rise_to <rise to clock> | -fall_to <fall to clock> | -to <to clock>] [-setup | -hold] <value> 表 7–12 に、set_clock_uncertainty コマンドのオプションを示しま す。 表 7–12. set_clock_uncertainty コマンドのオプション オプション 説明 -from <from clock> from clock を指定します。 -rise_from <rise from clock> rise-from clock を指定します。 -fall_from <fall from clock> fall-from clock を指定します。 -to <to clock> to clock を指定します。 -rise_to <rise to clock> rise-to clock を指定します。 -fall_to <fall to clock> fall-to clock を指定します。 -setup | -hold setup または hold を指定します。 <value> 不確実性の値。 クロック不確実性の自動計算 derive_clock_uncertainty コマンドを使用して、インター・クロッ ク、イントラ・クロック、および I/O インタフェースの不確実性を自動的 に適用します。クロック間転送ごとに、セットアップ不確実性とホールド不 確実性の両方が計算されます。例 7–20 に、derive_clock_uncertainty コマンドとオプションを示します。 例 7–20. derive_clock_uncertainty コマンド derive_clock_uncertainty [-overwrite] [-add] Altera Corporation 2008 年 5 月 7–49 Quartus II ハンドブック Volume 3 表 7–13 に、derive_clock_uncertainty コマンドのオプションを示 します。 表 7–13. derive_clock_uncertainty コマンドのオプション オプション 説明 -overwrite 前に実行したクロック不確実性アサインメントを上書きします。 -add ユーザー定義のクロック不確実性アサインメントに、 derive_clock_uncertainty の結果を追加します。 Quartus II TimeQuest タイミング・アナライザは、デザインのクロック 間転送にクロック不確実性を自動的に適用します。 set_clock_uncertainty コマンドによって、ソース・クロックとデ スティネーション・クロックのペアに適用したクロック不確実性の制約 は、同じペアに対して derive_clock_uncertainty コマンドから派 生し たク ロッ ク不確 実性よりも優先順位が高くなります。例えば、 set_clock_uncertaintyをclkaとclkbの間に適用する場合、クロッ ク転送のderive_clock_uncertainty値はデフォルトでは無視されま す。set_clock_uncertainty制約は、derive_clock_uncertainty 制約よりも優先されます。 ただし、使用されるはずであったクロック不確実性は、情報目的でレポー トされます。-overwrite コマンドを使用して前のクロック不確実性ア サインメントを上書きするか、remove_clock_uncertainty コマン ドを使用して手動で削除できます。また、-add オプションを使用して、 derive_clock_uncertainty コマンドによって決定したクロック不 確実性を、以前に定義したクロック不確実性値に追加することもできま す。 次に示すのは、クロック確実性が生じる可能性があるクロック間転送の 種類です。これらは、derive_clock_uncertainty コマンドによっ て自動的にモデル化されます。 ■ ■ ■ イントラ・クロック インター・クロック I/O インタフェース アルテラは、derive_clock_uncertainty コマンドを使用 することを推奨しています。 7–50 Altera Corporation 2008 年 5 月 クロックの仕様 イントラ・クロック転送 イントラ・クロック転送は、レジスタ間転送が FPGA のコアで発生し、 ソース・クロックとデスティネーション・クロックが同じ PLL 出力ピン またはクロック・ポートから供給される場合に発生します。図 7–28 にイ ントラ・クロック転送の一例を示します。 図 7–28. イントラ・クロック転送 Source Register data_in D Destination Register Q D Q clk0 data_out PLL インター・クロック転送 インター・クロック転送は、レジスタ間転送が FPGA のコアで発生し、 ソース・クロックとデスティネーション・クロックがそれぞれ異なる PLL 出力ピンまたはクロック・ポートから供給される場合に発生します。 図 7–29 に、インター・クロック転送の一例を示します。 図 7–29. インター・クロック転送 Source Register data_in D Q Destination Register D Q data_out clk0 clk_in PLL I/O インタフェース・クロック転送 I/O インタフェース・クロック転送は、データが I/O ポートから FPGA のコアに(入力)、または FPGA のコアから I/O ポートに(出力)転送 される場合に発生します。図 7–30 に、I/O インタフェース・クロック転 送の一例を示します。 Altera Corporation 2008 年 5 月 7–51 Quartus II ハンドブック Volume 3 図 7–30. I/O インタフェース・クロック転送 reg1 data_in D Q data_out clk_in I/O インタフェースの不確実性については、まず仮想クロックを作成 し、次にその仮想クロックを参照する set_input_delay および set_ output_delay コマンドを使用して、入力および出力ポートを制約する 必要があります。set_input_delay または set_output_delay コマ ンドがクロック・ポートまたは PLL 出力を参照するときに、derive_ clock_uncertainty コマンドによって、イントラ・クロック転送ま たはインター・クロック転送のクロック不確実性が I/O インタフェー ス・クロック転送に適用されないようにするために仮想クロックが必 要です。set_input_delay または set_output_delay コマンドで 仮想クロックが参照されない場合は、derive_clock_uncertainty コマンドで I/O インタフェースに対してイントラ・クロックまたはイ ンター・クロック用の値を計算します。 I/O ポートをドライブする元のクロックと同じプロパティを持つ仮想ク ロックを作成します。例えば、図 7–31 に、クロック仕様を持つ標準的な 入力 I/O インタフェースを示します。 図 7–31. I/O インタフェース仕様 External Device Altera FPGA reg1 reg1 data_in D Q D Q clk_in 100 MHz 7–52 Altera Corporation 2008 年 5 月 I/O 規格 例 7–21 に、図 7–31 に示す I/O インタフェースを制約する SDC コマン ドを示します。 例 7–21. I/O インタフェースを制約する SDC コマンド # クロック・ポートのベース・クロックを作成 create_clock –period 10 –name clk_in [get_ports clk_in] # ソース・レジスタをドライブするベース・クロックと同じプロパティを持つ仮想クロックを作成 create_clock –period 10 –name virt_clk_in # ベース・クロックではなく、 # 仮想クロックを参照する入力遅延を作成 # set_input_delay –clock clk_in <delay_value> [get_ports data_in] を使用しないこと set_input_delay –clock virt_clk_in <delay value> [get_ports data_in] I/O 規格 Quartus II TimeQuest タイミング・アナライザは、デザイン内のポート を制約する SDC コマンドをサポートしています。これらの制約により、 Quartus II TimeQuest タイミング・アナライザは、FPGA の内部タイミ ングだけでなく、外部デバイスのタイミングおよび外部ボードのタイミ ング・パラメータも含む、システム・スタティック・タイミング解析を 実行できます。 入力および出力遅延 外部デバイスまたは外部ボードのタイミング・パラメータを指定するに は、入力および出力遅延制約を使用します。これらの制約を適用すると、 Quartus II TimeQuest タイミング・アナライザは、システム全体でスタ ティック・タイミング解析を実行します。 Set Input Delay set_input_delay 制約は、ポート(デバイス I/O)におけるクロック に対するデータ到達時間を指定します。図 7–32 に、入力遅延パスを示し ます。 図 7–32. Set Input Delay External Device Altera Device Oscillator Altera Corporation 2008 年 5 月 7–53 Quartus II ハンドブック Volume 3 set_input_delay コマンドを使用して、デザインのポートに入力遅延 制約を指定します。例 7–22 に、set_input_delay コマンドとオプショ ンを示します。 例 7–22. set_input_delay コマンド set_input_delay -clock <clock name> [-clock_fall] [-rise | -fall] [-max | -min] [-add_delay] [-reference_pin <target>] [-source_latency_included] <delay value> <targets> 表 7–14 に、set_input_delay コマンドのオプションを示します。 表 7–14. set_input_delay コマンドのオプション オプション 説明 -clock <clock name> ソース・クロックを指定します。 -clock_fall クロックの立ち下がりエッジに対する到達時間を指定します。 -rise | -fall ポートにおける立ち上がり遅延または立ち下がり遅延を指定します。 -max | -min 最小または最大データ到達時間を指定します。 -add_delay 別の遅延を追加します。ただし、ポートに割り当てられている既存の 遅延は置き換えません。 -reference_pin <target> ソース・レイテンシとネットワーク・レイテンシを決定するデザイン のピンまたはポートを指定します。これは、クロックが供給される出 力ポートを基準にして入力遅延を指定するのに便利です。 -source_latency_ included 入力遅延値にソース・レイテンシ遅延値が含まれることを指定しま す。したがって、クロックに割り当てられているソース・クロック・ レイテンシは無視されます。 <delay value> 遅延値を指定します。 <targets> デスティネーション・ポートまたはピンを指定します。 7–54 Altera Corporation 2008 年 5 月 I/O 規格 入力遅延値に –max または –min 値の一方しか指定していない 場合は、警告メッセージが表示されます。入力最小遅延のデフォ ルト値は、入力最大遅延と同じです。いずれか一方しか指定し ていない場合は、入力最大遅延のデフォルト値が入力最小遅延 と同じになります。同様に、遅延値に-rise または-fall 値の 一方しか指定していない場合は警告メッセージが表示され、デ フォルトの遅延値は、入力最小および入力最大遅延の場合と同 じように設定されます。 最大値はセットアップ・チェックに、最小値はホールド・チェックに使 用されます。 デフォルトでは、入力遅延のセット(min/max、rise/fall)は、-clock、 -clock_fall、 -reference_pin の組み合わせにのみ使用できます。別の クロックの同じポートで入力遅延(-clock_fallまたは-reference_pin) を指定すると、-add_delay オプションを指定しない限り、以前設定さ れた入力遅延はすべて削除されます。-add_delay オプションを指定す るとワースト・ケース値が使用されます。 -min および-max オプションと同様、-rise および -fall オプションは 相互排他的です。 Set Output Delay set_output_delay コマンドは、ポート(デバイス・ピン)における クロックに対するデータ所要時間を指定します。 set_output_delay コマンドを使用して、デザインのポートに出力遅 延制約を指定します。図 7–33 に出力遅延パスを示します。 図 7–33. 出力遅延 Altera Device External Device Oscillator Altera Corporation 2008 年 5 月 7–55 Quartus II ハンドブック Volume 3 例 7–23 に、set_output_delay コマンドとオプションを示します。 例 7–23. set_output_delay コマンド set_output_delay -clock <clock name> [-clock_fall] [-rise | -fall] [-max | -min] [-add_delay] [-reference_pin <target>] <delay value> <targets> 表 7–15 に、set_output_delay コマンドのオプションを示します。 表 7–15. set_output_delay コマンドのオプション オプション 説明 -clock <clock name> ソース・クロックを指定します。 -clock_fall クロックの立ち下がりエッジに対する所要時間を指定します。 -rise | -fall ポートにおける立ち上がり遅延または立ち下がり遅延を指定します。 -max | -min 最小または最大データ到達時間を指定します。 -add_delay 別の遅延を追加します。ただし、ポートに割り当てられている既存の遅 延は置き換えません。 -reference_pin <target> ソース・レイテンシとネットワーク・レイテンシを決定するデザインの ピンまたはポートを指定します。このオプションを使用して、クロック が供給される出力ポートを基準にして入力遅延を指定します。 -source_latency_included 入力遅延値にソース・レイテンシ遅延値が含まれることを指定します。 したがって、それ以降、クロックに割り当てられているソース・クロッ ク・レイテンシは無視されます。 <delay value> 遅延値を指定します。 <targets> デスティネーション・ポートまたはピンを指定します。 出力遅延値に –max または –min 値の一方しか指定していない 場合は、警告メッセージが表示されます。出力最小遅延のデフォ ルト値は、出力最大遅延です。いずれか一方しか指定していな い場合は、出力最大遅延のデフォルト値が出力最小遅延です。 最大値はセットアップ・チェックに、最小値はホールド・チェックに使 用されます。 7–56 Altera Corporation 2008 年 5 月 タイミング例外 デフォルトでは、出力遅延のセット(min/max、rise/fall)は、1 つの クロック、-clock_fall、ポートの組み合わせにのみ使用できます。別 のクロックまたは-clock_fallの同じポートで出力遅延を指定すると、 -add_delay オプションを指定しない限り、以前設定された出力遅延は すべて削除されます。-add_delay オプションを指定するとワースト・ ケース値が使用されます。 -min および-max オプションと同様、-rise および -fall オプションは 相互排他的です。 タイミング 例外 タイミング例外は、Quartus II TimeQuest タイミング・アナライザが実 行するデフォルトの解析を修正します。この項では、以下の使用可能な タイミング例外について説明します。 ■ ■ ■ ■ 7–58 ページの「フォルス・パス」 7–59 ページの「最小遅延」 7–60 ページの「最大遅延」 7–62 ページの「マルチサイクル・パス」 優先順位 タイミング例外の間でノード名が競合する場合、以下の優先順位が適用 されます。 1. 2. 3. フォルス・パス 最小遅延および最大遅延 マルチサイクル・パス フォルス・パスのタイミング例外が最優先されます。各カテゴリ内では、 個々のノードに対するアサインメントがクロックに対するアサインメン トよりも優先されます。最後に、さらに競合が発生した場合、残りの優 先順位は順序によって決まり、最後のアサインメントが以前のアサイン メントを上書き(または一部のみ上書き)します。 Altera Corporation 2008 年 5 月 7–57 Quartus II ハンドブック Volume 3 フォルス・パス フォルス・パスはタイミング解析で無視できるパスです。 set_false_path コマンドを使用して、デザインのフォルス・パスを指 定します。例 7–24 に、set_false_path コマンドとオプションを示し ます。 例 7–24. set_false_path コマンド set_false_path [-fall_from <clocks> | -rise_from <clocks> | -from <names>] [-fall_to <clocks> | -rise_to <clocks> | -to <names>] [-hold] [-setup] [-through <names>] <delay> 表 7–16 に、set_false_path コマンドのオプションを示します。 表 7–16. set_false_path コマンドのオプション オプション 説明 -fall_from <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 フォルス・パスが <clocks> からの立ち下がりで開始することを指定します。 -fall_to <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 フォルス・パスが <clocks> への立ち下がりで終了することを指定します。 -from <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 フォルス・パスが <names> で始まることを指定します。 -hold フォルス・パスがホールド解析時にのみ有効であることを指定します。 -rise_from <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 フォルス・パスが <clocks> からの立ち上がりで開始することを指定します。 -rise_to <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 フォルス・パスが <clocks> への立ち上がりで終了することを指定します。 -setup フォルス・パスがセットアップ解析時にのみ有効であることを指定します。 -through <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 フォルス・パスが <names> を通過することを指定します。 -to <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 フォルス・パスが <names> で終了することを指定します。 <delay> 遅延値を指定します。 7–58 Altera Corporation 2008 年 5 月 タイミング例外 オブジェクトがタイミング・ノードの場合、フォルス・パスは 2 つのノー ド間のパスにのみ適用されます。オブジェクトがクロックの場合、ソー ス・ノード(-from)またはデスティネーション・ノード(-to)がク ロックによって駆動されるすべてのパスに適用されます。 最小遅延 set_min_delay コマンドを使用して、特定のパスの絶対最小遅延を指 定します。以下に、set_min_delay コマンドとオプションを示します。 例 7–25. set_min_delay コマンド set_min_delay [-fall_from <clocks> | -rise_from <clocks> | -from <names>] [-fall_to <clocks> | -rise_to <clocks> | -to <names>] [-through <names>] <delay> 表 7–17 に、set_min_delay コマンドのオプションを示します。 表 7–17. set_min_delay コマンドのオプション オプション 説明 -fall_from <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 最小遅延が <clocks> の立ち下がりエッジで開始することを指定します。 -fall_to <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 最小遅延が <clocks> の立ち下がりで終了することを指定します。 -from <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <names> は、パスの始点になります。 -rise_from <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <clocks> の立ち上がりエッジの最小遅延を指定します。 -rise_to <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <clocks> の立ち上がりエッジの最小遅延を指定します。 -through <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <names> は、パスの通過点になります。 -to <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <names> は、パスの終点になります。 <delay> 遅延値を指定します。 Altera Corporation 2008 年 5 月 7–59 Quartus II ハンドブック Volume 3 ソース・ノードまたはデスティネーション・ノードがクロックされる場 合は、クロック・パスを考慮して、データ・パスにある程度の遅延を許 容します。ソース・ノードまたはデスティネーション・ノードに入力遅 延または出力遅延がある場合、その遅延も最小遅延チェックに含まれま す。 オブジェクトがタイミング・ノードの場合、最小遅延は 2 つのノード間 のパスにのみ適用されます。オブジェクトがクロックの場合、最小遅延 はソース・ノード(-from)またはデスティネーション・ノード(-to) がクロックによって駆動されるすべてのパスに適用されます。 set_min_delayコマンドは、set_output_delay制約を使用しない出 力ポートを除いて適用できます。この場合、セットアップ・サマリとホー ルド・サマリがこれらのパスのスラックをレポートします。出力ポート に関連付けられているクロックがないため、これらのパスにクロックは レポートされず、Clock カラムは空白です。この場合、これらのパスの タイミングはレポートできません。 set_min_delay コマンドで、出力パスにクロック・フィルタを 使用してタイミングをレポートするには、値 0 の出力ポートに set_output_delay コマンドを使用できます。set_output_ delayコマンドでは、デザインからの既存のクロックまたは仮想 クロックをクロック基準として使用できます。 最大遅延 set_max_delay コマンドを使用して、特定のパスの絶対最大遅延を指 定します。例 7–26 に、set_max_delay コマンドとオプションを示し ます。 例 7–26. set_max_delay コマンド set_max_delay [-fall_from <clocks> | -rise_from <clocks> | -from <names>] [-fall_to <clocks> | -rise_to <clocks> | -to <names>] [-through <names>] <delay> 7–60 Altera Corporation 2008 年 5 月 タイミング例外 表 7–18 に、set_max_delay コマンドのオプションを示します。 表 7–18. set_max_delay コマンドのオプション オプション 説明 -fall_from <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 最大遅延が <clocks> の立ち下がりエッジで開始することを指定します。 -fall_to <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 最大遅延が <clocks> の立ち下がりで終了することを指定します。 -from <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <names> は、パスの始点になります。 -rise_from <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <clocks> の立ち上がりエッジの最大遅延を指定します。 -rise_to <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <clocks> の立ち上がりエッジの最大遅延を指定します。 -through <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <names> は、パスの通過点になります。 -to <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <names> は、パスの終点になります。 <delay> 遅延値を指定します。 ソース・ノードまたはデスティネーション・ノードがクロックされる場合 は、クロック・パスを考慮して、データ・パスにある程度の遅延を許容し ます。ソース・ノードまたはデスティネーション・ノードに入力遅延また は出力遅延がある場合、その遅延も最大遅延チェックに含まれます。 オブジェクトがタイミング・ノードの場合、最大遅延は 2 つのノード間の パスにのみ適用されます。オブジェクトがクロックの場合は、ソース・ ノード(-from)またはデスティネーション・ノード(-to)がクロック によって駆動されるすべてのパスに適用されます。 set_max_delay コマンドは、set_output_delay 制約を使用しない出 力ポートを除いて適用できます。この場合、セットアップ・サマリとホー ルド・サマリがこれらのパスのスラックをレポートします。出力ポートに 関連付けられているクロックがないため、これらのパスにクロックはレ ポートされず、Clock カラムは空白です。この場合、これらのパスのタイ ミングはレポートできません。 Altera Corporation 2008 年 5 月 7–61 Quartus II ハンドブック Volume 3 set_max_delay コマンドで、出力パスにクロック・フィル タを使用してタイミングをレポートするには、値 0 の出力 ポートにset_output_delayコマンドを使用できます。 set_ output_delay コマンドでは、デザインからの既存のクロッ クまたは仮想クロックをクロック基準として使用できます。 マルチサイクル・パス デフォルトでは、Quartus II TimeQuest タイミング・アナライザは、シ ングル・サイクル解析を使用します。パスの解析では、セットアップ・ ローンチおよびラッチ・エッジ時間は、それぞれの波形で最も近い 2 つ のアクティブ・エッジを見つけることによって決定されます。ホールド 解析の場合、タイミング・アナライザは 2 つのタイミング条件を基準に してパスを解析し、ワースト・ケース・セットアップ関係だけでなく、 可能なすべてのセットアップ関係を探します。したがって、ホールド・ ローンチ時間およびラッチ時間は、セットアップ・ローンチ・エッジお よびラッチ・エッジとは完全に無関係になる場合があります。 マルチサイクル制約は、ソース(-start)またはデスティネーション (-end)クロックに基づいて、指定されたクロック・サイクル数だけ、 セットアップまたはホールド関係を緩和します。2 のエンド・マルチサ イクル制約は、ワースト・ケースのセットアップ・ラッチ・エッジを 1 デスティネーション・クロック周期だけ拡張します。 ホールド・マルチサイクル制約は、デフォルトのホールド位置(デフォ ルト値は 0)に基づきます。1 のエンド・マルチサイクル制約は、デフォ ルトのホールド・ラッチ・エッジから 1 デスティネーション・クロック 周期を効果的に減算します。 set_multicycle_path コマンドを使用して、デザインのマルチサイク ル制約を指定します。例 7–27 に、set_multicycle_path コマンドと オプションを示します。 例 7–27. set_multicycle_path コマンド set_multicycle_path [-end] [-fall_from <clocks> | -rise_from <clocks> | -from <names>] [-fall_to <clocks> | -rise_to <clocks> | -to <names>] [-hold] [-setup] [-start] [-through <names>] <path multiplier> 7–62 Altera Corporation 2008 年 5 月 タイミング例外 表 7–19 に、set_multicycle_path コマンドのオプションを示します。 表 7–19. set_multicycle_path コマンドのオプション オプション 説明 -fall_from <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 マルチサイクルが <clocks> の立ち下がりエッジで開始することを指定します。 -fall_to <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 マルチサイクルが <clocks> の立ち下がりで終了することを指定します。 -from <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <names> は、パスの始点になります。 -hold | -setup 適用するマルチサイクルの種類を指定します。 -rise_from <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 マルチサイクルを <clocks> の立ち上がりエッジで指定します。 -rise_to <clocks> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 マルチサイクルが <clocks> の立ち上がりエッジで終了することを指定します。 -start | -end 開始または終了クロックが、マルチサイクルのソースまたはデスティネーションと して機能するかどうかを指定します。 -through <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 マルチサイクルが <names> を通過することを指定します。 -to <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <names> は、パスの終点になります。 <path multiplier> マルチサイクルの乗算器の値を指定します。 オブジェクトがタイミング・ノードの場合、マルチサイクル制約は、2 つ のノード間のパスにのみ適用されます。オブジェクトがクロックの場合 は、ソース・ノード(-from)またはデスティネーション・ノード(-to) がクロックによって駆動されるすべてのパスに適用されます。 アプリケーション例 この項では、set_multicycle_path コマンドの具体的な例を示しま す。 図 7–34 に、レジスタ間パスを示します。ここで、ソース・クロック src_clk の周期は 10 ns、デスティネーション・クロック dst_clk の周 期は 5 ns です。 Altera Corporation 2008 年 5 月 7–63 Quartus II ハンドブック Volume 3 図 7–34. レジスタ間パス reg data_in D reg Q D Q data_out src_clk dst_clk 図 7–35 に、ソース・クロックおよびデスティネーション・クロックのタ イミング図と、デフォルトのセットアップ関係およびホールド関係を示 します。デフォルトのセットアップ関係は 5 ns、デフォルトのホールド 関係は 0 ns です。 図 7–35. デフォルトのセットアップおよびホールドのタイミング図 setup hold 0 10 20 30 デフォルトのセットアップおよびホールド関係は、システム要件を満た すようにset_multicycle_pathコマンドで修正することができます。 表 7–20 に、Quartus II TimeQuest タイミング・アナライザがセットアッ プ関係またはホールド関係を決定するのに使用する、ローンチ・エッジ 時間またはラッチ・エッジ時間を修正するためのコマンドを示します。 表 7–20. エッジ時間修正コマンド コマンド 修正の説明 set_multicycle_path -setup -end セットアップ関係のラッチ・エッジ時間 set_multicycle_path -setup -start セットアップ関係のローンチ・エッジ時間 set_multicycle_path -hold -end ホールド関係のラッチ・エッジ時間 set_multicycle_path -hold -start ホールド関係のローンチ・エッジ時間 7–64 Altera Corporation 2008 年 5 月 制約と例外の削除 図 7–36 に、セットアップ・ラッチ・エッジを修正するコマンドと、修正 後のタイミング図を示します。このコマンドにより、ラッチ・エッジ時 間をデフォルトの 5 ns から 10 ns に移動します。 図 7–36. 修正後のセットアップ図 # 2 番目のエッジごとにラッチ set_multicycle_path -from [get_clocks src_clk] -to [get_clocks dst_clk] -setup -end 2 new setup default setup 0 制約と例外 の削除 10 20 30 Quartus II TimeQuest タイミング・アナライザを対話的に使用する場合 は通常、制約または例外を削除する必要があります。古くなったり、誤っ て入力されている制約や例外は、Quartus II TimeQuest タイミング・ア ナライザで容易に削除できます。 表 7–21 に、デザインから制約と例外を削除できるコマンドを示します。 表 7–21. 制約と例外の削除 コマンド 説明 remove_clock [-all] [<clock list>] <clock list> で指定される作成済みクロックを削除します。-all オ プションは、宣言されているすべてのクロックを削除します。 remove_clock_groups -all 以前に作成されたすべてのクロック・グループを削除します。 特定のクロック・グループは削除できません。 remove_clock_latency -source <targets> <targets> で指定されるクロックからクロック・レイテンシ制約 を削除します。 remove_clock_uncertainty -from <from clock> -to <to clock> <from clock> から <to clock> までのクロック不確実性制約を削除 します。 remove_input_delay <targets> <targets> から入力遅延制約を削除します。 remove_output_delay <targets> <targets> から出力遅延制約を削除します。 reset_design デザインのすべての制約と例外を削除します。 Altera Corporation 2008 年 5 月 7–65 Quartus II ハンドブック Volume 3 タイミング・ レポート Quartus II TimeQuest タイミング・アナライザは、スタティック・タイ ミング解析結果をリアルタイムでレポートします。レポートは要求され たときにのみ生成されます。必須以外のフィールドを除外して、特定の タイミング情報を表示するレポートをカスタマイズできます。 この項では、Quartus II TimeQuest タイミング・アナライザでサポート される各種レポート生成コマンドについて説明します。 report_timing report_timing コマンドを使用して、セットアップ、ホールド、リカバ リ、またはリムーバル・レポートを生成します。例 7–28 に、report_timing コマンドとオプションを示します。 例 7–28. report_timing コマンド report_timing [-append] [-detail <summary|path_only|path_and_clock|full_path>] [-fall_from_clock <names>] [-fall_to_clock <names>] [-false_path] [-file <name>] [-from <names>] [-from_clock <names>] [-hold] [-less_than_slack <slack limit>] [-npaths <number>] [-nworst <number>] [-pairs_only] [-panel_name <name>] [-recovery] [-removal] [-rise_from_clock <names>] [-rise_to_clock <names>] [-setup] [-show_routing] [-stdout] [-through <names>] [-to <names>] [-to_clock <names>] 7–66 Altera Corporation 2008 年 5 月 タイミング・レポート 表 7–22 に、report_timing コマンドのオプションを示します。 表 7–22. report_timing コマンドのオプション (1 / 2) オプション 説明 -append 現在のレポートを -file オプションで指定されるファイルに追加するよう指定 します。 -detail <summary|path_only|path _and_clock|full_path> クロック・パスの詳細をレポートするかどうかを指定します。 Path Only: クロック・ネットワーク遅延がまとめられます。 Summary: 個々のパスをリストします。 Path and Clock: クロック・ネットワーク遅延が詳細に示されます。 Full Path: より多くのクロック・ネットワークの詳細、特に生成クロック について示します。 -fall_from_clock <names> 解析するソース・レジスタからの <names> の立ち下がりエッジを指定します。オ プション from_clock、 fall_from_clock、および rise_from_clock は相互排他的です。 -fall_to_clock <names> 解析するデスティネーション・レジスタへの <names> の立ち下がりエッジを指 定します。 オプション to_clock、fall_to_clock、および rise_to_clock は相互排他的です。 -false_path フォルス・パス・アサインメントによってカットされるパスのみをレポートし ます。 -file <name> 現在のレポートをファイル <name> に書き込むことを示します。 -hold クロック・ホールド解析を指定します。 -less_than_slack <slack limit> レポートするパスを <slack limit> 値に制限します。 -npaths <number> レポートするパス数を指定します。 -nworst <number> エンドポイントあたりのパス数を制限します。 -panel_name <names> Reports ペインにパネル名を指定します。 -panel_name <names> パネルに結果を送信し、新しいパネルの名前を指定します。 -pairs_only これを設定すると、同じ始点と終点を持つパスは同等なパスとみなされ、それ ぞれの固有の組み合わせのワースト・ケース・パスのみ表示されます。 -recovery リカバリ解析を指定します。 -removal リムーバル解析を指定します。 -rise_from_clock <names> 解析するソース・レジスタからの <names> の立ち上がりエッジを指定します。オ プション from_clock、 fall_from_clock、および rise_from_clock は相互排他的です。 -rise_to_clock <names> 解析するデスティネーション・レジスタへの <names> の立ち上がりエッジを指 定します。 オプション to_clock、fall_to_clock、および rise_to_clock は相互排他的です。 -setup クロック・セットアップ解析を指定します。 -show_routing パスの詳細な配線を表示するオプション。 Altera Corporation 2008 年 5 月 7–67 Quartus II ハンドブック Volume 3 表 7–22. report_timing コマンドのオプション (2 / 2) オプション 説明 -stdout レポートを stdout に送信することを示します。 -through <names> 解析用の通過ノードを指定します。 -to <names> 解析用のノードを指定します。 -to_clock <names> 解析用のデスティネーション・クロックを指定します。 例 7–29 に示すサンプル・レポートは、次のコマンドを入力した結果です。 report_timing -from_clock clk_async -to_clock clk_async -setup -npaths 1 ↵ 例 7–29. report_timing レポートの例 Info: =================================================================== Info: To Node :dst_reg Info: From Node :src_reg Info: Latch Clock :clk_async Info: Launch Clock :clk_async Info: Info: Data Arrival Path: Info: Info: Total (ns) Incr (ns) Type Node Info: ========== ========= == ==== ========================== Info: 0.000 0.000 launch edge time Info: 2.237 2.237 R clock network delay Info: 2.410 0.173 uTco src_reg Info: 2.410 0.000 RR CELL src_reg|regout Info: 3.407 0.997 RR IC dataout|datain Info: 3.561 0.154 RR CELL dst_reg Info: Info: Data Required Path: Info: Info: Total (ns) Incr (ns) Type Node Info: ========== ========= == ==== ========================== Info: 10.000 10.000 latch edge time Info: 11.958 1.958 R clock network delay Info: 11.610 -0.348 uTsu dst_reg Info: Info: Data Arrival Time : 3.561 Info: Data Required Time : 11.610 Info: Slack : 8.049 Info: ========================================================== 7–68 Altera Corporation 2008 年 5 月 タイミング・レポート report_timing コマンドは、セットアップ、ホールド、リカバリ、ま たはリムーバルのうち、指定された解析タイプについてのレポートを生 成します。各カラムについては、表 7–23 で説明します。 レポート・パネルが作成されるときにのみ、すべてのカラムが 表示されます。report_timing 出力がファイルまたはコン ソールに転送される場合、Total、Incr、RF、Type、および Node カラムのみ表示されます。 表 7–23. タイミング・レポート・データ カラム名 説明 Total 時間遅延の累積値を示します。 Incr 遅延の増分量を示します。 RF エレメントの入力および出力遷移を示します。これは、R、F、RR、RF、FR、 FF のいずれかです。 Type ノード・タイプを示します。各種ノード・タイプの説明は、表 7–24 を参照して ください。 Fanout エレメントのファンアウト数を示します。 Location FPGA でのエレメントの位置を示します。 Element エレメントの名前を示します。 表 7–24 に、report_timing レポートに表示されるノード・タイプの 説明を示します。 表 7–24. タイプの説明 タイプ名 説明 CELL エレメントが、FPGA 内のレジスタまたはエレメントの組み合わせのいずれで あるかを示します。CELL は、ALM のレジスタ、メモリ・ブロック、DSP ブ ロック、または I/O ブロックのいずれかです。 COMP PLL クロック・ネットワーク補正遅延を示します。 IC エレメントがインタコネクト遅延であることを示します。 µtCO エレメントのマイクロ clock-to-out 時間を示します。 µtSU エレメントのマイクロ・セットアップ時間を示します。 µtH エレメントのマイクロ・ホールド時間を示します。 iEXT エレメントの外部入力遅延時間を示します。 oEXT エレメントの外部出力遅延時間を示します。 Altera Corporation 2008 年 5 月 7–69 Quartus II ハンドブック Volume 3 report_metastability report_metastability ファンクションを使用して、デザインにおけ る非同期転送の堅牢性を見積もり、検出されるすべての同期レジスタ・ チェインの MTBF を詳細に示すレポートを生成します。 例 7–30. report_metastability コマンド report_metastabiity [-append] [-file <name>] [-panel_name <name>] [-stdout] 表 7–25 に、report_metastability コマンドのオプションを示しま す。 表 7–25. report_metastability コマンドのオプション オプション 説明 -append 現在のレポートを -file で指定されるファイルに追加するよう指定 します。 -file <name> 結果をファイルに送信します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 -stdout レポートを stdout に送信するよう指示します。 report_metastability ファンクションは、デザイン内の同期レジスタ・ チェインのリストを生成し、各チェインの MTBF を見積もります。デザ インの MTBF は、デザインの全体的な堅牢性の見積もりであり、すべて の同期チェインの MTBF の結果から計算されます。 この MTBF の見積もりでは、選択されたデバイス・スピード・グレード の標準シリコン特性として定義される標準的な条件や、公称電圧および 温度(25 ℃)を仮定しています。 MTBF の見積もりでは、同期されるデータはソース・クロック周波数の 12.5% のトグル・レートで切り替わるものと仮定しています。つまり、 これらの見積もりは、到達するデータが 8 ソース・クロック・サイクル ごとに 1 回切り替わるものと仮定して行われます。複数のクロックが適 用される場合は、最高周波数が使用されます。ソース・クロックを決定 できない場合、データ・レートは同期クロック周波数の 12.5% とみなさ れます。 7–70 Altera Corporation 2008 年 5 月 タイミング・レポート デザインは完全に制約され、TimeQuest タイミング・アナライザで使用 可能な機能のタイミングを渡す必要があります。入力ポートが同期レジ スタとして動作していないレジスタにファンアウトする場合、その入力 ポートに set_input_delay 制約を適用することが重要です。この制約 を適用しないと、TimeQuest タイミング・アナライザはこの入力ポート を非同期入力とみなすため、これらのレジスタは同期レジスタとしてレ ポートされます。同様に、フォルス・パスの終端にあるレジスタも同期 レジスタとみなされます。 同期入力ポートを set_max_delay 制約で制約する場合、これによって シンクロナイザの識別が妨げられることはありません。set_max_delay 制約は、入力ポートをクロック・ドメインに関連付けないため、この入 力ポートは非同期とみなされます。set_max_delay 制約を使用する代 わりに、set_input_delay –max 制約を使用します。 例えば、セットアップ要件を次のように指定するのではなく、 set_max_delay <tSU requirement> 次の構文を使用します。 set_input_delay -max <latch – launch – tSU requirement> 設定 TimeQuest タイミング・アナライザは、デザインのメタスタビリティを 解析できるため、Metastability Analysis と Synchronization Register Chain Length の両方のオプションを設定する必要があります。 Metastability Analysis このオプションは、TimeQuest タイミング・アナライザおよびフィッタ がレジスタを同期レジスタ・チェインの一部として識別する方法をコン トロールします。Metastability Analysisオプションの推奨設定はAUTO です。 Altera Corporation 2008 年 5 月 7–71 Quartus II ハンドブック Volume 3 Metastability Analysis オプションの各種設定の定義を表 7–26 に示しま す。 表 7–26. Metastability Analysis オプションの設定 設定 ON 説明 ● ● AUTO OFF 必要に応じて、ロジックを横断して同期レジスタを識別します。 長さに関係なく、検出したすべての同期レジスタをレポートします。 ● ロジックを含まない同期チェインを識別します。 1 より長い同期レジスタ・チェインのみをレポートします。 ● 同期レジスタは識別されません。 ● Metastability Analysis オプションを調整するには、Quartus II ソフト ウェアで、Settings メニューの Timing Analysis Settings の下にある TimeQuest Timing Analyzer ページをポイントします。Metastability Analysis の横のドロップダウン・メニューから希望の設定を選択します。 Metastability Analysis の設定を変更した場合は、フィッタを 再実行して新しい設定を反映させる必要があります。 Assignment Editor はグローバル・アサインメントをサポートするほか、 ノードおよびエンティティ・レベルでの Metastability Analysis オプショ ンをサポートしています。このオプションを使用すると、ノードまたは エンティティを指定し、デザインの特定部分に対するメタスタビリティ 解析をオフにできます。一部の同期チェインが誤って識別され、それら をレポートから削除する場合は、これらのパスの解析をオフにできます。 これを行うには、Assignment Editor で、これらの同期チェインの最初 のレジスタに対して Analyze Metastability を OFF に設定します。この オプションをオフにすると、これらの同期チェインに対してメタスタビ リティ解析は実行されません。 逆に、デザインで検出されなかった同期チェインがある場合は、このチェ インの最初のレジスタに対して Analyze Metastability オプションをオ ンにすることができ、同期チェインとしての基準を満たしていればレ ポートされます。これは通常、同期チェインのレジスタ間にロジックが 存在する場合に発生することがあります。メタスタビリティ解析のデ フォルト・モードでは、これらの構造はシンクロナイザとみなされませ ん。 7–72 Altera Corporation 2008 年 5 月 タイミング・レポート Synchronization Register Chain Length Synchronization Register Chain Length オプションを使用すると、同期 チェインに含まれるレジスタに対して、Quartus II ソフトウェア最適化 アルゴリズムは実行されません。例えば、Synchronization Register Chain Length を 2 に設定すると、レジスタ重複またはロジック・リタ イミングなどの最適化は、識別されたすべての同期チェイン内の最初の 2 個のレジスタに対しては実行されません。Synchronization Register Chain Length オプションのデフォルト設定は 2 です。 Synchronization Register Chain Length オプションを変更するには、 Settings メニューで Analysis & Synthesis をポイントします。More Settings をクリックします。More Settings ダイアログ・ボックスが表 示されます。このダイアログ・ボックスから、Synchronization Register Chain Length を設定できます。 Assignment Editor でノ ードまたはエンティティの Synchronization Register Chain Length を設定することも可能です。この値を同期チェイ ンの先頭に設定して、このチェイン内のレジスタのみ指定した値まで保 護することができます。これが役立つのは、特定の同期チェインを 3 番 目のレジスタまで保護するが、グローバル・デフォルト保護レベルは 2 にする場合です。 アルテラでは、このオプションをデザイン内の同期チェインの最大長に 設定して、すべての同期レジスタを保持することを推奨しています。 report_clock_transfers report_clock_transfers コマンドを使用して、デザイン内のすべて のクロック間転送を詳細に示すレポートを生成します。クロック間転送 は、2 つの異なるクロックによって駆動される 2 個のレジスタ間にパス が存在する場合にレポートされます。また、デスティネーション数やソー ス数などの情報もレポートされます。 report_clock_transfers コマンドを使用して、セットアップ、ホー ルド、リカバリ、またはリムーバル・レポートを生成します。 Altera Corporation 2008 年 5 月 7–73 Quartus II ハンドブック Volume 3 例 7–31 に、report_clock_transfers コマンドとオプションを示し ます。 例 7–31. report_clock_transfers コマンド report_clock_transfers [-append] [-file <name>] [-hold] [-setup] [-stdout] [-recovery] [-removal] [-panel_name <name>] 表 7–27 に、report_clock_transfers コマンドのオプションを示し ます。 表 7–27. report_clock_transfers コマンドのオプション オプション -append 説明 現在のレポートを -file で指定されるファイルに追加するよう指定します。 -file <name> 現在のレポートをファイル <name> に書き込むことを指示します。 -hold ホールド解析用に、クロック転送に関するサマリを作成します。 -setup セットアップ解析用に、クロック転送に関するサマリを作成します。 -stdout レポートを stdout に送信するよう指示します。 -recovery リカバリ解析用に、クロック転送に関するサマリを作成します。 -removal リムーバル解析用に、クロック転送に関するサマリを作成します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 report_clocks report_clocks コマンドを使用して、デザイン内のすべてのクロック を詳細に示すレポートを生成します。このレポートには、デザイン内の すべてのクロックのタイプ、周期、波形(立ち上がりと立ち下がり)、 ターゲットなどの情報が含まれています。 7–74 Altera Corporation 2008 年 5 月 タイミング・レポート 例 7–32 に、report_clocks コマンドとオプションを示します。 例 7–32. report_clocks コマンド report_clocks [-append] [-desc] [-file <name>] [-stdout] [-panel_name <name>] 表 7–28 に、report_clocks コマンドのオプションを示します。 表 7–28. report_clocks コマンドのオプション オプション 説明 -append 現在のレポートを -file で指定されるファイルに追加するよう指定します。 -file <name> 現在のレポートをファイル <name> に書き込むことを示します。 -desc クロック名を降順でソートするよう指定します。デフォルトは昇順です。 -stdout レポートを stdout に送信するよう指示します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 report_min_pulse_width report_min_pulse_width コマンドは、 クロックの High または Low パルスが、クロック信号の実際の変化として認識されるのに十分な時間 持続するかチェックします。最小パルス幅チェックが失敗した場合、レ ジスタがクロック遷移を認識しない可能性があります。report_min_ pulse_width コマンドを使用して、デザイン内のすべてのクロックの 最小パルス幅を詳細に示すレポートを生成します。このレポートには、 デザイン内のすべてのクロックの High および Low パルスに関する情報 が含まれています。 report_min_pulse_width コマンドは、 RAM および DSP の最小周期 チェックや、入力および出力クロック・ポートの I/O エッジ・レート 制限もレポートします。出力ポートの場合、ポートにはクロック(また は生成クロック)が割り当てられているか、入力 / 出力遅延のために -reference_pin として使用される必要があります。 Altera Corporation 2008 年 5 月 7–75 Quartus II ハンドブック Volume 3 report_min_pulse_width コマンドは、I/O エッジ・レート制限を チェックしますが、出力クロック・ポートのチェックは必ずしも実行し ません。report_min_pulse_width コマンドで、出力クロック・ポー トの I/O エッジ・レート制限をチェックする場合、出力クロック・ポー トは以下のいずれかのカテゴリに分類する必要があります。 ■ クロックまたは生成クロック制約が割り当てられている。 または ■ 入力または出力遅延制約のために -reference_pin を使用する。 デザインの各レジスタは、レジスタをクロックする 1 クロックあたり 2 回 レポートされます。1 回目は High パルスの場合、2 回目は Low パルス の場合です。例 7–33 に、report_min_pulse_width コマンドとオプ ションを示します。 例 7–33. report_min_pulse_width コマンド report_min_pulse_width [-append] [-file <name>] [-nworst <number>] [-stdout] [<targets>] [-panel_name <name>] 表 7–29 に、report_min_pulse_width コマンドのオプションを示し ます。 表 7–29. report_min_pulse_width コマンドのオプション オプション 説明 -append 出力がファイルに送信される場合、このオプションは結果をそのファイルに追 加します。そうでない場合、ファイルは上書きされます。 -file <name> 結果をファイルに送信します。 -nworst <number> レポートするパルス幅チェック数を指定します。デフォルトは 1 です。 -stdout メッセージを経由して出力を stdout にリダイレクトします。このオプション は、ファイルなどの別の出力フォーマットが選択され、またメッセージを受信 する場合のみです。 -targets レジスタを指定します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 7–76 Altera Corporation 2008 年 5 月 タイミング・レポート report_net_timing report_net_timing コマンドを使用して、デザイン内のネットについ ての遅延およびファンアウト情報を詳細に示すレポートを生成します。 ネットはセルの出力ピンに対応します。 例 7–34 に、report_net_timing コマンドとオプションを示します。 例 7–34. report_net_timing コマンド report_net_timing [-append] [-file <name>] [-nworst_delay <number>] [-nworst_fanout <number>] [-stdout] [-panel_name <name>] 表 7–30 に、report_net_timing コマンドのオプションを示します。 表 7–30. report_net_timing コマンドのオプション オプション 説明 -append 現在のレポートを-file オプションで指定されるファイルに追加するよう指定 します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -nworst_delay <number> <number> のワースト・ネット遅延をレポートするよう指定します。 -nworst_fanout <number> <number> のワースト・ネット・ファンアウトをレポートするよう指定します。 -stdout レポートを stdout に送信するよう指示します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 Altera Corporation 2008 年 5 月 7–77 Quartus II ハンドブック Volume 3 report_sdc report_sdc コマンドを使用して、プロジェクト内のすべての SDC 制約 のレポートを生成します。 例 7–35 に、report_sdc コマンドとオプションを示します。 例 7–35. report_sdc コマンド report_sdc [-ignored] [-append] [-file] [-stdout] [-panel_name <name>] 表 7–31 に、report_sdc コマンドのオプションを示します。 表 7–31. report_sdc コマンドのオプション オプション 説明 -ignored 無視されたアサインメントをレポートします。 -append 現在のレポートを -file で指定されるファイルに追加するよう指定します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -stdout レポートを stdout に送信するよう指示します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 report_ucp report_ucp コマンドを使用して、デザイン内の制約されていないすべ てのパスのレポートを生成します。 例 7–36 に、report_ucp コマンドとオプションを示します。 例 7–36. report_ucp コマンド report_ucp [-append] [-file <name>] [-hold] [-setup] [-stdout] [-summary] [-panel_name <name>] 7–78 Altera Corporation 2008 年 5 月 タイミング・レポート 表 7–32 に、report_ucp コマンドのオプションを示します。 表 7–32. report_ucp のオプションの説明 オプション 説明 -append 現在のレポートを -file で指定されるファイルに追加するよう指定します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -hold 制約されていないすべてのホールド・パスをレポートします。 -setup 制約されていないすべてのセットアップ・パスをレポートします。 -stdout レポートを stdout に送信するよう指示します。 -summary サマリ・パネルのみを生成します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 表 7–33 に、Quartus II TimeQuest タイミング・アナライザで使用可能な すべてのレポート・コマンドをまとめます。 表 7–33. Tasks ペインおよび Tcl コマンドからのレポート (1 / 2) Task ペインのレ ポート Tcl コマンド Report Setup Summary create_timing_summary 説明 -setup すべての定義されているクロックのクロック・セッ トアップ・サマリを生成します。 Report Hold Summary create_timing_summary -hold すべての定義されているクロックのクロック・ホー ルド・サマリを生成します。 Report Recovery Summary create_timing_summary -recovery すべての定義されているクロックのクロック・リカ バリ・サマリを生成します。 Report Removal Summary create_timing_summary -removal すべての定義されているクロックのクロック・リ ムーバル・サマリを生成します。 Report Clocks report_clocks すべての定義されているクロックのクロック・サマ リを生成します。 Report Clock Transfers report_clock_transfers デザインのすべてのクロック間転送のクロック転 送サマリを生成します。 Report SDC report_sdc すべての SDC ファイル・コマンドによる読み出し のサマリを生成します。 Report Unconstrained Paths report_ucp デザインの制約されていないすべてのパスのサマ リを生成します。 Report Timing report_timing デザインの特定のパスの詳細サマリを生成します。 Report Net Timing report_net_timing デザインの特定のネットの詳細サマリを生成しま す。 Altera Corporation 2008 年 5 月 7–79 Quartus II ハンドブック Volume 3 表 7–33. Tasks ペインおよび Tcl コマンドからのレポート (2 / 2) Task ペインのレ ポート Tcl コマンド 説明 Report Minimum Pulse report_min_pulse_width デザインの特定のレジスタの詳細サマリを生成し Width ます。 Create Slack Histogram create_slack_histogram デザインの特定のクロックの詳細ヒストグラムを 生成します。 report_path report_path コマンドを使用して、最長遅延パスと対応する遅延値を レポートします。 例 7–37 に、report_path コマンドとオプションを示します。 例 7–37. report_path コマンド report_path [-append] [-file <name>] [-from <names>] [-npaths <number>] [-stdout] [-through] [-to <names>] [-panel_name <name>] 表 7–34 に、report_path コマンドのオプションを示します。 表 7–34. report_path コマンドのオプション オプション 説明 -append 現在のレポートを -file オプションで指定されるファイルに追加するよう指定 します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -from <names> 解析用のソース・ノードを指定します。 -npaths <number> レポートするパス数を指定します。 -stdout レポートを stdout に送信するよう指示します。 -through <name> 解析用の通過ノードを指定します。 -to <names> 解析用のデスティネーション・ノードを指定します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 7–80 Altera Corporation 2008 年 5 月 タイミング・レポート report_bottleneck report_bottleneckコマンドを使用して、ワースト1,000のセットアッ プ・パスを対象に、各ノードを通過するタイミング違反のあるパス数に 基づいて、ノードあたりのレーティングをレポートします。例 7–38 に、 report_bottleneck コマンドとオプションを示します。 例 7–38. report_bottleneck コマンド report_bottleneck [-cmetric <cmetric_name>] [-details] [-metric <default|tns|num_paths|num_fpaths|num_fanins|num_fanouts>] [-panel <panel_name>] [-stdout] [<paths>] デフォルトでは、report_bottleneck コマンドは、ワースト 1,000 の セットアップ・パスのレーティングをレポートします。 以下に示すように、デフォルトのメトリックのほかにも、いくつかの「標 準」メトリックを選択できます。 ■ ■ -metric num_fanouts -metric tns また、カスタム・メトリックを作成して、ファンアウト数、ファンイン 数、障害パス数、合計パス数、および他のキーパー数の組み合わせに基 づ い て ノ ー ド を 評 価 す る こ と も で き ま す。解 析 対 象 の パ ス は、 get_timing_paths の呼び出しの結果を、report_bottleneck に最 後の引数として渡すことによって指定できます。 表 7–35 に、report_bottleneck コマンドのオプションを示します。 表 7–35. report_bottleneck コマンド (1 / 2) オプション 説明 -cmetric <cmetric_name> 個々のノードを評価するカスタム・メトリック・ファンクション。 -details 詳細情報(立ち下がりエッジ数、ファンイン数など)を表示します。 -metric <default|tns|num_paths|num_fpaths| num_fanins|num_fanouts> 個々のノードの評価に使用するメトリックを指示します。 -panel <panel_name> パネルに結果を送信し、新しいパネルの名前を指定します。 Altera Corporation 2008 年 5 月 7–81 Quartus II ハンドブック Volume 3 表 7–35. report_bottleneck コマンド (2 / 2) オプション 説明 -stdout レポートを stdout に送信するよう指示します。 <paths> 解析対象のパス。 例 7–39 に、report_bottleneck コマンドを使用してカスタム・メト リックを作成する方法を示します。 例 7–39. report_bottleneck カスタム・メトリック # レポートするパス数を設定 set paths [ get_timing_paths -npaths 1000 -setup ] # カスタム・メトリックを作成 proc report_bottleneck_custom_metric {arg} { # 説明:ファンイン数をカスタム・メトリックとして使用 upvar $arg metric set rating $metric(num_fanins) return $rating } # カスタム・メトリックの結果をレポート report_bottleneck -cmetric report_bottleneck_custom_metric -panel "Timing Analysis Bottleneck Report - Custom" $paths report_datasheet report_datasheet コマンドを使用して、デザイン全体のタイミング特性 を要約したデータシート・レポートを生成します。このコマンドは、セット アップ(tsu)時間、ホールド(th)時間、clock-to-output(tco)時間、 最小 clock-to-output(mintco)時間、伝播遅延(tpd)、および最小伝播遅 延(mintpd)時間をレポートします。例 7–40 に、report_datasheet コ マンドとオプションを示します。 例 7–40. report_datasheet コマンド report_datasheet [-append] [-file <name>] [-stdout] [panel_name <name>] 7–82 Altera Corporation 2008 年 5 月 タイミング・レポート 表 7–36 に、report_datasheet コマンドのオプションを示します。 表 7–36. report_datasheet コマンドのオプション オプション 説明 -append 現在のレポートを -file オプションで指定されるファイルに追加するよう指定 します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -stdout レポートを stdout に送信するよう指示します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 遅延は関係するベース・クロックまたはポートについてレポートされま す。1 つのクロックに対して複数のパスが存在する場合、tSU、tH、tCO、 および tPD には最長パスの最大遅延が利用され、mintCO および mintPD には最短パスの最小遅延が利用されます。 report_rskm report_rskm コマンドを使用して、LVDS レシーバのレシーバ・ス キュー・マージンを詳細に示すレポートを生成します。 例 7–41 に、report_rskm コマンドとオプションを示します。 例 7–41. report_rskm コマンド report_rskm [-append] [-file <name>] [-panel_name <name>] [-stdout] 表 7–37 に、report_rskm コマンドのオプションを示します。 表 7–37. report_rskm コマンドのオプション タイプ名 説明 -append 現在のレポートを –file オプションで指定されるファイルに追加するよう指定 します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 -stdout レポートを stdout に送信するよう指示します。 Altera Corporation 2008 年 5 月 7–83 Quartus II ハンドブック Volume 3 レシーバ入力スキュー・マージン(RSKM)は、LVDS レシーバ・メガ ファンクションが動作しなくなるまで使用できるタイム・マージンです。 RSKM は、時間単位間隔(TUI)からサンプリング・ウィンドウ(SW) サイズとレシーバ・チャネル間スキュー(RCCS)を減算した結果とし て残るトータル・タイム・マージンとして定義されます。これを式で表 すと、計算式 12 のようになります。 (12) ( TUI – SW – RCCS ) RSKM = ----------------------------------------------2 時間単位間隔は、LVDS クロック周期(1/fMAX)です。サンプリング・ ウィンドウは、データが LVDS レシーバ・メガファンクションによって 正常にサンプリングされるように、入力データが安定していなければな らない期間です。サンプリング・ウィンドウ・サイズは、デバイスのス ピード・グレードによって異なり、RCCS は LVDS レシーバが受けるチャ ネル間スキューを反映します。この RCCS には、アップストリーム・ト ランスミッタのトランスミッタ・チャネル間スキュー(TCCS)や、ト ランスミッタとレシーバ間の最大チャネル間スキューが含まれます。 RCCS は、最大入力遅延と最小入力遅延の差に等しくなります。入力遅 延が設定されていない場合、RCCS はデフォルトでゼロになります。 report_tccs report_tccs コマンドを使用して、LVDS トランスミッタのチャネル間 スキュー・マージンを詳細に示すレポートを生成します。 例 7–42 に、report_tccs コマンドとオプションを示します。 例 7–42. report_tccs コマンド report_tccs [-append] [-file <name>] [-panel_name <name>] [-quiet] [-stdout] 7–84 Altera Corporation 2008 年 5 月 タイミング・レポート 表 7–38 に、report_tccs コマンドのオプションを示します。 表 7–38. report_tccs コマンドのオプション タイプ名 説明 -append 現在のレポートを –file オプションで指定されるファイルに追加するよう指定 します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 -quiet デザインに LVDS レシーバが存在しない場合は何も出力しないことを指定しま す。 -stdout レポートを stdout に送信するよう指示します。 TCCS は、tCO のばらつきやクロック・スキューなど、最速および最低速 出力遷移間のタイミングの差です。 report_path report_path コマンドを使用して、任意の 2 つのキーパー・ノード間の 最長遅延パスを詳細に示すレポートを生成します。 例 7–43 に、report_path コマンドとオプションを示します。 例 7–43. report_path コマンド report_path [-append] [-file <name>] [-from <names>] [-min_path] [-npaths <number>] [-nworst <number>] [-panel_name <name>] [-stdout] [-summary] [-through <names>] [-to <names>] Altera Corporation 2008 年 5 月 7–85 Quartus II ハンドブック Volume 3 表 7–39 に、report_path コマンドのオプションを示します。 表 7–39. report_path コマンドのオプション タイプ名 説明 -append 現在のレポートを-file オプションで指定されるファイルに追加するよう指定 します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -from <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <names> は、パスの始点になります。 -min_path 最小遅延パスを表示します。 -npaths <number> レポートするパス数を指定します。 -nworst <number> 各エンドポイントについてレポートするパスの最大数を指定します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 -stdout レポートを stdout に送信するよう指示します。 -summary 検出された各パスのサマリを含む 1 つのテーブルを作成します。 -through <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。フォ ルス・パスが <names> を通過することを指定します。 -to <names> <names> は、デザイン内のオブジェクトのコレクションまたはリストです。 <names> は、パスの終点になります。 レポートされる遅延パスは、レジスタやポートなどのキーパー・ ノードを通過できません。代わりに、遅延パスはキーパー・ノー ドの出力ピンからキーパー・ノードの入力ピンまで配置されて いる必要があります。 図 7–37 に、レジスタ間パスを持つ簡単なデザインを示します。 図 7–37. 簡単なレジスタ間パス data_in_a and2 reg2 D Q data_out reg1 D data_in_b Q c0 clk_i PLL c1 7–86 clk_out Altera Corporation 2008 年 5 月 タイミング・レポート 例 7–44 に、次のコマンドから生成されるレポートを示します。 report_path -from [get_pins {reg1|regout}] -to [get_pins \ {reg2|datain}] -npaths 1 -panel_name "Report Path" –stdout 例 7–44. キーパー出力ピンからキーパー入力ピンまでの report_path Info: =============================================================== Info: From Node :reg1|regout Info: To Node :reg2|datain Info: Info: Path: Info: Info: Total (ns) Incr (ns) Type Element Info: ========== ========= == ==== =================== Info: 0.000 0.000 reg1|regout Info: 0.206 0.206 RR IC and2|datae Info: 0.360 0.154 RR CELL and2|combout Info: 0.360 0.000 RR IC reg2|datain Info: Info: Total Path Delay : 0.360 Info: =============================================================== 例 7–45 に、次のコマンドから生成されるレポートを示します。 report_path -from [get_ports data_in_a] -to \ [get_pins {reg2|regout}] -npaths 1 例 7–45. キーパー間出力ピンからの report_path Info:Report Path:No paths were found 0 0.000 例 7–45 にはパスはレポートされていません。これは、デスティネーショ ンがキーパー・ノードの入力ピンを通過するからです。 check_timing check_timing コマンドを使用して、デザインまたは適用されている制 約 の 潜 在 的 な 問 題 に 関 す る レ ポ ー ト を 生 成 し ま す。す べ て の check_timing の結果が深刻な問題というわけではありません。結果を 調べ て、それ が望 ましいものかどうかを判断する必要があります。 例 7–46 に、check_timing コマンドとオプションを示します。 Altera Corporation 2008 年 5 月 7–87 Quartus II ハンドブック Volume 3 例 7–46. check_timing コマンド check_timing [-append] [-file <name>] [-include <check_list>] [-stdout] [-panel_name <name>] 表 7–40 に、check_timing コマンドのオプションを示します。 表 7–40. check_timing コマンドのオプション オプション 説明 -append 現在のレポートを -file オプションで指定されるファイルに追加するよう指定 します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -include <check_list> を使用してチェックを実行するよう指示します。チェックのリスト については、表 7–41 を参照してください。 -stdout レポートを stdout に送信するよう指示します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 表 7–41 に、実行可能なチェックを示します。 表 7–41. 実行可能なチェック (1 / 2) オプション 説明 no_clock レジスタのクロック・ピンに少なくとも 1 つのクロックがあるかどうかチェッ クし、クロックとして特定されているポートにクロックが割り当てられている か確認します。 multiple_clock レジスタのクロック・ピンに多くて 1 つのクロックがあるかどうかチェックし ます。複数のクロックがレジスタのクロック・ピンに到達すると、両方のクロッ クが解析に使用されます。 generated_clock 生成クロックが有効かどうかチェックします。生成クロックは、有効クロック によって駆動されるソースを持っている必要があります。また、生成クロック はループ内で相互に依存してはなりません(clk2 が clk1 をすでにソースと して使用している場合、 clk1 は clk2 をソースにできない)。 no_input_delay クロックとして特定されていないすべての入力ポートに入力遅延が設定されて いるかどうかチェックします。 no_output_delay すべての出力ポートに出力遅延が設定されているかどうかチェックします。 7–88 Altera Corporation 2008 年 5 月 タイミング・レポート 表 7–41. 実行可能なチェック (2 / 2) オプション partial_input_delay 説明 入力遅延が完全かどうかチェックします。入力遅延に、rise-min、fall-min、risemax、および fall-max 部分が設定されていることを確認します。 partial_output_delay 出力遅延が完全かどうかチェックします。出力遅延に、rise-min、fall-min、risemax、および fall-max 部分が設定されていることを確認します。 reference_pin reference_pin オ プ ショ ン を使 用 して set_input_delay お よび set_output_delay で指定されたリファレンス・ピンが有効かどうかチェッ クします。reference_pin が有効なのは、同じ set_input_delay/set_ output_delay コマンドで指定されるクロック・オプションが、reference_ pin のダイレクト・ファンインにあるクロックと一致する場合です。reference_ pin のダイレクト・ファンインにあるというのは、クロックと reference_ pin の間にキーパーがないという意味です。 latency_override ポートまたはピンに適用されるクロック・レイテンシ制約は、クロックに設定 されているより汎用的なクロック・レイテンシを無効にします。クロックに設 定されるクロック・レイテンシは、クロックによって駆動されるすべてのキー パーに適用されます。ピンまたはポートに設定されるクロック・レイテンシは、 ポートまたはピンのファン・アウトでレジスタに適用されます。 loops デザインに、強度に接続されたコンポーネントが存在しないかチェックします。 このようなループがあるとデザインが正しく解析されません。ループは存在す るがマークされているため横断しないことを指示します。 latches デザインにラッチがあるかどうかチェックします。Quartus II TimeQuest タイ ミング・アナライザは、ラッチが存在しており、それらのラッチを適切に解析 できないことをユーザーに警告します。 例 7–47 に、check_timing コマンドの使用方法を示します。 例 7–47. check_timing コマンド # デザインを制約 create_clock -name clk -period 4.000 -waveform { 0.000 2.000 } \ [get_ports clk] set_input_delay -clock clk2 1.5 [get_ports in*] set_output_delay -clock clk 1.6 [get_ports out*] set_false_path -from [get_keepers in] -through [get_nets r1] -to \ [get_keepers out] # 問題があったかどうかチェック check_timing -include {loops latches no_input_delay partial_input_delay} Altera Corporation 2008 年 5 月 7–89 Quartus II ハンドブック Volume 3 report_clock_fmax_summary report_clock_fmax_summary を使用して、ユーザー指定のクロック 周期に関係なく、デザインのすべてのクロックについて可能な fMAX を レポートします。fMAX は、ソースおよびデスティネーション・レジスタ またはポートが同じクロックによってドライブされるパスに関してのみ 計算されます。生成クロックなど、異なるクロックのパスは無視されま す。クロックとその反転の間のパスについて、fMAX は、fMAX は立ち上 がりエッジと立ち下がりエッジがあたかも fMAX に従ってスケーリング され、デューティ・サイクル(パーセンテージで)が維持されるかのよ うに計算されます。 例 7–48 に、report_clock_fmax_summary コマンドとオプションを 示します。 例 7–48. report_clock_fmax_summary コマンド report_clock_fmax_summary [-append] [-file <name>] [-panel_name <name>] [-stdout] 表 7–42 に、report_clock_fmax_summary コマンドのオプションを 示します。 表 7–42. report_clock_fmax_summary コマンドのオプション オプション -append 説明 現在のレポートを -file オプションで指定されるファイルに追加するよう指定 します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -stdout レポートを stdout に送信するよう指示します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 7–90 Altera Corporation 2008 年 5 月 タイミング・レポート fMAX サマリ・レポートには、fMAX、Restricted fMAX、Clock Name、およ びNoteの4つのカラムがあります。表 7–43に各カラムの説明を示します。 表 7–43. fMAX サマリ・レポート・カラム カラム名 説明 fMAX 内部レジスタ間で実行できる、可能な最速の周波数を示します。これがクロッ ク・ポートをドライブできる最速周波数ではありません。 Restricted fMAX クロック・ポートで実行できる、可能な最速の周波数を示します。ホールド・ タイミング要求、クロックの I/O エッジ・レート制限(I/O 規格にも依存)、レ ジスタの最小パルス幅チェック、RAM および DSP レジスタの最小周期チェッ クなど、さまざまな理由からこの数値が、fMAX カラムよりも低くなる場合があ ります。 Clock Name クロック名を示します。 Note クロックに関連する注意事項を示します。 create_timing_summary ワースト・ケースのクロック・セットアップおよびクロック・ホールド・ スラックと、エンドポイントの TNS(Total Negative Slack)をクロッ ク・ドメインごとにレポートします。Total Negative Slack は、クロッ ク・ドメイン内の各デスティネーション・レジスタまたはポートに対し てゼロ未満のすべてのスラックを合計したものです。 例 7–49 に、create_timing_summary コマンドとオプションを示しま す。 例 7–49. create_timing_summary コマンド create_timing_summary [-append] [-file <name>] [-hold] [-panel_name <name>] [-recovery] [-removal] [-setup] [-stdout] Altera Corporation 2008 年 5 月 7–91 Quartus II ハンドブック Volume 3 表 7–44 に、create_timing_summary コマンドのオプションを示しま す。 表 7–44. create_timing_summary コマンドのオプション オプション 説明 -append 現在のレポートを -file オプションで指定されるファイルに追加するよう指定 します。 -file <name> 現在のレポートをファイル <name> に書き込むよう指示します。 -hold クロック・ホールド・チェック・サマリ・レポートを生成します。 -panel_name <name> パネルに結果を送信し、新しいパネルの名前を指定します。 -recovery リカバリ・チェック・サマリ・レポートを生成します。 -removal リムーバル・チェック・サマリ・レポートを生成します。 -setup クロック・セットアップ・チェック・サマリ・レポートを生成します。 -stdout レポートを stdout に送信するよう指示します。 タイミング 解析機能 TimeQuest タイミング・アナライザは、デザインのスルー解析を強化お よび提供する多数の機能をサポートしています。この項では、TimeQuest タイミング・アナライザで使用できる多数の機能について説明します。 マルチ・コーナー解析 マルチ・コーナー解析により、デザインでスタティック・タイミング解 析を実行しながら、さまざまな動作条件(電圧、プロセス、および温度) の下でデザインを検証できます。 スタティック・タイミング解析に使用するデバイスの動作条件を変更す るには、set_operating_conditions コマンドを使用します。 解 析 す る デ バ イ ス の ス ピ ー ド・グ レ ー ド を 変 更 す る に は、 create_timing_netlist コマンドを使用します。create_ timing_netlist コマンドについて詳しくは、7–27 ページの 「タイミング・ネットリストの作成」を参照してください。 7–92 Altera Corporation 2008 年 5 月 タイミング解析機能 例 7–50 に、set_operating_conditions コマンドとオプションを示 します。 例 7–50. set_operating_conditions コマンド set_operating_conditions [-model <fast|slow>] [-speed <speed grade>] [-temperature <value in ºC>] [-voltage <value in mV>] [<operating condition Tcl object>] 表 7–45 に、set_operating_conditions コマンドのオプションを示 します。 表 7–45. set_operating_conditions コマンドのオプション オプション 説明 -model <fast|slow> タイミング・モデルを指定します。 -speed <speed grade> デバイスのスピード・グレードを指定します。 -temperature <value in ºC> 動作温度を指定します。 -voltage <value in mV> 動作電圧を指定します。 <operating condition Tcl object> 動作条件を指定する動作条件 Tcl オブジェクトを指定します。 動作条件 Tcl オブジェクトを使用する場合、model、speed、 temperature、および voltage オプションは不要です。動作条件 Tcl オブジェクトを使用しない場合、model は必ず指定します が、-speed、-temperature、および -voltage オプションは省略 可能で、該当する場合はデバイスの適切なデフォルト値を使用 します。 Altera Corporation 2008 年 5 月 7–93 Quartus II ハンドブック Volume 3 表 7–46 に、各デバイス・ファミリに設定可能な動作条件をいくつか示し ます。 表 7–46. デバイス・ファミリの動作条件 デバイス・ ファミリ 使用可能な条件 スピード・ グレード モデル 電圧(mV) 温度(淸) 動作条件 Tcl オブジェクト Stratix III 4 slow slow fast 1100 1100 1100 85 0 0 4_slow_1100mv_85c 4_slow_1100mv_0c MIN_fast_1100mv_0c Cyclone® III 7 slow slow fast 1200 1200 1200 85 0 0 7_slow_1200mv_85c 7_slow_1200mv_0c MIN_fast_1200mv_0c Stratix II 4 slow fast N/A N/A 4_slow MIN_fast Cyclone II 6 slow fast N/A N/A 6_slow MIN_fast ターゲット・デバイスに使用可能な動作条件のリストを取得す るには、get_available_operating_conditions コマン ドを使用します。 例 7–51 に、Stratix III デザインの動作条件として、低速モデル、1100 mV、 85° C を設定する方法を示します。 例 7–51. 個々の値での動作条件の設定 set_operating_conditions -model slow -temperature 85 -voltage 1100 また、例 7–51 に示す動作条件は、例 7–52 に示す Tcl オブジェクトを使 用して設定できます。 例 7–52. Tcl オブジェクトによる動作条件の設定 set_operating_conditions 4_slow_1100mv_85c 7–94 Altera Corporation 2008 年 5 月 タイミング解析機能 アドバンスト I/O タイミングおよびボード・トレース・ モデルのアサインメント Quartus II TimeQuest タイミング・アナライザは、アドバンスト I/O タ イミングとボード・トレース・モデルのアサインメントを使用して、デ ザインの I/O バッファ遅延をモデル化できます。 アドバンスト I/O 機能をオンまたはオフにするには、Settings ダイアロ グ・ボックスの TimeQuest Timing Analyzer オプションで、on または off を選択します。 Advanced I/O Timing をオンまたはオフにするか、ボード・トレース・ モデルのアサインメントを変更し、リコンパイルしないでタイミングを 解 析 す る 場 合 は、タ イミング・ネットリストを作成するときに force_dat コマンドを使用する必要があります。Quartus II TimeQuest タイミング・アナライザの Tcl コンソールで、次のコマンドを入力します。 create_timing_netlist -force_dat ↵ アドバンスト I/O タイミングをオンまたはオフにするか、ボード・ト レース・モデルのアサインメントを変更し、リコンパイルしてからタイ ミングを解析する場合は、タイミング・ネットリストを作成するときに -force_dat コマンドを使用する必要はありません。タイミング・ネッ トリストは、create_timing_netlist コマンドを使用するか、Tasks ペインの Create Timing Netlist タスクを使用して作成できます。 アドバンスト I/O 機能について詳しくは、「Quartus II ハンドブック Volume 2」の「I/O 管理」の章を参照してください。 ワイルドカードの割り当てとコレクション デ ザ イ ン の 多 数 の ノ ー ド に よ り 簡 単 に 制 約 を 適 用 す る た め に、 Quartus II TimeQuest タイミング・アナライザでは、 「*」と「?」をワ イルドカード文字として使用できます。これらのワイルドカード文字を 使用すると、デザインで指定する必要がある個々の制約数を減らすこと ができます。 ワイルドカード文字「*」は任意の文字列と一致します。例えば、reg* と し て 指 定 さ れ た ノ ー ド に ア サ イ ン メ ン ト を 行 う 場 合、Quartus II TimeQuest タイミング・アナライザは、先頭の reg とその後に続く 0 文 字、1 文字、またはいくつかの文字の組み合わせ(例えば、reg1、reg[2]、 regbank、reg12bank)と一致するデザイン・ノードをすべて検索し、 それらにアサインメントを適用します。 Altera Corporation 2008 年 5 月 7–95 Quartus II ハンドブック Volume 3 ワイルドカード文字「?」は、任意の 1 文字と一致します。例えば、reg? と し て 指 定 さ れ た ノ ー ド に ア サ イ ン メ ン ト を 行 う 場 合、Quartus II TimeQuest タイミング・アナライザは、先頭の reg とその後に続く任意 の 1 文字の組み合わせ(例えば、reg1、rega、reg4)と一致するデザ イン・ノードをすべて検索し、それらにアサインメントを適用します。 コレクション・コマンドの get_cells と get_pins には、ワイルド カード文字による検索を向上させる 3 つのオプションがあります。より 有効な検索結果を得るには、デフォルト動作、-hierarchical オプショ ン、または -compatibility オプションを選択します。 パイプ文字を使用すると、Quartus II TimeQuest タイミング・ アナライザで、ある階層レベルと次の階層レベルが区切られま す。例えば、<absolute full cell name>|<pin suffix> は、階層とピ ン名を区切る「|」を使用して、階層ピン名を表します。 コレクション・コマンド get_cells と get_pins をオプションなしで 使用すると、ピン名の階層レベル単位でデフォルトの検索動作が実行さ れます。つまり、検索はレベル単位で実行されます。完全階層名には、 「|」を使用して階層レベルを区切った複数の階層レベルが含まれている ことがあり、各ワイルドカード文字は 1 つの階層レベルのみを表します。 例えば、 「*」は最初の階層レベルを表し、 「*|*」は最初の階層レベルと 2 番目の階層レベルを表します。 コレクション・コマンドの get_cells と get_pins を -hierarchical オプション付きで使用すると、<short cell name>|<pin name> 形式の相対 的な階層パス名に対して再帰的マッチングが実行されます。検索はノー ド名に対して実行されます。例えば、階層パスではなく、名前の最後の 階層に対して実行されます。デフォルト動作とは異なり、このオプショ ンは検索をパイプ文字で表される各階層レベルに制限しません。 get_cells -hierarchical オプションによる検索では、パ イプ文字は使用できません。ただし、get_pins コレクション 検索では、パイプ文字を使用できます。 コレクション・コマンド get_cells と get_pins を -compatibility オプションを指定して使用すると、Quartus II クラシック・タイミング・ アナライザと同様の検索が実行されます。このオプションは階層パス全 体を検索し、パイプ文字は特殊文字として扱われません。 7–96 Altera Corporation 2008 年 5 月 タイミング解析機能 デザインに以下のセルが存在すると仮定します。 foo foo|bar また、次のピン名を仮定とします。 foo|dataa foo|datab foo|bar|datac foo|bar|datad 表 7–47 に、これらの検索文字列を使用した結果を示します。 表 7–47. 検索文字列の例と検索結果 検索文字列 検索結果 get_pins *|dataa foo|dataa get_pins *|datac <empty> get_pins *|*|datac foo|bar|datac get_pins foo*|* foo|dataa, foo|datab get_pins -hierarchical *|*|datac <empty> (1) get_pins -hierarchical foo|* foo|dataa, foo|datab get_pins -hierarchical *|datac foo|bar|datac get_pins -hierarchical foo|*|datac <empty> (1) get_pins -compatibility *|datac foo|bar|datac get_pins -compatibility *|*|datac foo|bar|datac 表 7–47 の注 : (1) 検索文字列に *|*| を加えたため、検索結果は <empty> になります。 デザインのリセット 解析中のデザインからタイミング制約と例外をすべて削除するには、 reset_design コマンドを使用します。このコマンドは、クロック、生 成クロック、派生クロック、入力遅延、出力遅延、クロック・レイテン シ、クロック不確実性、クロック・グループ、フォルス・パス、マルチ サイクル・パス、最小遅延、および最大遅延をすべて削除します。 このコマンドを使用すると、タイミング・ネットリストを削除して新た に再作成しなくても、容易に解析の初期状態に戻すことができます。 Altera Corporation 2008 年 5 月 7–97 Quartus II ハンドブック Volume 3 クロス・プロービング クロス・プロービング機能により、TimeQuest タイミング・アナライザ から Quartus II ソフトウェアで使用可能な各種ツール(または、その逆) へのパスとエレメントを探索できます。 TimeQuest GUI で、View ペインの任意のパスを右クリックして、Locate Path または Locate を選択できます。 ソースは From Node カラムのエレメントで、デスティネーションは To Node カラムのエレメントです。 Locate Path オプションにより、現在選択しているロウのデータ到達パス (デフォルト)を探索できます。データ要求時間パスを探索するには、 データ要求パス・パネルでロウを選択します。 Locate Required Path コマンドは、表示するパスがある場合に のみ使用できます。ユーザーがクロック・パスもレポートしな い限り、要求パスにはおそらく 1 つのノードにか存在しません。 この場合、コマンドは使用できません。 Locate オプションを使用すると、ハイライトしたエレメントを探索でき ます。 Locate Path および Locate コマンドは、Chip Planner、Technology Map Viewer、または Resource Property Editor へのクロス・プローブが可能 です。また、Locate Path オプションは、Critical Path Settings へのクロ ス・プローブも可能です。 Chip Planner の Critical Path Settings ダイアログ・ボックスから、 TimeQuest タイミング・アナライザへのクロス・プローブを行って、デ ザイン内のクリティカル・パスをレポートできます。 locate Console ペインで locate コマンドを使用して、Chip Editor、Critical Path Settings、Resource Property Editor、および Technology Map Viewer へのクロス・プローブを行います。 例 7–53 に、locate コマンドとオプションを示します。 7–98 Altera Corporation 2008 年 5 月 タイミング解析機能 例 7–53. locate コマンド locate [-chip] [-color <black|blue|brown|green|grey|light_grey|orange|purple|red|white>] [-cps] [-label <label>] [-rpe] [-tmv] <items> 表 7–48 に、locate コマンドのオプションを示します。 表 7–48. locate オプション オプション -chip 説明 Chip Planner でオブジェクトを探索します。 -color 探索するオブジェクトを識別します。 <black|blue|brown|green| grey|light_grey|orange|pur ple|red|white> -cps Chip Planner の Critical Path Settings ダイアログでオブジェクトを探索します。 -label <label> 探索するオブジェクトの識別用ラベルを指定します。 -rpe Resource Property Editor で探索します。 -tmv Technology Map Viewer でオブジェクトを探索します。 <items> 探索するアイテム。コレクションまたはオブジェクト(パス、ポイント、ノー ド、ネット、キーパー、レジスタなど)は、対応するコレクションまたはオブ ジェクトへの参照を渡すことによって探索できます。 例 7–54 に、TimeQuest タイミング・アナライザから Chip Editor に 10 個のパスをクロス・プローブし、Technology Map Viewer ですべての データ・ポートを探索する方法を示します。 例 7–54. TimeQuest からのクロス・プロービング # Chip Editor への 10 個の最長パスにあるすべてのノードを # 探索 locate [get_path -npaths 10] -chip # Tech Map Viewer へのデータで開始するすべてのポートを探索 locate [get_ports data*] -tmv Altera Corporation 2008 年 5 月 7–99 Quartus II ハンドブック Volume 3 TimeQuest タイミング・ アナライザ GUI Quartus II TimeQuest タイミング・アナライザでは、直観的で使いやす い GUI からデザインを効率的に制約および解析できます。この GUI は 以下のペインで構成されます。 ■ 「Quartus II ソフトウェアのインタフェースおよびオプション」 7–101 ページを参照。 ■ 「View ペイン」7–101 ページを参照。 ■ 「Tasks ペイン」7–104 ページを参照。 ■ 「Console ペイン」7–107 ページを参照。 ■ 「Report ペイン」7–107 ページを参照。 ■ 「Constraints」7–108 ページを参照。 ■ 「Name Finder」7–110 ページを参照。 ■ 「Target ペイン」7–111 ページを参照。 ■ 「SDC エディタ」7–112 ページを参照。 各ペインは生産性を高める機能を提供します(図 7–38)。 図 7–38. TimeQuest GUI 7–100 Altera Corporation 2008 年 5 月 TimeQuest タイミング・アナライザ GUI Quartus II ソフトウェアのインタフェースおよびオプション Quartus II ソフトウェアでは、デザインの Compilation Report に生成さ れる Quartus II TimeQuest タイミング・アナライザ・レポートのために 各種オプションをコンフィギュレーションできます。 Settings ダイアログ・ボックスの TimeQuest タイミング・アナライザ設 定では、表 7–49 に示すオプションをコンフィギュレーションできます。 表 7–49. Quartus II TimeQuest タイミング・アナライザ設定 オプション 説明 SDC files to include in the project プロジェクトに関連付けられている SDC ファイルを追加および削除します。 Enable Advanced I/O Timing 各ピンに指定されているボード・トレース・モデルから、アドバンスト I/O タイ ミング結果を生成します。 Enable multicorner timing analysis during compilation ターゲット・デバイスの使用可能なすべての動作条件について複数のレポート を生成します。 Report worst-case paths during compilation クロック・ドメインあたりのワースト・ケース・パス・レポートを生成します。 Tcl Script File for customizing report during compilation カスタム・レポート生成のソースとなる任意のカスタム・スクリプトを指定し ます。 表 7–49 に示すオプションは、Compilation Report で生成する レ ポ ー ト の み を コ ン ト ロ ー ル す る も の で あ り、Quartus II TimeQuest タイミング・アナライザで生成するレポートはコン トロールしません。 View ペイン View ペインは、タイミング解析結果のメイン表示領域です。View ペイ ンを使用して、サマリ・レポート、カスタム・レポート、またはヒスト グラムを表示します。図 7–39 に、Report ペインから Summary (Setup) レポートを選択した後の View ペインを示します。 Altera Corporation 2008 年 5 月 7–101 Quartus II ハンドブック Volume 3 図 7–39. Summary (Setup) レポート View ペイン : 分割 タイミング結果を適切に解析するには、複数のレポートを比較すること がきわめて重要です。複数のレポートを表示しやすいように、View ペ インではウィンドウを分割することができます。ウィンドウを分割する と、View ペインは複数のウィンドウに分かれるため、いくつかのレポー トを横に並べて表示できます。 View ペインを複数のウィンドウに分割するには、View ペインの右上隅 にある分割アイコンを使用します。このアイコンを別の方向にドラッグ すると、View ペインにウィンドウ・ビューが生成されます。例えば、分 割アイコンを左にドラッグすると、現在のウィンドウの右側に新しい ウィンドウが作成されます(図 7–40)。 図 7–40. View ペインを左に分割(左に分割する前および後) 7–102 Altera Corporation 2008 年 5 月 TimeQuest タイミング・アナライザ GUI 分割アイコンを斜めにドラッグすると、View ペインに新しい 3 つのウィ ンドウが作成されます(図 7–41)。 図 7–41. View ペインを斜めに分割(斜めに分割する前および後) 分割アイコンを下にドラッグすると、現在のウィンドウのすぐ下に新し いウィンドウが作成されます。 View ペイン : 分割したウィンドウの削除 分割アイコンを使用して View ペインに作成したウィンドウを削除する には、ウィンドウの枠線を、削除するウィンドウの上までドラッグしま す(図 7–42)。 Altera Corporation 2008 年 5 月 7–103 Quartus II ハンドブック Volume 3 図 7–42. 分割したウィンドウの削除(分割を削除する前および後) Tasks ペイン Tasks ペインを使用して、ネットリスト・セットアップやレポート生成 などの一般的なコマンドにアクセスします。 Tasks ペインには、Open Project、Set Operating Conditions、および Reset Design という一般的なコマンドがあります。ネットリスト・セッ トアップやレポート生成などの他のコマンドは、以下のフォルダにあり ます。 ■ ■ Netlist Setup Reports Tasks ペインの各コマンドには同等の Tcl コマンドがあり、コ マンドの実行時に Console ペインに表示されます。 プロジェクトのオープンと Synopsys Design Constraints ファイルの記述 Quartus II TimeQuest タイミング・アナライザでプロジェクトを開くに は、Open Project タスクをダブルクリックします。Quartus II TimeQuest タイミング・アナライザを Quartus II ソフトウェア GUI から起動する と、プロジェクトは自動的に開きます。 7–104 Altera Corporation 2008 年 5 月 TimeQuest タイミング・アナライザ GUI Quartus II TimeQuest タイミング・アナライザで初期 SDC ファイルを読 み出した後、タイミング・ネットリストに制約を追加、またはそれから 削 除 で き ま す。初 期 SDC ファイルは読み出されると、Quartus II TimeQuest タイミング・アナライザの制約よりも古くなります。Write SDC File コマンドを使用して、Quartus II TimeQuest タイミング・アナ ライザの制約の現在の状態を反映した最新の SDC ファイルを生成しま す。 Netlist Setup フォルダ Netlist Setup フォルダには、タイミング解析のためにタイミング・ネッ トリストを設定するのに使用されるタスクが含まれます。このフォルダ には、Create Timing Netlist、Read SDC File、および Update Timing Netlist の 3 つのタスクがあります。 Create Timing Netlist タスクを使用して、Quartus II TimeQuest タイミ ング・アナライザでスタティック・タイミング解析を実行する際に使用 す る ネ ッ ト リ ス ト を 作 成 し ま す。こ の ネ ッ ト リ ス ト は、Quartus II TimeQuest タイミング・アナライザで、タイミング解析のためにのみ使 用されます。 タイミング・ネットリストは、Quartus II TimeQuest タイミン グ・アナライザで解析を実行する前に必ず作成する必要があり ます。 Read SDC File コマンドを使用して、タイミング・ネットリストに制約を適 用します。デフォルトでは、Read SDC File コマンドは <current revision>.sdc ファイルを読み出します。 read_sdc コマンドを使用して、デザインの現在のリビジョン に関連付けられていない SDC ファイルを読み出します。 Update Timing Netlist コマンドを使用して、制約の入力後または SDC ファイルの読み出し後に、タイミング・ネットリストを更新します。デ ザインに制約を追加したり、それから削除する場合は、このコマンドを 使用する必要があります。 Altera Corporation 2008 年 5 月 7–105 Quartus II ハンドブック Volume 3 Reports フォルダ Reports フォルダには、スタティック・タイミング解析結果のタイミン グ・サマリ・レポートを生成するためのコマンドが含まれています。こ のフォルダ内にある 12 のコマンドを表 7–50 にまとめます。 表 7–50. Reports フォルダのコマンド レポート・タスク 説明 Report fMAX Summary デザイン内のすべてのクロックの fMAX サマリ・レポートを生成します。 Report Setup Summary デザイン内のすべてのクロックについてのクロック・セットアップ・サマリ・ レポートを生成します。 Report Hold Summary デザイン内のすべてのクロックについてのクロック・ホールド・サマリ・レポー トを生成します。 Report Recovery Summary デザイン内のすべてのクロックについてのリカバリ・サマリ・レポートを生成 します。 Report Removal Summary デザイン内のすべてのクロックについてのリムーバル・サマリ・レポートを生 成します。 Report Clocks デザイン内で作成されるすべてのクロックについてのサマリ・レポートを生成 します。 Report Clock Transfers デザイン内で検出されるすべてのクロック転送についてのサマリ・レポートを 生成します。 Report Minimum Pulse Width デザイン内のすべての最小パルス幅についてのサマリ・レポートを生成します。 Report SDC SDC ファイルから読み出す制約についてのサマリ・レポートを生成します。 Report Unconstrained Paths デザイン内の制約されていないすべてのパスについてのサマリ・レポートを生 成します。 Report Ignored Constraints デザイン用の SDC 制約のうち、無視されたすべての SDC 制約についてのサマ リ・レポートを生成します。 Report Datasheet デザインのデータシート・レポートを生成します。 Macros フォルダ Macros フォルダには、Quartus II TimeQuest タイミング・アナライザ・ ユーティリティ・パッケージで使用可能なカスタム・タスクを実行する ためのコマンドが含まれています。このようなコマンドとして、Report All Summaries、Report Top Failing Paths、および Create All Clock Histograms があります。 7–106 Altera Corporation 2008 年 5 月 TimeQuest タイミング・アナライザ GUI 表 7–51 に、Macros フォルダで使用可能なコマンドを示します。 表 7–51. Macros フォルダのコマンド マクロ・タスク 説明 Report All Summaries このコマンドは、Report Setup Summary、Report Hold Summary、Report Recovery Summary、Report Removal Summary、お よ び Minimum Pulse Width コマンドを実行して、すべてのサマリ・レポートを生成します。 Report Top Failing Paths このコマンドは、タイミング違反のあるトップ・パスのリストを含むレポート を生成します。 Create All Clock Histograms このコマンドは、Create Slack Histogram コマンドを実行して、デザイン内の すべてのクロックのクロック・ヒストグラムを生成します。 Report All I/O Timings このコマンドは、デバイス・ポートで開始または終了するすべてのタイミング・ パスのレポートを生成します。 Report All Core Timings このコマンドは、デバイス・レジスタで開始および終了するすべてのタイミン グ・パスのレポートを生成します。 Console ペイン Console ペインは、Quartus II TimeQuest タイミング・アナライザのメッ セージ・センターとしての機能と、対話型 Tcl コンソールとして機能を 持ちます。Console ペインには、Console および History という 2 つの タブがあります。Console タブには、情報メッセージや警告メッセージ など、すべてのメッセージが表示されます。また、Console タブでは、 Synopsys デザイン制約と Tcl コマンドを入力して実行することもできま す。さらに、Console タブには、Tasks ペインで実行するすべてのコマ ンドと同等の Tcl コマンドが表示されます。History タブでは、実行され る Synopsys デザイン制約と Tcl コマンドをすべて記録します。 タイミング・ネットリストの更新後に History タブのコマンド を実行するには、実行するコマンドを右クリックし、Rerun を クリックします。 Console および History タブの Tcl コマンドをコピーすると、タイミン グ解析を実行する Tcl スクリプトを簡単に生成できます。 Report ペイン Report ペインを使用して、Tasks ペインおよびカスタム・レポート・コ マンドによって生成されたすべてのレポートにアクセスします。Report ペインのレポートを選択すると、そのレポートは、View ペインのアク ティブ・ウィンドウに表示されます。 Altera Corporation 2008 年 5 月 7–107 Quartus II ハンドブック Volume 3 レポートが現在の制約と比較して古くなっている場合は、 レポー トの横に「?」アイコンが表示されます。 Constraints Constraints メニューを使用して、一般的に使用する制約、例外、および コマンドにアクセスします。このメニューには、ツールバーの Edit をク リックし、Constraint menu をクリックしてアクセスできます。 Constraints メニューでは、以下のコマンドを使用できます。 ■ ■ ■ ■ ■ ■ Create Clock Create Generated Clock Set Clock Latency Set Clock Uncertainty Set Clock Groups Remove Clock 例えば、Create Clock ダイアログ・ボックスを使用して、デザインのク ロックを作成します。図 7–43 に、Create Clock ダイアログ・ボックス を示します。 図 7–43. Create Clock ダイアログ・ボックス 以下のコマンドは、タイミング例外を指定します。これらのコマンドは、 Constraints メニューで使用できます。 ■ ■ ■ 7–108 Set False Path Set Multicycle Path Set Maximum Delay Altera Corporation 2008 年 5 月 TimeQuest タイミング・アナライザ GUI ■ Set Minimum Delay これらのコマンドからタイミング制約または例外を指定する際に使用す るダイアログ・ボックスには、必ず SDC コマンド・フィールドがあり ます。このフィールドには、OK をクリックすると実行される SDC コマ ンドが含まれます。 Quartus II TimeQuest タイミング・アナライザ・ユーザー・イ ンタフェースで作成されるコマンドと制約は、すべて Console ペインにエコーされます。 Constraints メニュー・コマンドで指定する制約は、現在の SDC ファイ ルに自動的に保存されません。制約を保存するには、Write SDC File コ マンドを実行する必要があります。 Quartus II TimeQuest タイミング・アナライザの Constraints メニューで は、以下のコマンドを使用できます。 ■ ■ ■ Generate SDC File from QSF Read SDC File Write SDC File Generate SDC File from QSF コマンドは、QSF ファイル内の Quartus II クラシック・タイミング・アナライザ制約を、Quartus II TimeQuest タ イミング・アナライザ用の SDC ファイルに変換する Tcl スクリプトを実 行します。<current revision>.sdc は、このコマンドによって作成されます。 Generate SDC File from QSF コマンドについては、「Quartus II ハンド ブ ッ ク Volume 3」の「Switching to the Quartus II TimeQuest Timing Analyzer」の章を参照してください。 Generate SDC File from QSF コマンドは、QSF ファイル内のすべての タイミング制約および例外を、同等の SDC ファイル制約に変換しよう とします。ただし、すべての QSF ファイルが SDC ファイル制約に変換 できるわけではありません。SDC ファイルの作成後はファイルを調べ て、すべての制約が正常に変換されたことを確認します。 Read SDC File コマンドは、<current revision>.sdc ファイルを読み出し ます。 Write SDC File コマンドを選択すると、Quartus II TimeQuest タイミン グ・アナライザの制約の現在の状態を反映した最新の SDC ファイルが 生成されます。 Altera Corporation 2008 年 5 月 7–109 Quartus II ハンドブック Volume 3 Name Finder Name Finder ダイアログ・ボックスを使用して、Quartus II TimeQuest タイミング・アナライザ GUI で、制約または例外のターゲットを選択し ます。Name Finder では、コレクション、フィルタ、およびフィルタ・ オプションを指定できます。Name Finder ダイアログ・ボックスの Collections フィールドには、選択する名前の種類を指定できます。種類 を選択するには、Collection リストで、以下のリストから希望のコレク ション API を選択します。 ■ ■ ■ ■ ■ ■ ■ ■ get_cells get_clocks get_keepers get_nets get_nodes get_pins get_ports get_registers 各種コレクション API について詳しくは、7–29 ページの「コレクショ ン」を参照してください。 Filter フィールドを使用すると、ワイルドカード文字の使用も含めた独 自の基準に基づいて名前をフィルタできます。以下のフィルタ・オプショ ンを使用すると、結果をさらに絞り込むことができます。 ■ ■ ■ Case-insensitive Hierarchical Compatibility mode フィルタ・オプションについて詳しくは、7–95 ページの「ワイルドカー ドの割り当てとコレクション」を参照してください。 また、Name Finder ダイアログ・ボックスには SDC command という フィールドもあり、現在選択されている名前検索コマンドが表示されま す。このフィールドの値をコピーして、別の制約ターゲットのフィール ドで使用することができます。Name Finder ダイアログ・ボックスを 図 7–44 に示します。 7–110 Altera Corporation 2008 年 5 月 TimeQuest タイミング・アナライザ GUI 図 7–44. Name Finder ダイアログ・ボックス Target ペイン TimeQuest GUI を使用する場合は、View ペインを複数のウィンドウに 分割できます。この分割機能を使用すると、View ペインに複数のレポー トを表示できます。分割後の View ペインでは、最後にアクティブになっ ていたウィンドウに新しいレポートが表示されます。この動作を変更す るには、分割されている各ウィンドウの状態を変更します。ウィンドウ の状態を変更するには、右上隅にあるターゲット・マークをクリックし ます(図 7–45)。表 7–52 に、各ウィンドウの状態を示します。 Altera Corporation 2008 年 5 月 7–111 Quartus II ハンドブック Volume 3 図 7–45. Target ペイン View Pane Window State 表 7–52. View ペインのウィンドウの状態 状態 説明 Partially Filled Red Circle アクティブ・ウィンドウに新しいレポートが表示されていることを示します。 Fully Filled Red Circle アクティブ・ウィンドウであるかどうかに関係なく、そのウィンドウに新しいレ ポートが表示されていることを示します。 Empty Circle そのウィンドウに新しいレポートが表示されていないことを示します。 アクティブ・ウィンドウの右上隅にあるターゲット・マークをクリック すると、ウィンドウの状態が変化します。 SDC エディタ TimeQuest GUI には SDC エディタもあります。SDC エディタを使用す ると、簡単かつ便利な方法で SDC ファイルを記述、編集、および表示 できます。SDC エディタはコンテキスト依存です。SDC 制約または例 外を入力すると、ツールチップが表示され制約または例外に関するオプ ションやフォーマットを示します。 メニュー・バーの Constraints メニューから Constraints ダイア ログ・ボックスを開きます。必要なすべてのパラメータを入力 すると、SDC は現在のカーソル位置に挿入されます。 7–112 Altera Corporation 2008 年 5 月 まとめ まとめ Quartus II TimeQuest タイミング・アナライザは、複雑なデザイン要件 に対応しており、直観的なユーザー・インタフェース、業界標準の制約 フォーマットのサポート、およびスクリプト機能を通じて生産性と効率 を向上させます。Quartus II TimeQuest タイミング・アナライザは、業 界標準の SDC フォーマットをサポートする次世代のタイミング解析 ツールで、設計者は複雑なタイミング制約を作成、管理、および解析し て、高度なタイミング検証を実行できます。 参考資料 この章では以下のドキュメントを参照しています。 ■ 「Quartus II ハンドブック Volume 2」の「I/O Management」の章 ■ 「SDC and TimeQuest API Reference Manual」 ■ 「Quartus II ハンドブック Volume 4」の「Volume 4: SOPC Builder」 ■ 「Quartus II ハンドブック Volume 3」の「Quartus II TimeQuest Timing Analyzer」の章 ■ 「TimeQuest Quick Start Tutorial」 Altera Corporation 2008 年 5 月 7–113 Quartus II ハンドブック Volume 3 改訂履歴 表 7–53 に、本資料の改訂履歴を示します。 表 7–53. 改訂履歴 (1 / 2) 日付および バージョン 2008 年 5 月 v8.0.0 変更内容 概要 Quartus II ソフトウェア v8.0 のための更新。以下のとおり。 Quartus II ソフ ト ウェ ア ● 見出し 「タイミング要求を指定する」を7–27ページの「Quartus II v8.0 のリリースによる大 TimeQuest タイミング・アナライザのフローに関するガイドラ 幅な更新。 イン」に変更。 ● 7–31 ページの「SDC 制約ファイル」に順序が重要であることを 示す情報を追加。 ● 7–20 ページの「メタスタビリティ」に新しい項を追加。 ● 7–23 ページの「コモン・クロック・パス・ペシミズム」に新し い項を追加。 ● 7–45 ページの「クロック・グループ」から非同期クロックに関 する情報を削除。 ● 例 7–28 の情報を更新。 ● 表 7–22 に 3 つの項目を追加。 ● 表 7–24 に情報を追加(ADoQS 10001445) 。 ● 7–83 ページの「report_rskm」に RSKM に関する情報(数式(計 算式 12)など)を追加。 ● 7–45 ページの「クロック・グループ」の項を追加。 ● 7–90ページの 「report_clock_fmax_summary」 に表 7–44を追加。 ● 表 7–46 の概要に修飾子を追加。 ● 表 7–46 にスピード・グレードの情報を追加。 ● derive_clock_uncertainty コマンドに関する情報 (7–49 ページの「クロック不確実性の自動計算」 )から [-dtw] を削 除し、 [-add] を追加。 ● 7–70 ページの「report_metastability」の項を追加。 ● 7–83 ページの 「report_rskm」に RSKM に関する新しい情報を追 加。 ● 7–98 ページの「クロス・プロービング」の項を追加。 ● 編集上の些細な変更。 ● 章全体を通して、参照資料にハイパーリンクを追加。 Quartus II ソフ ト ウェ ア 2007 年 10 月 Quartus II ソフトウェア v7.2 のための更新。以下のとおり。 v7.2.0 ● 「Compilation Flow with TimeQuest Guidelines」 、 「Timing Analysis v7.2 のための更新。 Overview」、および「Specify Design Timing Requirements」の 項の編成フローを更新。 ● Clock as Data 解析に関する新しい情報を追加。 7–114 Altera Corporation 2008 年 5 月 改訂履歴 表 7–53. 改訂履歴 (2 / 2) 日付および バージョン 変更内容 概要 2007 年 5 月 v7.1.0 Quartus II ソフ ト ウェ ア Quartus II ソフトウェア v7.1 のための更新。以下のとおり。 ● ページ 6–57 の「Timing Reports」に report_path のサポート v7.2 のための更新。 を追加。 ● report_timing 情報を追加(特にページ 6-11) 。 ● 以下の見出しの下に新しい情報を追加。 ● 「Derive Clock Uncertainty」(ページ 6–40) ● 「report_rskm」 (ページ 6–69) ● 「report_tccs」(ページ 6–69) ● 「report_path」(ページ 6–70) ● 「Fast Timing Model Analysis」の項を「Multi-Corner Analysis」に 置き換え(ページ 6–76)。 ● 7.1 に関する一般的な更新。 2007 年 3 月 v7.0.0 Quartus II ソフトウェア 7.0 のリビジョンおよび日付のみ更新。そ の他の変更はありません。 — 2006 年 11 月 Quartus II ソフトウェア v6.1 のための更新。以下のとおり。 Quartus II ソフ ト ウェ ア v6.1.0 ● 「Specifying Clock Requirements」 、 「Specifying Input and Output v6.1 のための更新。 Port Requirements」、お よび「Reporting」の 項に 新 しい 項 「Getting Started」 を追加(Create Clock および Create Generated Clock ダイアログ・ボックス / コマンドの説明を含む) 。 ● SDC エディタ ● GUI の使いやすさが向上。 ● SDC サポートの更新。 ● 章全体を通していくつかの変更。 2006 年 7 月 v6.0.1 Quartus II ソフトウェア v6.0.1 のための更新。 ● report_clock_transfers コマンドのタイポ(ページ 6-15) — 2006 年 5 月 v6.0.0 初版 — Altera Corporation 2008 年 5 月 7–115 Quartus II ハンドブック Volume 3 7–116 Altera Corporation 2008 年 5 月