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# 53546

Vivado 2012.x、Vivado 合成 - KEEP または syn_keep 属性を含むマルチビット レジスタが 3 つ以上のプロセスまたは always ブロック文にビット スライスで割り当てられると、Vivado 合成が複数のドライバーを生成する

説明

KEEP または syn_keep 属性を含むマルチビット レジスタが 3 つ以上のプロセスまたは always ブロック文にビット スライスで割り当てられると、Vivado 合成で複数のドライバーが生成されます。

これはなぜですか。

ソリューション

この問題の詳細は次のとおりです。

たとえば、ある HDL コードで 3 ビット レジスタ arst_d に KEEP または syn_keep 属性が継承されているとします。これは 3 つ以上のプロセスまたは always ブロック文にビット スライスの形で割り当てられています。Vivado 合成では次のようなマルチドライバーに関するクリティカル警告メッセージが表示されます。

CRITICAL WARNING: [Synth 8-3352] multi-driven net \u_fpga/u_proj/eth_switch_ctrl.u_glbl_rst_gp_reg_clk/arst_d [0] with 1st driver pin '\u_fpga/u_proj/eth_switch_ctrl.u_glbl_rst_gp_reg_clk/arst_d_reg[0]__0 /Q'

CRITICAL WARNING: [Synth 8-3352] multi-driven net \u_fpga/u_proj/eth_switch_ctrl.u_glbl_rst_gp_reg_clk/arst_d [0] with 2nd driver pin '\u_fpga/u_proj/eth_switch_ctrl.u_glbl_rst_gp_reg_clk/arst_d_reg[0] /Q'

この警告メッセージが表示されるのは、3 ビット レジスタ上の KEEP または syn_keep 属性が 3 つ以上のプロセスにビット スライスの形で割り当てられているため、このレジスタに対し解析を実行できなくなっているからです。これはマルチドライバーの状況になってしまっています。

この問題を回避するには、KEEP または syn_keep 属性をこのコードから削除します。これで複数ドライバーの競合を解決でき、このクリティカル警告メッセージは表示されなくなります。また、このコードを 1 つのプロセスまたは always ブロックに書き直すと複数のドライバーが生成されなくなります。これも回避策として利用できます。

この問題は 2013.1 VIvado 合成で修正されています。これらのクリティカル警告メッセージは生成されなくなっています。

AR# 53546
日付 06/21/2013
ステータス アクティブ
種類 既知の問題
ツール
  • Vivado Design Suite
このページをブックマークに追加