Vivado綜合屬性系列之九 CLOCK_BUFFER_TYPE
一、前言
????????在設(shè)計中,對于時鐘端口驅(qū)動時鐘單元時,工具會自動綜合出全局時鐘BUFG連接時鐘源和時鐘負(fù)載。當(dāng)存在全局時鐘BUFG不足或者因為某些原因不想使用BUFG時,想使用其他時鐘BUF如BUFH,BUFR等,可通過屬性CLOCK_BUFFER_TYPE來實現(xiàn)。
二、CLOCK_BUFFER_TYPE
????????2.1 屬性說明
????????CLOCK_BUFFER_TYPE用于指定時鐘BUFFER的類型,通常未指定是,默認(rèn)為BUFG,屬性可直接代碼中設(shè)置也可在XDC文件中使用。
????????使用模板:(* CLOCK_BUFFER_TYPE=VALUE*) input clk;
????????VALUE可設(shè)置為BUFG、BUFH、BUFR、BUFMR、BUFIO、NONE六個值,分別對應(yīng)全局時鐘,水平時鐘,區(qū)域時鐘,跨區(qū)域時鐘,IO時鐘,默認(rèn)值。
????????2.2 工程代碼
????????設(shè)計中對3個觸發(fā)器使用BUFG、BUFH、BUFR作為示例
module DIRECT_ENABLE_test( d,ce,clkbufg,clkbufh,clkbufr,out );
(*CLOCK_BUFFER_TYPE="BUFG"*)input clkbufg;
(*CLOCK_BUFFER_TYPE="BUFH"*)input clkbufh;
(*CLOCK_BUFFER_TYPE="BUFR"*)input clkbufr;
input ce;
input [2:0]d;
output? out;
reg [2:0] out;
always@(posedge clkbufg)
begin
? ? if(ce)
? ? ? ? out[0]<=d[0];
end
always@(posedge clkbufh)
begin
? ? if(ce)
? ? ? ? out[1]<=d[1];
end
always@(posedge clkbufr)
begin
? ? if(ce)
? ? ? ? out[2]<=d[2];
end
endmodule
????????2.3 結(jié)果
如下圖,時鐘端口最終綜合為CLOCK_BUFFER_TYPE設(shè)置的類型

????????