序章
FPGA design が timing constraintsを実現できなかった場合、 critical pathsを慎重に検討するのが当然のことです。この検査は、 pathごとにさまざまな logic elements によって引き起こされる delays を示す timing report で行われます。
Intelの FPGAsのヘビー ユーザーでない場合、このレポートを取得する方法を理解するのは簡単ではないかもしれません。さらに悪いことに、無意識のうちに間違ったレポートを参照している可能性があります。
最初に整理したのは、 multi-corner timing analysisのコンセプトです。 timing constraints が 4 つのケースで達成されることを確認することによって、 FPGAの timing の有効性を検証するのが一般的な方法です。 「遅い」および「速い」タイミングモデルと組み合わせた最小温度と最大温度。したがって、分析は 4 つの組み合わせ、またはそれらが参照されるように、 4 つの cornersに対して行われます。
したがって、 critical pathsを調べるときは、4 つの corners すべてで timing reports を確認することが重要です。この事実は見過ごされがちです。たとえば、TimeQuest は通常、1 つの cornerに対して timing report を生成します。
したがって、この投稿では、意味のあるレポートを取得する方法について説明します。例は Quartus Prime 17.1 Liteに関するものです。
関連する他の 2 つの投稿について言及する必要があります。 1 つは input / output constraints と timing reportの関係を考察する投稿、もう 1 つは TimeQuest上の Tcl scripting を少し実験する投稿です。
重要:このページでは、 setup 要件の timing report を取得する方法について説明します。ただし、 hold、 recovery 、 removalを生成する timing reports もあります。これらは、 timing constraintsを達成するための失敗を明らかにすることもできます。
multi-corner reportの作成: scriptsを使って素早く
まず、次の Tcl script を 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"
}
timing report は setupのみに限定されていることに注意してください。
"multi_corner" フラグに惑わされないでください: report_timing への各呼び出しは、1 つの cornerをカバーします。このフラグが何かをするかどうかは明らかではありません。
そのため、 script には 4 つのオプションすべて ( foreach_in_collectionを使用) に loop があり、 cornerごとに個別のレポートが生成されます。
今すぐ行動する:
- Quartusで、 Task paneの TimeQuest グループを展開し、 TimeQuest Timing Analyzerを開きます。
- TimeQuest Timing Analyzerでは、 menu barから Script > Run Tcl Script… を選択し、 Tcl script (例: timing.tcl) を選択します。
- TimeQuest Timing Analyzerの Report paneに「Critical paths」というエントリが追加されます。 Multi-Corner Summaryをクリックします。 paths とその詳細のリストがメインの panesに表示されるようになりました。
- paths に関するすべての情報をテキスト ファイルにエクスポートするには、 Multi-Corner Summaryを右クリックし、[Export…] を選択します。 .rpt サフィックスを持つ出力ファイルの名前を選択します。 HTML reports はサポートされていません (空になります)。
cornerごとに 1 つずつ、同じエントリに 4 つの個別のレポートもあります。 Quartusの以前のバージョンでは、これらのみが表示されます (つまり、 Multi-Corner Summaryは表示されません)。
HTML/テキスト レポートのみを生成する
ツールはきちんとした HTML reportsを生成できます。これは、 TimeQuest自体の GUIよりもかなり読みやすいものです。しかし残念ながら、これらのレポートはそれぞれ 1 つの corner しかカバーしていません。この script は、 corner ごとに 1 つずつ、合計 4 つの個別の HTML reportsを生成します (これは、多数のファイル、 JQuery script ファイル、 CSS などです。ベルとホイッスルですが、 multi-corner reportではありません)。
次の script を 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 にします。
scriptの上部でコメントアウトされている「project_open」コマンドに注意してください。コメントを外して "myproj" を実際のプロジェクト名に置き換えると、プレーンな shell command line を使用して HTML reports を次のように生成できます。
$ /path/to/quartus/bin/quartus_sta -t timing-html.tcl
ただし、このような multi-corner report を生成する方法は見つかりませんでした。
これらのレポートを各 implementation で生成するには (推奨)、次のような行を QSF ファイルに追加します。
set_global_assignment -name TIMEQUEST_REPORT_SCRIPT relative/path/to/timing-html.tcl
このように QSF ファイルに Tcl script が含まれている場合、 script は project_openを使用すべきではありません。
GUIのみ使用
multi-corner report は、ポイントしてクリックするだけで取得できます。
- Quartusで、 Task paneの TimeQuest グループを展開し、 TimeQuest Timing Analyzerを開きます。
- Timing Analyzerの Tasks pane内で、「Update Timing Netlist」をダブルクリックします。
- 同じ paneで、「Custom Reports」までスクロールし、「Report Timing…」をダブルクリックします。
- dialog box が開かれます。 setup、 hold、 recovery 、または removalを選択します。それ以外はデフォルトのままで、下の「Report Timing」をクリックしてください。
- Report paneでは、「Report Timing」というエントリが追加されます。このエントリを展開して右クリックします。開いたメニューで、「Generate in All Corners」をクリックします。
- 「Multi Corner Summary」グループをクリックします。上記のようにレポートをエクスポートできます。