FPGA时序分析笔记(四)

时钟特性

过渡时间:从一个状态到另一个状态转变所需要的时间。
BNF:

       set_clock_transition   [-rise]
                                          [-fall]
                                          [-max]
                                          [-min]
                                          clock_list                                                     transition_time
  • rise用于提供时钟上升沿的过渡时间。
  • fall用于提供时钟下降沿的过渡时间。
  • max–min 为过渡时间的最大最小操作条件。
    eg: set_clock_transition –fall –min 0.2–max 0.4 [get_clocks C1]
    注意:set_clock_transition只用于预布局阶段,即时钟树综合完成之前。当然综合之后一切都已确定要它也没啥用。

    不确定度:偏斜和抖动

    偏斜:一个源产生的信号不可能同时到达所有触发器,所产生的差异叫做时钟偏斜。
    抖动:在电路中因为串扰,电磁干扰等总之就是互相之间干扰对方就叫做抖动。
    BNF:set_clock_uncertainty    
                  [-from| -rise_from | -fal_from from_clock]
                  [-to| -rise_to | -fal_to to_clock]
                  [-setup]
                  [-hold]
                  [-rise]
                  [-fall]
                  [object_list]
                  uncertainty_value
    
    用户可以根据–setup –hold 对建立和保持检查设定不同的不确定度。
    eg:
    set_clock_uncerainty  0.5 [get_clocks C1]
    set_clock_uncerainty  -setup 0.5 [get_clocks C2]
    set_clock_uncerainty  -hold 0.2 [get_clocks C2]
    

交互时钟不确定度(过时了,下面就走个形式)

FPGA时序分析笔记(四).png

eg: # C1到C2的家里和保持不确定度

      set_clock_uncertainty–from C1 –to C2 –setup 0.5
      set_clock_uncertainty–from C1 –to C2 –hold 0.5

当交互时钟和内部时钟都确定了不确定度时,交互时钟优先级更高。

时钟延迟 源延迟 和 网络延迟

源延迟:源时钟到定义的时钟点的延迟。
网络延迟:从被时钟定义的点到实际触发的时序设备所需要的时间。
注:同过渡时间,仅在预布局阶段有效,即时钟树综合完成之前。

       BNF:             set_clock_latency[-rise]
                                                 [-fall]
                                                 [-min]
                                                 [-max]
                                                 [-source]
                                                 [-late]
                                                 [-early]                                                         [-clockclock_list]
                                                 delay
                                                 object_list
  • rise用于提供时钟上升沿的过渡时间。
  • fall用于提供时钟下降沿的过渡时间。
  • max–min 为过渡时间的最大最小操作条件。

2.png

当未设定-source 选项时,该命令表示网路延迟。

端口约束

输入

最基本的概念个人感觉深入理解时序分析(1)里边那张图就好了
最大最小有效时间:最大用来确保建立要求是否满足,最小对应保持。
多时钟:一个信号由多个时钟触发,如下图

3.png

STA会考虑每个到达时间,并且同时满足这两个条件。
BNF:

set_input_delay  
[-clock clock_name]
[-clock_fall]
[-level_sensitive]
[-rise]
[-fall]
[-max]
[-min]
[-add_delay]
[-netowrk_latency_included]
[-source_latency_included]
delay_valueport_pin_list
  • clock_fall下降沿触发
  • level_sensitive 启动元件不是一个触发器而是一个锁存器。(谨慎使用此选项)
  • rise–fall 略 类比之前的
  • min 指定延迟值域输入端口信号的最早到达时间。
  • max指定延迟值域输入端口信号的最迟到达时间。
  • add_delay当同一个端口指定多个参考时间的输入延迟,又想不被覆盖
  • netowrk_latency_included
  • source_latency_included
    延迟值D1是F1的时钟端口到B1的I1引脚之间的延迟。在set_input_delay中定义的就是它,但是在STA中还会就把L1+L2也要算上。但是假设你给的set_input_delay中包括了L1,不想让工具在重复计算则用-source_latency_included,同理-netowrk_latency_included是控制L2是否被计算。

4.png

输出类比输入在此就写个BNF
set_output_delay
[-clock clock_name]
[-clock_fall]
[-level_sensitive]
[-rise]
[-fall]
[-max]
[-min]
[-add_delay]
[-netowrk_latency_included]
[-source_latency_included]
delay_valueport_pin_list

负延迟:延迟规格为负值。

input
set_input_delay–min 为负值的时候,信号可能在时钟沿到来之前到达输入端口。
set_input_delay–max 为负值的时候,信号一定在时钟沿到来之前到达输入端口。
5.png

为满足时序要求,input_delay + Tpath + Tc-q < T
首先Tpath+ Tc-q 必< T 要是大于,那已经不是input_delay该关心的问题了
-max表示的是最糟糕的延迟 要是input_delay -max + Tpath +Tc-q < T
则信号一定在时钟沿到来之前到达输入端口。
-min表示最理想的延迟 就是input_delay -min + Tpath +Tc-q < T 也是可能在之前到达,同样反过来说,要是最理想的情况的满足不了,那就一定满足不了。

在时钟网络中,可能存在时钟偏斜,从而使启动时钟到达早了。即launch左移。

output
set_output_delay –max 为负值信号被寄存前在电路单元外部的时间为负值。因此,电路单元的内部的信号在通过最后一个寄存器和输出端口之间的组合逻辑时,允许延迟>1个时钟周期。

驱动能力

一个电路,对于输入端口驱动来说,输入过渡时间是未知的。
一个电路,对于输出端口驱动来说,负载是未知的。
所以在此用SDC命令指定相关信息
set_drive 指定驱动器的等效电阻(所用的值就是电阻值,一般人不太了解所以不常用)

BNF:      set_drive      [-rise]  [-fall]  [-min]  [-max]  resistance_value port_list
set_driving_cell  指定驱动单元
BNF:      set_driving  
[-lib_cell lib_cell_name]
[-rise]    [-fall]
[-max]   [-min]
[-librarylib_name]
[-pinpin_name]

还有,在此没有一一列举

  • lib_cell 用于指定驱动该引脚用的驱动单元。
  • rise 为上升过渡指定驱动单元 –fal同理。
  • max 为建立分析指定驱动单元–min同理。
  • library 当工具加载多个库,多个库中有相同的名称的驱动单元,用它来声明用户具体使用哪个,如果没有声明的话,工具自己决定。
  • pin 用来指定驱动单元的多个输出引脚中的具体那个引脚来驱动输入。

输入过渡

BNF:      set_input_transition
[-rise]    [-fall]  [-max]    [-min]
[-clockclock_name]
[-clock_fall]
transiton port_list

其中[-rise] [-fall] [-max] [-min]和set_driving_cell中的没啥两样。
扇出数

BNF:      set_port_fanout_number  value_port_list

扇出负载(以缓冲器的负载值为标准单元)

 BNF:    set_fanout_load   value port_list

负载

BNF:      set_load 
[-min]  [-max] 同上
[-subtract_pin_load]
[-pin_load]
[-wire_load]
valueobject

fpga时序分析笔记一
fpga时序分析笔记二
fpga时序分析笔记三
fpga时序分析笔记四

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

提问于 2019-04-28 10:43:58 +0800

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

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