AR# 2586

14.x タイミング/制約、Virtex-4 以降および Spartan-3 以降 - PLL/DCM/MMCM タイミング制約処理方法

説明


DLL/DCM タップのパスを制約する際に影響する既知の問題を教えてください。また、Timing Analyzer では DLL/DCM/PLL の制約およびタップはどのように処理されますか。

注記 : 詳細は (ザイリンクス アンサー 6905) を参照してください。DCM にも DLL と似たタップがあります。

ソリューション


CLKDLL の資料
CLKDLL インプリメンテーションの詳細は、次の資料を参照してください。
- (ザイリンクス XAPP132) : 「Using the Virtex Delay-Locked Loop」
- ライブラリ ガイド

タイミング制約
タイミング制約 CLKDLL には、高速デジタル デザインで利用できる多くの機能があります。これらの機能に加え、ザイリンクスのツール セットを使用すると、タイミングに基づいた配置配線を実行できます。タイミング ツールでは、PERIOD、OFFSET、FROM TO などのタイミング制約を使用します。このアンサーでは、これらの制約について説明します。

図 1 はCLKDLL のインプリメンテーション例です。
図 1 : Onesy および Two Time 出力を持つ CLKDLL インプリメンテーション例
図 1 : Onesy および Two Time 出力を持つ CLKDLL インプリメンテーション例


PERIOD PERIOD 制約を DLL に適用するには、次の方法を使用します (図 2 を参照)。
1.
パッド ネット名を使用する方法 (望ましい) :

NET "PADCLKIN" TNM_NET = "PADCLKIN";
TIMESPEC TS_PADCLKIN = PERIOD "PADCLKIN" 30 ns;

2. DLL 出力ネット名を使用する方法 :

NET "ZERO" PERIOD = 30 ns;
または
NET "ZERO" TNM_NET = "ZERO";
TIMESPEC TS_ZERO = PERIOD "ZERO" 30 ns;

図 2 : Zero および Ninety 出力を持つ CLKDLL インプリメンテーション例
図 2 : Zero および Ninety 出力を持つ CLKDLL インプリメンテーション例


ザイリンクスでは、TIMESPEC を使用するパッド ネット名を使用した方法を推奨します。この方法を使用して DLL への入力を制約した場合、NGDBuild により DLL の出力クロックの制約が記述されます。これらの制約は、入力クロックに周波数と位相で関連付けられています。出力クロックと入力クロックが関連付けられているため、Timing Analyzer によってクロック ドメイン間が自動的に解析されます。


DLL の CLK2X 出力を使用し、DLL 入力に TIMESPEC 制約を設定する例です。

DLL 入力に設定したクロック制約 (UCF) :
NET "PADCLKIN" TNM_NET = "PADCLKIN";
TIMESPEC "TS_PADCLKIN" = PERIOD "PADCLKIN" 20 ns HIGH 50 %;

NGDBuild により生成された DLL 出力の制約 :
TS_clk2x = PERIOD TIMEGRP "clk2x" TS_PADCLKIN / 2.000000 HIGH 50.000 % ;


DLL の CLKDV 出力を使用し、DLL 入力に TIMESPEC 制約を設定する例です。

DLL 入力に設定したクロック制約 (UCF) :
NET "PADCLKIN" TNM_NET = "PADCLKIN";
TIMESPEC "TS_PADCLKIN" = PERIOD "PADCLKIN" 20 ns HIGH 50 %;

NGDBuild により生成された DLL 出力の制約 :
TS_clkdv = PERIOD TIMEGRP "clkdv" TS_PADCLKIN * 2.500000 HIGH 50.000 % ;

CLKDLL のすべての 1X クロック出力は、デフォルトでデューティ サイクルが 50/50 となるよう調整されます。この機能は、DUTY_CYCLE_CORRECTION プロパティ (デフォルトは TRUE) で制御します。DLL 出力に基づく PERIOD 制約を作成する場合に考慮してください。DUTY_CYCLE_CORRECTION 属性は常に TRUE に設定することをお勧めします。この属性を FALSE に設定しても、出力クロックのデューティ サイクルがソース クロックのものと同じになるとは限りません。


デューティ サイクルを変更した例です。

元の制約 : NET "ZERO" PERIOD = 30 ns HIGH 7 ns;
変更後の制約 : NET "ZERO" PERIOD = 30 ns HIGH 15 ns;

変更された制約では、デューティ サイクルが調整されます。デューティ サイクルは、2X 出力および DV 出力でも調整されます。この調整は、プロパティでは制御できません。

注記 : PERIOD および CLKDLL の詳細は、(ザイリンクス アンサー 6905) を参照してください。

