STA:时序检查 - input2reg型

作STA要分析的时序路径四种中的一种,可看作是reg2reg的变种。详见STA:时序检查


2. input2reg

第二种是发起触发器在芯片外部,捕获触发器在芯片内部。

发起触发器到捕获触发器路径如下:

在这里插入图片描述

参数定义:

T c l k 2 I N P 1 T_{clk2INP1} Tclk2INP1:上升沿从时钟CLKA经过触发器UFF0传输到端口INP1的延迟。

为端口INP1相对于时钟CLKA的输入路径延迟,通过下方SDC指定

# 最长路径,用于建立时间检查
set_input_delay -clock CLKA -max 1.5 [get_ports INP1]

# 最短路径,用于保持时间检查
set_input_delay -clock CLKA -min 1 [get_ports INP1]

T I N P 12 U F F 1 T_{INP12UFF1} TINP12UFF1:数据从设计端口INP1,经过一系列组合逻辑元件,最终到达UFF1的D引脚的时间

取决于综合后端口INP1到UFF1之间的组合逻辑,组合逻辑延迟通过标准单元库的SDF指定。

T c l k 2 I N P 2 T_{clk2INP2} Tclk2INP2:上升沿从时钟CLKA传输到设计端口INP2的时间

此处INP2端口是设计中的时钟定义点。通过下方SDC指定

set_clock_latency 0.8 -source [get_clocks CLKA]

T I N P 22 U F F 1 T_{INP22UFF1} TINP22UFF1:上升沿从时钟CLKA传输到UFF0的CK引脚的时钟树延迟。

时钟树综合之前,该值通过下方SDC指定

set_clock_latency 0.8 [get_clocks CLKA]

综合之后,则会根据综合后实际的线路计算延迟。

如果还存在时钟缓冲器(CKBUF),则会根据CKBUF的输入过渡时间(即CLKM的过渡时间)和CKBUF的输出负载计算CKBUF的延迟。其中CLKM的过渡时间同过下方SDC指定

set_clock_transition -rise 0.3 [get_clocks CLKA]
set_clock_transition -fall 0.45 [get_clocks CLKA]

CKBUF的输出负载则通过标准单元库的SDF指定。

T c l k T_{clk} Tclk:时钟CLKA周期。该值通过下方SDC指定

create_clock -period 10 [get_ports CLKA]

T s e t u p _ u n c e r t a i n T_{setup\_uncertain} Tsetup_uncertain:时钟CLKA建立时间不确定度,即预期时钟沿提前一段时间。

该值通过下方SDC指定

set_clock_uncertainty -setup 0.3 [get_clocks CLKA]

T h o l d _ u n c e r t a i n T_{hold\_uncertain} Thold_uncertain:时钟CLKA保持时间不确定度,即预期时钟沿延后一段时间。

该值通过下方SDC指定

set_clock_uncertainty -hold 0.25 [get_clocks CLKA]

T s e t u p U F F 1 T^{UFF1}_{setup} TsetupUFF1:UFF1的建立时间。

该值通过标准单元库中触发器的SDF指定。

T s e t u p _ s l a c k U F F 02 U F F 1 T^{UFF02UFF1}_{setup\_slack} Tsetup_slackUFF02UFF1:路径UFF0-UFF1的建立时间裕度。为待计算量,大于零表示建立时间满足。

T h o l d U F F 1 T^{UFF1}_{hold} TholdUFF1:UFF1的保持时间。

该值通过标准单元库中触发器的SDF指定。

T h o l d _ s l a c k U F F 02 U F F 1 T^{UFF02UFF1}_{hold\_slack} Thold_slackUFF02UFF1:路径UFF0-UFF1的保持时间裕度

2.1. 建立时间 T s e t u p T_{setup} Tsetup检查

对捕获触发器UFF1进行STA

● 数据实际到达UFF1/D端的时间(Arrival Time): T c l k 2 I N P 1 + T I N P 12 U F F 1 T_{clk2INP1}+T_{INP12UFF1} Tclk2INP1+TINP12UFF1

reg2reg型中的Arrival Time为 T c l k 2 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 U F F 1 T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02UFF1} Tclk2UFF0+TCK2QUFF0+TUFF02UFF1,与input2reg型中的Arrival Time等价

● UFF1/D端新信号需要到达的时间(Required Time): T c l k − T s e t u p _ u n c e r t a i n + T c l k 2 I N P 2 + T I N P 22 U F F 1 − T s e t u p U F F 1 T_{clk}-T_{setup\_uncertain}+T_{clk2INP2}+T_{INP22UFF1}-T^{UFF1}_{setup} TclkTsetup_uncertain+Tclk2INP2+TINP22UFF1TsetupUFF1

