- 时序分析
start point: 时序路径起点,为launch clock或input port
end point: 时序路径终点,为寄存器D端或output port
时序路径为一条数据在其上传播不受其它因素影响(不等待时钟到来)的路径。
以endpoint的对应时钟可将timing path分为不同group,相同clock在同一group。
时序分析:
- data arrival time = T(source clock path) + T(data path) 实际数据到达endpoint时间
- data required time = T(destination clock path) - Ts(or +Th) 基于setup/hold的数据需要在endpoint有效的时间
slack = data required time - data arrival time (setup)
= data arrival time - data required time (hold)
时间裕量,应大于零,说明实际时序符合setup/hold要求且有富裕。
若约束该路径为max_delay/min_delay(通常为异步路径),则data_required_time中的T(destination clock path)将被替换为max_delay/min_delay值。
若该路径的startpoint为input且约束了input delay,则data_arrival_time中的T(data path)需再加上input_delay值;若该路径的endpoint为output且约束了output delay,则data_required_time中的Ts或Th将被替换为output_delay值。
2. 常见时序约束
2.1 false_path
时序伪路径,常用于不需要进行Timing Check(没有时序要求)的timing path,如:异步路径、逻辑互斥路径、无实际信号到达路径等。
与set_disable_timing的区别:false_path设置后仍会计算timing path的延时,只是没有了约束;disable_timing设置后会直接取消该timing arc,对其不会有任何时序分析。
与set_clock_group -asynchronous的区别:直接设置异步时钟组更直观,且在计算timing window时不会按照同步关系计算,这样对串扰现象的影响计算更准确。
(串扰:类似相邻信号线的互感,若两个信号线在近乎同一时刻跳变且方向相反,那么受影响的信号线可能会出现逻辑错误)
2.2 max_delay/min_delay
指定timing path的最大延迟,常用于异步路径。
若仅设置max_delay(后不加任何选项),则实际的data_required_time还会考虑Launch Clk的latency,Capture Clk的Latency和Uncertainty和Cap DFF的setup time,若在其后面加上-ignore clock latency,则Launch Clk的latency,Capture Clk的Latency和Uncertainty均不会考虑,相当于加严了要求。
2.3 input_delay/output_delay
input_delay:外部寄存器时钟发送沿到input port的延迟
output_delay:output port到外部寄存器D端的延迟
set_input_delay/output_delay的时钟,均为外部寄存器对应时钟,以区分时序路径。
input_delay对应data_arrival_time,output_delay对应data_required_time。
input_delay如果同时设置了max和min delay,那么max值是用在对setup timing的分析中的,而min值用在对hold timing的分析中。如果只设置了一个值,那么同时供两者使用。
output_delay如果同时设置了max和min delay,那么data_required_time的区间即为{-min, Tclk-max} (若min<=0)
2.4 muticycle
多个周期采一次数据,常用于同步高低频数据交互。
默认情况下,时序路径都是在最近的沿分析setup,在最近的沿的前一个沿分析hold。即setup=1,hold=0。常用的设置MCP的setup和hold的值时,一般是会使用setup 为n,则hold为n-1的方式,此时setup check的时钟边沿是n个cycle后的cap clk,hold的check时钟有效沿是当前toggle的cap clk(若不指定hold,则默认hold的check时钟沿为setup check的前一个时钟沿,即n-1个cycle)。