はじめに
シンプルなデザインにタイミング制約を設定し、Timing Analyzer で Fmax、 Report Timing のタイミング解析をしてみましょう。
また、コンパイルをし直すことなく SDC を変更して解析する方法も紹介します。
今回使用するデザインはページ下部より、ダウンロードいただけます。
1. システムとRTL
下図はタイミング解析するためのシステムと RTLのイメージです。
:ボード遅延は一切考慮しません。
2. HDL とタイミング制約
RTL を記述した HDL と SDC です。
SDC についての詳細は下記資料で
資料:2.4. Timing Constraint Descriptions
タイミング制約の方法についての詳細は下記記事で
参考:Quartus® はじめてガイド - タイミング制約の方法
3. SDC ファイルの登録
Assignmentメニュー>Settings の下記画面で作成した ユーザー SDC ファイルと IP が生成した .ip ファイルを登録します。
ポイント:登録したファイルは上から順にロードされますので、ユーザー SDC は一番下に登録することが推奨です。
このページの詳細は下記資料と記事で
資料:2.2.1. Step 1: Specify General Timing Analyzer Settings
参考:Quartus® Prime 開発ソフトウェアに登録する SDC ファイルが複数ある場合の登録順序
4. コンパイルと RTL Analyzer での構成確認
コンパイルを実施すると、RTL Analyzer が確認できるようになり、Timing Analyzer での解析が有効になります。
RTL Analyzer では下図のように HDL をブロックとしてデザインを確認できます。
(Tools → Netlist Viewers → RTL Analyzer (Elaborated))
参考:1.2.2. Analyzing Design RTL
5. Timing Analyzer で Reportを確認
コンパイル後に自動で起動される Timing Analyzer で 各種 Timing Summary が表示されます。
資料:2.5.23. Design Closure Summary
ここから具体的な Report を出してみましょう。
Tasks ペインの Clocks フォルダ > Report Clocks をクリックすると、現在定義されているクロック制約が確認できます。
資料:2.5.6. Report Clocks and Clock Network
①:ユーザー SDC で制約された定義
②:PLL を生成時に自動生成される.ipファイルで定義されるクロック定義
CLOCK_IN の Port からの入力クロックの定義は赤枠の”PLL0|iopll_0_refclk”の名前で自動的に定義されています。
次に、Tasks ペインの Datasheet フォルダ > Report Fmax Summary で Fmax が確認できます。
次に、Report ペインにある Setup Summary を確認してみます。(Setup Summary はデフォルトで解析されます)
PLL の c1 クロックでタイミングエラーがありますので、詳細を解析するために Report Timing にクロスプロービングします。
エラーが出ているクロック名を右クリックし、Report Timing をクリックして OK をクリック
Report Timing が表示されます。
今回のエラーは、DATA2_IN(入力ポート)->din2_reg(初段FF)のエラーで、送信デバイスを駆動している CLOCK_IN(100MHz) と PLL 出力の c1(150MHz) の異なるクロック間のエラーで、送信デバイスのデータレートが 50Mbps 以下と非常に遅いことから、システム仕様として1st edge 以降のラッチでも可能とすることとします。
次のステップで、クロック間にマルチサイクルの SDC を追加し、コンパイルし直さずに解析する手順を紹介します。
6. タイミング制約変更の反復
タイミング制約を変更したとき、どのように反映されたのかコンパイルし直さずにすぐに確認したいときに便利な機能を紹介します。
SDC を変更するためにエラー箇所を右クリックし、Set Multicycle (Between clocks) をクリックし、Value に2 を入力して SDC Command をコピーし、Cancel で閉じます。
コピーした SDC を ユーザー SDC(SDC1.sdc) に追加し、更に、SDC をコピーして編集し、-hold の SDC も追加して上書き保存
すると、ファイル名のタブにある”*”(アスタリスク)が消えます。
Timing Analyzer に戻って、Console ペインに表示されている、Report Timing のコマンドをコピーしておきます。
Tasks ペインで、Reset Design をクリックすると、Read SDC と Update Timing Netlist が緑色から黒色になり、緑色のチェックマークが消えるので、Update Timing Netlist をクリックします。これで最新の SDC が前回コンパイル後の Timing Netlist に反映されている状態になりました。
資料:2.3.4. Iteratively Modifying Constraints
コピーしておいた Report Timing のコマンドを Console ペインにペーストしてリターンで編集前の SDC で解析していた Report Timing と同じ Report を表示させることができ、編集した SDC がユーザー仕様を正しく指示できているかを確認します。
今回は、Multicycle 制約を追加したので、ラッチエッジが 1 クロック分緩和される制約が仕様通りに反映していることが確認できます。
ポイント:コンパイルをし直すと新しい制約が考慮された論理合成と配置配線の結果が確認できるようになります。
おわりに
Timing Analyzer では様々な Report を確認することができます。
紹介した Report 以外の Report も是非確認してみてください!
おすすめ記事/資料はこちら
- タイミング関連の記事リスト
- 2. Using the Quartus® Prime Timing Analyzer
- Agilex™ 3 FPGA Application Design Guided Journey | Altera
添付ファイル
この記事で使用した サンプルプロジェクトのアーカイブです。
・Quartus Pime Pro Edition v25.1
「Agilex™ 3 でやってみた」シリーズ一覧はこちら