静态时序分析Static Timing Analysis2——建立时间和保持时间的时序检查

news2024/9/26 3:27:31

文章目录

  • 前言
  • 一、建立时间检查
    • 1、寄存器到寄存器
    • 2、输入端口到寄存器
    • 3、寄存器到输出端口
    • 4、输入端口到输出端口
  • 二、保持时间检查
    • 1、寄存器到寄存器
    • 2、输入端口到寄存器
    • 3、寄存器到输出端口
    • 4、输入端口到输出端口


前言

2023.4.11 继续学习STA,前面听的感觉好迷糊,先接着看,到时候回头再看一遍理解
2023.4.12 打卡


一、建立时间检查

在这里插入图片描述
Tlaunch + Tcq + Tdp <= Tclk + Tcapture - Tsetup

  • 时钟的发射和捕获延迟时间是很小的,Tcq和Tsu是工艺库决定的,是固定值。要想等式成立,要取左边的最大值来进行判断

建立时间违例的解决方法:

  • 降低时钟频率,增加时钟周期(增加Tclk)
  • 在launch cell路径增加缓冲器,让时钟晚点到来(增加clk skew)
  • 组合逻辑优化或插入流水线,缩短关键路径(减小Tcomb)
  • 选择器件延迟更小的触发器(减小Tcq和Tsu)

1、寄存器到寄存器

在这里插入图片描述

另外一个路径的时间计算如下,要减去clock uncertainty,使得时序约束更加严格

时钟不确定性,通常来说芯片在制造过程中存在很多的随机的偏差,如果我们此时在建立时间之前再将数据需要稳定的时间提前一些,以此来模拟芯片实际生成中的偏差。如果clock uncertainty 大于零,就会导致一个比较严谨的建立时间时序约束。如果在uncertainty 大于零的情况下,数据依然能够稳定到达,那也就是说这个设计比较安全。

在这里插入图片描述

2、输入端口到寄存器

这种情况一般定义一个虚拟时钟,再来进行分析
其实是对方框内的芯片进行STA

create_clock -name VIRTUAL_CLKM -period 10 -waveform{0 5}
set_input_delay -clock VIRTUAL_CLKM -max 2.55 [get_ports INVA]

在这里插入图片描述
在这里插入图片描述

第二条路径减去clock uncertainty,再减去建立时间,使得约束严格
在这里插入图片描述

3、寄存器到输出端口

set_output_delay -clock VIRTUAL_CLKP -max 5.1 [get_ports ROUT]
set_load 0.02 [get_ports ROUT] //除了对输出延时进行约束外,还要对输出负载约束

在这里插入图片描述
在这里插入图片描述

注意这里是T减去输出延时
在这里插入图片描述

4、输入端口到输出端口

set_input_delay -clock VIRTUAL_CLKM -max 3.6 [get_ports INB]
set_output_delay -clock VIRTUAL_CLKM -max 5.8 [get_ports POUT]

在这里插入图片描述

该路径时序报告最后结果为负值,说明不满足要求。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、保持时间检查

clock uncertainty:对于建立时间来说,这个值是负数;对于保持时间,这个值是正数(引入这个参数的目的是为了使得时序更加严格,根据实际来判断正负)

保持时间和建立时间检查的区别:

  • 保持时间是在同一时钟边沿进行检查,数据的发射路径和接收路径是同一时钟边沿。建立时间数据捕获路径要比发射路径晚一个时钟周期,不在同一时钟沿检查。
  • 保持时间检查与时钟周期无关。如果要计算一个电路的时钟周期,只能从建立时间去计算。
  • 一般先检查保持时间,建立时间违例修复的方法有很多,而修复保持时间的方法很少。
  • 对于保持时间,上面的数据发射路径的时间要大于下面的捕获时间,数据要维持到捕获之后;而对于建立时间,则是上面发射路径时间要小于捕获路径时间,要求捕获之前数据已经达到了。
  • 当前时钟沿捕获的是上一个时钟沿发射的数据,与此同时,这个时钟沿会发射新的数据,为了不影响捕获上个时钟沿的数据,需要有保持时间检查。在当前时钟沿同时完成捕获数据和发射数据的功能。
  • 保持时间检查取左边的最小值,如果左边的最小值都大于右边,说明时序肯定满足要求
    Tlaunch + Tcq + Tdp >= Tcapture + Thold

