遇到一段代碼
GLOBAL sw_clk(
.in (SWCLK),
.out (swck)
);
是Intel風格的,可以用xilinx的BUFG進行替代
// BUFG 分配時鐘專用資源,指定信號走專門的時鐘布線
修改為
BUFG sw_clk(
.I (SWCLK),
.O (swck)
);
布線時候報錯
[Place 30-574] Poor placement for routing between an IO pin and BUFG. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
< set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets SWCLK_IBUF] >
SWCLK_IBUF_inst (IBUF.O) is locked to IOB_X0Y7
and SWCLK_IBUF_BUFG_inst (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y0
具體原因未知,只能先把功能打通,所以把相關的部分注釋掉。
下面是收集的一些資料,來源都做了標注。
【FPGA】xilinx IOBUF的用法
inout類型的接口,主動添加IOBUF
IOBUF #(
.DRIVE(12), // Specify the output drive strength
.IBUF_LOW_PWR("TRUE"), // Low Power - "TRUE", High Performance = "FALSE"
.IOSTANDARD("DEFAULT"), // Specify the I/O standard
.SLEW("SLOW") // Specify the output slew rate
) IOBUF_inst (
.O(O), // Buffer output
.IO(IO), // Buffer inout port (connect directly to top-level port)
.I(I), // Buffer input
.T(T) // 3-state enable input, high=input, low=output
);
Reference文章來源地址http://www.zghlxwxcb.cn/news/detail-403324.html
xilinx FPGA全局時鐘資源的使用
1.什么是xilinx fpga全局時鐘資源
時鐘對于一個系統(tǒng)的作用不言而喻,就像人體的心臟一樣,如果系統(tǒng)時鐘的抖動、延遲、偏移過大,會導致系統(tǒng)的工作頻率降低,嚴重時甚至會導致系統(tǒng)的時序錯亂,實現(xiàn)不了預期的邏輯功能。xilinx fpga內的全局時鐘資源可以很好的優(yōu)化時鐘的性能,因此在設計時要盡可能多的使用fpga內部的時鐘資源。xilinx fpga內部的全局時鐘采用全銅工藝實現(xiàn),配合專用時鐘緩沖和驅動結構,可以使進入全局時鐘網(wǎng)絡的時鐘到達fpga內部各個邏輯單元的抖動和延遲最小。全局時鐘資源是專用布線資源,存在于全銅布線層上,使用全局時鐘資源不會影響芯片的其他布線資源。最好的全局時鐘解決方案是:讓時鐘從全銅工藝的全局時鐘輸入管腳進入fpga,然后經(jīng)內部的全局時鐘緩沖單元去控制各個觸發(fā)器。xilinx常用的全局時鐘資源原語有:全局時鐘緩沖IBUFG、差分全局時鐘緩沖IBUFGDS、全局緩沖BUFG、數(shù)字時鐘管理單元DCM、鎖相環(huán)PLL。
2.全局時鐘資源的使用方法
IBUFG是從全局時鐘輸入管腳輸入的單端時鐘的第一級緩沖,IBUFGDS是指的是差分時鐘的緩沖。只要是從全局時鐘管腳的輸入的時鐘必須要經(jīng)過IBUFG,如果不經(jīng)過,那么ise在布局布線時就會報錯,反之如果使用了IBUFG,那么信號一定是從全局時鐘輸入管腳輸入的,這是因為IBUFG和IBUFGDS的輸入只和fpga的全局時鐘輸入引腳有物理上的連接,與普通的IO和內部邏輯塊CLB沒有物理上的連接。BUFG是全局緩沖,BUFG的輸出到達fpga內部各個邏輯單元的時鐘延遲與抖動都是最小的。BUFG不但可以驅動IBUFG和DCM的輸出,還可以驅動其他普通的片內信號和普通io,當某個信號扇出很大時,而且要求的抖動延遲最小時,可以用BUFG驅動該信號,普通IO和普通的片內邏輯信號進入全局時鐘布線層有一個固定的延遲,一般在10ns左右,即普通信號或普通IO從輸入到BUFG的輸出有一個約10ns左右的固有延遲,但BUFG的輸出到片內所有的單元(IOB,CLB,選擇性塊RAM)的延時可以忽略不計。時鐘資源原語的使用方法主要有以下四種:
Reference
Vivado使用心得(二)BUFG,IBUFG,BUFGP,IBUFGDS等含義以及使用
全局時鐘資源的使用方法(五種)
-
IBUFG + BUFG的使用方法:
IBUFG后面連接BUFG的方法是最基本的全局時鐘資源使用方法,由于IBUFG組合BUFG相當于BUFGP,所以在這種使用方法也稱為BUFGP方法。 -
IBUFGDS + BUFG的使用方法:
當輸入時鐘信號為差分信號時,需要使用IBUFGDS代替IBUFG。 -
IBUFG + DCM + BUFG的使用方法:
這種使用方法最靈活,對全局時鐘的控制更加有效。通過DCM模塊不僅僅能對時鐘進行同步、移相、分頻和倍頻等變換,而且可以使全局時鐘的輸出達到無抖動延遲。 -
Logic + BUFG的使用方法:
BUFG不但可以驅動IBUFG的輸出,還可以驅動其它普通信號的輸出。當某個信號(時鐘、使能、快速路徑)的扇出非常大,并且要求抖動延遲最小時,可以使用BUFG驅動該信號,使該信號利用全局時鐘資源。但需要注意的是,普通IO的輸入或普通片內信號進入全局時鐘布線層需要一個固有的延時,一般在10ns左右,即普通IO和普通片內信號從輸入到BUFG輸出有一個約10ns左右的固有延時,但是BUFG的輸出到片內所有單元(IOB、CLB、選擇性塊RAM)的延時可以忽略不計為“0”ns。 -
Logic + DCM + BUFG的使用方法:
DCM同樣也可以控制并變換普通時鐘信號,即DCM的輸入也可以是普通片內信號。使用全局時鐘資源的注意事項全局時鐘資源必須滿足的重要原則是:使用IBUFG或IBUFGDS的充分必要條件是信號從專用全局時鐘管腳輸入。換言之,當某個信號從全局時鐘管腳輸入,不論它是否為時鐘信號,都必須使用IBUFG或IBUFGDS;如果對某個信號使用了IBUFG或IBUFGDS硬件原語,則這個信號必定是從全局時鐘管腳輸入的。如果違反了這條原則,那么在布局布線時會報錯。這條規(guī)則的使用是由FPGA的內部結構決定的:IBUFG和IBUFGDS的輸入端僅僅與芯片的專用全局時鐘輸入管腳有物理連接,與普通IO和其它內部CLB等沒有物理連接。另外,由于BUFGP相當于IBUFG和BUFG的組合,所以BUFGP的使用也必須遵循上述的原則。
Reference文章來源:http://www.zghlxwxcb.cn/news/detail-403324.html
Xilinx FPGA輸入輸出緩沖 BUF 的使用
Reference
UltraScale Architecture Libraries Guide (UG974)
Reference
到了這里,關于vivado里那些看不懂的原語的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!