Vivado綜合屬性系列之六 MAX_FANOUT
一、前言
????????在時(shí)序違例的工程中,有一個(gè)很常見的原因:高扇出,此時(shí)就需要降低信號(hào)的扇出,可通過屬性MAX_FANOUT來控制信號(hào)的扇出值,當(dāng)扇出大于設(shè)置值時(shí),會(huì)進(jìn)行寄存器復(fù)制來降低單個(gè)寄存器的扇出值。
二、MAX_FANOUT
????????MAX_FANOUT使用格式:(*MAX_FANOUT=VALUE*) reg? reg_test;
該屬性只能用于RTL中,不能用于XDC中,并且輸入端口,black boxes,EDIF,NGC文件不支持。
????????2.1 工程代碼
設(shè)計(jì)一個(gè)寄存器reg_driver的輸出連接到30個(gè)寄存器,同時(shí)MAX_FANOUT設(shè)置為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 工程結(jié)果
左側(cè)的網(wǎng)表中reg_driver_reg_rep,reg_driver_reg_rep_0為自動(dòng)復(fù)制出來的兩個(gè)寄存器,右側(cè)網(wǎng)表連接中可看出此時(shí)由3個(gè)寄存器來共同驅(qū)動(dòng)30個(gè)寄存器
