DDRでもSDRと基本的な考え方は同じです。違いは“クロックの両エッジに対して制約が必要”な点です。「set_input_delay」コマンドは、クロックの立ち上がりからの遅延を設定するので、図7の赤い矢印で示したパスを制約します。
また、DDRの場合には図7の青い矢印で示したパスの制約も必要ですので、クロックの立ち下がりからの遅延を設定します。「set_input_delay」コマンドに「-clock_fall」オプションを付けると、立ち下がりからの遅延が設定できます。両エッジに対して制約をするためには、このオプション“あり”と“なし”のコマンドを2つ並べて書きます。
さらに後から書いた設定が前の設定を上書きしないように、2つ目のコマンドには「-add_delay」オプションを付けておきます。このオプションを付けることにより2種類の制約が同時に有効になります。整理すると、DDR入力の制約には以下の4つの「set_input_delay」コマンドが必要です。
set_input_delay -max …… set_input_delay -max …… -clock_fall -add_delay set_input_delay -min …… set_input_delay -min …… -clock_fall -add_delay
設定するデータ遅延時間は、SDRのときとまったく同じです。クロックの定義も同じです。図8に示すエッジ・アラインのDDR入力制約は以下のようになります。
<最大データ遅延時間> = Tskew_max + Tdata_max − Tclk_min <最小データ遅延時間> = −Tskew_min + Tdata_min − Tclk_max
create_clock -name clkin -period <クロック周期> [get_ports CLKIN] create_clock -name vclk -period <クロック周期> set_input_delay -clock vclk -max <最大データ遅延時間> [get_ports DATAIN] set_input_delay -clock vclk -max <最大データ遅延時間> [get_ports DATAIN] \ -clock_fall -add_delay set_input_delay -clock vclk -min <最小データ遅延時間> [get_ports DATAIN] set_input_delay -clock vclk -min <最小データ遅延時間> [get_ports DATAIN] \ -clock_fall -add_delay
センター・アラインのDDR入力制約も、SDRと同じなので説明は不要と思います。図9に示す外部タイミング・スペックの場合、以下のようになります。
<最大データ遅延時間> = Tco_max + Tdata_max − Tclk_min <最小データ遅延時間> = Tco_min + Tdata_min − Tclk_max
create_clock -name clkin -period <クロック周期> [get_ports CLKIN] create_clock -name vclk -period <クロック周期> set_input_delay -clock vclk -max <最大データ遅延時間> [get_ports DATAIN] set_input_delay -clock vclk -max <最大データ遅延時間> [get_ports DATAIN] \ -clock_fall -add_delay set_input_delay -clock vclk -min <最小データ遅延時間> [get_ports DATAIN] set_input_delay -clock vclk -min <最小データ遅延時間> [get_ports DATAIN] \ -clock_fall -add_delay
Copyright © ITmedia, Inc. All Rights Reserved.