こんにちは、マス男です。

今週から新企画 "タイミング解析シリーズ全6回" を連載していきます!!!

新人研修で最も難しかったのが、タイミング解析の講義でした。本コラムでは、タイミング解析の講義資料やノートをまとめ、つまずいた点をご紹介したいと思います。

Fmax ( 最大動作周波数 )

タイミング解析では、あるクロック周波数において、FPGA が正確に動作するかを検証します。

タイミング解析の指標となるのが Fmax 値 です。Fmax とは、FPGA が動作する最大周波数であり、式1 で定義されています。データが 1 クロック・サイクルの間に送信レジスターから受信レジスターに到達可能かを計算しているんですね!

図1. Fmax の定義

 

 

TDATA Delay : データ遅延時間。 回路デザインに依存する。

TCLK2 - TCLK1: クロックスキュー。 配線に依存する。

μTSU : セットアップ・タイム。 レジスターの入力クロックエッジに対してデータがあらかじめ確定・保持している必要がある時間。 デバイス固有値。

μTCO :クロック to アウトプット。 レジスターの入力クロックエッジに対してデータ出力されるまでの時間。 デバイス固有値。

 

式1 より、Fmax は "回路デザイン" と "クロックスキュー" に依存していることがわかります。

ここで、アルテラ FPGA デバイスには、クロックスキューが最小になるように調整された専用配線領域 (Global Clock , Regional Clock など) が内蔵されています。クロック信号を Global Clock に配線したとき クロックスキュー = 0 (つまり Tclk2 = Tclk1 ) となるので、式1 に値をあてはめると 式2 になります。

式2 より、Fmax は "回路デザイン" に依存することになります。

ユーザーは Fmax が期待値になるよう、設計することが求められます。

セットアップ・タイム と ホールド・タイム

正しくデータを取得するためには、クロックエッジの前後でデータが安定している必要があります (図2)。

 

セットアップ・タイム (Tsu) :クロックエッジ前にデータ (DATA) を確定しなければならない時間。

ホールド・タイム (Th) : クロックエッジ後にデータ (DATA) を保持しなければならない時間。

図2. セットアップ・タイム と ホールド・タイム

 

 

タイミング解析では、セットアップ・タイムとホールド・タイムを満たしているか 全レジスター間のパスを解析しています。

データとクロックエッジのタイミングが合わないとき、セットアップ・タイム / ホールド・タイム違反となります。





突然ですが、ここでクイズです!!

図3 の左端のクロックエッジを基準としたとき、 dataA と dataB はどちらが時間的に早い/遅いでしょうか??

図3. DATA の流れ

 

 

答えは、dataA => 遅い dataB => 早い です。

 



マス男は「データが流れる方向に dataB よりも dataA の位置が前だから、時間的にも dataA の方が早く進んでいる」と錯覚しました (←つまずいた点)。

しかし 論理回路の動きを表現する場合、時間軸は左から右に表されます。つまり、クロックエッジに対して

左側が時間軸としては早く

右側が時間軸としては遅く

 

なっています。

クロックエッジに対してデータの有効範囲を見ることがタイミング解析を理解する上でとても重要なポイントだと気づきました!!

結論としては、データ到達がクロックエッジに対して遅いときセットアップ・タイム違反で、データ到達が早いときホールド・タイム違反となります。 (図4)

図4. セットアップ・タイム違反 と ホールド・タイム違反の様子

 

 

まとめ

・ Fmax のパラメーターは “回路デザイン” に大きく影響を受ける( 式2 )。
・ クロック・エッジに対してデータ到達が遅いときセットアップ・タイム違反になる。
・ クロック・エッジに対してデータ到達が早いときホールド・タイム違反になる。

次回は タイミング解析では必ず必要な SDC ファイルついてご紹介します!