偽路徑約束
在本章節(jié)的“2 約束主時鐘”一節(jié)中,我們看到在不加時序約束時,Timing Report會提示很多的error,其中就有跨時鐘域的error,我們可以直接在上面右鍵,然后設(shè)置兩個時鐘的偽路徑。
這樣會在xdc中自動生成如下約束:
set_false_path -from [get_clocks -of_objects [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT0]] -to [get_clocks -of_objects [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT1]]
其實這兩個時鐘我們已經(jīng)在前面通過generated指令創(chuàng)建過了,因此get_pins那一長串就沒必要重復(fù)寫了,所以我們可以手動添加這兩個時鐘的偽路徑如下:
set_false_path -from [get_clocks clk_rx] -to [get_clocks clk_tx]
偽路徑的設(shè)置是單向的,如果兩個時鐘直接存在相互的數(shù)據(jù)的傳輸,則還需要添加從clk_tx到clk_rx的路徑,這個工程中只有從rx到tx的數(shù)據(jù)傳輸,因此這一條就可以了。
在偽路徑一節(jié)中,我們講到過異步復(fù)位也需要添加偽路徑,rst_pin的復(fù)位輸入在本工程中就是當(dāng)做異步復(fù)位使用,因此還需要添加一句:
set_false_path -from [get_ports rst_pin]
對于clk_samp和clk2,它們之間存在數(shù)據(jù)交換,但我們在前面已經(jīng)約束過asynchronous了,這里就可以不用重復(fù)約束了。
這里需要提示一點,添加了上面這些約束后,綜合時會提示xdc文件的的warning。
但這可能是Vivado的綜合過程中,讀取到該約束文件時,內(nèi)部電路并未全都建好,就出現(xiàn)了沒有發(fā)現(xiàn)clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1等端口的情況,有如下幾點證明:
若把該xdc文件,設(shè)置為僅在Implementation中使用,則不會提示該warning
在Implementation完成后,無論是Timing Report還是通過tcl的report_clocks指令,都可以看到這幾個時鐘已經(jīng)被正確約束。
編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1640文章
21887瀏覽量
610880 -
時序約束
+關(guān)注
關(guān)注
1文章
116瀏覽量
13563
發(fā)布評論請先 登錄
相關(guān)推薦
FPGA的IO口時序約束分析
FPGA主時鐘約束詳解 Vivado添加時序約束方法

FPGA時序約束之衍生時鐘約束和時鐘分組約束
基于FPGA 和 SoC創(chuàng)建時序和布局約束以及其使用

FPGA中的時序約束設(shè)計

評論