連載
» 2007年11月30日 00時00分 公開

FPGAの動作スピードを改善するポイントとは?FPGA開発テクニック、チューニングの心得(4)(1/2 ページ)

動作スピード改善のポイント「内部クロック周波数」に注目。同期パスを例にタイミング検証の考え方や確認方法を解説する。

[島田順二(アルティマ),@IT MONOist]

 これまで、「コンパイル時間を早めるには?」「集積効率のよい結果を引き出すには?」「メモリ容量やDSPブロックを減らすには?」をテーマにアルテラの開発ツール「Quartus® II」に含まれるAdvisor機能の活用方法を紹介してきました。

 今回は「動作スピードを改善するポイントは?」をテーマに、その基本的な考え方や確認方法を紹介します。

FPGAの動作スピードに関するチェックポイント

 FPGAの動作スピードを改善する場合に注目すべきポイントは、以下の2つが考えられます。

  1. 内部クロック周波数
  2. I/Oスピード

 そこで今回は、「内部クロック周波数」に注目し、“FPGAの動作スピードを改善するポイント”について詳しく見ていくことにします。

 早速ですが、図1をご覧ください。これは典型的な“同期パス”を表しています。


図1 典型的な同期パス

 内部クロック周波数「Fmax」は、DFF間の遅延値を計算することで求められます。

 DFF間の遅延値「Tp」を求める計算式は、

TpTcoTdataTsu−(Tclk2Tclk1 …… 式A 

となります。

 また、内部クロック周波数FmaxはTpの“逆数”となるので式に表すと、

Fmax1/Tp …… 式B 

となります。

 つまり、これらの式は「DFF1からDFF2までのデータ遅延」から「DFF1とDFF2の“クロック・スキュー(遅延差)”」を引いた値を求めているのです。

 これらの式で、TcoとTsuは通常デバイスの性能により固定した値になります。このためタイミングの検証をするとTdata、Tclk1、Tclk2が問題として現れてきます。

 これらの遅延値を確認するために、Quartus IIでは「TimeQuest」というタイミング解析ツールを提供しています。

 以降で、TimeQuestの機能を簡単に紹介します。

TimeQuest Timing Analyzer

 TimeQuestとは、基本的な解析から複雑な解析まで幅広く検証可能で、スクリプトによる自動実行もできる包括的なタイミング解析ツールです。

 このTimeQuestでTdata、Tclk1、Tclk2などの各種遅延値を確認することができます。

:TimeQuestに関する詳細資料は、アルティマの技術サイト「EDISON(エジソン)」に公開されています。アルティマFPGA/CPLD関連情報サイト「Alt-vista」から事前登録すれば、無料で閲覧できます。

 それでは、Quartus IIの「Tool」−「TimeQuest Timing Analyzer」からTimeQuestを起動してみましょう(図2)

図2 TimeQuestの起動メニュー画面

 TimeQuestを起動すると図3のような画面が表示されます。

図3 TimeQuestの起動画面 (画像をクリックすると拡大します)

 TimeQuestは細かい制約を設定することが可能で、多くのレポートを参照できますが、ここでは比較的簡単にタイミング解析を行える“マクロ”を使用して結果を確認してみます。

 「Tasks」ウィンドウのツリー「Macros」以下の「Report All Core Timings」をダブルクリックします。

 すると、「Report All Core Timings」の左横に(チェックマーク)が付き、処理が終了します。解析結果は図4のようになります(解析結果は、デザインにより異なります)。

図4 TimeQuestによるタイミング解析の結果例 (画像をクリックすると拡大します)

 図4の右上のウィンドウには、“希望する内部クロック周波数を満たしていないパスを遅い順に表示したもの”が赤い文字で列挙されています。

 表の項目「From Node」が図1のDFF1、「To Node」が図1のDFF2を示します。しかし、これだけではDFF1からDFF2までどのようなパスを通っているのか、つまり 式A のTdataはどのようなパスを通った結果の値なのかが分かりません。

 これを確認するためには、確認したいパスを右クリックしてショートカットメニューから「Report Timing」をクリックします。

図5 「Report Timing」の選択画面

 すると、「Report Timing」の画面が表示されます(図6)

図6 Report Timingの設定画面

 この画面で“タイミング結果を表示したいパス”に関する制約を入力するのですが、起動時に選択したパスの制約が自動的に入力されていますので、何も変更せずに[Report Timing]ボタンをクリックし、レポート結果を表示します(図7)

図7 Timing Reportによる解析結果画面 (画像をクリックすると拡大します)

 さて、この解析結果画面から何が読み取れるでしょうか? 今回は、[Data Path]タブから確認していきましょう(図8)

図8 [Data Path]タブの内容

 トータルの積算遅延値(単位はns)
 Elementに表示されている素子ごとに追加された遅延値(単位はns)
 入出力の遷移。Rは立ち上がり、Fは立ち下がり
 CELLはロジック・セル、ICは配線、uTcoはDFFの内部Tcoを表す
 ファンアウトの数
 FPGA内に配置された場所
 該当する論理素子(ロジック・セル、配線など)

 この内容から、図8の1〜2行目までがクロックの遅延値( 式A のTclk1、またはTclk2)、3〜6行目までがパスの遅延値( 式A のTco+Tdata+Tsu)ということが分かります。

 この表では「位相関係が分かりづらい!」という場合には[Waveform]タブをクリックしてみましょう。

図9 [Waveform]タブの内容

 図9の「Clock Delay」が 式A のTclk1、またはTclk2になります。さらに「Data Delay」がTdataになります。このように[Data Path]や[Waveform]タブからクロックやデータの位相差が確認できます。

 また、実際の配置がどのようになっているのかを確認するためには、再度確認したいパスを選択して右クリックし、ショートカットメニューの「Locate Endpoints」を クリックします(図10)

図10 「Locate Endpoints」の選択画面

 すると、[Locate]ダイアログが表示されます(図11)。ここでは、実際の配置を確認する方法を「Chip Planner」と「Technology Map Viewer」という2種類から選択できます。

図11 Locateの選択画面

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.