AR# 58608

7 Series FPGAs Transceivers Wizard Example Design v3.0 - tx|rxoutclk をチェックするクロック供給リソースの使用

説明

RX および TX のスタートアップ FSM は、MMCM のリセットをリリースする前に tx|rxoutclk があることをチェックします。これは、tx|rxoutclk で直接クロック供給を受ける pmaresetdone に対しフリップフロップを 1 つ使用して行われます。

MMCM のリセットは MMCM が実際に使用されている、また使用する必要がある場合にのみ必要です。このリセットは USRCLK の生成に BUFG/BUFH のみを使用する場合は使用されません。

tx|rxoutclk にはフリップフロップへの直接のクロック供給配線パスがないため、tx|rxoutclk を使用すると BUFHCE が直接自動推論されます。

たとえば、TX|RXUSRCLK および TX|RXUSRCLK2 を生成するのに BUFG を 1 つだけ使用する 10 レーン コアの場合、これらのクロックは同じ周波数であるため、20 個のフリップフロップにだけクロック供給する BUFHCE が 20 個自動推論されます。

また、RX と TX それぞれに個別にクロック供給する 10 レーン コアの場合、MMCM が必要で、BUFG/BUFH が 6 個、MMCM が 2 個通常使用されますが、やはり 20 個のフリップフロップにだけクロック供給する BUFHCE が 20 個自動推論されます。

これは不必要であり、実際のデザインでの配線が密集してしまいます。

ソリューション

クロック配線が原因で配線密集に関するエラーがデザインで発生する場合、または自動推論された BUFHCE が原因でクロック供給リソースが不足してしまう場合、次の対処方法があります。

USRCLK 生成に BUFG/BUFH のみを使用するコアの場合、スタートアップ FSM の TX|RXOUTCLK 入力でこの USRCLK を使用することができます (追加 BUFHCE は自動推論されない)。
変更は次に示す MMCM の変更に似ていますが、*_init モジュールでのみ、すべてのスタートアップ FSM の TX|RXOUTCLK 入力への接続を次のように変更する必要があります。

 ' .TXOUTCLK                       (gt0_txusrclk_in), '

マルチレーン コアの場合、もっとも簡単は変更方法は、*_startup_fsm モジュール内で TX|RXOUTCLK を TX|RXUSRCLK に置き換える方法です。
こちらは *_tx_startup_fsm.v の例です。

   always @(posedge TXOUTCLK,posedge gttxreset_i)
  begin
      if(gttxreset_i == 1'b1)
        txpmaresetdone_i <= `DLY 1'b0;
      else
        txpmaresetdone_i <= `DLY TXPMARESETDONE;
  end
----------->
   always @(posedge TXUSRCLK,posedge gttxreset_i)
  begin
      if(gttxreset_i == 1'b1)
        txpmaresetdone_i <= `DLY 1'b0;
      else
        txpmaresetdone_i <= `DLY TXPMARESETDONE;
  end

MMCM を使用するコアの場合、MMCM を駆動する tx|rxoutclk のみをチェックする必要があります。各レーンの tx|rxoutclk をそれぞれチェックする必要はありません。使用される tx|rxoutclk は通常 MMCM の入力を駆動するのに BUG/BUFH を使用します。この BUFG/BUFH の出力はスタートアップ FSM の TX|RXOUTCLK を駆動するのに使用可能です。これで追加 BUFHCE は自動推論されません。

次のサンプル デザインでは、複数のモジュールを変更する必要があります。

*_clock_module:
        define clkin1 (output of the BUFG driving the MMCM) as output
*_gt_usrclk_source:
        define clkin1 as output and connect to *_clock_module
*_support:
        connect clkin1 from *_gt_usrclk_source to *_init
*_init:
        define clkin1 as input and connect to TX|RXOUTCLK inputs of all startup FSMs
        here one example for TX again:

        .TXOUTCLK                       (gt0_txoutclk_i),
------------->
        .TXOUTCLK                       (clkin1),
AR# 58608
日付 01/17/2014
ステータス アクティブ
種類 一般
デバイス
IP