UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 22921

LogiCORE PCI - Virtex-4 の 66MHz デザインでタイミングを満たすことができないことがある

説明

Virtex-4 の 66MHz デザインでタイミングを満たすことができないことがあります。

こうしたエラーは OFFSET IN 制約で主に見られ、セットアップ エラーまたはホールド タイム エラーとして現れます。

どうすればこの問題を修正できますか。

ソリューション

Virtex-4 の 66MHz デザインを初めてインプリメンテーションしたとき、タイミングが満たされないケースがあります。

通常、OFFSET IN 制約にエラーが見られ、中でも IRDY# および TRDY# 信号によくエラーが見られます。

こうしたエラーは、3ns の入力セットアップまたは 0ns のホールド タイム要件の違反になります。 

 

Virtex-II Pro や Spartan-IIE などの古いデバイスでは、クリティカルな入力パスのタイミングを確約するガイド ファイルが提供されていました。

Virtex-4 デザインの場合は、カスタマーが異なるピン配置や UCF ジェネレーターを選択できるようにするため、このガイド ファイルは提供されていません。

このソリューションでは、デザインでタイミング クロージャを達成するために必要な情報を提供します。 

 

Virtex-4 の UCF ファイルを生成するため CORE Generator から PCI UCF ジェネレーターを起動している場合は、(ザイリンクス アンサー 22671) をお読みください。

提供されている UCF を使用すれば、このソリューションにまとめられているように、タイミングを満たすことができるわけではないので、ご了承ください。 

また、UCF ファイルの中にはタイミングをほぼ満たしているものもあります。その場合は、ここに説明しているテクニックの一部を利用してみてください。 

 

Virtex-4 のステップ情報および PCI コアに関しては、(ザイリンクス アンサー 21399) を参照してください。

 

タイミングを満たすことができないことがよくあるクリティカル パスは、PCI の要件のため IOB でレジスタを介することができない IOB ピンからのパスです。 

この入力は、次の図に示すように、レジスタを介す前に、組み合わせロジックを介して FPGA デバイスに供給する必要があります。

こうした問題は、IRDY# および TRDY# ピンでもっともよく見られますが、FRAME# や DEVSEL# などのほかの制御ピンでも見られる可能性があります。 

 

Critical PCI Timing Path

 

 

上の図からわかるように、レジスタは IOB の入力側にはパックできません。

この信号の配線を制御するガイド ファイルはないので、タイミングを満たすように配線できるかどうかは PAR 次第です。

使用されている PAR のオプションやデザインの密度によりますが、PAR で初回にこの要件を満たすのは難しい場合があります。 

 

タイミング クロージャを満たすための手順は次のとおりです。

 

手順 1 

Virtex-4 の 66MHz デザインの場合、PCI クロックには、グローバル クロック入力ではなく、リージョナル クロック入力を使用している必要があります。

このためには、ラッパー ファイルと UCF ファイルをうまく組み合わせて使用する必要があります。 

Virtex-4 の例については、『PCI Getting Started User Guide』の表 3-1 を参照してください。

この表には、各 Virtex-4 デバイスに合ったラッパー ファイルおよび UCF ファイルがリストされています。 

 

UCF ファイルの生成に UCF ジェネレーターを使用している場合は、リージョナル クロック入力を使用している UCF ファイルが生成されていることを確認し、表 3-1 にあるように、リージョナル クロック バッファーを含むラッパー ファイルを使用してください。

このラッパー ファイルは <hdl>/src/wrap にあり、Virtex-4 の 66MHZ デザインの場合は、pcim_lc_66_r.v または pcim_lc_66_r.vhd という名前になっています。 

 

手順 2 

『PCI Getting Started User Guide』の表 3-3 にあるように、入力遅延バッファー設定が正しいことを確認します。

 

手順 3 

IDELAY コントローラー値を調整してみます。Virtex-4 の PCI デザインは Virtex-4 の IDELAY コンポーネントを利用します。

