AR# 52884

PLBv46PCI v1.04a - ホールド タイム違反

説明

PLBv46PCI コアを使用していると、次のようなホールド タイム違反がレポートされます。

Hold Paths: TIMEGRP "DAT_BUS" OFFSET = IN 7 ns VALID 7 ns BEFORE COMP "PCI_PCLK" TIMEGRP
ALL_FFS;
--------------------------------------------------------------------------------
Slack (hold path): -1.006ns (requirement - (clock path + clock arrival + uncertainty - data path))
Source: PCI_AD<11> (PAD)
Destination: U_PCI/U_PCI/PCI_CORE_S6_generate.pci_core_s6/XPCI_CORE/XPCI_ADI11 (FF)
Destination Clock: PCI_PCLK_BUFGP rising at 0.000ns
Requirement: 0.000ns
Data Path Delay: 2.857ns (Levels of Logic = 3)(Component delays alone exceeds constraint)
Clock Path Delay: 3.838ns (Levels of Logic = 2)
Clock Uncertainty: 0.025ns

ソリューション


Spartan-6 デバイスでは、PCI コアに対し IDELAY_VALUE を 83 に設定する必要があります。 UCF で IDELAY_VALUE が設定されていても、IODELAY がインスタンシエートされているのではなく自動推論されているため、ツールでこの設定が適用されません。

この問題を回避するには、次の手順に従います。
  1. デザインを通常どおりインプリメントします。インプリメンテーションを終了すると、最後に NCD ファイルが生成されるはずです (PAR から出力される <design_name>.ncd)。
  2. FPGA Editor を起動し、<design_name>.ncd および <design_name>.pcf を読み込みます。
  3. 名前を検索するフィルターに「*IODELAY*」と入力して検索します。このデザインには、PCI コアに対し 36 個の IODELAY があるはずです。ほかの目的のための IODELAY も含まれている場合は、「*<core_name>*IODELAY*」 (<core_name> にはデザインの PCI モジュール名を入力) で検索すると、この PCI コアでのみ使用されているものだけが検索結果に表示されます。
  4. [editmode] ボタンをクリックします。
  5. 手順 3 の検索結果に表示されている IODELAY ブロックをぞれぞれクリックし、[editblock] ボタンを押します。
    注記 : [editblock] ウィンドウの背景色が淡いグレーで表示されている場合は、このウィンドウを閉じ、ウィンドウの背景色が黒になるまで手順 4 をやり直してください。黒く表示されていない場合は編集できません。
  6. [editblock] ウィンドウのツールバーにある [F=] ボタンを押します。これでこのブロックの属性が表示されます。
    • 属性セクションで IDELAY_VALUE の値を 83 に変更します。
    • IDELAY_TYPE のチェックボックスを FIXE に変更します。

      ここまで作業を終えたら、ウィンドウのツールバーの右から 2 番目にある [Save] ボタンを押して保存し、ウィンドウを閉じます。
  7. IODELAY ブロックが変更されるまで手順 5 と 6 を繰り返します。FPGA Editor で [Save] をクリックします。

改訂履歴
2012/11/12 - 初版
AR# 52884
日付 02/06/2013
ステータス アクティブ
種類 既知の問題
デバイス
IP