综合与时序分析的设计约束(1)——静态时序分析简介

目录

    • 1.绪论
    • 2.静态时序分析与动态时序分析
    • 3.时序约束在静态时序分析中的作用
      • 3.1.约束作为声明
      • 3.2. 约束作为断言
      • 3.3.约束作为指令
      • 3.4.约束作为异常
      • 3.5.约束的角色变化
    • 4.STA需要正确约束
    • 5.时序路径起点和终点
    • 6.建立与保持
      • 6.1 建立时间
      • 6.2 保持时间
      • 6.3 裕度
    • 7.SDC主要类型
      • 7.1 时序约束
      • 7.2 面积与功耗约束
      • 7.3 设计规则约束
      • 7.4 接口约束
      • 7.5 特定模式和配置约束
      • 7.6 设计要求和异常
      • 7.7 其他命令

1.绪论

时序在数字系统中占有至关重要的地位,时序约束对数字系统的设计起着显著的作用,定义时序约束是一个相当复杂的过程。
接下来将通过多篇文章详细的讲述约束是什么,有哪些重点,约束怎么写,PT软件如何产生时序报告,时序报告怎么分析等。

2.静态时序分析与动态时序分析

时序分析有两种

  • 动态时序分析:动态时序分析是指在输入端输入一组向量,并观察信号到达电路中的各个点的时间。
  • 静态时序分析(STA):静态时序分析通过分析电路拓扑来计算相同的信息,而不需要任何输入向量。
    我们研究的内容是静态时序分析。
    区别:静态时序分析与动态时序分析优缺点_简述数字电路静态时序分析与动态时序仿直的各自的优缺点-CSDN博客

3.时序约束在静态时序分析中的作用

STA工具从相应的设计描述中获取电路描述,HDL是最常用的形式。它还接受库输入–主要用来了解依赖技术的特性,如通过特定门的延迟值。
STA工具需要的另一组输入与输入端各种信号的到达时间和其他特性以及各种输出的时间要求有关,这些输入通过时序约束来提供。时序约束在STA期间扮演了多个角色。

3.1.约束作为声明

某些约束只是工具的声明。该工具不需要验证这些声明的准确性或正确性。该工具仅仅将其用作自身的输入,以便验证时序是否满足。通常,这是设计外部某些情况的信息–工具无法自行确定。
对于3.3所示的电路,以下只是用作声明的约束的示例:
在这里插入图片描述

  • 输入I1到达边界的时间
  • 输入I2到达边界的时间
  • 输入I1和I2的过渡时间(transistion time,信号的状态从逻辑0变为逻辑1或从逻辑1变为逻辑0所需时间)
  • 输出O1必须驱动负载

3.2. 约束作为断言

另一方面,约束可以作为断言。该工具需要验证设计符合这些约束,这正式STA所关心的。在进行各种计算之后,如果工具发现时序满足要求,则认为STA通过,或认为时序满足要求。相反,如果这些约束不满足要求,则认为STA或时序失败。
图3.3相同所示电路,断言约束的一个例子:

  • 输出O1在边界可用的时间

3.3.约束作为指令

在其他时候,约束可以为某些工具的指令。这种情况使用于实现工具,如综合或布局布线,这种情况使用于实现工具,如综合或布局布线。这些实现工具将这些约束作为他们试图满足的目标。考虑3.4所示的电路。
在这里插入图片描述

对于示例电路,时钟树综合工具现在将提供一个精巧的网络结构,以便1000个触发器中的每一个都可以由该网络驱动。这种时钟树综合工具的实力指令可以实现时钟网络的延迟。时钟树工具应该通过网络的延迟满足规定值的方式来实现树形网络。

3.4.约束作为异常

有一些约束做相反的事情,即他们指定约束放宽的范围。假设一些路径被约束以满足某些时序,但是由于某些特殊原因,这些路径并不需要满足这些时序。或者说,即使要求更宽松,它们也可以很好地工作。这些称为时序异常。

3.5.约束的角色变化