このコンポーネントは入力信号に遅延を追加し、調整可能です。

PCI からの 0ns のホールド タイム要件を満たすのに十分ではあるけれど、3ns の入力セットアップ要件に違反しない程度の遅延を追加するのが目標です。 

これらの値は UCF ファイルで調整できます。次のような行を検索します。

 

INST "PCI_CORE/XPCI_TRDYD" IOBDELAY_VALUE = 0 ; 

INST "PCI_CORE/XPCI_IRDYD" IOBDELAY_VALUE = 1 ; 

INST "PCI_CORE/XPCI_STOPD" IOBDELAY_VALUE = 4 ; 

INST "PCI_CORE/XPCI_DEVSELD" IOBDELAY_VALUE = 4 ;

 

この値を上げれば 0ns のホールド要件を満たすことができ、下げればセットアップ要件を満たすことができます。 

その両方がかなえられる値を見つけるようにしてください。範囲は 0 から 63 までです。

IDELAY コンポーネントの詳細は、Virtex-4 のユーザー ガイドを参照してください。 

 

手順 4 

MAP オプション 

<hdl>/example/xilinx ディレクトリにあるデフォルトのインプリメンテーション スクリプトを変更する必要がある場合があります。 

マップを実行するときに -timing オプションを使用してみます。

これを使用すると、タイミングを満たそうと、マップがロジックの配置を試みます。

しかし、このオプションを使用するとマップが完了するまで時間がかかるようになります。

-timing オプションの使用例は次のとおりです。

 

map -pr b -timing pcim_top.ngd -o pcim_top.ncd pcim_top.pcf 

 

手順 5 

PAR オプション 

マップで -timing オプションを使用するだけでは十分でない場合は、PAR で異なるコスト テーブルを使用してみてください。

配置配線アルゴリズムには PAR 用のコスト テーブルまたはシードが 100 個あります。

デフォルトではコスト テーブル 1 が使用されます。-t オプションを使用してこれを変更できます。

次の例ではコスト テーブル 25 を使用しています。

par -ol high -t 25 -w pcim_top.ncd pcim_top_routed pcim_top.pcf 

ランダムにコスト テーブルを選ぶのではなく、複数のコスト テーブルを実行する MPPR (Multi Pass Place and Route) を使用することもできます。 

詳細は、こちらのソフトウェア マニュアルを参照してください。

http://japan.xilinx.com/support/software_manuals.htm
 

特に、『開発システム リファレンス ガイド』の PAR についてのセクションを参照してください。 

 

次の例では 10 個のコスト テーブルを実行します。

par -n 10 -t 25 pcim_top.ncd routed.dir pcim_top.pcf 

このコマンドでは、コスト テーブル 25 から 10 回 PAR を実行していき、すべての結果が routed.dir というディレクトリに保存されます。 

 

MPPR を使用する場合は、複数のコンピューティング ノードに各ジョブを実行させる Turns Engine を使用すると、さらに便利です。

詳細は、『開発システム リファレンス ガイド』を参照してください。 

 

PAR オプションを使用してエフォート レベルをさらに上げる方法もあります。 

これにより、PAR はタイミングを満たそうとしますが、実行時間が非常に長くなる可能性があります。

詳細は、『開発システム リファレンス ガイド』を参照してください。 

 

手順 6 

OFFSET IN 制約を厳しい値に設定すると、3ns の要件を満たすことができるケースがよくあります。 

たとえば、この制約が 3ns に設定されていると PAR でタイミングが満たされないかもしれません。 

しかし、これを 2.8 や 2.9 に変更すると、PAR はこの値に近づけようとし、結果的に 3ns 要件を満たすことができる場合があります。 

2.9ns だとエラーになるけれど、2.8ns だとうまくいき、3ns の要件の範囲内でもあるわけです。

この方法を試すには、UCF ファイルの OFFSET IN 制約を次のように変更します。

