如何补偿Arria 10 PLL参考时钟的PLL级联或非专用时钟路径的抖动?

如果要连接来自PLL输出的PLL参考时钟或Arria®10设计中的非专用时钟引脚,则会引入额外的抖动。可以通过在设计中的下游PLL的输出时钟处添加100ps时钟不确定性约束来补偿此抖动。

有关应用时钟不确定性约束的详细信息,请参阅以下文档。

Arria®10PLL 级联或非专用时钟路径解决方案指南

将设计升级到Quartus Prime软件v17.1或更高版本时,需要修改先前添加的约束:

a)如果现有时钟不确定性仅来自derive_clock_uncertainty set_clock_uncertainty -add -to <clock x> -from <clock y> 0.1 <Remove>

b)如果现有时钟不确定性来自derive_clock_uncertainty +附加“set_clock_uncertainty -add”v17.0:set_clock_uncertainty -add -to <clock x> -from <clock y> [expr <existing_value> +0.1] v17.1或更高版本: set_clock_uncertainty -add -to <clock x> -from <clock y> <existing_value>

c)如果“set_clock_uncertainty”(no -add)覆盖了derive_clock_uncertainty - 没有变化,需要保持现有约束set_clock_uncertainty -to <clock x> -from <clock y> [expr <existing_value> +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 = on

a2t_allow_cascaded_pll_in_cpa_compensation =上

从PLL输出或非专用时钟引脚连接PLL参考时钟时,将引入额外的抖动。

对于使用Arria 10 Altera PHYLite 17.0及更早版本实现的设计,可以通过在设计中的下游PLL的输出时钟处添加100ps时钟不确定性约束来补偿此抖动。

为Quartus Prime软件版本17.0及更早版本的PHYLite生成的SDC文件中的时钟不确定性添加以下约束。每次重新生成Altera PHYLite IP时,都需要进行以下更改。

1.为变量名称附加抖动分配100ps值。

设置additional_jitter 0.000

#首先确定是否已创建参考时钟(即参考时钟共享)

if {$ var(PLL_USE_CORE_REF_CLK)==“false”} {

设置ref_clock_exists [phy_altera_phylite_arch_nf_171_flagyzi_does_ref_clk_exist $ pins(pll_ref_clock)]

if {$ ref_clock_exists == 0} {

#这是PLL用来导出内核中任何其他时钟的参考时钟

create_clock -period $ ref_period -waveform [list 0 $ ref_half_period] $ pins(pll_ref_clock)-add -name $ {inst} _ref_clock

}

} else {

设置additional_jitter 0.100

}

2.在写入FIFO时钟上添加额外的时钟不确定性:

设置i_wf_clock 0

foreach_in_collection wf_clock $ write_fifo_clk_neg {

set vco_clock_id [phy_altera_phylite_arch_nf_171_flagyzi_get_vco_clk_id $ wf_clock var]

if {$ vco_clock_id == -1} {

post_message -type critical_warning“无法找到VCO时钟”

} else {

设置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] \

-name“$ {inst} _wf_clk_grp _ $ {i_grp_idx} _ $ {i_wf_clock} _neg”\

-source [get_node_info -name $ vco_clock_id] \

-multiply_by 1 \

-divide_by [expr $ var(PLL_VCO_TO_MEM_CLK_FREQ_RATIO)] \

- 阶段180]

}

incr i_wf_clock

}

#new约束:

if {$ additional_jitter!= 0} {

set_clock_uncertainty -to [get_clocks $ {inst} _wf_clk_grp_ *] -add $ additional_jitter

}

3.在写入路径上添加额外的时钟不确定性:

if {[llength $ write_clocks]> 0} {

#我们不需要derive_clock_uncertainty数字,因为我们在set_output_delay中包含了FLS JITTER

set_clock_uncertainty -to [get_clocks $ write_clocks] [phy_altera_phylite_arch_nf_170_zul23qq_round_3dp [expr 0.5 *($ var(WR_SSO)+ $ var(WR_JITTER_SCALED))+ $ additional_jitter]]

}

4. read_clocks没有变化

if {[llength $ read_clocks]> 0} {

#我们不需要derive_clock_uncertainty数字,因为我们在set_input_delay中包含了FLS JITTER

set_clock_uncertainty -to [get_clocks $ read_clocks] 0.0

}

5.在c2p / p2c传输上添加额外的时钟不确定性(phy_clk < - > usr_clock)

