时钟树延迟偏差的不确定性

10 篇文章 0 订阅

时钟到达每一个时序型设备,并控制芯片内的数字事件。

时钟信号的设计两个阶段。

(1)时钟处于“ideal理想模式”(例如:RTL设计期间、合成期间和放置期间)。
一个“理想的”时钟没有物理分布树,它只是神奇地准时出现在所有的时钟针上。
(2)第二阶段是时钟树合成(CTS)将实际的缓冲器树插入设计中,该树将时钟信号从时钟源引脚传送到需要获得时钟信号的触发器。CTS是在放置之后和布线之前完成的。CTS完成后,时钟被称为“propagation传播模式”。

Clock_latency(时钟延迟)是理想模式下术语。

它指的是指定在时钟信号源和触发器时钟管脚之间存在的延迟。这是用户指定的延迟,而不是真正的测量对象。
当时钟实际被创建时,那么相同的延迟现在被称为“插入性延迟”。插入延迟(ID)是通过缓冲器树的真实的、可测量的延迟路径。
有时,clock_latency被解释为插入延迟的期望目标值。时钟延迟是时钟从时钟源到达信宿管脚所花费的时间。
它分为两个部分-时钟源延迟和时钟网络延迟。
时钟源延迟定义时钟波形原点到定义点之间的延迟。
时钟网络延迟是从时钟定义指向信宿管脚的延迟。
时钟延迟也称为时钟插入延迟。
请看下面的两张图片,以便更好地理解什么是时钟延迟。

在这里插入图片描述 在这里插入图片描述

create_clock [get_ports clk_phy ] -name clk_phase_0 -period 1.874 -waveform "0 0.5*1.874"
set_clock_uncertainty -setup $SKEW_MAX [get_clocks clk_phase_0]
set_clock_uncertainty -hold $SKEW_MIN [get_clocks clk_phase_0]
create_generated_clock -name slice_clk_ctlr_phase_0 -divide_by 2 -add \
-source [get_ports clk_phy] \
-master [get_clock clk_phase_0] \
[get_pin inst_clk_div/inst_clk_div_dff/hic_dnt_div_flop/Q]
set_clock_uncertainty -setup $SKEW_MAX [get_clock slice_clk_ctlr_phase_0]
set_clock_uncertainty -hold $SKEW_MIN [get_clock slice_clk_ctlr_phase_0]
create_clock dqs_ipad[0] -name read_mem_dqs_phase_0 -period 1.784 -waveform "0 0.5*1.784"
set_clock_uncertainty -setup $SKEW_READ_DQS_MAX [get_clock read_mem_dqs_phase_0]
set_clock_uncertainty -hold $SKEW_READ_DQS_MIN [get_clock read_mem_dqs_phase_0]
create_generated_clock -name delayed_dqs_phase_1 -source dqs_ipad[0] \
 -edges {1 2 3} -edge_shift "0.25*1.874 0.25*1.874 0.25*1.874" \
 -add -master_clock [get_clocks read_mem_dqs_phase_0] dll/dll_delay_line_rd_dqs/delay_0/r1/hic_dnt_dll_nand2/A1

delayed_dqs_phase_1 is dqs_ipad[0] shift 0.25 clock cycle
Path 1: MET Setup Check with Pin dfi_read_datablk/read_datablk_fifo/io_datain_l_reg_0_/CP 

Endpoint: dfi_read_datablk/read_datablk_fifo/io_datain_l_reg_0_/D (v) checked with leading edge of 'clk_phase_0'

Beginpoint: dfi_read_datablk/read_datablk_fifo/dll_entry_flop_l_40/hic_dnt_dll_entry_flop/Q (v) triggered by leading edge of 'delayed_dqs_phase_1'

Path Groups: {reg2reg}
Other End Arrival Time 0.462
- Setup 0.099
+ Path Delay 0.901
+ Path Ideal Arrival 0.468
+ CPPR Adjustment 0.000
- Uncertainty 0.050
= Required Time 1.683
- Arrival Time 1.674
= Slack Time 0.009
 Clock Rise Edge 0.000
 = Beginpoint Arrival Time 0.000

 dqs_ipad[0] dqs_ipad[0] ^ 0.000 0.150 0.004 2 
