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 Synthesis - Vivado Synthesis generates multiple drivers when a multi-bit register containing a keep or syn_keep attribute is assigned in a bit-slice way in more than two processes or always block statements

Description

Vivado Synthesis currently generates multiple drivers on a HDL code containing keep or syn_keep attribute on multi-bit register that is assigned in a bit-slice way in more than two processes or always block statement.

What is the reason for this behavior?

Solution

Following is a detailed description of the problem.

For example, there is an inherent presence of KEEP or syn_keep attribute on a 3-bit register arst_d in a HDL code that is assigned in a bit-slice way in more than two processes or always block statements. Vivado Synthesis currently will generate mult-driver critical warnings as follows:

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'

The reason for these multiple drivers is that the keep or syn_keep attribute on the 3-bit register that was assigned in more than 2 processes in a bit-slice manner blocked the tool from performing analysis on this 3-bit register which resulted in a multiple driver situation.

To work around this issue, remove the keep or syn_keep attribute present in the code. This will resolve the multiple driver conflict scenario and the critical warning messages will not be generated. Also, multiple drivers will not be generated if the code was rewritten to be in a single process or always blocks. This can also be considered as another option for a work-around.

This issue is fixed in 2013.1 VIvado Synthesis. These critical warnings are no longer generated.

AR# 53546
Date Created 12/18/2012
Last Updated 06/20/2013
Status Active
Type Known Issues
Tools
  • Vivado Design Suite