UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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
ステータス アクティブ
種類 既知の問題
ツール
このページをブックマークに追加