当前位置: 首页 > article >正文

STA:时序检查 - reg2output型

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


3. reg2output

第三种是发起触发器在设计内部,捕获触发器在设计外部。此时STA是针对设计外部的UFF1进行的。

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

在这里插入图片描述

参数定义:

T c l k 2 U F F 0 T_{clk2UFF0} Tclk2UFF0:上升沿从时钟CLKQ传输到UFF0的CK引脚的时钟树延迟。

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

set_clock_latency 0.8 [get_clocks CLKQ]

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

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

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

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

T C K 2 Q U F F 0 T^{UFF0}_{CK2Q} TCK2QUFF0:数据从UFF0的D引脚到Q引脚的传播延迟

取决于标准单元库触发器的SDF描述。

T U F F 02 O U T B T_{UFF02OUTB} TUFF02OUTB:数据从UFF0的Q引脚到达设计端口OUTB的延迟

取决于组合逻辑,组合逻辑延迟通过标准单元库的SDF指定。

T O U T B 2 U F F 1 T_{OUTB2UFF1} TOUTB2UFF1:数据从设计端口OUTB输出至外部触发器UFF1的D引脚的延迟

T c l k 2 O U T C T_{clk2OUTC} Tclk2OUTC:上升沿从时钟CLKQ传输到设计端口OUTC的延迟

该值确定方法与 T c l k 2 U F F 0 T_{clk2UFF0} Tclk2UFF0一致。

T O U T C 2 U F F 1 T_{OUTC2UFF1} TOUTC2UFF1:时钟CLKQ上升沿通过设计端口OUTC传输到触发器UFF1的延迟

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

create_clock -period 10 [get_ports CLKM]

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

该值通过下方SDC指定

set_clock_uncertainty -setup 0.3 [get_clocks CLKM]

T s e t u p _ u n c e r t a i n T_{setup\_uncertain} Tsetup_uncertain:时钟CLKM保持时间不确定度,即预期时钟沿延后一段时间。

该值通过下方SDC指定

set_clock_uncertainty -hold 0.4 [get_clocks CLKM]

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

T o u t p u t U F F 1 T^{UFF1}_{output} ToutputUFF1:外部时序约束。OUTB到UFF1/D端组合逻辑延迟与OUTC到UFF1/CK端组合逻辑延迟的差,再加上UFF1的建立时间,即 T o u t p u t U F F 1 = T O U T B 2 U F F 1 − T O U T C 2 U F F 1 + T s e t u p U F F 1 / − T h o l d U F F 1 T^{UFF1}_{output}=T_{OUTB2UFF1}-T_{OUTC2UFF1}+T^{UFF1}_{setup}/-T^{UFF1}_{hold} ToutputUFF1=TOUTB2UFF1TOUTC2UFF1+TsetupUFF1/TholdUFF1

可通过如下SDC指定

# 最长路径,用于建立时间检查
set_output_delay -clock CLKQ -max 2 [ get_ports OUTB]

# 最短路径,用于保持时间检查
set_output_delay -clock CLKQ -min 1.5 [ get_ports OUTB]

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的保持时间。

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的保持时间裕度

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

对捕获触发器UFF1进行STA

