01signal.com

Quartus のタイミングクロージャ (timing closure): 簡潔なマルチコーナーのタイミングパスレポートを取得する

はじめに

FPGA 設計がタイミング制約 (timing constraints) を満たせない場合、まずクリティカルパス (critical path) をじっくり調べたくなるでしょう。そのために使うのが、各パス (path) 上にあるさまざまなロジック素子の遅延を示すタイミングレポートです。

Intel の FPGA をあまり使い込んでいないと、このレポートの出し方がすぐには分からないかもしれません。さらに悪いことに、知らないうちに間違ったレポートを見ている可能性もあります。

まず押さえておきたいのは、マルチコーナータイミング解析の考え方です。FPGA のタイミング検証では、タイミング制約を 4 つのケースで満たすことを確認するのが一般的です。最低/最高温度と、「スロー (slow)」「ファスト (fast)」のタイミングモデルの組み合わせです。つまり、4 つの組み合わせ、いわゆる 4 つのコーナーで解析が行われるわけです。

ですから、クリティカルパスを調べるときには、4 つのコーナーすべてのタイミングレポートを確認することが大切です。この点は見落とされがちです。たとえば TimeQuest は通常、1 つのコーナーについてだけタイミングレポートを作成します。

そこで、この記事では、意味のあるレポートを取得する方法を説明します。例は Quartus Prime 17.1 Lite を基にしています。

関連する記事を 2 つ紹介しておきます。1 つは、入出力制約とタイミングレポートの関係を解説した記事、もう 1 つは TimeQuest で Tcl スクリプト (script) をちょっと試してみた記事です。

重要: このページでは、セットアップの要件を確認するタイミングレポートの取得方法を説明します。ただし、ホールド (hold)、リカバリ (recovery)、リムーバル (removal) の各タイミングレポートも生成できます。これらのレポートでも、タイミング制約を満たしていないことが明らかになる場合があります。

マルチコーナーレポートの作成: スクリプト (script) で手早く

まず、次の Tcl スクリプトを、たとえば timing.tcl というファイルに保存します。

create_timing_netlist
read_sdc
update_timing_netlist

foreach_in_collection op [get_available_operating_conditions] {
  set_operating_conditions $op

  report_timing -setup -npaths 20 -detail full_path -multi_corner \
    -panel_name "Critical paths"
}

タイミングレポートがセットアップのみに限定されていることに注意してください。

「multi_corner」フラグに惑わされないでください。report_timing の 1 回の呼び出しは、1 つのコーナーだけを対象にしています。このフラグが実際に何かを変えるのかどうかは、はっきりしません。

そこで、上のスクリプトは foreach_in_collection で 4 つすべての動作条件をループし、コーナーごとに個別のレポートを生成しています。

それでは、実際にやってみましょう。

同じエントリ内に、コーナーごとのレポートも 4 つ表示されます。Quartus の古いバージョンでは、このコーナー別レポートしか表示されません (つまり、Multi-Corner Summary はありません)。

HTML / テキストレポートのみを生成する

Quartus のツールは見やすい HTML レポートを生成できます。TimeQuest の GUI で見るよりずっと読みやすいでしょう。ただし残念ながら、それぞれのレポートは 1 つのコーナーしかカバーしていません。次のスクリプトは、4 つのコーナーそれぞれについて別々の HTML レポートを生成します (生成されるファイルは、JQuery スクリプトや CSS など、たくさんあります。見た目は豪華ですが、マルチコーナーレポートではありません)。

次のスクリプトを timing-html.tcl として保存してみてください。

#project_open myproj
create_timing_netlist
read_sdc
update_timing_netlist

foreach_in_collection op [get_available_operating_conditions] {
  set_operating_conditions $op

  report_timing -setup -npaths 20 -detail full_path -multi_corner \
    -file "timing_paths_$op.html" \
    -panel_name "Critical paths for $op"
}

テキスト形式のレポートが必要な場合は、-file オプションの引数を変更し、拡張子を「.html」の代わりに「.rpt」または「.txt」にします。

スクリプト先頭でコメントアウトしてある project_open コマンドに注目してください。このコメントを解除し、「myproj」を実際のプロジェクト名に置き換えれば、シェルのコマンドラインから次のようにして HTML レポートを生成できます。

$ /path/to/quartus/bin/quartus_sta -t timing-html.tcl

ただし、この方法でマルチコーナーレポートを生成する方法は見つけられていません。

コンパイルのたびにこれらのレポートを自動生成したい場合 (推奨します)、QSF ファイルに次のような行を追加します。

set_global_assignment -name TIMEQUEST_REPORT_SCRIPT relative/path/to/timing-html.tcl

QSF ファイルに Tcl スクリプトをこのように組み込んだときは、スクリプト内で project_open を使わないようにしてください。

GUI だけを使う方法

クリック操作だけでもマルチコーナーレポートを取得できます。

このページは英語から機械翻訳されたものです。不明な点があれば、原文を参照してください。
Copyright © 2021-2026. All rights reserved. (dcc38493)