欢迎光临散文网 会员登陆 & 注册

Vivado综合属性系列之六 MAX_FANOUT

2023-05-18 22:22 作者:行中悟_悟中行  | 我要投稿

一、前言

        在时序违例的工程中,有一个很常见的原因:高扇出,此时就需要降低信号的扇出,可通过属性MAX_FANOUT来控制信号的扇出值,当扇出大于设置值时,会进行寄存器复制来降低单个寄存器的扇出值。

二、MAX_FANOUT

        MAX_FANOUT使用格式:(*MAX_FANOUT=VALUE*) reg  reg_test;

该属性只能用于RTL中,不能用于XDC中,并且输入端口,black boxes,EDIF,NGC文件不支持。

        2.1 工程代码

设计一个寄存器reg_driver的输出连接到30个寄存器,同时MAX_FANOUT设置为10,

module MAX_FANOUT( d,d0,clk,ce,c,rs,out );

input [29:0] d,ce;

input d0,clk,c,rs;

output [29:0] out;

(*MAX_FANOUT=10*) reg reg_driver;

// Design Name: 

always@(posedge clk)

begin

if(ce)

reg_driver<=0;

else

reg_driver<=d0;

end

genvar i;

generate 

for(i=0;i<30;i=i+1)

   begin

   FDRE FDRE_inst1 (.Q(out[i]),  .C(c),.CE(ce[i]), .R(rs),  .D(reg_driver) );

   end

endgenerate

endmodule

        2.2 工程结果

左侧的网表中reg_driver_reg_rep,reg_driver_reg_rep_0为自动复制出来的两个寄存器,右侧网表连接中可看出此时由3个寄存器来共同驱动30个寄存器


Vivado综合属性系列之六 MAX_FANOUT的评论 (共 条)

分享到微博请遵守国家法律