AR# 54799

Vivado 合成 - XDC 制約に関する警告/クリティカル警告が合成では発生してもインプリメンテーションでは発生しない

説明

XDC 制約のオブジェクトが見つからないことを示す警告やクリティカル警告が合成で発生することがあっても、インプリメンテーションでは発生しません。

次はその例です。

WARNING: [Synth 8-3321] Empty from list for constraint at line 57 of xxxx.xdc.

CRITICAL WARNING: [Synth 8-3321] create_clock attempting to set clock on an unknown port/pin for constraint at line 41 of xxxx.xdc

WARNING: [Vivado 12-1387] No valid object(s) found for set_false_path constraint with option '-from [get_pins -hier -filter {NAME =~/RAM*/CLK}]'. ["xxxx.xdc":4]

WARNING: [Vivado 12-180] No cells matched ' <cell_name> '. ["xxxx.xdc":5]

WARNING: [Vivado 12-584] No ports matched ' <port_name> '. ["xxxx.xdc":36]

WARNING: [Vivado 12-508] No pins matched ' <pin_name> '. ["xxxx.xdc":35]

WARNING: [Vivado 12-507] No nets matched ' <net_name> '. ["xxxx.xdc":23]

WARNING: [Vivado 12-627] No clocks matched ' <clock_name> '. ["xxxx.xdc":24]

これらのメッセージが合成でのみ表示される理由を教えてください。

これらのメッセージは無視しても問題ありませんか。

ソリューション

制約のオブジェクト (セル/ネット/ピン) が見つからないというエラーが合成で発生してもインプリメンテーションでは発生しない理由として、次が考えられます。

  1. インスタンシエートされたネットリスト (NGC/EDIF)、DCP、または OOC モジュール内にオブジェクトがある。
    合成では、これらをブラック ボックスとして処理するため、オブジェクトが検出されません。 

  2. 対応するオブジェクトが RTL ネットリスト (エラボレートされたデザイン) に存在していても、名前が異なっている。
    オブジェクト名は、合成中に変更されることがあります。
    そのため、同じオブジェクトでも、RTL ネットリストと合成済みネットリストでは名前が異なる可能性があります。


合成に対して制約が重要ではない場合は、合成後に制約が機能するため、メッセージを無視しても問題ありません。

ただし、これらのメッセージが表示されないようにするには、次のソリューションを使用します。

  1. get_nets の代わりに get_cells/get_pins を使用します。
    ネット名は、セルやピン名よりもよく変更されます。
     
  2. ネット名をクエリするのではなく、get_nets -of [get_pins xxx] を使用します。

  3. RTL ネットリスト (エラボレートされたデザイン) のオブジェクトに dont_touch または keep 属性を追加して、オブジェクト名を維持します。 

  4. 合成およびインプリメンテーションの両方に機能するオブジェクトをクエリする方法を見つけることができない場合は、異なる XDC ファイルにこれらの制約を配置し、この XDC の used_in プロパティをインプリメンテーション専用に設定します。
    合成に対しても制約が機能するように、RTL ネットリスト (エラボレートされたデザイン) のオブジェクト名に基づいて制約を変更し、もう 1 つの XDC にこれらの制約を配置して、used_in プロパティを合成専用に設定します。
AR# 54799
日付 04/18/2016
ステータス アクティブ
種類 一般
ツール