TIMEGRP "PCI_PADS_C" OFFSET = IN 2.800 VALID 2.800 BEFORE "PCLK" TIMEGRP "ALL_FFS" ; 

 

手順 7 

上記の手順のいずれかを試して、タイミングを満たすことができたでしょうか。

タイミングを満たしたら、問題を引き起こしている信号に、指示配線 (DIRT) 制約を設定するオプションがあります。

このオプションを利用すると、ピン配置やロジック配置を変更しない場合、問題を引き起こしている信号を毎回同じ配線にするよう、PAR に指示を出すことができます。

指示配線の使用に関しては、ザイリンクス ソフトウェア マニュアルの FPGA Editor のヘルプを参照してください。 

 

指示配線の例を説明します。 

 

たとえば、4vlx25ff668 上の Virtex-4 66MHz デザインで、コアのサンプル ディレクトリにあるデフォルト スクリプトを使用して初回実行したときに、タイミングが満たされなかったとします。

TRDY# で入力セットアップ要件が満たされませんでした。 

タイミング レポートは次のようになっています。

 

Slack: -0.008ns (requirement - (data path - clock path - clock arrival + uncertainty)) 

Source: TRDY_N (PAD) 

Destination: PCI_CORE/PCI_LC/PCI-AD64/IO11/OFD (FF) 

Destination Clock: CLK rising at 0.000ns 

Requirement: 3.000ns 

Data Path Delay: 4.704ns (Levels of Logic = 3) 

Clock Path Delay: 1.696ns (Levels of Logic = 3) 

Clock Uncertainty: 0.000ns 

 

この例では、TRDY# 入力で、0.008ns の差でタイミングを満たすことができませんでした。

しかし、上記の手順のいくつかを利用して、タイミングを満たすことができました。特に、この例では、コスト テーブル 5 を使用して PAR を再実行しました。 

 

そこで、タイミングが満たされているこのパスを完全に制約する、指示配線制約を作成することにします。 

タイミング レポートを使用し、指示配線制約を使用して制約しておきたいパスのネットを判断します。 

この例では、指示配線制約を設定したいネットは TRDY_I と SOFT_CE の 2 つです。 

 

FPGA Editor でデザインを開き、[Tools] → [Directed Routing Constraints] をクリックします。

フィルターを使用して、ネットを検索し選択します。

現在の UCF ファイルにこれらの制約を追加します。

各ネットに対してこの作業を行う必要がありますが、後は FPGA Editor が UCF ファイルに毎回この制約を追加します。 

 

この作業を完了すると、追加した DIRT 制約により、PAR を実行するたびにこの 2 つのネットは毎回同じ配線に配置され、デザインが変更されてもタイミングが満たされるようになります。 

 

この例では、最初にエラーになったデフォルト オプションを使用して PAR が再実行され、PAR のレポートには DIRT 制約が問題なく処理されていることが記述されています。 

この例での PAR レポートには次のような記述があります。

 

Starting Router 
# of EXACT MODE DIRECTED ROUTING found:2, SUCCESS:2, FAILED:0 

 

つまり、PAR で UCF にある DIRT 制約が認識されて、問題なく配線が行われたという意味です。

これでデザインのタイミングは満たされました。 

 

つまり、この方法を利用すれば、デザイン全体の配線をロックすることができるわけです。

ただし、DIRT 制約を機能させるには、信号のソースおよびデスティネーションも UCF ファイルを使用して配置しなければなりません。

大抵の場合、配置を固定する制約は既に PCI コアの UCF ファイルに既にあり、問題を引き起こす可能性のある信号に適用できます。

しかし、DIRT 制約をほかのネットに設定する必要がある場合は、そのソースおよびデスティネーションにも配置制約を必ず適用してください。

AR# 22921
日付 03/26/2015
ステータス アクティブ
種類 一般
デバイス
  • Virtex-4 FX
  • Virtex-4 LX
  • Virtex-4 SX
このページをブックマークに追加