静态时序分析的环境
主要针对同步电路
时钟约束
reg->reg
时钟形状
-
时钟源点
-
时钟周期
-
占空比
-
边沿翻转时间
-
create_clock -name SYSCLK -period 20 -waveform{0 5}[get_ports 2 SCLK]
时钟的其他定义
- uncertainty(悲观不确定性)->电路时钟检查更加严苛
- 时钟抖动Jitter
- 时钟偏斜clk Skew 始终到达两个触发器的始终偏斜
- 时钟延时
- 时钟树之前(估计值)
- 时钟树之后(精确值)(set_propagated_clock)
- network latency
- source latency(CPPR问题)
- 约束指令
生成时钟
- 最后一个时钟的latency是前边时钟的累加
- 在时钟间没有特别明确的关系,可定义一个新时钟
相与没有太多关系->可定义一个新时钟
- 脚本例子
约束input paths与output paths
port->reg reg->port
约束脚本
- input
- set_input_delay -clock CLKA -max[expr Tclk2q+Tcl][get_ports INP1]
- 建立时间保持时间
- output
- 建立时间保持时间
- 时钟路径组:最后的结束点时钟来分组
- 端口的其他属性
- input
- set_drive
- driving_cell
- set_input_transition
0为驱动能力无限大
- output
- set_load
- 输出负载默认是0
Design rule checks(DRC)
- set_max_transition
- set_max_capacitance
- set_max_fanout(扇出)
- set_max_area
Virtual clocks
- 为了线路的完整性
- 没有时钟,虚拟一个时钟,保证时序的完整性
refining the Timing analysis(时序更精细)
- set_case_analysis给单元的pin和port指定常数值(DFT=design for testability=可测性设计->扫描链->寄存器置位很容易)
- 触发器可能接两个时钟,测试时钟
- 关闭没有意义的时序分析,测试时钟就不需要再做一遍时序分析
- set_disable_timing打破一个时序弧
- 不是时序路径(使能端到输出端)
- set_false_path(非同步)
- 伪路径(异步路径)
- set_multicycle_path(组合逻辑时间较长,多个周期再检查建立时间,保持时间)
- 组合逻辑很慢,第三个周期检查
- 前端和后端一起写SDC
- 手册里man一下就可以看到这些指令