PAD-to-SETUP (OFFSET IN BEFORE)
pad-to-setup 要件を作成する場合、位相または PERIOD 調整を考慮して OFFSET IN 制約の値を指定する必要があります。次の例では、図 3 の回路図を参照してください。20ns の PERIOD 制約を設定した DLL の CLK90 ピンからネットでレジスタにクロックを供給する場合、OFFSET 値は 5ns を足して調整する必要があります。

元の制約 : NET "PAD_IN" OFFSET = IN 10 BEFORE "PADCLKIN";
変更後の制約 : NET "PAD_IN" OFFSET = IN 15 BEFORE "PADCLKIN";

注記 : OFFSET 制約に必要なクロック ネット名は、IPAD に付けられたクロック ネット名です。この例の場合は、CLK90 ではなく、PADCLKIN です。CLK ネットワークについては、図 2 を参照してください。

図 3 : OFFSET IN および OFFSET OUT 制約の回路図
図 3 : OFFSET IN および OFFSET OUT 制約の回路図


CLOCK to PAD (OFFSET OUT AFTER)
clock-to-pad 要件を作成する場合、位相または PERIOD 調整を考慮して OFFSET OUT 制約の値を指定する必要があります。次の例では、図 3 の回路図を参照してください。20ns の PERIOD 制約を設定した DLL の CLK90 ピンからネットでレジスタにクロックを供給する場合、OFFSET 値は元の制約から 5ns 引いて調整する必要があります。

元の制約 : NET "PAD_OUT" OFFSET = OUT 15 AFTER "PADCLKIN";
変更後の制約 : NET "PAD_OUT" OFFSET = OUT 10 AFTER "PADCLKIN";

複数のクロック ドメインの FROM:TO
複数のクロック ドメインでの FROM TO PERIOD 制約を使用する場合、複数のクロック ドメイン間のパスに正しく制約を設定する必要があります。図 4 は、クロック ドメイン間のパスを示します。

図 4 : クロック ドメイン間のデータ パスの回路図
図 4 : クロック ドメイン間のデータ パスの回路図


PERIOD 制約が DLL の CLK90 および CLK0 出力ピンに適用された場合、CLK0 の PERIOD 制約がフリップフロップ A と B の間のパスに適用されます。このような制約は、図 5 の波形で表されるようなセットアップ違反を招く場合があります。

CLK90 と CLK0 間の位相シフト後、A から B までのパスの時間は PERIOD 制約の許容時間より 25% 少なくなります。パスに正しく制約を設定するには、FROM TO 制約を使用します。

図 5 : CLKIN、CLK0、および CLK90 の波形
図 5 : CLKIN、CLK0、および CLK90 の波形


FROM:TO 制約の例 :

NET "CLK90" TNM_NET = "CLK90";
NET "CLK0" TNM_NET = "CLK0";
TIMESPEC "TS_CLK90_2_CLK0" = FROM "CLK90" TO "CLK0" 15ns;

CLK0 に設定された PERIOD が 20ns なので、TIMESPEC は 15ns に設定されます。

位相が異なるクロック ドメイン間には、このような調整が必要です。次に、コンフィギュレーションの種類とその調整量を示します。

CLKDLL..............................................必要な調整
CLK0 to CLK90...................................75% 減算
CLK0 to CLK180.................................50% 減算
CLK0 to CLK270.................................25% 減算
CLK270 to CLK0.................................75% 減算
CLK270 to CLK90...............................50% 減算
CLK270 to CLK180.............................25% 減算

タイミング制約との PLL/DCM の相互作用に関する詳細は、 『ザイリンクス タイミング制約ユーザー ガイド』を参照してください。 http://japan.xilinx.com/itp/xilinx10/books/docs/timing_constraints_ug/timing_constraints_ug.pdf

Constraints Editor
Constraints Editor では、次に示すように CLKDLL に特定な制約が処理されます。

PERIOD
Constraint Editor では DLL 入力名に基づいて PERIOD 制約が作成されます。この制約は [Global] タブで作成されます。

PAD-to-SETUP および CLOCK-to-PAD
パッドまたはレジスタ特定の OFFSET 制約を作成するには、CLKDLL で駆動されるフリップフロップに対してクロック パッド ネット名を指定する必要があります。図 2 で、PADCLKIN は、OFFSET 制約に使用されるパッド ネット名です。この制約は [Ports] タブで設定します。

FROM:TO
FROM TO DLL 出力に基づいてグループを作成し、複数のクロック ドメイン パスを制御するタイムスペックの設定に使用します。この制約は、[Advance] タブで設定します。
AR# 2586
日付 11/14/2012
ステータス アクティブ
種類 既知の問題
ツール