有时,同一个约束的角色也会发生变化。在设计的一个阶段,他可能是一个声明,在另一个阶段,它也可能变成一条指令。
再次考虑图3.4所示的电路。有一个约束指定了通过该时钟网络的延迟。如果有一个想在该时钟网络综合之前进行STA,那么这个约束(即通过该时钟网络延迟)只是一个声明STA工具应该仅假设通过该时钟网络的延迟是一个指定值。
现在,在时钟树综合期间,同一个约束变成了一个指令。时钟树综合工具需要综合时钟网络,使通过时钟网络的延迟等于指定值。
一旦完成了时钟树综合,STA就可以通过时钟树网络计算延迟。同样的约束就会变得毫无意义,应该舍弃掉。
因此相同的约束(即通过时钟树的延迟):

  • 对预布局STA而言是一个声明–此处将其视为通过该网络的延迟。
  • 对时钟树综合工具而言是一条指令–它尝试实现该时钟网络,使其延迟在指令范围内。
  • 对后布局STA而言是无意义的。

4.STA需要正确约束

约束必须处理好平衡,下图解释了这种平衡。
横轴表示操作频率所需的约束,纵轴表示实际应用于设计中的约束。离原点越远表示约束越严格。45°的只限表示理想约束。实际定义的约束应于实际所需的相同。
线下面的点代表所应用的约束比要求的更宽松,这意味着STA看起来可能是很干净的,但是它已经针对比实际要求更宽松的条件进行了处理,因此最终设备可能无法以所需的频率进行工作。
在这里插入图片描述

一个明显的解决方案是约束的应用应该在始终位于线上或者线的上方,这将确保约束比真正的需要的更严格。但是,应用更严格的约束有自身的一系列问题。

  • 为了满足更严格的时序,这些工具可能要插入驱动能力更高的单元。这些驱动能力更高的单元意味着更高的面积和功率。
  • 有时为了满足更严格的约束,可能将更高效的路由资源分配给了这些路径,从而为实际的关键路径留出了较少的高效资源。因此,真正需要更好资源的路径可能会获得较低的优先级,因此另外一条路径被给予了不必要的但更严格的约束。
  • 严格约束更严重的弊端是时序关闭问题。设计可能不符合时序要求,因此它已经被指定给了比真正需要更严格的约束。试图满足甚至不需要的时序,这可能会带来必须要的时间开销。
    因此,约束的理想使用应该正好在线上,既不过严也不过松。在拿不准的情况下,必须要严格一点。
    对于上述图片B表示约束正好,A表示约束宽松,C表示约束严格。

5.时序路径起点和终点

信号时序开始的点称为起点。因此,对于给定电路,所有输入都可以作为起点。信号必须被定时的点称为终点。因此,所有输出都可以作为终点。
在寄存器中,输入D必须等待时钟触发的到达。所以,直到D到达才能完成的过渡过程现在必须等待。现在进一步传递信号的时序将取决于时钟的到达时间。此处D应检查是否满足建立和保持时间要求。因此,时序路径在此结束。所以寄存器也可以作为终点。
类似地,寄存器也可作为起点。信号将从寄存器的Q引脚开始,然后向前传递。严格来说,时序从时钟源开始,然后到达触发器的clock引脚,接着进入触发器的Q引脚,然后继续向前。所以,严格来说,寄存器并不是真正的起点。但是,在大多数实际使用中,把寄存器称为起点。在实际分析中,虽然对于图3.9所示的电路,路径跟踪是从时钟源开始的。
在这里插入图片描述

起点是:

  • 原始输入(I1、Clk、Clr、I2)
  • 寄存器(F1、F2、F3、F4) – 实际上是这些寄存器的时钟源。
    终点是:
  • 原始输出(O1、O2、O3) – 此处必须检查在要求的时间内信号在这些点可用。
  • 寄存器(F1、F2、F3、F4) – 此处必须检查D(和其他同步输入)输入满足建立和
    保持时间的要求。
    让我们更仔细地看一下触发器F3。到达触发器的异步clear引脚的信号在此处不需要等待任何其他的触发,它可以简单地通过触发器的Q引脚继续向前。因此,时序路径不需要在这里结束。因此,当触发器的D引脚作为终点时,异步clear或set引脚可能不是终点。

6.建立与保持

6.1 建立时间

建立时间指的是时钟信号变化之前数据保持不变的时间
在这里插入图片描述

6.2 保持时间

保持时间指的是时钟信号变化之后数据保持不变的时间
在这里插入图片描述

6.3 裕度

时间裕量是指在时序路径上要求的时间和实际花费的时间的差。如果裕量的值为正值或者0,则说明设计电路的时机时序符合约束条件,如果为负值则说明不符合条件。
在这里插入图片描述

7.SDC主要类型

