静态时序分析(2)

253 阅读2分钟

静态时序分析的环境

主要针对同步电路

时钟约束

reg->reg

时钟形状

  1. 时钟源点

  2. 时钟周期

  3. 占空比

  4. 边沿翻转时间 image.png

  5. create_clock -name SYSCLK -period 20 -waveform{0 5}[get_ports 2 SCLK]

时钟的其他定义

image.png

  1. uncertainty(悲观不确定性)->电路时钟检查更加严苛
    • image.png
    • image.png
  2. 时钟抖动Jitter
  3. 时钟偏斜clk Skew 始终到达两个触发器的始终偏斜
  4. 时钟延时
    • 时钟树之前(估计值)
    • 时钟树之后(精确值)(set_propagated_clock)
    • network latency
    • source latency(CPPR问题)
    • image.png
    • 约束指令image.png

生成时钟

image.png

  1. image.png
  2. 最后一个时钟的latency是前边时钟的累加image.png
  3. 在时钟间没有特别明确的关系,可定义一个新时钟
    • image.png相与没有太多关系->可定义一个新时钟
    • 脚本例子image.png

约束input paths与output paths

port->reg reg->port

约束脚本

  1. inputimage.png
  2. set_input_delay -clock CLKA -max[expr Tclk2q+Tcl][get_ports INP1]
  3. 建立时间保持时间image.png
  4. outputimage.png
  5. 建立时间保持时间image.png
  6. 时钟路径组:最后的结束点时钟来分组image.png
  7. 端口的其他属性
  8. input
    • set_drive
    • driving_cell
    • set_input_transition
    • image.png0为驱动能力无限大
    • image.png
    • image.png
  9. output
    • set_load
    • 输出负载默认是0
    • image.png

Design rule checks(DRC)

  1. set_max_transition
  2. set_max_capacitance
  3. set_max_fanout(扇出)
  4. set_max_area
  5. image.png

Virtual clocks

  1. 为了线路的完整性
  2. 没有时钟,虚拟一个时钟,保证时序的完整性

refining the Timing analysis(时序更精细)

  1. set_case_analysis给单元的pin和port指定常数值(DFT=design for testability=可测性设计->扫描链->寄存器置位很容易)
  • 触发器可能接两个时钟,测试时钟
  • 关闭没有意义的时序分析,测试时钟就不需要再做一遍时序分析
  • image.png
  • image.png
  1. set_disable_timing打破一个时序弧
    • image.png
    • 不是时序路径(使能端到输出端)
  2. set_false_path(非同步)
    • 伪路径(异步路径)
  3. set_multicycle_path(组合逻辑时间较长,多个周期再检查建立时间,保持时间)
    • image.png
    • 组合逻辑很慢,第三个周期检查
    • 前端和后端一起写SDC
    • 手册里man一下就可以看到这些指令