共通クロック・インターフェイスの制約を学ぶ必修! FPGAタイミング解析の基礎(3)(3/3 ページ)

» 2009年01月09日 00時00分 公開
[小原成介(日本アルテラ),@IT MONOist]
前のページへ 1|2|3       

クロック入力が複数の場合

 次は少し応用的な場合を考えてみましょう。FPGAに複数のクロックが入力されていて、それぞれに対して、異なるセットアップとホールド時間が定義されている場合です。

 図6に示す回路は、CLKIN1とCLKIN2の2つのクロックが入力され、FPGA内で切り替えることができます。周波数は100MHzと125MHzとします。DATAINはCLKIN1または、CLKIN2に同期したデータ入力です。セットアップとホールド時間が、2つのクロックに対して異なる値となっています。この回路に対する正しいタイミング制約はどのようなものでしょうか?


回路例
クロック周波数 クロック周期 DATAIN
セットアップ時間
DATAIN
ホールド時間
CLKIN1 100Hz 10ns 2.5ns 1.0ns
CLKIN2 125Hz 8ns 3.0ns 0.5ns
図6 回路例

 まず、クロックを定義することから始めます。FPGAの入力クロックと、それに対応する仮想クロックを定義します。クロックがマルチプレクスされている場合は、「set_clock_group」コマンドを使って、排他関係にあることを示す必要がありました(分かりにくい場合は、第2回を読み直してみてください)。

create_clock -name clkin1 -period 10 [get_ports CLKIN1]
create_clock -name vclk1 -period 10
 
 
create_clock -name clkin2 -period 8 [get_ports CLKIN2]
create_clock -name vclk2 -period 8
 
 
set_clock_groups -exclusive -group {clkin1 vclk1} -group {clkin2 vclk2} 

 次に、「FPGAスペックが決まっている場合の入力制約」の考え方を使って、CLKIN1に対して入力のタイミング制約を行います。次のように [] 内で「expr 数式」と書くと、数式の計算結果を書いたのと同じ意味になります。

set_input_delay -clock vclk1 -max [expr 10.0 - 2.5] [get_ports DATAIN]
set_input_delay -clock vclk1 -min 1.0 [get_ports DATAIN] 

 同じように、CLKIN2に対して入力のタイミング制約を行います。CLKIN1の場合とほとんど同じですが、「-add_delay」オプションが必要になります。このオプションは、上で与えた制約を置き換えずに、新たに制約を追加することを意味します。

set_input_delay -clock vclk2 -max [expr 8.0 - 3.0] [get_ports DATAIN] -add_delay
set_input_delay -clock vclk2 -min 0.5 [get_ports DATAIN] -add_delay 

 このように、2種類のクロックとそれらに対する入力制約を同時に指定することができます。FPGAの開発ツールは両方の制約を満たすように、論理合成や配置配線を行います。また、両方の制約に対するタイミング解析が行われます。

SDC文法のまとめ

 今回の解説の中で使用したSDCコマンドの文法を簡単にまとめておきます。

sdc


 次回は、ソース・シンクロナス方式のインターフェイスのタイミング制約方法を解説します。(次回に続く)


関連キーワード

FPGA関連 | 回路 | FPGA | 設計 | ASIC | 半導体


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.