(四)STA——环境

1. 课程来源

课程来源

2. 什么是STA环境

STA环境通常涉及以下方面:

  1. 时序库(Library): 包含标准单元(门、触发器等)的时序特性信息,如传播延迟、引脚到达时间等。

  2. 约束文件(Constraints): 这些文件定义了电路中各个元件的时序要求,如输入到输出的最大传播延迟、时钟频率等。

  3. 时序分析工具(STA Tool): 这些工具能够基于时序库和约束文件,对电路进行时序分析,以估计信号传播的延迟,识别潜在的时序问题,并生成时序报告。

  4. 时序报告(Timing Reports): 这些报告提供了关于电路中各个路径的时序信息,包括路径延迟、时序违规等。工程师可以根据这些报告来调整设计,以满足时序要求。

 3. 定义时钟

时钟属性:时钟源点;时钟周期;占空比;边沿翻转时间;clock uncertainty;clock latency

  • create_clock -name SYSCLK -period 20 -waveform {0 5} [get_ports SCLK]
  • 时钟命名:-name SYSCLK(名字可自定义,随机取);
  • 时钟周期:-period 20 (时钟周期为20);
  • 边沿翻转时间:-waveform {0,5}(0:上升沿;5:下降沿);
  • 时钟来源:[get_ports SCLK]

 上面定义的时钟过于理想化,实际系统中还要考虑时钟误差:时钟偏斜,时钟抖动等。通过定义时钟误差来让整个时钟变得更加严苛,缩短有效时钟周期,用更严格的时钟条件来检查建立时间和保间。通过这些比较严格、悲观的设计可以使得整个系统变得比较稳健。

下面展开介绍clock uncertainty

  • set_clock_uncertainty -setup 0.2 [get_clocks CLK_CONFIG]
  • 让setup检查边沿再往前推一点
  • set_clock_uncertainty -hold 0.05 [get_clocks CLK_CONFIG]
  • 让hold检查边沿再往后推一点

 虚拟时钟也可以指定uncertainty

clock uncertainty包括:时钟偏移(clock skew)、时钟抖动(clock jitter) 

时钟偏移:时钟信号到达相邻两个时许单元的时间差;

时钟抖动:对单个时钟来说,两个时钟周期之间的偏差。

 clock latency包括:network latency 和 source latency

 4. 生成时钟

通过maser clock 分频生成的时钟通常定义为generated clock,定义成生成时钟之后处理时序问题与原生时钟有什么区别?下面展开讲解。

  • master clock:CLKP   ->  generated clock: CLKPDIV2
  • create_clock -name CLKP 10 [get_pins UPLL0/CLKOUT]
  • create_generated_clock -name CLKPDIV2 -source UPLL0/CLKOUT -divide_by 2 [get_pins UFF0/Q]

将分频得到的时钟定义成生成时钟(generated clock),那么系统在做时序分析时会把master clock 和 generated clock当做同步时钟来处理,做STA分析。如果把分频得到的时钟定义成新的时钟,而不是生成时钟(generated clock),那么分频得到的时钟与master 时钟就失去了联系,系统在做时序分析时会认为这两个时钟之间没有关系,当做异步时钟处理,不做STA分析,那么要是在这段路径传输出现问题就会导致错误。因此,在定义时钟时一定要弄清楚时钟之间的关系。

 这种情况建议定义成新时钟

 5. 输入路径和输出路径约束

针对以下这三种时序路径:clock pin  ->  output port;input port  ->  寄存器D端;input port  -> output port 。

  • set_input_delay -clock CLKA -max [expr Tclk2q + Tc1] [get_ports INP1]
  • 下图时序路径为:input port  ->  寄存器D端

针对建立时间和保持时间分别设置不同的约束

  •  set_output_delay -clock CLKQ -max [expr Tc2 + Tsetup] [get_ports OUTB]
  • 下图是针对时序路径:clock pin  ->  output port

针对建立时间和保持时间分别设置不同的约束 

 终点(endpoint)是哪个时钟那么就是哪个时钟的path groups,这样来判断是哪个时钟域的

通过以上的这些约束基本上可以满足所有时序路径的时序分析,但是针对IO端口的外部约束还有额外要求。input和output

 6. 设计规则检查

 7. 虚拟时钟

在对input delay和output delay做STA时,定义虚拟时钟可以很好的约束这两条路径。

 8. Refining the Timing Analysis

让整个工具分析的空间更小,节省运行时间的四个约束

在做DFT时需要插入扫描链时钟,那么在系统工作时这个时钟时不工作的,因此在STA时不需要对扫描链时钟进行时序检查。

  • set_case_analysis

  •  set_disable_timing

  • set_false_path  
  • 跨时钟域;
  • 有些时序路径永远不会出现 
  • set_multicycle_path
  • 组合逻辑延时过大,需要好几个周期才能实现,因此就没有不要每个周期来检查建立时间和保持时间,告诉工具过几个周期再来检查。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值