SDC格式的余数可以大致分为以下几种:

  • 时序约束
  • 面积与功率约束
  • 设计规则约束
  • 接口约束
  • 特定模式和配置约束
  • 设计要求的异常
  • 其他命令

7.1 时序约束

时序约束为影响工作频率的设计参数提供指导。它包括指定时钟特性、端口延迟、引脚和路径的命令。
在这里插入图片描述

7.2 面积与功耗约束

面积与功耗约束包括为面积和功率提供指导的命令,其中设计必须适合面积和功率要求要达到最优
在这里插入图片描述

7.3 设计规则约束

设计规则约束包括为目标计数的某些要求提供指导的命令。
在这里插入图片描述

7.4 接口约束

接口约束包括为假想设计提供指导的命令,为设计需要构造电路单元,同时这些电路单元与子系统、芯片或SOC相连与之交互。
在这里插入图片描述

7.5 特定模式和配置约束

假设分析的约束包括一些命令,这些命令帮助设计人员对端口和引脚的允许值做出假设。通过在特定工作模式或任意工作模式下明确排除不可能出现的情况,这些命令有助于对特定模式的设计进行更好的优化。
在这里插入图片描述

7.6 设计要求和异常

该类别包括帮助设计人员放宽要求的命令,此命令是由其他命令所规定的,从而提供了约束放宽的适用范围。
在这里插入图片描述

7.7 其他命令

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法日记】从零开始认识动态规划(一)

挫折会来也会过去, 热泪会流下也会收起, 没有什么可以让我气馁的, 因为,我有着长长的一生。 --- 席慕蓉 《写给幸福》--- 从零开始认识动态规划 1 动态规划问题1.1 什么是动态规划算法1.2 动态规划算法如何Debug1.3 动态规划…

八股学习 微服务篇

微服务篇 常见面试内容Spring Cloud 常见组件注册中心Ribbon负载均衡策略服务雪崩 常见面试内容 Spring Cloud 常见组件 Spring Cloud有5个常见组件: Eureka/Nacos:注册中心;Ribbon:负载均衡;Feign:远程调用;Hystrix/Sentinel:服…

【矢量数据】2024年最新中国省市县乡四级矢量地图数据 [推广有奖]

中国四级矢量地图数据是当前地理信息系统(GIS)中广泛应用的重要资源,涉及国家级、省级、市级、县级及乡级行政区的空间信息。这些数据可应用于地图绘制、城市规划、政府决策及各类地理分析等领域 一、中国四级矢量地图数据的介绍 本分享数据…

力扣707题(2)——设计链表

#题目 #3,5和6的代码 今天看剩下几个题的代码,1,2,4的代码已经在上篇博客写过了想看的小伙伴移步到: 力扣707题——设计链表-CSDN博客 //第3题头插法 void addAtHead(int val){ //记录头结点ListNode nhead; //新节点的创建,并让它指向原本头结点的后…

JavaWeb 学习笔记 XML 和 Json 篇 | 020

今日推荐语 愿你遇见好天气,愿你的征途铺满了星星——圣埃克苏佩里 日期 学习内容 打卡编号2025年01月23日JavaWeb笔记 XML 和 Json 篇020 前言 哈喽,我是菜鸟阿康。 以下是我的学习笔记,既做打卡也做分享,希望对你也有所帮助…

c#实现当捕获异常时自动重启程序

首先,需要说明这并不是一个推荐的做法,只有在你确实有这样的需求时才考虑这么做。 以下是AI的回答,为什么不推荐这么做,供参考。 在C#中,如果你在catch语句中尝试重启程序自身,可能会遇到以下几个问题&…

Spring WebSocket 与 STOMP 协议结合实现私聊私信功能

目录 后端pom.xmlConfig配置类Controller类DTO 前端安装相关依赖websocketService.js接口javascripthtmlCSS 效果展示简单测试连接: 报错解决方法1、vue3 使用SockJS报错 ReferenceError: global is not defined 功能补充拓展1. 安全性和身份验证2. 异常处理3. 消息…

uniapp+Vue3(<script setup lang=“ts“>)模拟12306城市左右切换动画效果

效果图&#xff1a; 代码&#xff1a; <template><view class"container"><view class"left" :class"{ sliding: isSliding }" animationend"resetSliding">{{ placeA }}</view><view class"center…

缓存之美:万文详解 Caffeine 实现原理(下)

