• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

Xilinx约束学习笔记(三)—— 时序概念

开发技术 开发技术 5小时前 2次浏览

3. 时序概念

发现对于时序基础的介绍这一块,Intel 的文档竟然要比 Xilinx 的详细,因此引用了很多 Intel 的文档内容。

3.1 术语

  • 发送沿(launch edge),指用来发送数据的源时钟的活动边缘。

  • 采样沿(capture edge),Intel 的文档中称作 latch edge。指的是对数据进行采样的目的时钟的活动边沿。

  • 源时钟(source clock),用来发送数据时钟。

  • 目的时钟(destination clock),用来对数据进行采样的时钟。

  • 建立时间要求(setup requirement),是发送沿和采样沿之间的关系,它定义了最严格的建立时间约束。

  • 建立时间关系(setup relationship),是指对建立时间进行检查。

  • 保持时间要求(hold requirement),是发送沿和采样沿之间的关系,它定义了最严格的保持时间约束。

  • 保持时间关系(hold relationship),是指保持时间进行检查。

3.2 时序路径

时序路径的形态:

  • 从输入端口到内部时序单元的路径。如图中 DINREGA 的路径。
  • 从时序单元到时序单元的内部路径。如图中 REGAREGB 的路径。
  • 从内部时序单元到输出端口的路径。如图中 REGBDOUT 的路径。
  • 从输入端口到输出端口的路径。如图中 In-2-Out Data Path

Xilinx约束学习笔记(三)—— 时序概念

时序路径分段:

  • 源时钟路径(Source Clock Path)。

    是指从时钟源点(通常是一个输入端口)到时序单元的时钟管脚所经过的路径。对于从输入端口开始的时序路径,没有源时钟路径。

  • 数据路径(Data Path)。

    指数据传播的路径。从时序单元的时钟引脚或数据输入端口开始,到时序单元的数据输入引脚或一个数据输出端口结束。

  • 目的时钟路径(Destination Clock Path)。

    是指从目的时钟源点(通常是一个输入端口)到采样时序单元的时钟管脚所经过的路径。对于终点为输出端口的时序路径,没有相应的目的时钟路径。

Xilinx约束学习笔记(三)—— 时序概念

3.3 建立时间和保持时间

Xilinx约束学习笔记(三)—— 时序概念

每个 FPGA 内部的寄存器都有两个固有的特性参数,建立时间和保持时间,其时间的长短是由器件本身决定的。

  • 建立时间(Setup):在时钟沿之前,数据需要提前保持稳定的时间。如图中 Tsu 这一段时间内,数据 D 必须保持稳定不变。
  • 保持时间(Hold):在时钟沿之后,数据需要继续保持稳定的时间。如图中 Th 这一段时间内,数据 D 必须保持稳定不变。

这两个时间是保证数据能够被正常采样的前提,如果不满足这两个时间要求,寄存器就可能会出现亚稳态,输出数据 Q 的值将不再是 D 上的输入值 ,而会是随机值。

寄存器还有另一个特性参数 Tco,指的是从时钟沿到达时钟引脚开始,到对数据 D 采样,直到输出至 Q 的延时。

Recovery 与 Setup 类似,Remove 与 Hold 类似,只是这两个参数针对的是寄存器的复位引脚,而不是数据输入引脚 D。

3.4 静态时序分析(Static Timing Analysis)

静态时序分析一般可分为两类:

  • 最大延迟分析(Max Delay Analysis),包括 Setup 和 Recovery 分析。
  • 最小延迟分析(Min Delay Analysis),包括 Hold 和 Remove 分析。

3.3.1 Setup/Recovery 时间检查

建立时间检查是为了确保在最悲观的场景下,仍然可以对数据安全的进行采样。

Xilinx约束学习笔记(三)—— 时序概念

以两个寄存器 REGA 和 REGB 为例。两者由同一个时钟 clk 驱动。clk 经过源时钟路径 Tclk1 和目的时钟路径 Tclk2 延迟后,分别到达 REGA 和 REGB 的时钟引脚。如要满足 REGB 的建立时间 Tsu 的要求(REGB.D 在 REGB.clk 的采样沿之前的 Tsu 时刻之前就保持稳定不变)。语言可能不好理解,我们用公式来表达。

REGB.clk 的采样沿之前的 Tsu 时刻,我们把它称作 Data_Required_Time。依照下图,我们可以很容易得到:

[Data_Required_Time = Capture_Edge + T_{clk2} – T_{su}
]