保持时间违例的解决方法:

  • 在数据路径上增加buffer(增大Tdp)
  • 选择器件延迟更大的触发器(增加Tcq)
  • 优化时钟路径,让时钟来得更早(相当于减小Tskew)

1、寄存器到寄存器

在这里插入图片描述
在这里插入图片描述

这里用的是arrival time - required time(前者数值大于后者),为了使得用户可以快速根据正负值来判断是否违例。不管是建立时间还是保持时间,都是小于0的时候就表示违例。

在这里插入图片描述

2、输入端口到寄存器

注意这里设置的输入延时的最小值

set_input_delay -clock VIRTUAL_CLKM -min 1.1 [get_ports INA]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、寄存器到输出端口

set_output_delay -clock VIRTUAL_CLKM -min 2.5 [get_ports ROUT]

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4、输入端口到输出端口

set_load -pin_load 0.15 [get_ports POUT]
set _output_delay -clock VIRTUAL_CLKM -min 3.2 [get_ports POUT]
set_input_delay -clock VIRTUAL_CZKM -min 1.8 [get_ports INB]
set_input transition 0.8 [get_ports INB]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android---性能优化之图片压缩

质量压缩 质量压缩会用到 Bitmap.compress()。 public boolean compress(Bitmap.CompressFormat format, int quality, OutputStream stream); 这个方法有三个参数&#xff1a; Bitmap.CompressFormat format&#xff1a;图像的压缩格式&#xff08;jpeg ,png, webp&#xf…

C++STL大全----容器篇(上)

&#xff08;一&#xff09;概念 STL&#xff0c;英文全称 standard template library&#xff0c;中文可译为标准模板库或者泛型库&#xff0c;其包含有大量的模板类和模板函数&#xff0c;是 C 提供的一个基础模板的集合&#xff0c;用于完成诸如输入/输出、数学计算等功能。…

数据库第一个实验

啦啦啦啦啦&#xff0c;数据库终于要实验了&#xff0c;很担心做不好&#xff0c;要是挂了怎么办 只是自己的作业&#xff0c;可能会有问题&#xff0c;欢迎前来指正 一、题目&#xff08;100分&#xff09; 一、创建后面给出的这6个表&#xff08;20分&#xff09; 二、用不同…

Ubuntu20.04 个人配置和i3美化

Ubuntu20.04 个人配置和i3美化 本文是基于个人习惯和审美&#xff0c;快速配置一个新ubuntu的步骤。脚本在资源里给出&#xff0c;但仍有部分配置文件需在脚本执行后手动修改,文中已用红色字体标出 更新apt源 备份原来的源更换阿里源 # 备份 sudo mv /etc/apt/sources.list…

Camunda流程引擎查询接口API介绍

Camunda流程引擎底层采用了mybatis作为ORM框架&#xff0c;并封装了一套自己的数据查询接口&#xff0c;以下是几种可以Camunda流程引擎中查询数据的方式。 Java 查询API 。使用 Fluent Java API 来查询流程引擎实体&#xff0c;比如流程实例、任务等。REST 查询API 。通过 RE…

SpringMVC启动流程方式分析-三种方式

SpringMVC的启动方式 本文所叙述的是springmvc放入Tomcat servlet容器的启动方式 第一种Web.xml文件配置 使用传统的web.xml配置文件&#xff0c; 指定DispatchServlet &#xff0c;当然如果想要父子容器的效果指定一个ContextLoaderListener 上下文加载监听器就行&#xff…

少儿编程 电子学会图形化编程等级考试Scratch三级真题解析(选择题)2022年12月

2022年12月Scratch等级考试一级真题解析 选择题(共25题,每题2分,共50分) 1、默认小猫角色和气球角色都是显示状态,小猫程序如下图所示,气球没有程序,点击绿旗,舞台上最终显示的效果是 A、可能出现6个不同位置的小猫和6个小球 B、可能出现6个不同位置的小猫和1个气球…

【嵌入式Linux】Jetson nano GPIO应用 | 驱动开发 | 官方gpiolib、设备树与chip_driver

GPIO子系统 0.暴露给应用层 应用 $ echo 79 > /sys/class/gpio/export //导出79号gpio 引脚&#xff0c;使得可在应用层访问 $ echo out > /sys/class/gpio/gpio79/direction //设置 为输出 $ echo 1 > /sys/class/gpio/gpio79/value //输出高电平 开灯 $ echo 0…

