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

Vivado Synthesis - INFO: [Synth 8-4618] Found max_fanout attribute set to 50 on net rst_int. Fanout reduced from 1024 to 1024 by creating 0 replicas.

Description

When a max_fanout attribute is applied to a register which has a constant VCC/GND input, the attribute is not honored and the following message is issued:

INFO: [Synth 8-4618] Found max_fanout attribute set to 50 on net rst_int. Fanout reduced from 1024 to 1024 by creating 0 replicas.
(* max_fanout = 50 *) reg rst_int;

always@(posedge clk or posedge rst_tmp)
begin
     if(rst_tmp)
        rst_int <= 1;
     else
        rst_int = 0;
end

Solution

This is a known issue that is fixed in Vivado 2015.3. The problem occurs due to the lack of proper constant evaluation of the inputs. Vivado Synthesis fails to honor correct replication when the input to the flop is a constant.

A possible work-around is to create a dummy register, as in the following example:

module test (input clk, input rst, input [1023:0] din, output reg [1023:0] dout);

reg rst_tmp;
(* keep = "true" *) reg rst_tmp_0 = 0;
(* max_fanout = 50 *) reg rst_int;

always@(posedge clk)
begin
    rst_tmp <= rst;
    rst_tmp_0 <= 0;
end

always@(posedge clk or posedge rst_tmp)
begin
    if(rst_tmp)
        rst_int <= 1;
    else
        rst_int <= rst_tmp_0;
end

always@(posedge clk or posedge rst_int)
begin
    if(rst_int)
        dout <= 0;
    else
        dout <= din;
end

endmodule
AR# 64387
Date Created 04/27/2015
Last Updated 09/27/2016
Status Active
Type General Article
Tools
  • Vivado Design Suite - 2015.1