解析ツールは、回路データとクロック定義から、内部パスのスラックを算出します。これに対して、入力回路は送信FFがないため、それだけではスラックの算出ができません。出力回路も同様です。そこで、周辺デバイスを含むシステム・レベルでタイミングを考えることにします。図6のように仮想的に周辺デバイス内のFFを考えると、I/OもFPGA内部と同じ考え方で、セットアップ解析とホールド解析が行えます。
入力回路に対する制約は、送信デバイスとボードの遅延を設定します。つまりFPGAの入力ポートにデータが到着する時間です。セットアップ解析のために最大値を、ホールド解析のために最小値を指定します。この値はタイミング解析では、追加のデータ到達時間として扱われます。これを最大・最小入力遅延として表すと、スラックの式3は以下のようになります(式4)。
・ セットアップ・スラック = セットアップ・データ所要時間 − (データ到着時間 + 最大入力遅延)
・ ホールド・スラック = (データ到着時間 + 最小入力遅延) − ホールド・データ所要時間
出力回路に対する制約として、FPGAの出力ポートを出てからの必要となる時間を設定します。やはりセットアップ解析のために最大値を、ホールド解析のために最小値を指定します。この値はタイミング解析では、データ所要時間の一部として扱われます。これを最大・最小出力遅延として表すと、スラックの式3は以下のようになります(式5)。
・ セットアップ・スラック = (セットアップ・データ所要時間 − 最大出力遅延) − データ到着時間
・ ホールド・スラック = データ到着時間 − (ホールド・データ所要時間 − 最小出力遅延)
半導体デバイスは、プロセス(製造のばらつき)、電圧、温度によって、回路の遅延が変動します。この3つの組み合わせを、「デバイスの動作条件」と呼びます。電圧が高いほど、温度が低いほど、遅延は小さくなり、高速で動作します。最も高速の動作条件を「Fast corner」、最も低速の動作条件を「Slow corner」といいます。タイミングの解析は、少なくともこの2つの動作条件で行います。
開発ツールは、ゲート(AND、OR、FPGAのルックアップ・テーブル)や配線の遅延情報、FFやRAMのパラメータを、動作条件の数だけライブラリとして持ちます。これを「タイミング・モデル」といいます。
“少なくとも2つの動作条件”と書いたのは、デバイス(FPGA)ベンダによって考え方が異なるためです。一般的には、Fast/Slowの2つで、すべての条件をカバーできるように、タイミング・モデルに余裕(ガードバンド)を持たせます。動作条件を追加すれば、より正確な解析ができるため、2つ以上の動作条件を使う場合もあります。例えば、アルテラ社のFPGAの場合、90nmまでのFPGAは2つの動作条件ですが、65nm以降のFPGAは3つの動作条件でタイミングを解析します。
では、Slow cornerの解析をする場合、回路のすべてのパスが最も遅い場合だけを考慮すればよいのでしょうか?
残念ながら、これは正解ではありません。「チップ内ばらつき(On die variation)」の考慮が足りないためです。回路のすべての部分が最も遅く動作するデバイスよりも、チップ内のばらつきにより、ある部分だけが少しだけ速く動作するデバイスの方が、タイミングが厳しくなることがあります。
式3から、セットアップ・スラックが最小、つまり、タイミングが最も厳しいのは、データ到着時間が最も遅く、データ所要時間がチップ内ばらつき分だけ早い場合です。つまり、セットアップ解析はこの場合について行うのが正解になります。このような解析を「Min/Max解析」と呼びます。
チップ内ばらつきの扱いも、FPGAベンダによって考え方が異なります。Min/Max解析を行う場合と、Min/Max解析は行わずに、モデルのガードバンドを増やすだけで済ませる場合があります。Min/Max解析のためには、ツールに複雑な計算を行わせる必要がありますが、その結果はより正確なものとなります。図7にチップ内ばらつきの概念を図式的に表します。
ASIC用のタイミング解析ツールでは、信号が立ち上がるときと、立ち下がるときの遅延を別々に計算するのが一般的です。このような解析の仕方を「Rise/Fall解析」と呼びます。FPGA用のツールでは、Rise/Fall解析をするものと、しないものがあります。この違いは何でしょうか?
Rise/Fall解析をするツールのタイミング・モデルにおいて、各ゲートは以下の表1に示すように、2つまたは4つの遅延パラメータを持ちます。RF遅延とは、ゲートの入力に立ち上がり(Rise)信号が入って、立ち下がり(Fall)が出力される場合の遅延という意味です。そのほかも同様です。
RR、FF遅延 | ANDやORなど正論理のゲート |
---|---|
RF、FR遅延 | NANDやNORなど負論理のゲート |
RR、FF、RF、FR遅延 | XORなどのゲート |
表1 各ゲートの遅延パラメータ |
それでは図8に示す回路を考えてみましょう。
Rise/Fallを考慮しない場合 (常に遅い方を選択) |
100ps | 100ps | 120ps | 140ps | 460ps |
---|---|---|---|---|---|
Rise/Fallを考慮しない場合 (常に速い方を選択) |
90ps | 80ps | 110ps | 120ps | 400ps |
Rise/Fallを考慮する場合 (Rise信号が伝わる場合) |
100ps(RR) | 80ps(RF) | 120ps(FF) | 140ps(FF) | 440ps |
↑ | ↑ | ↑ | 120ps(FR) | 420ps | |
Rise/Fallを考慮する場合 (Fall信号が伝わる場合) |
90ps(FF) | 100ps(FR) | 110ps(RR) | 120ps(RR) | 420ps |
↑ | ↑ | ↑ | 130ps(RF) | 430ps | |
図8 Rise/Fall解析 |
Rise/Fall解析をしない場合、このFF間のパスの合計遅延は2種類考えることができ、最大値は460ps、最小値は400psです。一方、Rise/Fall解析をする場合は、4種類の合計遅延を考えることになり、最大値は440ps、最小値は420psです。Rise/Fall解析の方が最大値が小さく、最小値が大きくなっています。Rise/Fall解析をすると、遅延を正確に計算し、不要なマージンを削減できるため、回路のタイミング解析結果に余裕が生じるのです。
今回はSDCフォーマットの紹介と、タイミング解析の基本的な考え方の説明をしました。次回以降の連載では、さまざまな回路を題材に、SDCフォーマットによるタイミング制約とタイミング解析の方法を解説していきます。お楽しみに!(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.