win10系统部署-zabbix客户端

一、下载win10系统 zabbix客户端 下载地址&#xff1a; 根据自己需求下载 https://www.zabbix.com/cn/download二、win系统安装客户端 1、解压安装包 c:\zabbix 2、编辑zabbix\conf\zabbix_agentd.conf文件 Server127.0.0.1,IP IP是你的zabbix服务器端地址 ServerActive127…

C++的GUI库

1. Qt Qt是一个跨平台的C应用程序开发框架。广泛用于开发GUI程序&#xff0c;这种情况下又被称为部件工具箱。也可用于开发非GUI程序&#xff0c;例如控制台工具和服务器。 2. MFC 微软基础类库&#xff08;英语&#xff1a;Microsoft Foundation Classes&#xff0c;简称MFC&a…

罗丹明-聚乙二醇-生物素RB-PEG-Biotin;Biotin-PEG-Rhodamine,PEG2000

RB-PEG-Biotin 罗丹明-聚乙二醇-生物素 中文名称&#xff1a;罗丹明-聚乙二醇-生物素 英文名称&#xff1a;RB-PEG-Biotin 分子量&#xff08;PEG &#xff09;&#xff1a;2000、3400、5000&#xff0c;其他分子量可以定制。 用 途&#xff1a;仅供科研实验使用。 性状&…

TiDB 6.1/6.5 在 Rocky Linux 8 中的部署升级与 PITR 初体验

作者&#xff1a; 沈阳盛京征信有限公司 原文来源&#xff1a; https://tidb.net/blog/5fa1612a 本文档的主要内容为&#xff1a; TiDB v6.1.0 在 Rocky Linux 8.7 中的离线部署 TiDB v6.1.0 -> TiDB v6.5.1 升级 TiFlash 扩缩容 Haproxy 部署 br 物理备份与恢复 基…

递归算法(JS实现代码)

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录递归算法递归的思想递归三要素递归的编程模型递归一般应用场景递归经典案例…

​力扣解法汇总1026. 节点与其祖先之间的最大差值

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 给定二叉树的根节点 root&#xff0c;找出存在于 不同 节点 A 和 B 之间的最大值…

05、SpringBoot开发实用篇

一、热部署什么是热部署&#xff1f;简单说就是你程序改了&#xff0c;现在要重新启动服务器&#xff0c;嫌麻烦&#xff1f;不用重启&#xff0c;服务器会自己悄悄的把更新后的程序给重新加载一遍&#xff0c;这就是热部署。热部署的功能是如何实现的呢&#xff1f;这就要分两…

【技术】封装自己的 Maven Archetype Maven 原型

封装自己的 Maven Archetype Maven 原型 为什么要封装 Maven Archetype&#xff1f;如何封装 Maven Archetype&#xff1f;核心步骤具体步骤构建项目构建原型 archetypeIDEA 导入自定义原型 如何删除自定义的 Maven Archetype ? 为什么要封装 Maven Archetype&#xff1f; 用…

尚融宝19-Nuxt.js入门

目录 一、搜索引擎优化 1、什么是SEO 2、搜索引擎工作流程 二、服务端渲染和客户端渲染 1、什么是服务端渲染 2、什么是客户端渲染 3、两种方式各有什么优缺点&#xff1f; 三、Nuxt.js 1、Nuxt.js介绍 2、Nuxt.js服务器端渲染 四、安装和运行 五、页面、导航和路…

倒计时 1 天!IoTDB X EMQ 智能汽车主题 Meetup 明日不见不散!

期待已久的智能汽车主题 Meetup 活动明日即将举办&#xff01;天谋科技联手 EMQ、通过数据基础设施平台的实践经验分享&#xff0c;共同为行业用户带来可靠高效的智能制造、智慧车联数据解决方案&#xff0c;快来预约直播&#xff0c;不要错过这场干货满满的智能汽车主题 Meetu…

类中自定义函数并调用and使用钩子函数打印类中变量

在一个类中自定义一个函数A&#xff0c;并在前向传播函数forword中调用这个函数 假设您正在编写一个PyTorch模型&#xff0c;您可以按照以下方式在类中定义函数A&#xff0c;并在forward函数中调用它&#xff1a; import torch import torch.nn as nnclass MyModel(nn.Module)…

Android修行手册 - Android Studio提升性能效率

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断…