描述
本設(shè)計(jì)咨詢主要介紹一個(gè)錯(cuò)誤的時(shí)鐘偏移計(jì)算導(dǎo)致錯(cuò)誤時(shí)序收斂的問(wèn)題。
出現(xiàn)問(wèn)題的情況:
這可能會(huì)影響使用生成時(shí)鐘的設(shè)計(jì),其具有以下特征:
- 使用 Vivado 2018.2.x 及更早版本。
- 用戶生成的時(shí)鐘沒(méi)有使用‘-master_clock’定義
- 在同一時(shí)鐘網(wǎng)絡(luò)的并行分支上的層級(jí)引腳上創(chuàng)建的主時(shí)鐘或生成的時(shí)鐘連接至上述用戶生成的時(shí)鐘源引腳
在上述情況下,時(shí)序引擎可能會(huì)為生成的時(shí)鐘選擇錯(cuò)誤的主時(shí)鐘,這可能會(huì)導(dǎo)致在路徑上報(bào)告的不正確時(shí)鐘偏移。
在 Vivado 2018.3 中,定時(shí)器使用正確的主時(shí)鐘,這會(huì)導(dǎo)致相同路徑上不同的時(shí)鐘偏移和不同的簽收時(shí)序。
注:如果用戶生成的時(shí)鐘用‘-master_clock’創(chuàng)建并指向正確的主時(shí)鐘,該問(wèn)題就不會(huì)出現(xiàn)。
該問(wèn)題的示例:
在本示例中,datapath 通過(guò) LUT 循環(huán)回到相同的寄存器。寄存器和 LUT 都放在同一個(gè) SLICE 中。
示例時(shí)鐘拓?fù)洌?/p>
示例 Datapath 拓?fù)洌?/p>
請(qǐng)注意,由于缺少源時(shí)鐘路徑,2.560nS 的路徑偏移過(guò)大。
由于選擇了錯(cuò)誤的主時(shí)鐘進(jìn)行時(shí)序分析,因此在工具選擇的主時(shí)鐘和用戶生成的時(shí)鐘之間沒(méi)有路徑,從而導(dǎo)致較大的時(shí)鐘偏移。
這將迫使路由器在路徑上通過(guò)一個(gè)較長(zhǎng)的路由繞道來(lái)修復(fù)保持違規(guī)。
該路徑通過(guò)在 Vivado 2018.3 中重新加載路由后檢查點(diǎn)來(lái)顯示違規(guī):
在 Vivado 2018.3 中,由于可以計(jì)算源時(shí)鐘延遲,因此路徑偏移要小得多。
時(shí)鐘偏移會(huì)導(dǎo)致設(shè)置違規(guī),這是由于在該路徑上為了修復(fù) Vivado 2018.2.x 及更早版本中出現(xiàn)的保持違規(guī)而繞道了很長(zhǎng)的路由路徑。
可能會(huì)出現(xiàn)問(wèn)題的典型情況:
在本實(shí)例中,在層級(jí)引腳上創(chuàng)建的主時(shí)鐘不正確。
有問(wèn)題的時(shí)鐘約束來(lái)自輸入時(shí)鐘源選項(xiàng)被設(shè)置為“單端時(shí)鐘支持引腳(默認(rèn))”或“差分時(shí)鐘支持引腳”而 IP 時(shí)鐘輸入沒(méi)有連接至頂層輸入端口的時(shí)鐘向?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
在時(shí)鐘向?qū)л斎霑r(shí)鐘源設(shè)置為“全緩沖”或“無(wú)緩沖”時(shí),層級(jí)引腳上沒(méi)有創(chuàng)建主時(shí)鐘。
確認(rèn):
上述問(wèn)題由‘report_methodology’檢測(cè)報(bào)告。
建議始終運(yùn)行“report_methodology”并處理報(bào)告的違規(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 中也會(huì)報(bào)告 TIMING-27 違規(guī)。
TIMING-27 檢查指向?qū)蛹?jí)引腳上不正確的主時(shí)鐘定義,這可能會(huì)導(dǎo)致不安全的時(shí)序。
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’也會(huì)顯示不安全的時(shí)鐘對(duì),但在 2018.3 版中不會(huì):
‘check_timing’報(bào)告了一個(gè)在 2018.2.x 中生成的時(shí)鐘的問(wèn)題:
‘report_clock’報(bào)告 Vivado 為用戶生成的時(shí)鐘使用的實(shí)際主時(shí)鐘。
雖然時(shí)鐘 microblaze_0_Clk 傳播至所生成時(shí)鐘的源引腳,但‘report_clocks’會(huì)按照主時(shí)鐘報(bào)告 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}
解決方案
該問(wèn)題將在 Vivado 2018.3 中修復(fù)。
出現(xiàn)該問(wèn)題時(shí),通常的解決方法是在創(chuàng)建用戶生成的時(shí)鐘時(shí)指定主時(shí)鐘名:
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è)計(jì)中,最初的問(wèn)題是沒(méi)有正確配置時(shí)鐘向?qū)А?/p>
對(duì)于該設(shè)計(jì),需要重新運(yùn)行時(shí)鐘向?qū)Р⒓m正配置。
常見(jiàn)問(wèn)題解答:
1) 該問(wèn)題會(huì)影響 Vivado 的哪些版本?
該問(wèn)題會(huì)影響 Vivado 2018.2 及更早版本。
2) 如果一個(gè)設(shè)計(jì)使用 2018.2 及更早 Vivado 版本符合時(shí)序要求,那用戶對(duì)時(shí)序覆蓋范圍應(yīng)該有多大的信心?(如果他們不想升級(jí)至最新 Vivado 版本,即 2018.3)
該漏洞主要針對(duì)錯(cuò)誤的/部分時(shí)鐘定義。因此,如果設(shè)計(jì)有適當(dāng)?shù)募s束,并且符合時(shí)序要求,那就不應(yīng)該有問(wèn)題。
要進(jìn)行完整性檢查,您可以運(yùn)行以下命令并查找與時(shí)序相關(guān)的警告/重要警告。
- 運(yùn)行‘report_clock’命令并驗(yàn)證 所有主時(shí)鐘(‘create_clock’約束)是否都在 I/O 端口上。
- 運(yùn)行‘report_method’命令并驗(yàn)證在設(shè)計(jì)中是不是沒(méi)有 Timing-6、Timing-27、Timing-30 和 Timing-36 警告。
- 建議使用‘master_clock’選項(xiàng)編輯‘generated_clock’約束。
注:請(qǐng)參閱 (UG903) 和 (UG835),了解更多詳情。
3) 在 Vivado 2018.3 中,用戶是需要為生成的時(shí)鐘約束使用‘master_clock’選項(xiàng),還是這只是在早期 Vivado 版本中避免該問(wèn)題的解決方法?
該問(wèn)題已在 Vivado 2018.3 中修復(fù)。
根據(jù) Xilinx 方法指南,始終建議為‘generated_clock’約束使用‘master_clock’選項(xiàng)。這個(gè)建議不僅僅只針對(duì)早期的 Vivado 版本。
4) 將設(shè)計(jì)從 Vivado 2018.2 及更早版本升級(jí)至 Vivado 2018.3 版有多安全?
該問(wèn)題已在 Vivado 2018.3 中修復(fù)。
將設(shè)計(jì)從舊 Vivado 版本升級(jí)至最新的 Vivado 版本(即 2018.3)沒(méi)有風(fēng)險(xiǎn)。
5) 在我的設(shè)計(jì)中有一個(gè)上述警告,但是電路板上一切正常,時(shí)序得分為 0,忽略該警告安全嗎?
Xilinx 建議搞清楚警告的根本原因并正確修復(fù)。
重要通知:
Timing-6:如果該警告發(fā)生在介紹部分列出的條件下,就需要應(yīng)用上述解決方法來(lái)解決該問(wèn)題。
-
寄存器
+關(guān)注
關(guān)注
31文章
5402瀏覽量
122871 -
路由器
+關(guān)注
關(guān)注
22文章
3790瀏覽量
115652 -
Slice
+關(guān)注
關(guān)注
0文章
7瀏覽量
8172 -
Vivado
+關(guān)注
關(guān)注
19文章
826瀏覽量
67961 -
時(shí)鐘網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
16瀏覽量
6626
發(fā)布評(píng)論請(qǐng)先 登錄
常見(jiàn)xgboost錯(cuò)誤及解決方案
常見(jiàn)電位測(cè)量錯(cuò)誤及解決方案
EEPROM編程常見(jiàn)錯(cuò)誤及解決方案
dac161p997這幾個(gè)寄存器全配置為0,當(dāng)發(fā)生錯(cuò)誤時(shí),dac161p997會(huì)不會(huì)依據(jù)錯(cuò)誤的數(shù)據(jù)進(jìn)行輸出?
常見(jiàn)的GND連接錯(cuò)誤及解決方案
SQL錯(cuò)誤代碼及解決方案
aes加密的常見(jiàn)錯(cuò)誤及解決方案
socket 常見(jiàn)錯(cuò)誤與解決方案
CAN總線常見(jiàn)錯(cuò)誤碼及其解決方法
SUMIF函數(shù)常見(jiàn)錯(cuò)誤及解決方案
網(wǎng)關(guān)錯(cuò)誤是什么意思
時(shí)鐘抖動(dòng)和時(shí)鐘偏移的區(qū)別
FPGA 高級(jí)設(shè)計(jì):時(shí)序分析和收斂
一文讀懂CAN通訊錯(cuò)誤幀

評(píng)論