AR# 66668

Vivado - Vivado を使用したレジスタの IOB へのパッキング

説明

このアンサーでは、Vivado を使用して IOB にレジスタをパッキングするときに必要な情報を説明します。IOB は RTL 属性として指定するか、XDC 制約ファイルを使用して指定できます。 

どちらの方法を用いても、IOB プロパティは、ポートまたはセル (セル) にプロパティとして設定されます。

ソリューション

入力または出力レジスタを IOB に正しくパックできるかどうかは、IOB の論理接続と、IOB が使用できるかどうかによります。

使用できるかどうか - IOB が place_design 実行中に使用可能な場合にのみ、レジスタを IOB にパックできます。使用可能でない場合は、レジスタはファブリックに配置されます。

  • ポートおよび LUT の両方を駆動する、使用できない出力フリップフロップ - 警告 - レジスタが IOB にパックされるようにするには、最上位ポートと、IOB がパックされるフリップフロップ間の論理接続が 1 つしかないことを確認します。
    次のコード例には、最上位ポートを駆動する出力レジスタがありますが、これは組み合わせロジックも駆動しています。組み合わせロジックへの接続には、ファブリック LUT への配線が必要です。
    この接続は、IOB レジスタの出力からは可能ではないので、このフリップフロップは IOB パッキングには使用できません。このタイプの接続には、次のようなメッセージが表示されるはずです。

[Shape Builder 18-132] Instance dout_reg has IOB = TRUE property, but it cannot be placed in an OLOGIC site. Instance dout_reg cannot be placed in site OLOGIC_X1Y0 because the output signal of the cell requires general routing to fabric and cells placed in OLOGIC can only be routed to delay or I/O site.

 

IOB 属性/制約の適用方法- IOB 制約はポートまたはセル (レジスタ) のどちらにも設定できますが、ポートに接続されているレジスタに適用するようにしてください。

  • ポートに IOB を指定 - 警告 - 次の回路図では、1 つの最上位ポートに IOB 制約が指定されていますが、少なくとも 2 つのレジスタに接続されています。
    1 つのレジスタは IOB にパックできますが、もう 1 つはファブリックの SLICE サイトにパックされます。

[Constraints 18-841] Port din_b has IOB constraint. But it drives multiple flops. Please specify IOB constraint on individual flop. The IOB constraint on port will be ignored.

 

  • ポートに IOB を指定 - エラー - 次の回路図では、IOB プロパティのある 2 つの出力レジスタが IOBUF に接続されていると、エラーが発生します。IOB は最上位ポート I/O に設定されていますが、両方のレジスタに伝搬されています。
    この場合、エラーを回避するため、IOB を 2 つあるレジスタのどちらか 1 つに設定する必要があります。

[DRC 23-20] Rule violation (AVAL-248) OBUFT_has_two_FFs_with_IOB - The OBUFT IOBUF_inst has I (data) pin driven by Flop FDRE_I and T (tri-state) pin driven by Flop FDRE_T, both of which have the IOB attribute set. This cannot be honored by placement in this device architecture, which has only one register available in the IOB.

 

アーキテクチャ別のガイダンス - アーキテクチャ上の違いがあるので、デザインを移行させるときに変更が必要になります。

  • UltraScale トライステート レジスタ - トライステート SDR レジスタを、IOB ではなくファブリック ロジックにインプリメントする必要があります。詳細は、(Xilinx Answer 62490) を参照してください。

IOB へのほかの属性/制約の影響 - IOB としてほかの属性/制約を同じポートやセルに適用すると、IOB 属性が設定されているレジスタをパックするのに影響する可能性があります。

  • DONT_TOUCH/KEEP 制約 - デザインのニーズによりますが、RTL の DONT_TOUCH/KEEP/MARK_DEBUG タイプまたは XDC 制約を使用すると、IOB のパッキングができなくなるか、あるいはパッキングができたりします。(Xilinx Answer 62099) には、 どのように DONT_TOUCH が必要な合成最適化を防止してしまうかが説明されています。
    合成最適化で IOB がパックされなくなる場合は、DONT_TOUCH/KEEP 制約が IOB パッキングに役立つこともあります。IOB にパックするつもりのレジスタが引き続き使用可能であるかどうかを確認するには、エラボレート後または post-opt_design の段階で、デザインをチェックする必要があります。

ISE との違い

  • ISE とは違い、FORCE の値はありません。Vivado では、IOB=TRUE は固定された制約で、ISE の場合のように無視することはできません。

IOB パッキングの検証方法 - IOB のパッキングが正しく行われたことを検証する方法はいくつかあります。 詳細は、(Xilinx Answer 62661) を参照してください。

AR# 66668
日付 03/25/2016
ステータス アクティブ
種類 一般
ツール