...
 dfi_dqs_in/hic_dll_dqs_mod_dqs0/hic_dnt_dll_dqs_not/ZN
 I v -> ZN ^ 
 CKND8BWP12T35P140 0.037 0.218 0.000 0.016 0.007 1.039 
 dll/dll_delay_line_rd_dqs/delay_0/r1/hic_dnt_dll_nand2/A1
 CKND2D1BWP12T35P140
 0.001 0.687 0.000 0.016 0.007 2 1.000 delayed_dqs_phase_1 Adj. = 0.468
...
 dfi_read_datablk/read_datablk_fifo/dll_entry_flop_l_40/hic_dnt_dll_entry_flop/CP
 EDFQD2BWP12T35P140
 0.005 0.957 0.002 0.019 0.027 11 1.000 
 dfi_read_datablk/read_datablk_fifo/dll_entry_flop_l_40/hic_dnt_dll_entry_flop/Q
 CP ^ -> Q v EDFQD2BWP12T35P140
 0.112 1.069 0.000 0.012 0.002 1.077 
...

时钟偏差

两个信宿管脚之间的时钟偏差是它们之间的时钟延迟的差异。
如果捕获时钟延迟大于启动时钟,则为正偏差。这有助于setup check建立检查。
如果捕获时钟延迟小于启动时钟,则为负偏差。这有助于hold check保持型检查。
设计中理想的时钟偏差是零,这是不可能实现的。构建时钟树以减少时钟偏差值。

时钟不确定量

时钟不确定性是时钟沿的实际到达时间相对于理想到达时间的偏差。
在理想模式下,时钟信号可以同时到达所有时钟引脚。
但事实上,完美是不可能实现的。而理想模式应该引入一些不确定的变量来包容真实的传播模式。
因此,为了预期(为了包容)时钟将在不同时钟管脚的不同时间到达这一事实,“理想模式”下时钟假定时钟不确定。
例如,具有100 ps时钟不确定性的1 ns时钟意味着下一个时钟滴答器将在1 ns加或减50ps内到达。
更深层次的问题是为什么时钟并不总是在一个时钟周期之后到达。
有几个可能的原因,但这里将列出三个主要的原因:
(A)发射触发器时钟引脚的插入延迟不同于捕获触发器时钟引脚的插入延迟(通过时钟树的一条路径可以比另一条路径长)。
这就是所谓的时钟偏差。
(B)时钟周期不恒定。
一些时钟周期以随机方式比其他时钟周期长或短。
这称为时钟抖动,可由PLL或晶体振荡器、电缆、发射机、接收器、PLL的内部电路、Osillator的热噪声等引起。在Pre CTS的情况下,由于时钟树未建立,所以不确定性=歪斜+抖动。
CTS后不确定性=抖动。
©即使发射时钟路径和捕获时钟路径完全相同,它们的路径延迟仍可能因芯片上的变化(OCV)而不同。
这就是芯片的延迟特性因工艺变化、温度变化或其他原因而在整个模具中变化的地方。
这实质上增加了时钟偏差。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
set_path_margin是一个命令,用于设置路径的容差或保留余地,以确保电路中的时序要求得到满足。该命令可以通过指定路径的起点和终点来设置路径的容差,以确保在路径上的信号传输过程中,不会超过指定的延迟或时钟周期。另外,还可以使用set_path_margin命令来设置特定路径的容差,以确保其与其他路径之间的时序要求得到平衡。 例如,使用set_path_margin命令可以设置复位信号路径的容差,以避免复位信号传输过程中产生的时序问题。可以通过指定复位信号的起点和终点来设置该路径的容差,从而确保复位信号的稳定性和可靠性。 此外,对于需要设置no_function路径的情况,还可以使用set_false_path命令。通过使用-through选项,可以指定路径经过的特定点,而不需要选择起点和终点。这样可以确保路径中的所有信号都不会触发功能逻辑,从而避免不必要的时序问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [这一节学一学时序例外约束](https://blog.csdn.net/dongdongnihao_/article/details/125119798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值