KEEP - 2024.1 日本語

Vivado Design Suite ユーザー ガイド: 合成 (UG901)

Document ID
UG901
Release Date
2024-06-28
Version
2024.1 日本語

KEEP 属性は、信号が削除されたりロジック ブロックに吸収されるような最適化が実行されないように指定します。この属性が設定された信号は保持され、ネットリストに含まれます。

たとえば、2 ビットの AND ゲートの出力で別の AND ゲートを駆動する信号に KEEP 制約を設定すると、信号は両方の AND ゲートを含むより大きい LUT には統合されません。

注意:
KEEP をほかの属性と共に使用する場合は注意が必要です。ほかの属性が KEEP 属性と競合する場合、通常 KEEP 属性が優先されます。

KEEP は、タイミング制約ともよく使用されます。通常は最適化される信号にタイミング制約が設定されている場合、KEEP を設定すると最適化されなくなり、正しいタイミング規則が使用されます。

注記: KEEP 属性は、モジュールまたはエンティティのポートではサポートされません。特定のポートを保持する必要がある場合は、 -flatten_hierarchy none を使用するか、モジュールまたはエンティティ自体に DONT_TOUCH を設定します。
注意:
ロードレス信号で KEEP 属性を使用する場合は注意が必要です。合成でこれらの信号が保持されることで、フローの後半で問題が発生します。

次に例を示します。

  • ある信号に MAX_FANOUT 属性が設定されており、この信号で駆動される信号に KEEP 属性が設定されている場合、KEEP 属性が設定されている信号ではファンアウト複製は実行されません。
  • RAM_STYLE="block" と設定されている場合は、その RAM の一部になるはずのレジスタに KEEP 属性が設定されていると、その KEEP 属性によってブロック RAM は推論されなくなります。

サポートされる KEEP 値は、次のとおりです。

TRUE
信号を保持します。
FALSE
Vivado 合成の最適化を可能にします。FALSE を使用しても、信号が無条件に削除されることはありません。デフォルト値は FALSE です。

この属性は信号、レジスタ、ワイヤに設定できます。

注記: KEEP 属性を使用しても、配置配線では信号は保持されません。DONT_TOUCH 属性を使用してください。