上篇文章&#xff1a;缓存之美&#xff1a;万文详解 Caffeine 实现原理&#xff08;上&#xff09; getIfPresent 现在我们对 put 方法有了基本了解&#xff0c;现在我们继续深入 getIfPresent 方法&#xff1a; public class TestReadSourceCode {Testpublic void doRead() …

Spring Security(maven项目) 3.0.2.6版本—总

通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往复以至无穷&#xf…

C++函数——fill

在C中&#xff0c;std::fill 是标准库提供的一个算法适用于几乎所有类型的容器&#xff0c;只要这些容器支持迭代器操作。具体来说&#xff0c;std::fill 的适用性取决于容器是否提供了满足其要求的迭代器类型&#xff0c;用于将指定范围内的所有元素设置为某个特定值。它是一个…

jmeter中对接口进行循环请求后获取相应数据

1、工作中遇到一个场景就是对某个单一接口进行循环请求&#xff0c;并需要获取每次请求后返回的相应数据&#xff1b; 2、首先就在jmeter对接口相关组件进行配置&#xff0c;需要组件有&#xff1a;循环控制器、CSV数据文件设置、计数器、访问接口、HTTP信息头管理器、正则表达…

豆包MarsCode 蛇年编程大作战 | 高效开发“蛇年运势预测系统”

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 豆包MarsCode 蛇年编程大作战 | &#x1f40d; 蛇年运势预测 在线体验地址&#xff1a;蛇年…

【豆包MarsCode蛇年编程大作战】花样贪吃蛇

目录 引言 展示效果 prompt提示信息 第一次提示&#xff08;实现基本功能&#xff09; 初次实现效果 第二次提示&#xff08;美化UI&#xff09; 第一次美化后的效果 第二次美化后的效果 代码展示 实现在线体验链接 码上掘金使用教程 体验地址&#xff1a; 花样贪吃蛇…

github汉化

本文主要讲述了github如何汉化的方法。 目录 问题描述汉化步骤1.打开github&#xff0c;搜索github-chinese2.打开项目&#xff0c;打开README.md3.下载安装脚本管理器3.1 在README.md中往下滑动&#xff0c;找到浏览器与脚本管理器3.2 选择浏览器对应的脚本管理器3.2.1 点击去…

K8S 启动探测、就绪探测、存活探测

先来思考一个问题&#xff1a; 在 Deployment 执行滚动更新 web 应用的时候&#xff0c;总会出现一段时间&#xff0c;Pod 对外提供网络访问&#xff0c;但是页面访问却发生404&#xff0c;这个问题要如何解决呢&#xff1f;学完今天的内容&#xff0c;相信你会有自己的答案。 …

如何使用CRM数据分析优化销售和客户关系?

嘿&#xff0c;大家好&#xff01;你有没有想过为什么有些公司在市场上如鱼得水&#xff0c;而另一些却在苦苦挣扎&#xff1f;答案可能就藏在他们的销售策略和客户关系管理&#xff08;CRM&#xff09;系统里。今天我们要聊的就是如何通过有效的 CRM 数据分析来提升你的销售额…

语音转文字的先驱-认识Buzz的前世今生

Buzz 是一款基于 OpenAI Whisper 模型开发的开源语音转文字工具&#xff0c;其历史可以追溯到 Whisper 模型的推出&#xff0c;并在之后逐渐发展为一个功能强大且广泛使用的工具。以下是关于 Buzz 的详细历史介绍&#xff1a; 1. Whisper 模型的背景 Buzz 的核心是 OpenAI 开…

宝塔Linux+docker部署nginx出现403 Forbidden

本文主要讲述了宝塔docker部署nginx出现403 Forbidden的原因&#xff0c;以及成功部署前端的方法步骤。 目录 1、问题描述2、问题检测2.1 检测监听端口是否异常2.2 检测Docker容器是否异常2.2.1 打开宝塔Linux的软件商店&#xff0c;找到Docker管理器&#xff0c;查看前端容器是…

LabVIEW项目中的工控机与普通电脑选择

工控机&#xff08;Industrial PC&#xff09;与普通电脑在硬件设计、性能要求、稳定性、环境适应性等方面存在显著差异。了解这些区别对于在LabVIEW项目中选择合适的硬件至关重要。下面将详细分析这两种设备的主要差异&#xff0c;并为LabVIEW项目中的选择提供指导。 ​ 硬件设…