AR# 60013

Vivado 合成 - wire 宣言とそれに連続する assign 文により「Critical Warning : [Synth 8-3352] multi-driven net」というクリティカル警告メッセージが表示される

説明

ワイヤを作成する次の Verilog コードには連続する assign 文が含まれており、マルチドライバーに関する問題が発生します。

wire [45:0] io_i = 46'd0; 
assign io_i = io; 
Vivado 合成では、次のようなクリティカル警告メッセージが表示されます。
Critical Warning : [Synth 8-3352] multi-driven net <signal_name> with 1st driver pin '<pin_name1>' [xxx.v.3]
Critical Warning : [Synth 8-3352] multi-driven net <signal_name> with 2nd driver pin '<pin_name2>' [xxx.v.3]

ソリューション

この問題は、Verilog における reg (レジスタ) 宣言と wire (ワイヤ) 宣言の相違によって発生します。

次のような reg 型の宣言があるとします。

reg my_signal = initial_value;

これは、最初の条件として処理されます。 

しかし、次のような文があると、状況は異なります。

wire my_signal = initial_value;

これは、連続する assign 文として処理され、最初の条件としては処理されません。

つまり、my_signal に対して別の assign 文があるため、マルチ駆動に関するクリティカル警告メッセージが表示されます。 

RTL を修正すると、この問題を解決できます。

AR# 60013
日付 04/17/2014
ステータス アクティブ
種類 既知の問題
ツール