今回はI/Oタイミングの制約について解説する。まずは共通クロック・インターフェイスの制約について押さえよう。
前回は、SDCによる具体的な制約記述として、クロックの制約方法について解説をしました。今回は、I/Oタイミングの制約について解説します。
FPGAなどのデバイス間のインターフェイス方法として、さまざまなプロトコルが規定されています。タイミングという観点で見ると、これらのインターフェイス方式は3つのタイプに分類できます(図1)。
大切なのは、与えられた設計条件から、I/Oのタイミング制約を正しく導き出すことです。普通は、周辺デバイスなど、FPGA外部のACスペックが先に決まっているので、これが設計条件として与えられます。逆にFPGA自体のACスペックが設計条件となる場合もあります。
どちらかを理解できれば、もう一方へは変換するだけですから、それほど難しくありません。I/Oのタイミング制約は周辺デバイスを含むシステムで考えます。FPGA外部のACスペックからの方が考えやすいので、最初にその場合について説明をします。続いて、FPGAのスペックを基にした場合について考えていきます。
まず、FPGA外部のACスペックが決まっている場合の、入力制約の考え方です。
入力制約には、「set_input_delay」というコマンドを使います。このコマンドは、FPGAの入力ポートでのデータの到着時間を制約します。次のように、最大と最小の制約をセットで使います。
set_input_delay -clock vclk -max <最大データ遅延時間> [get_ports DATAIN] set_input_delay -clock vclk -min <最小データ遅延時間> [get_ports DATAIN]
ここではデータ遅延時間の値をどのように決めるかが問題です。FPGA外部のACスペックは、図2に示すとおりです。送信デバイスの出力遅延(Tco)、データの伝搬遅延(Tdata)、送信デバイスへのクロックの伝搬遅延(Tclk1)、ターゲットFPGAへのクロックの伝搬遅延(Tclk2)が分かっています。
データ遅延時間は、FPGAの入力ポートで、送信デバイスのクロックに対して定義します。送信デバイスのクロックは、FPGA内にはないので仮想クロックとして定義しておきます。図2のタイムチャートから分かるように、次の式のようになります。
<データ遅延時間> = Tco + Tdata + Tclk1 - Tclk2
これを最大と最小の場合に分ければ完成です。区別のために、それぞれの最大値には「_max」、最小値には「_min」を付けることにすると、次のようになります。最後の項はマイナスのため、最大と最小が入れ替わっているので注意してください。
<最大データ遅延時間> = Tco_max + Tdata_max + Tclk1_max - Tclk2_min <最小データ遅延時間> = Tco_min + Tdata_min + Tclk1_min - Tclk2_max
具体的な数値例を入れると、図2の回路に対する制約は次のようになります。2行目はFPGAへの入力クロックと、それと同じ周波数、位相の仮想クロックを定義しています。これは送信デバイスのクロックと考えることができ、このクロックを基準に入力の制約を与えています。
create_clock -name clkin -period 10 [get_ports CLKIN] create_clock -name vclk -period 10 set_input_delay -clock vclk -max 5 [get_ports DATAIN] set_input_delay -clock vclk -min 2 [get_ports DATAIN]
Copyright © ITmedia, Inc. All Rights Reserved.