AR# 38099

ゲートを介したクロックを使用してデザインに制約を設定する方法

説明


デザインに分周クロックが 1 つ以上あるのは一般的です。クロックを分割するにはいろいろな方法があり、MMCM などのクロック管理コンポーネントを使用してクロック分周を行うことを推奨します。この場合、CLKDV など分周されたクロックに PERIOD 制約がツールで伝搬され、マルチサイクル パスにもすべてツールで自動的に制約が設定されます。

しかし、さまざまな理由から MMCM を使用しない手段を取る場合もあります。こうしたケースでは、クロック分周にゲートを介したクロックを使用するのが一般的です。
ゲートを介したクロックは通常フリップフロップとルックアップ テーブルでインプリメントされるため、入力クロックに PERIOD 制約はツールで伝搬されません。その結果、分周されたクロックに制約が付かないことになるので、制約を設定する必要があります。

ソリューション


次の図は、フリップフロップを 4 つ、反転を 1 つ使用した分周回路の例を示したものです。



このタイプのクロックに制約を設定するには、次のようにクロック入力に PERIOD を追加します。

NET "CLKIN" TNM_NET = CLKIN;
TIMESPEC TS_CLKIN = PERIOD "CLKIN" 10 ns HIGH 50%;

次に、クロック出力に PERIOD を適用して、手動でクロックに関連付けます。

NET "CLKOUT" TNM_NET = CLKOUT;
TIMESPEC TS_CLKOUT = PERIOD "CLKOUT" TS_CLKIN*16 PHASE XYZ ns;

値 16 は分周回路から得た値で、PHASE XYZ は CLKIN と CLKOUT との遅延エッジの関係を示したものです。この位相はコンポーネントの出力ピンからの遅延で、フリップフロップ 4 (FF4) の出力クロック ピンに CLKIN を生成します。この遅延には、クロックから 4 つのすべてのフリップフロップの Q 出力までのスイッチ遅延と、図で赤く示されているフリップフロップ間の配線遅延が含まれています。

位相は配線によって変わるので、デザインで制約、配線遅延の変更など何かが変更になるたびにこの PHASE XYZ に影響します。これをある値に固定する必要があります。その方法は 2 つあります。
  1. UCF ファイルで、配置を固定するためにこれらのフリップフロップに LOC 制約を追加し、フリップフロップ間の配線を固定するために DIRT 制約を使用します。
  2. 分周回路用に RPM を作成します。この方法だと、MAP/PAR で RPM をデバイス上自由に移動させることができますが、生成されたクロックと入力クロックの位相は一定に保たれます。分周器がいくつかのコンポーネントで作成されている場合はこの方法が一番です。すべてのコンポーネントに LOC 制約を付け、DIRT 制約も設定する必要がないからです。

遅延は FPGA Editor (ピンを選択して [delay] ボタンを押す) または Timing Analyzer (エンドポイント間の解析) を使用して計算することができます。
AR# 38099
日付 05/19/2012
ステータス アクティブ
種類 デザイン アドバイザリ
ツール 詳細 概略