reg2reg型中的Required Time为 T c l k − T s e t u p _ u n c e r t a i n + T c l k 2 U F F 1 − T s e t u p U F F 1 T_{clk}-T_{setup\_uncertain}+T_{clk2UFF1}-T^{UFF1}_{setup} TclkTsetup_uncertain+Tclk2UFF1TsetupUFF1,与input2reg型中的Required Time等价

所以路径UFF0-UFF1中UFF1的建立时间裕度为:

0 < T s e t u p _ s l a c k U F F 02 U F F 1 = R e q u i r e d T i m e − A r r i v a l T i m e   = ( T c l k − T s e t u p _ u n c e r t a i n + T c l k 2 I N P 2 + T I N P 22 U F F 1 − T s e t u p U F F 1 ) − ( T c l k 2 I N P 1 + T I N P 12 U F F 1 )   (2.1) 0<T^{UFF02UFF1}_{setup\_slack}=Required Time-ArrivalTime \\\ =(T_{clk}-T_{setup\_uncertain}+T_{clk2INP2}+T_{INP22UFF1}-T^{UFF1}_{setup})-(T_{clk2INP1}+T_{INP12UFF1}) \\\ \tag{2.1} 0<Tsetup_slackUFF02UFF1=RequiredTimeArrivalTime =(TclkTsetup_uncertain+Tclk2INP2+TINP22UFF1TsetupUFF1)(Tclk2INP1+TINP12UFF1) (2.1)

其中, T s e t u p _ s l a c k U F F 02 U F F 1 T^{UFF02UFF1}_{setup\_slack} Tsetup_slackUFF02UFF1为正说明时序检查通过。

2.2. 保持时间 T h o l d T_{hold} Thold检查

对捕获触发器UFF1进行STA

● UFF1/D端旧数据实际被更新的时间(Arrival Time): T c l k + T h o l d _ u n c e r t a i n + T c l k 2 I N P 1 + T I N P 12 U F F 1 T_{clk}+T_{hold\_uncertain}+T_{clk2INP1}+T_{INP12UFF1} Tclk+Thold_uncertain+Tclk2INP1+TINP12UFF1

reg2reg型中的Arrival Time为 T c l k + T h o l d _ u n c e r t a i n + T c l k 2 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 U F F 1 T_{clk}+T_{hold\_uncertain}+T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02UFF1} Tclk+Thold_uncertain+Tclk2UFF0+TCK2QUFF0+TUFF02UFF1,与input2reg型中的Arrival Time等价
UFF1/D端旧数据实际被更新的时间 就等价于 新数据实际到达UFF1/D端的时间

● UFF1/D端旧数据应该更新的时间(Required Time): T c l k + T h o l d _ u n c e r t a i n + T c l k 2 I N P 2 + T I N P 22 U F F 1 + T h o l d U F F 1 T_{clk}+T_{hold\_uncertain}+T_{clk2INP2}+T_{INP22UFF1}+T^{UFF1}_{hold} Tclk+Thold_uncertain+Tclk2INP2+TINP22UFF1+TholdUFF1

reg2reg型中的Required Time为 T c l k + T h o l d _ u n c e r t a i n + T c l k 2 U F F 1 + T h o l d U F F 1 T_{clk}+T_{hold\_uncertain}+T_{clk2UFF1}+T^{UFF1}_{hold} Tclk+Thold_uncertain+Tclk2UFF1+TholdUFF1,与input2reg型中的Required Time等价

所以路径UFF0-UFF1中UFF1的保持时间裕度为:

0 < T h o l d _ s l a c k U F F 02 U F F 1 = A r r i v a l T i m e − R e q u i r e d T i m e   = ( T c l k 2 I N P 1 + T I N P 12 U F F 1 ) − ( T c l k 2 I N P 2 + T I N P 22 U F F 1 + T h o l d U F F 1 )   (2.2) 0<T^{UFF02UFF1}_{hold\_slack}=ArrivalTime-Required Time \\\ =(T_{clk2INP1}+T_{INP12UFF1})-(T_{clk2INP2}+T_{INP22UFF1}+T^{UFF1}_{hold}) \\\ \tag{2.2} 0<Thold_slackUFF02UFF1=ArrivalTimeRequiredTime =(Tclk2INP1+TINP12UFF1)(Tclk2INP2+TINP22UFF1+TholdUFF1) (2.2)

其中, T h o l d _ s l a c k U F F 02 U F F 1 T^{UFF02UFF1}_{hold\_slack} Thold_slackUFF02UFF1为正说明时序检查通过。可以看出保持时间裕度与时钟周期无关。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starry丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值