静态时序分析(STA)——建立约束
目录
1、时钟声明
1、(主)时钟定义
2、时钟不确定性
3、时钟延迟
4、生成时钟
2、输入输出路径
1、输入延迟
2、输出延迟
3、时序路径分组
4、外部属性建模
1、输入:
2、输出
3、设计规则检查(DRC)
4、虚拟时钟
5、完善时间分析
1、set_case_analysis
2、set_disable_timing
3、set_false_path
4、set_multicycle_path
参考说明
本篇就主要学习 STA约束的建立。
1、时钟声明
1、(主)时钟定义
定义时钟时需要声明如下几个因素:
- 时钟源:可以是设计的端口,也可以是设计内部某个单元的引脚(通常是时钟生成逻辑的一部分)
- 周期:时钟的周期
- 占空比:高电平(正相)和低电平(负相)的持续时间。
- 边沿时刻:上升沿和下降沿翻转时间。
以上的约束为:
create_clock -name SYSCLK -period 20 -waveform {0 5} [get_ports SCLK]
2、时钟不确定性
建立时钟不确定性声明,会使整个电路的时序变得更加严苛,满足设计的稳健性。
使用 set_clock_uncertainty 进行声明。如:
指定路径的不确定性,或者虚拟时钟的不确定性:
时钟不确定性的主要来由:
时钟偏差:时钟源到达不同触发器的时间偏差;
时钟抖动:时钟边沿的超前或滞后;
时钟延迟:网络延迟和源延迟(后面介绍)
3、时钟延迟
时钟延迟包含:网络延迟和源延迟。
网络延迟:时钟定义点到触发器时钟引脚 的延迟;
源延迟:时钟源到时钟定义点的延迟;
如图所示:
声明时钟延迟使用 set_clock_latency ,示例:
【注意】:
时钟树建立之后,源延迟仍然保留;
时钟树建立之前 网络延迟的声明是一个估计值,在时钟树生成之后,就会使用实际的网络延迟,定义的网络延迟就失效。
4、生成时钟
由主时钟分频或者倍频得到的新时钟,就是生成时钟。生成时钟的定义很有必要,需要告诉分析器,在分频(倍频)逻辑的输出端时钟的周期已经改变,并且时钟的周期也需要声明。
声明如下:
create_clock -name CLKP 10 [get_pins UPLL0/CLKOUT]
# 创建主时钟,周期10ns。引脚在CLKOUT
create_generated_clock -name CLKPDIV2 -source UPLL0/CLKOUT \
-divide_by 2 [get_pins UFF0/Q]
# 创建二分频逻辑输出的生成时钟
【注意】:
生成时钟也可以声明为主时钟,而每个主时钟都代表一个时钟域。
一般来说,实际电路中的生成时钟就应该声明为生成时钟,因为主时钟和生成时钟认为是同相位的。而如果将原本实际的生成时钟声明为主时钟,那么就会产生两个时钟域。影响静态时序分析。
生成时钟也可以定义源延迟和网络延迟:
如果时钟操作输出的时钟和源时钟没有太多关系(不是直接的倍频分频等),失去了相位和周期的继承性,那么此时输出的时钟就是可以定义为主时钟,而非生成时钟:
声明如下:
create_clock -name SYS_CLK -period 4 -waveform {0 2} \
[get_pins UFFSYS/Q]
create_clock -name CORE_CLK -period 12 -waveform {0 4} \
[get_pins UFFCORE/Q]
create_clock -name MAIN_CLK -period 12 -waveform {0 2} \
[get_pins UAND2/Z]
# 与单元输出的地方,建立主时钟,而非生成时钟。
2、输入输出路径
1、输入延迟
约束 使用 set_input_delay
set Tclk2q 0.9
set Tc1 0.6
set_input_delay -clock CLKA -max [expr Tclk2q + Tc1] \
[get_ports INP1]
create_clock -period 15 -waveform {5 12} [get_ports CLKP]
set_input_delay -clock CLKP -max 6.7 [get_ports INPA]
set_input_delay -clock CLKP -min 3.0 [get_ports INPA]
2、输出延迟
set Tc2 3.9
set Tsetup 1.1
set_output_delay -clock CLKQ -max [expr Tc2 + Tsetup] \
[get_ports OUTB]
同时存在输入和输出延迟声明的示例:
声明如下:
create_clock -period 100 -waveform {5 55} [get_ports MCLK]
set_input_delay 25 -max -clock MCLK [get_ports DATAIN]
set_input_delay 5 -min -clock MCLK [get_ports DATAIN]
set_output_delay 20 -max -clock MCLK [get_ports DATAOUT]
set_output_delay -5 -min -clock MCLK [get_ports DATAOUT]
3、时序路径分组
时序路径分组主要是看路径终点位于那个时钟组:
4、外部属性建模
1、输入:
• set_drive
• set_driving_cell
• set_input_transition第一种已经过时,不推荐。
第一种用来给输入端口设定驱动阻抗值;
第二种功能同第一种,用法更精准更方便;
第三种更为直接,直接指定输入端口的转换时间;
2、输出
• set_load
用来给容性负载建模;
3、设计规则检查(DRC)
最常用的两个命令:
• set_max_transition
• set_max_capacitance
主要用来检查设计中的所有端口和引脚都满足转换时间和电容的要求。
示例:
set_max_transition 0.6 IOBANK
# Sets a limit of 600ps on IOBANK.set_max_capacitance 0.5 [current_design]
# Max capacitance is set to 0.5pf on all nets in current design.
4、虚拟时钟
虚拟时钟存在但是不和设计中的端口和引脚相连接。它在STA分析中用作参考,以指定相对于时钟的输入和输出延迟。
create_clock -name VIRTUAL_CLK_SAD -period 10 -waveform {2 8}
create_clock -name VIRTUAL_CLK_CFG -period 8 \
-waveform {0 4}
create_clock -period 10 [get_ports CLK_CORE]set_input_delay -clock VIRTUAL_CLK_SAD -max 2.7 \
[get_ports ROW_IN]
set_output_delay -clock VIRTUAL_CLK_CFG -max 4.5 \
[get_ports STATE_O]
虚拟时钟的输入输出路径对应的波形:
5、完善时间分析
主要使用如下命令:
- set_case_analysis:声明单元引脚上的固定值,或者输入端口的固定值;
- set_disable_timing:断开单元时序弧;
- set_false_path:STA不需要进行分析检查的路径。
- set_multicycle_path:声明可能耗费超过一个周期的路径。
1、set_case_analysis
2、set_disable_timing
上述图片中,由选择器控制端S到输出端Z的路径也算是数据路径的一部分,但是没有分析的必要。因为我们关心的是数据传输的时序情况。
set_disable_timing -from S -to Z [get_cells UMUX0]
3、set_false_path
伪路径约束很重要,对于跨时钟域的模块之间的路径,不予分析。注意,伪路径约束是单向的。
4、set_multicycle_path
输入到输出的延迟跨越了多个时钟周期:
参考说明
【1】B站 邸老师学习视频。
【2】Static Timing Analysis for Nanometer Designs A Practical Approach . J. Bhasker • Rakesh Chadha
静态时序分析(STA)——建立约束相关推荐
- 数字 IC 笔试面试必考点(12)静态时序分析 STA
正文 静态时序分析 STA(Static Timing Analysis) 也称静态时序验证,是一种以与输入激励无关的方式进行的,其目的是通过遍历所有的传输路径,寻找所有的组合逻辑电路 ...
- 静态时序分析(STA)
静态时序分析 STA-1. 从一个反向器开始说时序 静态时序分析(Static Timing Analysis, 以下统一简称STA)是验证数字集成电路时序是否合格的一种方法,其中需要进行大量的数字计 ...
- 静态时序分析(sta)/动态时序分析(dta)
据个人理解区分静态时序分析和动态时序分析,是在于在分析电路时序时有没有输入激励.STA分析就是通过时序库文件给出的各条时序路径的延迟,来确认在每个FF上是否满足建立/保持时间.而DTA就需要给设计灌入 ...
- 静态时序分析(STA)相关概念
launch edge:是源寄存器发送数据的时钟沿,是时序分析的起点. latch edge:是目的寄存器捕获数据的时钟沿,是时序分析的终点. Data Arrival Time:从launch ed ...
- (九)数字后端之静态时序分析STA
STA:Static timing analysis 目的: 在不采用动态激励的情况下,通过静态分析delay并检查时序是否满足. STA贯穿在整个后端流程中,逻辑综合阶段和RouteOPT阶段,ST ...
- 静态时序分析的概念以及约束的作用理解
何谓静态时序分析(Static Timing Analysis,简称STA) 它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析 ...
- java时序图工具_每日学习:静态时序分析入门面面观
关注并标星大同学吧 每天1次,打卡学习 积累1个新知识,增1分职场底气 作者称谓:Jack xu 个人介绍:不断学习的数字后端工程师 微信公众号:志芯 半导体知识分享第41期 技能升级,从这里开始 本 ...
- 数字IC设计学习笔记_静态时序分析STA_ STA基本概念
数字IC设计学习笔记 STA基本概念 1. STA基本概念 2. 时序弧概念 Timing Arc 3. 建立时间和保持时间概念 4. 时序路径概念Timing Path 5. 时钟域概念clock ...
- STA(静态时序分析) 详解:如何计算最大时钟频率,以及判断电路是否出现时钟违例(timing violation)?
1.什么是STA? STA(静态时序分析)是时序验证的一种方法,用于计算和分析电路是否满足时序约束的要求. 2.为什么需要STA? 电路能否正常工作,其本质上是受最长逻辑通路(即关键路径)的限制,以及 ...
最新文章
- Linux命令 crontab的理解和使用方法
- 牛客练习赛40 A.小D的剧场
- 独家专访Mockplus CEO老布,原型设计领域的弄潮儿
- Jumony(二)jQuery的设计艺术和选择器
- 怎么破坏联合索引,使ABC的联合索引,走B的索引
- 页面加载中的css,JS+CSS实现网页加载中的动画效果
- 分享一些学习资料-大量PDF电子书
- AI智能工具集(含AI语音合成、视频补帧、视频放大、目标检测、图片风格化等)
- 响应式布局的实现方式
- .net函数查询_Java百宝箱——实现ip地址、手机号、身份证号归属地查询
- python图像倾斜校正_python 图像倾斜校正
- 前馈神经网络与支持向量机实战 --- 手写数字识别
- 027-Mac触摸板实现窗口移动
- 前端优化-前端性能优化
- 国内外17个学术论文网站推荐,记得收藏哦!
- 华为无线通用软件开发 实习一面二面
- dataView及其用法
- 分享一些酷酷的特效,希望你也能够喜欢
- 论文笔记 |【AAAI2022】SCSNet
- python 给指定的时间找年周期
热门文章
- opencv学习笔记五--文件扫描+OCR文字识别
- Nextcloud 使用教程, 十分钟让自己电脑成为私有云盘
- 22本JavaScript高清电子书下载
- 有限单元法基础 -- ING
- 邵武计算机培训机构在哪里,邵武云计算培训,邵武计算机培训价格,邵武计算机培训有哪些 - IT教育频道...
- About Flash
- PythonNote017---计算房贷还款
- R语言高分辨率遥感卫星数据处理
- VERI-ZEXE: Decentralized Private Computation with Universal Setup
- Win11U盘不显示怎么办?Win11插U盘没反应的解决方法