● 数据实际到达UFF1/D端的时间(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 O U T B + T O U T B 2 U F F 1 T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02OUTB}+T_{OUTB2UFF1} Tclk2UFF0+TCK2QUFF0+TUFF02OUTB+TOUTB2UFF1

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,与reg2output型中的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 O U T C + T O U T C 2 U F F 1 − T s e t u p U F F 1 T_{clk}-T_{setup\_uncertain}+T_{clk2OUTC}+T_{OUTC2UFF1}-T^{UFF1}_{setup} TclkTsetup_uncertain+Tclk2OUTC+TOUTC2UFF1TsetupUFF1

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,与reg2output型中的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 O U T C + T O U T C 2 U F F 1 − T s e t u p U F F 1 ) − ( T c l k 2 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 O U T B + T O U T B 2 U F F 1 )   = ( T c l k − T s e t u p _ u n c e r t a i n + T c l k 2 O U T C ) − ( T c l k 2 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 O U T B ) − T o u t p u t U F F 1   (3.1) 0<T^{UFF02UFF1}_{setup\_slack}=Required Time-ArrivalTime \\\ =(T_{clk}-T_{setup\_uncertain}+T_{clk2OUTC}+T_{OUTC2UFF1}-T^{UFF1}_{setup})-(T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02OUTB}+T_{OUTB2UFF1}) \\\ =(T_{clk}-T_{setup\_uncertain}+T_{clk2OUTC})-(T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02OUTB}) -T^{UFF1}_{output} \\\ \tag{3.1} 0<Tsetup_slackUFF02UFF1=RequiredTimeArrivalTime =(TclkTsetup_uncertain+Tclk2OUTC+TOUTC2UFF1TsetupUFF1)(Tclk2UFF0+TCK2QUFF0+TUFF02OUTB+TOUTB2UFF1) =(TclkTsetup_uncertain+Tclk2OUTC)(Tclk2UFF0+TCK2QUFF0+TUFF02OUTB)ToutputUFF1 (3.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为正说明时序检查通过。

3.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 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 O U T B + T O U T B 2 U F F 1 T_{clk}+T_{hold\_uncertain}+T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02OUTB}+T_{OUTB2UFF1} Tclk+Thold_uncertain+Tclk2UFF0+TCK2QUFF0+TUFF02OUTB+TOUTB2UFF1

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 O U T C + T O U T C 2 U F F 1 + T h o l d U F F 1 T_{clk}+T_{hold\_uncertain}+T_{clk2OUTC}+T_{OUTC2UFF1}+T^{UFF1}_{hold} Tclk+Thold_uncertain+Tclk2OUTC+TOUTC2UFF1+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 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 O U T B + T O U T B 2 U F F 1 ) − ( T c l k 2 O U T C + T O U T C 2 U F F 1 + T h o l d U F F 1 )   = ( T c l k 2 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 O U T B ) − T c l k 2 O U T C + T o u t p u t U F F 1   (4.2) 0<T^{UFF02UFF1}_{hold\_slack}=ArrivalTime-Required Time \\\ =(T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02OUTB}+T_{OUTB2UFF1})-(T_{clk2OUTC}+T_{OUTC2UFF1}+T^{UFF1}_{hold}) \\\ =(T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02OUTB})-T_{clk2OUTC} +T^{UFF1}_{output} \\\ \tag{4.2} 0<Thold_slackUFF02UFF1=ArrivalTimeRequiredTime =(Tclk2UFF0+TCK2QUFF0+TUFF02OUTB+TOUTB2UFF1)(Tclk2OUTC+TOUTC2UFF1+TholdUFF1) =(Tclk2UFF0+TCK2QUFF0+TUFF02OUTB)Tclk2OUTC+ToutputUFF1 (4.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为正说明时序检查通过。可以看出保持时间裕度与时钟周期无关。


http://www.kler.cn/a/3694.html

相关文章:

  • MYSQL数据库基础-01.数据库的基本操作
  • Java-数据结构-二叉树习题(2)
  • 鸿蒙Harmony json转对象(1)
  • Python----Python高级(文件操作open,os模块对于文件操作,shutil模块 )
  • 在 Babylon.js 中使用 Gizmo:交互式 3D 操作工具
  • 如何使用C++来实现OPENAI协议通过OLLAMA来与AI大模型通信
  • Java语言-----封装、继承、抽象、多态、接口
  • Idea+maven+spring-cloud项目搭建系列--11 整合dubbo
  • 肠道菌群对药物,重金属,污染物,膳食化合物的代谢和健康效应
  • antd+vue——table组件字段排序——对象数组排序 中文排序——基础积累
  • 100天精通Python(可视化篇)——第81天:matplotlib绘制不同种类炫酷饼图参数说明+代码实战(自定义、百分比、多个子图、圆环、嵌套饼图)
  • C++语法(11)---- 模拟实现list
  • Python list列表删除元素的4种方法
  • 面试官:如何保证接口幂等性?一口气说了9种方法!
  • 史诗级详解面试中JVM的实战
  • C++智能指针
  • Python | 蓝桥杯系列文章总结+经典例题重做
  • SpringBoot 将PDF转成图片或World
  • 五、MyBatis各种查询功能
  • 怎么设计一个秒杀系统
  • 云原生领域下的开发平台
  • 【数据结构】树和二叉树的介绍
  • 基于 Docker 的深度学习环境:入门篇
  • 【LeetCode】链表练习 9 道题
  • 从零开始学OpenCV——图像灰度变换详解(线性与非线性变换)
  • 小程序逆向工程:这个开源的小程序逆向工具真不错,2023年亲测成功