if {$ i_phy_clock> $ same_tile_index} {

#C2P / P2C,外围瓷砖!= CPA瓷砖。

#对于这些传输,SDC明确地覆盖时钟不确定性值。

#因此,当过度约束时,我们不能使用“-add”选项。

设置add_to_derived“”

set c2p_su [expr {$ p2c_c2p_multi_tile_clock_uncertainty + [lindex $ peripheral_overconstraints 0] + [lindex $ peripheral_clock_uncertainty 0]} + additional_jitter]

设置c2p_h [expr {$ p2c_c2p_multi_tile_clock_uncertainty + [lindex $ peripheral_overconstraints 1] + [lindex $ peripheral_clock_uncertainty 1]} + additional_jitter]

设置p2c_su [expr {$ p2c_c2p_multi_tile_clock_uncertainty + [lindex $ peripheral_overconstraints 2] + [lindex $ peripheral_clock_uncertainty 2]} + additional_jitter]

设置p2c_h [expr {$ p2c_c2p_multi_tile_clock_uncertainty + [lindex $ peripheral_overconstraints 3] + [lindex $ peripheral_clock_uncertainty 3]} + additional_jitter]

} else {

#C2P / P2C其中外围区块== CPA区块

#对于这些传输,使用-add选项是安全的,因为我们依赖

#derive_clock_uncertainty为基值。

设置add_to_derived“-add”

set c2p_su [expr [lindex $ peripheral_overconstraints 0] + [lindex $ peripheral_clock_uncertainty 0] + additional_jitter / 2]

set c2p_h [expr [lindex $ peripheral_overconstraints 1] + [lindex $ peripheral_clock_uncertainty 1] + additional_jitter / 2]

set p2c_su [expr [lindex $ peripheral_overconstraints 2] + [lindex $ peripheral_clock_uncertainty 2] + additional_jitter / 2]

set p2c_h [expr [lindex $ peripheral_overconstraints 3] + [lindex $ peripheral_clock_uncertainty 3] + additional_jitter / 2]

}

6.在核心传输中添加额外的时钟不确定性(usr_clock / extra core clock < - > usr_clock / extra core clock)

设置c2c_same_su [expr [lindex $ core_overconstraints 0] + [lindex $ core_clock_uncertainty 0] + additional_jitter]

set c2c_same_h [expr [lindex $ core_overconstraints 1] + [lindex $ core_clock_uncertainty 1]]

设置c2c_diff_su [expr [lindex $ core_overconstraints 2] + [lindex $ core_clock_uncertainty 2] + additional_jitter]

设置c2c_diff_h [expr [lindex $ core_overconstraints 3] + [lindex $ core_clock_uncertainty 3] + additional_jitter]

foreach src_core_clock_local $ core_clocks_local {

if {$ src_core_clock_local!=“”} {

foreach dst_core_clock_local $ core_clocks_local {

if {$ dst_core_clock_local!=“”} {

if {$ src_core_clock_local == $ dst_core_clock_local} {

#相同的时钟网络传输

set_clock_uncertainty -from $ src_core_clock_local -to $ dst_core_clock_local -setup -add $ c2c_same_su

set_clock_uncertainty -from $ src_core_clock_local -to $ dst_core_clock_local -hold -enable_same_physical_edge -add $ c2c_same_h

} else {

#在不同的核心时钟网络之间传输

set_clock_uncertainty -from $ src_core_clock_local -to $ dst_core_clock_local -setup -add $ c2c_diff_su

set_clock_uncertainty -from $ src_core_clock_local -to $ dst_core_clock_local -hold -add $ c2c_diff_h

}

}

}

}

}

7.对于涉及user_created_clock和PHYLite输出时钟的用户逻辑,用户需要在用户sdc文件中的该时钟传输路径上添加额外的100ps时钟不确定性。

8.报告SDC并检查SDC分配>设置时钟不确定性报告,确保将额外的100ps添加到受影响的时钟传输路径中

9.重新定时或重新编译设计并确保时序收敛

10.执行严格的硬件测试,以确保设计在投入生产之前正常工作

将设计升级到Quartus Prime软件v17.1或更高版本时:

a)启动IP升级工具,将Arria 10 Altera PHYLite IP升级到v17.1

b)当使用核心PLL参考时钟时,生成的PHYLite SDC文件将添加所有必要的时钟不确定性。

c)为用户逻辑路径添加额外的100ps时钟不确定性,该路径涉及user_created_clock和PHYLite输出时钟,此前需要保留在用户sdc文件中。

d)对设计进行全面编译并确保时序收敛。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-08-02 13:55:21 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它