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# 23990

11.1 MAP - MAP によるロジックの自動削除に関するマスタ アンサー

説明

このアンサーは、MAP によるロジックの自動削除および最適化について説明します。

ロジックの自動削除 (trimming) とは

ロジックの自動削除とは、ドライバまたはロードがなく、チップ出力に影響しない未使用のロジックを削除することです。たとえば、ステート マシンの出力が入力のフィードバックとしてのみ使用されている場合、このステート マシンはデザインの動作に影響を与えることなく削除できます。

定数最適化とは

定数最適化とは、入力信号が定数であるためロジックを削除または変更することです。たとえば、フリップフロップが LUT 入力を駆動しており、フリップフロップのデータ入力が GND、INIT=0、リセットなしの場合、このフリップフロップを削除して、定数 GND に置換できます。この結果 フリップフロップで駆動されていた LUT 入力も削除でき、LUT の論理式が簡略化されます。

MAP レポート (.mrp) のセクション 4 に削除されたロジックのサマリ、セクション 5 に削除されたロジックの詳細が示されます。

ロジックの自動削除および最適化に関する既知の問題
  • 未使用ロジックの有効な削除 - 自動削除が実行されるのは、ネットにドライバまたはロードがないか、論理ブロックが駆動されておらず、何も駆動していないために未使用であることが主な理由です。あるロジックの自動削除の結果、パスの次のエレメントが駆動されないか、何も駆動しない状態になると、このエレメントも削除されます。MAP レポート (.mrp) のセクション 5 「Removed Logic」では、依存する削除をインデントすることで、この連鎖的な削除を表します。インデントされていない行は、自動削除の開始を示します。ただし、この関係が正確に記述されず、順序が逆になることもあります。

The signal "xyz/trn_rbar_hit_n<6>" is loadless and has been removed.

Loadless block "xyz/com/tlm/u_tlm_rx/vc0/fifo/trn_rbar_hit_i[6]" (BUF) removed.

The signal "xyz/com/tlm/u_tlm_rx/vc0/fifo/trn_rbar_hit<6>" is loadless and has been removed.

Loadless block "xyz/com/tlm/u_tlm_rx/vc0/fifo/bar_d[6]" (FF) removed.

The signal "xyz/trn_rbar_hit_n<5>" is loadless and has been removed.

Loadless block "xyz/com/tlm/u_tlm_rx/vc0/fifo/trn_rbar_hit_i[5]" (BUF) removed.

The signal "xyz/com/tlm/u_tlm_rx/vc0/fifo/trn_rbar_hit<5>" is loadless and has been removed.


  • 有効な循環自動削除 : それ自身にフィードバックするロジックで、オフチップへ駆動していないものは、すべての信号にドライバおよびロードがあっても削除されます。このようなロジックは、MAP レポート (.mrp) の自動削除のセクションに「cycle」 (循環) と記述されます。
  • メモリ フィードバック パスの不正な削除 : デュアル ポート RAM の出力の 1 つがデータ入力にフィードバックされており、もう 1 つの出力が使用されているロジックを駆動している場合、問題が発生します。MAP でこれが循環 (上記の 2 を参照) と判断され、RAM と RAM で駆動されるロジックが削除されます。環境変数の回避策を含む詳細については、(ザイリンクス アンサー 23284) を参照してください。
  • LUT 入力へのパスの有効な削除 : LUT 入力へのパスが自動削除されると、MAP で次のようなエラー メッセージが表示されます。

"ERROR:MapLib:820 - LUT2 symbol "b2.rp_3_i_m2[0]" (output signal=rp_3_i_m2(0)) has an equation that uses input pin I0, which no longer has a connected signal. Please ensure that all the pins used in the equation for this LUThave signals that are not trimmed (see trim report for details on whichsignals were trimmed)."

または

"ERROR:MapLib:661 - LUT3 symbol "i_vio/vio/i_vio/gen_sync_in/32/sync_in_cell/async_f_mux" (output signal=i_vio/i_vio/gen_sync_in/32/sync_in_cell/async_mux_f_out) has input signal "i_vio/i_vio/gen_sync_in/32/sync_in_cell/falling_out" which will be trimmed. See the trim report for details about why the input signal will become undriven."

または

"ERROR:MapLib:979 - LUT2 symbol <instance name> has an equation that uses input pin I1 which no longer has a connected signal. Please ensure that all the pins used in the equation for this LUT have signals that are not trimmed(see Section 5 of the Map Report file for details on which signals weretrimmed)."

または

