次に、基礎となる考え方とタイミング解析に欠かせないいくつかの用語を紹介します。
図2をご覧ください。送信FF(フリップ・フロップ)を出たデータは、次のクロック・エッジで受信FFに取り込まれます。そこで、データはクロックが1回変化する間に、送信FFから受信FFまで伝わらなくてはなりません。実際には、FFが確実にデータを受け取るためにはクロック・エッジの前後に余裕が必要です。これらを「セットアップ時間(Setup time)」「ホールド時間(Hold time)」と呼びます。
あるクロック・エッジで、送信FFを出たデータは、次のクロック・エッジよりセットアップ時間だけ、早く受信FFに到着する必要があります。これを確認するのが「セットアップ解析」です。また、あるクロック・エッジで、送信FFを出たデータは、同じクロック・エッジよりホールド時間だけ、遅く受信FFに到着する必要があります。これを確認するのが「ホールド解析」です。
これらの解析に使うクロック・エッジのことを「送信エッジ(Launch Edge)」「受信エッジ(Latch Edge)」と呼びます。図2の場合、セットアップ解析とホールド解析では、送信エッジと受信エッジが異なるので注意してください。
続いて、図3をご覧ください。FFのクロック・エッジの前後は、同期入力と同様にリセットなど非同期入力が変化してはいけません。この期間をそれぞれ、「リカバリー時間(Recovery time)」「リムーバル時間(Removal time)」と呼び、同期入力のセットアップ時間とホールド時間に対応します。解析もセットアップ、ホールドと同様に「リカバリー解析」「リムーバル解析」と呼びます。なお以下のセットアップに関する説明はリカバリーに、ホールドに関する説明はリムーバルにも当てはまります。
ここまでは説明を分かりやすくするために、送信FFと受信FFに同時にクロックが到達するものとして解説しました。現実の回路では、送信FFのクロックと、受信FFのクロックはまったく同時ではありません。このことを考慮するためには、両FFの共通の起点からクロックの遅延を含めてタイミングを計算する必要があります(図4)。
共通のクロック・ソースの送信エッジから送信FFを通って、受信FFにデータが到着するまでの時間を「データ到着時間(Data Arrival Time)」と呼びます。これは、送信FFまでのクロック遅延、送信FFの遅延、受信FFまでのデータ遅延の合計です。
共通のクロック・ソースの受信エッジから、受信FFにクロックが到着するまでの時間を「クロック到着時間(Clock Arrival Time)」と呼びます。セットアップ解析とホールド解析では、クロック到着時間が異なります。
セットアップ時間とホールド時間の説明から、回路を正しく動作させるには、以下の関係を満たす必要があります(式1)。
・ データ到着時間 <= クロック到着時間 − セットアップ時間
・ データ到着時間 >= クロック到着時間 + ホールド時間
詳しくいうと、この関係には“クロックの不定さ”を含める必要があります。これはクロック・ジッタや、正確にモデル化されないクロック・スキューの影響などを表します。少し複雑な内容のため、詳しくは次回以降で解説する予定です。クロックの不定さを考慮して書き直したものを式2に示します。この式2の右辺を「データ所要時間(Data Required Time)」と呼びます。セットアップとホールドのそれぞれに、データ所要時間が定義されます。
・ データ到着時間 <= クロック到着時間 − セットアップ時間 − セットアップのクロック不定値
= セットアップ・データ所要時間
・ データ到着時間 >= クロック到着時間 + ホールド時間 + ホールドのクロック不定値
= ホールド・データ所要時間
さらに式2を変形して、セットアップとホールドのそれぞれに、「スラック(Slack)」を定義します(式3)。スラックは制約に対して、実際の回路が持つタイミングのゆとりを表します。回路内のすべてのパスに対して、スラックがプラスの値になれば、その回路はタイミング条件を満たし、正しく動作します。
・ セットアップ・スラック = セットアップ・データ所要時間 − データ到着時間 >= 0
・ ホールド・スラック = データ到着時間 − ホールド・データ所要時間 >= 0
タイミング解析の結果はこれらの用語を使って表示されるので、よく理解しておく必要があります。図5にタイミング解析結果のレポートの例を示します。
Copyright © ITmedia, Inc. All Rights Reserved.