也就是说,REGA.Q 在经过 Tdata 延迟之后到达 REGB.D 的时刻在 Data_Required_Time 之前就即可满足建立时间要求。这个时刻也可以用公式来表式,我们称作它为 Data_Arrival_Time

[Data_Arrival_Time = Launch_Edge + T_{clk1} + T_{co} + T_{data}
]

将上述两个值相减,即可以得到建立时间的余量 Setup_Slack(下图中绿色部分)。

[Setup_Slack = Data_Required_Time – Data_Arrival_Time
]

当建立时间的余量为正数时,即表示满足建立时间要求。当为负数时,即不符合建立时间要求。

Xilinx约束学习笔记(三)—— 时序概念

上图中需要理解的是,一般情况下,对于同一时钟,每个时钟沿既是发送沿也是采样沿。

上述公式都是在时钟完全理想的情况下推导的,但实际硬件上是不存在理想时钟的,因此要让代码在硬件上正常工作,还需要把时钟的不确定性(Clock Uncertainty)添加上。Clock Uncertainty 是指任何一对时钟边缘之间可能的时间变化之和。不确定性包括时钟抖动(Clock Jitter),某些硬件原语引入的相位误差,以及用户在约束(set_clock_uncertainty)中指定的时钟不确定性。对上计算公式修改后:

[Data_Required_Time = Capture_Edge + T_{clk2} – T_{su} – Clock_Uncertainty
]

对于源时钟和目的时钟不是同一时钟时,建立时间检查只在两个时钟之间最悲观的建立时间关系上执行。例如下图,源时钟和目的时钟是不同频的,为 2:3 的关系,周期的最小公倍数为 12ns。在这 12ns 内有两个建立时间关系,Setup(1) 和 Setup(2)。Setup(1) 为 4ns,Setup(2) 为 2ns,所以使用 Setup(2) 做分析检查。

Xilinx约束学习笔记(三)—— 时序概念

至于恢复时间余量的计算方法和建立时间的一样,只是恢复时间针对的是寄存器的复位端口。

3.3.2 Hold/Removal 时间检查

保持时间检查,是为了满足器件的保持时间特性。即在采样沿之后,数据仍要保持一段 Th 时间。如下图中,REGB.D 的新数据的到达时间要比采样沿至少落后 Th 才能保证满足保持时间特性。绿色部分是多出来的保持时间余量。

Xilinx约束学习笔记(三)—— 时序概念

同样,把新数据要求到达的时间用公式表示如下,新数据实际到达时间只能比这个时间晚。

[Data_Required_Time = Capture_Edge + T_{clk2} + T_h + Clock_Uncertainty
]

新数据实际到达时间用公式表示如下:

[Data_Arrival_Time = Launch_Edge + T_{clk1} + T_{co} + T_{data}
]

将上述两个值相减,即可以得到建立时间的余量 Hold_Slack(下图中绿色部分)。

[Hold_Slack = Data_Arrival_Time – Data_Required_Time
]

保持时间检查是基于建立时间检查的,对于每一个建立时间检查都有两个对应的保持时间检查:

  1. 第一 hold 检查确保 Launch Edge 打出的数据不会被 Capture Edge 前一个沿采集到。(下图中的H1a 和 H2a)
  2. 第二 hold 检查确保由下一个 Launch Edge 打出数据不会被当前 Capture Edge 采集到。(下图中的H1b 和 H2b)

在保持时间检查期间,时序引擎只报告两个时钟之间最差的保持关系。最差的保持关系并不总是与最差的建立关系联系在一起。时序引擎会检查所有可能的建立关系及其对应的保持关系,以确定最差的保持关系。

Xilinx约束学习笔记(三)—— 时序概念

上图中,有两种 Setup 关系(S1 和 S2),每种 Setup 对应两种 Hold 关系(H1b 和 H2a 为两个 Setup 关系共有)。

  • S1 对应两个 Hold 关系为 H1a(0ns)和 H1b(-2ns)。
  • S2 对应两个 Hold 关系为 H2a(-2ns)和 H2b(-4ns)。

上述括号中的值是 Launch Edge 减去 Capture Edge 得到的,时序引擎在做时序分析的时候会选择 H1a 进行分析,而不是 H2b。因为 Launch Edge 比 Capture Edge 越是落后,余量就越大。

至于移除时间余量的计算方法和保持时间的一样,只是移除时间针对的是寄存器的复位端口。


程序员灯塔
转载请注明原文链接:Xilinx约束学习笔记(三)—— 时序概念
喜欢 (0)