ERROR:MapLib:978 - LUT4 symbol <instance name> has an equation that uses input pin I3, which no longer has a connected signal. Please ensure that all the pins used in the equation for this LUT have signals that are not trimmed (see Section 5 of the Map Report File for details on which signals were trimmed).
このエラーは、シミュレーションを使用して自動削除の計算を実行しており、存在しない項を含む論理式のシミュレーションは無効であるために発生します。
  • KEEP 属性では自動削除を無効にできない : 信号が自動削除されないようにするために KEEP 属性を使用できるというのは間違いです。KEEP 属性は、信号がコンポーネントに吸収されないようにするために使用する属性で、自動削除には影響しません。自動削除が実行されないようにするには、S 属性 (Save、SAVESIG、NOCLIP とも呼ばれる) を使用します。
  • ISE バージョン 10.1 より、S 属性を実行すると、自動削除だけでなく、定数最適化も実行されなくなります。S 属性は、論理ブロックに直接適用するか、論理ブロックに接続されているネットに適用します。
  • ピンの事前割り当てにより自動削除を無効にできる : 未使用の I/O ロジックに LOC 制約が設定されている場合、「ピンの事前割り当て」という新機能が使用されます。未使用 I/O が削除されないので、I/O ロジックのみが定義されたボード レイアウトで作業できます。自動削除が実行されるようにするには、LOC 制約を削除します。
  • KEEP HIERARCHY 制約 - KEEP HIERARCHY 制約に関連した自動削除の問題がいくつかあります。シミュレーションを使用して自動削除が実行されますが、KEEP HIERARCHY 制約によりシミュレーションで問題が発生するので、自動削除でも問題が発生します。KEEP HIERARCHY 制約をディスエーブルにして (-ignore_keep_hierarchy) MAP を実行し、自動削除の問題がこの制約に関係しているかどうかを確認してください。
  • 10.1 の新しい自動削除の処理により、削除されるべき信号が削除されないことがあります。これにより、DRC で次のようなさまざまな警告およびエラー メッセージが表示されることがあります。

"ERROR:PhysDesignRules:1577 - Illegal routing. The DCM_ADV block<i_srl_top/i_srl_pcix_clk_wrap/i_pci_clk_fpga/DCM_BASE_pci_clk/DCM_ADV> has CLK output pin <CLK90> with incomplete orincorrect connectivity. Routing from the <CLK90> pin to a BUFG, BUFGCTRL or PLL_ADV block type was not found. TheDCM_ADV CLK output pins can only route to BUFG, BUFGCTRL or PLL_ADV block types."
  • デザインに出力パッド接続がない場合、デザイン全体が未使用となって削除され、MAP で次のようなパック エラー メッセージのいずれかが表示されます。

"ERROR:Pack:198 - NCD was not produced. All logic was removed from design. This is usually due to having no input or output PAD connections in the design andno nets or symbols marked as 'SAVE'. You can either add PADs or 'SAVE'attributes to the design, or run 'map -u' to disable logic trimming in themapper."

"ERROR:Map:116 - The design is empty."

有効な自動削除のデバッグ

予測されない自動削除が実行され、MAP レポートの削除されたロジックのセクションを参照しても十分な情報が得られない場合は、反復デバッグ手法を使用して自動削除の原因となっているロジックを調べることができます。


  1. A. 予測されない自動削除が実行された論理インスタンスの 1 つを選択し、そのインスタンスのすべての信号に S 属性を設定します。上記の 4 で説明した LUT エラーの場合、問題が発生した LUT すべてに対してこの操作を繰り返す必要がある場合があります。たとえば、次の UCF 制約を LUT2 インスタンスに使用できます。
    NET "net_name_1" S ; # I0 input of LUT xyz

    NET "net_name_2" S ; # I1 input of LUT xyz

    NET "net_name_3" S ; # O output of LUT xyz

  2. デザインで MAP と PAR を実行し (時間短縮のため配線なし)、FPGA Editor で配置済みの NCD ファイルを開きます。
  3. 手順 A で選択したインスタンスを含むコンポーネントで、信号の接続を確認します。関連する信号にドライバまたはロードがないものがあれば、その信号がインスタンスの自動削除の原因です。これは、MRP ファイルの自動削除レポートと異なる場合があります。
  4. 原因となっている信号をたどって、パス上の次のインスタンスで手順 A を繰り返します。
  5. 自動削除の大元の原因が見つかるまでこの操作を繰り返します。

    メモ : フリップフロップのステートが変化しないために自動削除された可能性がある場合は、そのフリップフロップの INIT 値を変更して自動削除に変化があるかどうかをを確認します。これは原因を見つけるためのテストであり、回避策ではありません。同様に、LUT に関連する自動削除も LUT の INIT 値を変更することによりテストできます。

    INST "ff_name" INIT=1 ;

ソリューション

ロジックの自動削除および最適化に関する問題アンサー

(ザイリンクス アンサー 20350) - MAP レポートの「Removed Logic」セクションに記されたトリミングのソースに関する記述がわかりにくい

(ザイリンクス アンサー 17765) - MAP の -u オプションの機能変更により、ロジック トリミングがディスエーブルにされる

(ザイリンクス アンサー 30112) - ネットの SAVE 制約の処理が変更されており、DRC エラーが発生することがある

(ザイリンクス アンサー 31574) - 「ERROR:PhysDesignRules:1577 - Illegal routing. The DCM_ADV block ...」というエラー メッセージが表示される

(ザイリンクス アンサー 33743) - IBUFDS_GTXE1 コンポーネントに関連するロジックの自動削除動作の変更

(ザイリンクス アンサー 34352) - LUT6_2 入力の定数が誤って最適化されるためにエラーが発生する
AR# 23990
日付 03/06/2013
ステータス アクティブ
種類 既知の問題
ツール 詳細 概略
このページをブックマークに追加