AR# 18877

|

14.x Timing Analyzer/制約 - 回路を分割するのに FF (ゲート クロック) を使用すると PERIOD の解析に問題が発生する

説明


デバイス内のロジックを使用してクロックの分割バージョンを取得する際に、クロックの分割にフリップフロップを使用しました。この後、フリップフロップの出力に PERIOD 制約を新しく付けましたが、次のような問題が発生しました。

1. 新しい制約でカバーされるはずのパスの中に、元の PERIOD 制約を使用して解析されるものがあります(解析で PERIOD 制約の順序を変更すると、この問題は修正されます)。
2. クロックの到着時間が立ち上り/立ち下り エッジが異なると正しくないことがあります。

ソリューション


FPGA 内でクロックを分割する際は、常に DCM/DLL を使用してください。このようなケースでフリップフロップを使用すると、分割したクロックがローカルに配線されてしまい、スキューによって発生する 2 つのクロック間の関係が未知になり、クロス クロック ドメイン パス間の解析が正しく実行されないことがあります。

ただし、クロックにロジックを付けることは可能です。この問題は、分割のために、元のクロックと新しい分割クロックの両方のタイム グループでフリップフロップが使用されてしまうために発生します。この問題を回避するには、UCF ファイルで次のように制約を使用します。

# PERIOD constraint on the original PAD clock:
NET "clk" TNM_NET = "clk";
TIMESPEC TS_clk = PERIOD "clk" 10 ns;
# Put the flip-flop used for the clock divide in its own group:
INST "clk_div_ff" TNM = "clk_div_ff";
# Create a group containing all the elements fed by the new divided clock:
NET "clk_div" TNM_NET = "clk_div_temp";
# Create a new group that contains all the elements fed by the new divided clock except the actual flip-flop used for division, and use that flip-flop in the PERIOD constraint:
TIMEGRP "clk_div" = "clk_div_temp" EXCEPT "clk_div_ff";
TIMESPEC TS_clk_div = PERIOD "clk_div" 20 ns;
AR# 18877
日付 12/15/2012
ステータス アクティブ
種類 一般
ツール 詳細 概略
People Also Viewed