描述
本設(shè)計咨詢主要介紹一個錯誤的時鐘偏移計算導(dǎo)致錯誤時序收斂的問題。
出現(xiàn)問題的情況:
這可能會影響使用生成時鐘的設(shè)計,其具有以下特征:
- 使用 Vivado 2018.2.x 及更早版本。
- 用戶生成的時鐘沒有使用‘-master_clock’定義
- 在同一時鐘網(wǎng)絡(luò)的并行分支上的層級引腳上創(chuàng)建的主時鐘或生成的時鐘連接至上述用戶生成的時鐘源引腳
在上述情況下,時序引擎可能會為生成的時鐘選擇錯誤的主時鐘,這可能會導(dǎo)致在路徑上報告的不正確時鐘偏移。
在 Vivado 2018.3 中,定時器使用正確的主時鐘,這會導(dǎo)致相同路徑上不同的時鐘偏移和不同的簽收時序。
注:如果用戶生成的時鐘用‘-master_clock’創(chuàng)建并指向正確的主時鐘,該問題就不會出現(xiàn)。
該問題的示例:
在本示例中,datapath 通過 LUT 循環(huán)回到相同的寄存器。寄存器和 LUT 都放在同一個 SLICE 中。
示例時鐘拓撲:
示例 Datapath 拓撲:
請注意,由于缺少源時鐘路徑,2.560nS 的路徑偏移過大。
由于選擇了錯誤的主時鐘進行時序分析,因此在工具選擇的主時鐘和用戶生成的時鐘之間沒有路徑,從而導(dǎo)致較大的時鐘偏移。
這將迫使路由器在路徑上通過一個較長的路由繞道來修復(fù)保持違規(guī)。
該路徑通過在 Vivado 2018.3 中重新加載路由后檢查點來顯示違規(guī):
在 Vivado 2018.3 中,由于可以計算源時鐘延遲,因此路徑偏移要小得多。
時鐘偏移會導(dǎo)致設(shè)置違規(guī),這是由于在該路徑上為了修復(fù) Vivado 2018.2.x 及更早版本中出現(xiàn)的保持違規(guī)而繞道了很長的路由路徑。
可能會出現(xiàn)問題的典型情況:
在本實例中,在層級引腳上創(chuàng)建的主時鐘不正確。
有問題的時鐘約束來自輸入時鐘源選項被設(shè)置為“單端時鐘支持引腳(默認)”或“差分時鐘支持引腳”而 IP 時鐘輸入沒有連接至頂層輸入端口的時鐘向?qū)А?/p>
####################################################################################
# Constraints from file : 'pfm_top_clkwiz_kernel_0.xdc'
####################################################################################
current_instance -quiet
current_instance pfm_top_i/static_region/slr1/base_clocking/clkwiz_kernel/inst
create_clock -period 10.000 [get_ports -scoped_to_current_instance clk_in1]
set_input_jitter [get_clocks -of_objects [get_ports -scoped_to_current_instance clk_in1]] 0.100
在時鐘向?qū)л斎霑r鐘源設(shè)置為“全緩沖”或“無緩沖”時,層級引腳上沒有創(chuàng)建主時鐘。
確認:
上述問題由‘report_methodology’檢測報告。
建議始終運行“report_methodology”并處理報告的違規(guī):
TIMING-6#1 Warning
No common primary clock between related clocks
The clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q and microblaze_0_Clk are related (timed together) but they have no common primary clock. The design could fail in hardware. To find a timing path between these clocks, run the following command: report_timing -from [get_clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q] -to [get_clocks microblaze_0_Clk]
Related violations:
TIMING-30#1 Warning
Sub-optimal master source pin selection for generated clock
The generated clock pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q has a sub-optimal master source pin selection, timing can be pessimistic
Related violations:
TIMING-36#1 Warning
Invalid Generated Clock due to missing edge propagation
There is no rising/falling edge propagation between master clock pfm_top_i/static_region/slr1/base_clocking/clkwiz_pcie/inst/clk_in1 to generated clock pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q
Related violations:
Vivado 2018.2.x 和 2018.3 中也會報告 TIMING-27 違規(guī)。
TIMING-27 檢查指向?qū)蛹壱_上不正確的主時鐘定義,這可能會導(dǎo)致不安全的時序。
TIMING-27#1 Warning
Invalid primary clock on hierarchical pin
A primary clock pfm_top_i/static_region/slr1/base_clocking/clkwiz_kernel/inst/clk_in1 is created on an inappropriate internal pin pfm_top_i/static_region/slr1/base_clocking/clkwiz_kernel/inst/clk_in1. It is not recommended to create a primary clock on a hierarchical pin when its driver pin has a fanout connected to multiple clock pins
Related violations:
此外,在 Vivado 2018.2 中,‘report_clock_interaction’也會顯示不安全的時鐘對,但在 2018.3 版中不會:
‘check_timing’報告了一個在 2018.2.x 中生成的時鐘的問題:
‘report_clock’報告 Vivado 為用戶生成的時鐘使用的實際主時鐘。
雖然時鐘 microblaze_0_Clk 傳播至所生成時鐘的源引腳,但‘report_clocks’會按照主時鐘報告 pfm_top_i/static_region/slr1/base_clocking/clkwiz_pcie/inst/clk_in1:
Vivado 2018.2.x:
report_clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q
Generated Clock : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q
Master Source : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/C
Master Clock : pfm_top_i/static_region/slr1/base_clocking/clkwiz_pcie/inst/clk_in1
Divide By : 8
Generated Sources : {pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q}
Vivado 2018.3:
report_clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q
Generated Clock : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q
Master Source : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/C
Master Clock : microblaze_0_Clk
Divide By : 8
Generated Sources : {pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q}
解決方案
該問題將在 Vivado 2018.3 中修復(fù)。
出現(xiàn)該問題時,通常的解決方法是在創(chuàng)建用戶生成的時鐘時指定主時鐘名:
create_generated_clock -source [get_pins -filter REF_PIN_NAME=~C -of_objects [get_cells -hierarchical -filter {NAME =~ "*/u_jtag_proc/tck_i_reg*"}]] -divide_by 8 [get_pins -filter REF_PIN_NAME=~Q -of_objects [get_cells -hierarchical -filter {NAME =~ "*/u_jtag_proc/tck_i_reg*"}]] -master_clock microblaze_0_Clk
但在本示例設(shè)計中,最初的問題是沒有正確配置時鐘向?qū)А?/p>
對于該設(shè)計,需要重新運行時鐘向?qū)Р⒓m正配置。
常見問題解答:
1) 該問題會影響 Vivado 的哪些版本?
該問題會影響 Vivado 2018.2 及更早版本。
2) 如果一個設(shè)計使用 2018.2 及更早 Vivado 版本符合時序要求,那用戶對時序覆蓋范圍應(yīng)該有多大的信心?(如果他們不想升級至最新 Vivado 版本,即 2018.3)
該漏洞主要針對錯誤的/部分時鐘定義。因此,如果設(shè)計有適當?shù)募s束,并且符合時序要求,那就不應(yīng)該有問題。
要進行完整性檢查,您可以運行以下命令并查找與時序相關(guān)的警告/重要警告。
- 運行‘report_clock’命令并驗證 所有主時鐘(‘create_clock’約束)是否都在 I/O 端口上。
- 運行‘report_method’命令并驗證在設(shè)計中是不是沒有 Timing-6、Timing-27、Timing-30 和 Timing-36 警告。
- 建議使用‘master_clock’選項編輯‘generated_clock’約束。
注:請參閱 (UG903) 和 (UG835),了解更多詳情。
3) 在 Vivado 2018.3 中,用戶是需要為生成的時鐘約束使用‘master_clock’選項,還是這只是在早期 Vivado 版本中避免該問題的解決方法?
該問題已在 Vivado 2018.3 中修復(fù)。
根據(jù) Xilinx 方法指南,始終建議為‘generated_clock’約束使用‘master_clock’選項。這個建議不僅僅只針對早期的 Vivado 版本。
4) 將設(shè)計從 Vivado 2018.2 及更早版本升級至 Vivado 2018.3 版有多安全?
該問題已在 Vivado 2018.3 中修復(fù)。
將設(shè)計從舊 Vivado 版本升級至最新的 Vivado 版本(即 2018.3)沒有風(fēng)險。
5) 在我的設(shè)計中有一個上述警告,但是電路板上一切正常,時序得分為 0,忽略該警告安全嗎?
Xilinx 建議搞清楚警告的根本原因并正確修復(fù)。
重要通知:
Timing-6:如果該警告發(fā)生在介紹部分列出的條件下,就需要應(yīng)用上述解決方法來解決該問題。
-
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120230 -
路由器
+關(guān)注
關(guān)注
22文章
3728瀏覽量
113701 -
Slice
+關(guān)注
關(guān)注
0文章
7瀏覽量
8063 -
Vivado
+關(guān)注
關(guān)注
19文章
812瀏覽量
66470 -
時鐘網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
16瀏覽量
6568
發(fā)布評論請先 登錄
相關(guān)推薦
評論