AR# 53368

PlanAhead および Vivado - PULLUP と PULLDOWN 制約を使用して差動ペアに制約をつけるとその制約の 1 つが無視される

説明

PlanAhead または Vivado のピン プランニングで、PULLUP および PULLDOWN 制約を差動信号の P 側と N 側にぞれぞれ UCF または XDC ファイルで割り当てました。以下は UCF ファイルの場合の例です。

NET "<p_pin>" IOSTANDARD = LVDS_25;
NET "<p_pin>" PULLUP;

NET "<n_pin>" IOSTANDARD = LVDS_25;
NET "<n_pin>" PULLDOWN;

このデザインをインプリメントした後、新しい UCF ファイルが PlanAhead のインプリメンテーション run のフォルダー <project_name>/<project_name>.runs/impl_1 に作成されます。新しい UCF ファイルでは、<n_pin> に対し PULLDOWN 制約が PULLUP に変更されます。 

通常、UCF で最終的に設定されている制約に基づき、差動ピンの両方に 1 つの制約 (PULLUP または PULLDOWN) だけが割り当てられます。

なぜこうなるのでしょうか。また回避策はありますか。

ソリューション

UltraScale 以前のすべてのザイリンクス ファミリの場合、PlanAhead でも Vivado でも、差動ペアのプロパティすべてに対しては、最終値だけを使用します。 

差動ペアの P および N 側にそれぞれ異なる属性を割り当てる場合 (PULLUP および PULLDOWN の場合など)、ツールは自動的に UCF または XDC ファイルで最終的に設定されている値に、または TCL スクリプトで割り当てられている値に、プロパティを変換します。 

この例は、P および N の両方の PULLTYPE 属性が、UCF で最終的に割り当てられた値、PULLDOWN に変換されています。

PULLUP および PULLDOWN 属性を RTL にコード記述しても修正してもこの問題を回避できません。

PULLUP と PULLDOWN という逆の値を設定したい場合は、PULLUP および PULLDOWN の属性を使用せずに、デザインの RTL で PULLUP および PULLDOWN のプリミティブをインスタンシエートして問題を解決します。 

PULLUP/PULLDOWN プリミティブのインスタンシエーションについては、各ザイリンクス デバイス ファミリの『ライブラリ ガイド HDL デザイン用』を参照してください。

インプリメンテーション中、ツールはプリミティブを変更せず、I/O で PULLUP および PULLDOWN を意図どおりに使用できるようになります。

ISE/PlanAhead ツール フローの場合は、インプリメンテーション run の後に FPGA Editor で個々に P または N のプロパティを次のように変更します。

  1. FPGA Editor で P および N の差動信号を検索します。
  2. PAD のプロパティを開くため、パッドをダブルクリックします。
  3. 次の図に示すように、要件に基づいて P および N パッドの PULLTYPE プロパティを変更します。

    これで NCD ファイルが変更され、有効なビットストリームが生成されます。ただし、デザインを再インプリメントするたびに FPGA Editor でプロパティを割り当て直す必要があります。

 

Vivado 2014.1 の UltraScale ファミリ以降のデバイスに対しては、デフォルトで、すべての差動ピン ペアに対し、PULLUP/PULLDOWN という逆のタイプの抵抗をツールが自動的に推論するようになり、ペアになっているピンのいずれかに最終的に割り当てられたタイプを読み込んで、もう一方のピンにその逆のタイプを割り当てるようになります。

AR# 53368
日付 04/30/2014
ステータス アクティブ
種類 既知の問題
デバイス 詳細 概略
ツール 詳細 概略