AR# 54907

2012.4 Vivado 合成 - 最適化の一部として優先マルチプレクサを含む HDL コードがパラレル マルチプレクサに変換されるとき、間違ったロジックが生成される

説明

2012.4 Vivado 合成の最適化の一部として優先マルチプレクサを含む HDL コードがパラレル マルチプレクサに変換されるとき、間違ったロジックが生成されます。

合成後シミュレーションおよび Onespin のフォーマル等価性チェックの結果を確認すると、合計レジスタに間違った値が表示されています。XST および Synplify で同じデザインを使用した場合はこの問題は発生しませんでした。

ソリューション

次のタイプの優先マルチプレクサの最適化を実行した Vivado 合成コードで、問題がありました。

if(a == b)
  out <= bdata;
else if(a == c)
  out <= cdata;
else
  out <= ddata;

この最適化の目的は、ロジック レベルを最小限に抑えるため、優先マルチプレクサをパラレル マルチプレクサに変換することでした。 

しかし、バージョン 2012.4 でのこの問題が原因で、間違ったロジックが生成されてしまいます。

2012.4 でこの問題を回避するには、合成を実行する前にマルチプレクサの最適化をオフにするため、次の Tcl コマンドを使用する必要があります。

set_param synth.elaboration.rodinMoreOptions "rt::set_parameter inferMuxOpt 0"

この問題は 2013.1 Vivado ツールで修正されています。

AR# 54907
日付 09/02/2014
ステータス アクティブ
種類 既知の問題
ツール