如果您要從 PLL 輸出中連接 PLL 參考頻率,或在 Arria® 10 設計中連接非專用頻率針腳,將會引入額外的抖動。在設計中,在下游 PLL 的輸出頻率增加 100ps 頻率的不確定性限制,可以補償此抖動。
有關使用頻率不確定性限制的詳細資訊,請參閱下列檔。
Arria® 10 PLL 級聯或非專用頻率路徑的解決方法指南
當將設計升級至 Quartus Prime 軟體 v17.1 或更高版本時,先前新增的限制需要修訂:
a) 如果現有的頻率不確定性僅來自 derive_clock_uncertainty set_clock_uncertainty -add-to -從 0.1
b) 如果現有的頻率不確定性來自derive_clock_uncertainty額外的「set_clock_uncertainty-add」v17.0:set_clock_uncertainty -新增到 -從 [4 月 0.1] v17.1 或更高版本:set_clock_uncertainty -add -到 -從
c) 如果derive_clock_uncertainty覆寫為「set_clock_uncertainty」(不 -新增) - 無變更,需要保持現有的限制set_clock_uncertainty - - 從 [expr 0.1]
如果受影響的下游 PLL Arria 10 PHYLite IOPLL,請參閱下列步驟以瞭解適用頻率不確定性限制的詳細資訊。
從 Quartus Prime 軟體版本 17.0 開始,Arria 10 Altera PHYLite IP 參數編輯器中不再顯示「使用核心 PLL 參考頻率連線」。建議的方法是使用專用的頻率針腳將其連接到 PHYLite IOPLL 參考頻率。如果您的設計需要使用此功能,請仔細閱讀下列準則並遵守這些準則。
若要啟用「使用核心 PLL 參考頻率連線」(Quartus Prime 軟體版本 17.0 及更新版本),請在 quartus.ini 檔案中新增以下 INI。
ip_altera_phylite_en_pll_core_ref_ck = 開啟
a2t_allow_cascaded_pll_in_cpa_compensation開啟
當從 PLL 輸出或非專用頻率針腳連接 PLL 參考頻率時,將會引入額外的抖動。
針對採用 Arria 10 Altera PHYLite 版本 17.0 和之前所執行的設計,此抖動可透過在設計中下游 PLL 的輸出頻率增加 100ps 頻率的不確定性限制來獲得補償。
新增 PHYLite 為 Quartus Prime 軟體版本 17.0 和更早版本所產生的 SDC 檔案中的頻率不確定性的下列限制。每次再生 PHYLite IP Altera時,您都需要做出下列變更。
1. 將 100ps 值指派給可變名稱的額外抖動。
設定additional_jitter 0.000
# 首先確定是否已建立參考頻率 (即參考頻率分享)
如果 {$var (PLL_USE_CORE_REF_CLK) == 「錯誤」\ {
設定ref_clock_exists [phy_altera_phylite_arch_nf_171_flagyzi_does_ref_clk_exist $pins(pll_ref_clock)]
如果 { $ref_clock_exists == 0 {
# 這是 PLL 用來衍生核心中任何其他頻率的參考頻率
create_clock-期間 $ref_期間 -waveform [ 清單 0 $ref_半_期間 ] $pins(pll_ref_clock) -新增 -name ${inst{_ref_clock
}
{ 其他 {
設定additional_jitter 0.100
}
2. 在寫入 FIFO 頻率上新增更多頻率不確定性:
設定i_wf_clock 0
foreach_in_collection wf_clock $write_fifo_clk_neg {
設定vco_clock_id [phy_altera_phylite_arch_nf_171_flagyzi_get_vco_clk_id $wf_clock var]
如果 {$vco_clock_id == -1® { {
post_message類型critical_warning「找不到 VCO 頻率」
{ 其他 {
設定為 local_wf_clk_grp_${i_grp_idx\_${i_wf_clock] [ phy_altera_phylite_arch_nf_171_flagyzi_get_or_add_generated_clock \
-target [get_node_info-name $wf_clock]
-名稱「${inst[_wf_clk_grp_${i_grp_idx\_${i_wf_clock\_neg」
-來源 [get_node_info-name $vco_clock_id] \
-multiply_by 1 \
-divide_by [4 月 $var(PLL_VCO_TO_MEM_CLK_FREQ_RATIO))]
-相 180 ]
}
incr i_wf_clock
}
#new限制:
如果 {$additional_jitter != 0® { { \
set_clock_uncertainty-至 [get_clocks ${inst[_wf_clk_grp_*] -新增 $additional_jitter
}
3. 在寫入路徑上新增更多頻率不確定性:
如果 {[llength $write_clocks]>0\ \ \
# 我們不需要derive_clock_uncertainty數位,因為我們有包含 FLS JITTER 的set_output_delay
set_clock_uncertainty──[get_clocks $write_clocks][phy_altera_phylite_arch_nf_170_zul23qq_round_3dp[0.5*($var(WR_SSO)$var(WR_JITTER_SCALED)$additional_jitter]]
}
4. read_clocks沒有變更
如果 {[llength $read_clocks]>0\ { {
# 我們不需要derive_clock_uncertainty編號,因為我們有包含 FLS JITTER 的set_input_delay
set_clock_uncertainty──至 [get_clocks $read_clocks] 0.0
}
5. 新增 c2p/p2c 傳輸的頻率不確定性 (phy_clk usr_clock)
如果 {$i_phy_clock > $same_tile_index™ {
# C2P/P2C 的周邊磚!= CPA 磚。
對於這些傳輸,SDC 明確覆寫頻率的不確定性值。
因此,過度限制時,我們不得使用「新增」選項。
設定add_to_derived「」
設定c2p_su [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 0] [lindex $periphery_clock_uncertainty 0]] additional_jitter]
設定c2p_h [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 1] [lindex $periphery_clock_uncertainty 1]] additional_jitter]
設定p2c_su [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 2] [lindex $periphery_clock_uncertainty 2]] additional_jitter]
設定p2c_h [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 3] [lindex $periphery_clock_uncertainty 3]] additional_jitter]
{ 其他 {
# C2P/P2C,周邊磚 == CPA 磚
對於這些傳輸,可以安全地使用-新增選項,因為我們仰賴
derive_clock_uncertainty為基本值。
設定add_to_derived「新增」
設定c2p_su [expr [lindex $periphery_過度限制訓練 0] [lindex $periphery_clock_uncertainty 0] additional_jitter/2]
設定c2p_h [expr [lindex $periphery_過度限制訓練 1] [lindex $periphery_clock_uncertainty 1] additional_jitter/2]
設定p2c_su [expr [lindex $periphery_過度限制訓練 2] [lindex $periphery_clock_uncertainty 2] additional_jitter/2]
設定p2c_h [expr [lindex $periphery_過度限制訓練 3] [lindex $periphery_clock_uncertainty 3] additional_jitter/2]
}
6. 新增核心傳輸的頻率不確定性(usr_clock/額外核心頻率usr_clock/額外核心頻率)
設定為 c2c_same_su [expr [lindex $core_overconstraints 0] [lindex $core_clock_uncertainty 0] additional_jitter]
設定c2c_same_h [expr [lindex $core_過度限制訓練 1] [lindex $core_clock_uncertainty 1]]
設定c2c_diff_su [expr [lindex $core_過度限制訓練 2] [lindex $core_clock_uncertainty 2] additional_jitter]
設定c2c_diff_h [expr [lindex $core_過度限制訓練 3] [lindex $core_clock_不確定性 3] additional_jitter]
foreach src_core_clock_local $core_clocks_local {
如果 {$src_core_clock_local != 「」\ { {
foreach dst_core_clock_local $core_clocks_local {
如果 {$dst_core_clock_local != 「」\ { {
如果 {$src_core_clock_local =$dst_core_clock_local® {
# 相同的頻率網路傳輸
set_clock_uncertainty -從 $src_core_clock_local -到 $dst_core_clock_local -setup -add $c 2c_same_su
set_clock_uncertainty-從 $src_core_clock_local-到 $dst_core_clock_local -hold -enable_same_physical_edge -新增 $c 2c_same_h
{ 其他 {
# 不同核心頻率網路之間的傳輸
set_clock_uncertainty -從 $src_core_clock_local -到 $dst_core_clock_local -setup -add $c 2c_diff_su
set_clock_uncertainty -從 $src_core_clock_local -到 $dst_core_clock_local -hold -add $c 2c_diff_h
}
}
}
}
}
7. 對於涉及user_created_clock和 PHYLite 輸出頻率的使用者邏輯,使用者需要在使用者 sdc 檔案中的頻率傳輸路徑上新增額外的 100ps 頻率不確定性。
8. 回報 SDC 並查看 SDC 作業>Set Clock Uncertainty 報告,確保在受影響的頻率傳輸路徑中新增額外的 100ps
9. 重新計時或重新相容設計,並確保時間關閉
10. 執行嚴格的硬體測試,以確保設計在投入生產前正常運作
將設計升級至 Quartus Prime 軟體 v17.1 或更高版本時:
a) 啟動 IP 升級工具,將 Arria 10 Altera PHYLite IP 升級為 v17.1
b) 當使用核心 PLL 參考頻率時,產生的 PHYLite SDC 檔案將新增所有必要的頻率不確定性。
c) 對於先前涉及user_created_clock和 PHYLite 輸出頻率的使用者邏輯路徑,額外增加 100ps 頻率的不確定性,必須保留在使用者 sdc 檔案中。
d) 對設計執行完整編譯,並確保時間結束。