时序分析与时序约束知识总结

news2024/11/23 11:31:42

文章目录

    • 时序分析
        • 如何查看时序报告
        • 时序分析的分类和任务
        • HOLD违例修复:
        • SETUP违例修复:
        • 时序违例的修复
    • 时序约束
        • 约束的分类
        • 时序约束的作用
        • SDF文件
        • OCV
        • PVT
        • 共同路径悲观效应(CPP)
        • setup time与hold time和什么有关
        • clock Jitter与clock Skew
        • setup和hold裕度计算

时序分析

如何查看时序报告

(DC) report-timing

时序分析的分类和任务

  • STA静态时序分析

    分析门级网表的拓扑结构,计算所有通路的传输延迟,生成有向无环图。但有可能检查了无效路径,从而生成错误虚假的违例警告。

  • DTA动态时序分析

    基于电路的行为级、门级、开关级模型进行动态仿真。依赖于激励源,有可能漏掉关键路径,漏报时序违约。

  • 两者对比

    STADTA
    方法仿真路径分析
    激励源不需要需要
    覆盖率与激励源无关与激励源有关
    风险警告错误丢失警告
    最大最小分析,与综合配合不可
    内存占用
    运行时间
  • 任务

    • 建立时间约束
    • 保持时间约束
    • 脉冲宽度约束
    • 时钟偏移(clock skew)约束
    • 时钟周期约束

HOLD违例修复:

  • hold违例一般可在后端修复,前端可以忽略

  • Synopsys 方法

    • two-pass综合

      在排版前,用worst-case lid编译设计,获得最大setup-time,在layout后用best-case lib对设计再映射,从而修正hold-time,这个方法稳定性好。

    • Single pass 综合,通过DC命令

      • Set_fix_hold

        指示DC在采用CLK做时钟的电路合适的位置插入buffer或置换数据路径的cell而修正hold-time。在设计进行layout信息反标之后,用reoptimize _design命令修正hold-time,在layout之前,采用“compile –incremental”命令修正hold-time。

      • reoptimize _design命令

        支持min_max同时分析和优化;反标layout tool提供的min和max延时;用set_fix_hold 修正hold-time;

  • 人为插入delay

    对于少于10-20处的hold-time 违例,可人为插入delay,一般都是通过加入一串连续的buffer,但因为buffer间距离过近,总的延时由buffer的cell延时决定,连接延时很小从而造成延时不足以修正hold-time。解决的办法是将多个高fanin 的门连结在一起,利用fanin 电容比单输入的buffer大,增加延时。

  • 用DC命令自动插入延时

    用于hold-time 违例较多,用IPO费很多时间,对时序报告使用的script语言(perl 或 Awk)做语法分析,获得时序分析失败路径setup-time 的slack和hold-time的违例。根据这些结果,对失败路径,用户生成disconnect_net,create_cell,connect的DC命令,指示DC在合适的位置插入buffer.

SETUP违例修复:

  1. 可以考虑关键路径上的逻辑并行化(重排部),减少链路延时。

  2. 可以考虑有些功能电路的更优设计以降低延时,比如,超前进位加法器比行波逐位进位链加法器的延时更短。

  3. 关键插入寄存器,形成流水线(pipline)。

  4. FPGA中可尝试:将数据改为下降沿触发,提前半拍发数据增加余量。

  5. 后端

    • 后端设计可以通过调整关键路径的时钟SKEW来解决,但是一般只是针对小范围的违例。

    • 可以采用多阈值单元,从半导体器件原理大家都知道,mos管阈值越小,其延时越小,可以在关键路劲采用阈值小的单元。

    • 可以采用面积更小的门级单元,面积大容载大,自然延时大(当然面积大的单元其驱动能力强)。

    • 可以通过适当提高工作电压来解决,电路的延时本质就是充放电的延时,如果电压越高,充放电时间就会越快。这也是为什么CPU超频时需要更高的工作电压。因此也可以通过提高关键模块的工作电压,划分不同的工作电压域。

时序违例的修复

方案作用
更换器件,调制器件尺寸(后端)减少器件延迟,改善建立和保持裕度
延长时钟周期(spec)在性能指标约束内消除时序违例
调制关键路径(后端)减少线网延迟
时钟树重新设计(后端)改善时钟偏移
更好算法、系统结构(前端)减少通路延迟
改变工艺(spec)减少器件和通路延迟

时序约束

约束的分类

  • 时钟约束

  • IO约束

  • 时序例外约束

image-20210331142023586

  • 虚假路径

    不需要满足任何时序要求的路径,EDA忽略该路径的时序

  • 多周期路径

    需要多个周期来传输数据的路径,EDA放宽该路径的时序

  • 最小延迟和最大延迟

    当有对最小延迟和最大延迟有特殊要求(与setup、hold约束的推测值不同)时指定

时序约束的作用

  • 在综合中
    • 优化:面积、功率、性能约束
    • 输入重排序:传达各种输入信号的到达时间
    • 输入缓冲:传达外部输入的驱动能力
    • 输出缓冲:传达输出端口需要驱动外部负载的信息
  • 在STA中
    • 约束作为声明:工具不验证准确性和正确性
    • 约束作为断言:检查,若不满足约束认为时序违例
    • 约束作为指令:综合、布局布线时工具根据约束识图满足目标
    • 约束作为异常:指定某些路径,允许更为宽松的时序

SDF文件

Standard Delay Format:标准延时格式文件,描述各种延迟约束。

SDC:新思公司的SDF文件

XDC:Xilinx公司的SDF文件,两者格式大致相同

OCV

​ OCV(On-chip-Variation),片上变化,OCV(on-chip variation)是指在同一个芯片上, 由于制造工艺和环境(PVT)等原因导致芯片上各部分特征不能完全一样,从而造成偏差,对时序分析造成影响。这些偏差对互联线和cell的延时都是有影响的。

由于OCV对延时有影响,那么我们在进行时序分析时需要将这些OCV效应考虑进来。在STA中,通过对不同的时序路径添加derate系数,来完成对OCV的建模,将OCV效应纳入分析。

PVT

​ PVT也称为Operating condition,分别是Process工艺,Voltage电压,Temperature温度,有下列组合

  • WC:worst case slow,低电压,高温度,慢工艺 -> 一般情况下delay最大,setup 差。
  • WCL:worst case low-temperature,低电压,低温度,慢工艺 -> 温度反转效应时delay最大,setup差。
  • LT:即low-temperature,也叫bc(best case fast),高电压,低温度,快工艺 -> 一般情况下delay最小,hold差。
  • ML:max-leakage,高电压,高温度,快工艺 -> 温度反转效应下delay最小,hold差。
  • TC:typical,也叫tt,普通电压,普通温度,标准工艺 -> 各种typical。
  • BC:Best case。高电压,快工艺,常温0℃ or 25℃。
  • 注:温度反转效应(Temperature Inversion Effect)
    • 工艺在90nm以上的时候,随着温度的升高,delay增大,所以worst corner是PVTmax,
    • 是65nm以下,随着温度的降低,delay增大,worst corner可能是PVTmax,也可能是PVTmin,这就是温度反转效应。
    • 温度对Transistors的影响:低温时,迁移率增大(导致快switching趋势),但是Vt增大(导致慢switching趋势),最后结果取决于迁移率和Vt谁起更重要作用(65nm以下制程主要是Vt起作用,90nm以上主要是电子迁移率)。
    • 温度对寄生参数的影响:低温时,wire电阻更低。

共同路径悲观效应(CPP)

如下图,common clock path即属于launch clock path,也属于capture clock path,所以在计算中,我们对其使用了不同的derate系数进行计算:在计算arrival time中,系数为1.2;在计算required time中,系数为0.9,这样会让我们的分析更为悲观,电路性能更差。而在真实的情况中,common clock path的PVT只有一个,不可能同时有两个derate系数,所以我们会进行CPPR操作。

CPPR(Clock Path Pessimism Removal)或者CRPR(Clock Reconvergence Pessimism Removal),中文名“共同路径悲观去除”。它的作用是去除clock path上的相同路径上的悲观计算量,即我们上面提到的问题。我们将common point定义为时钟树上共同部分最后一个cell的output pin。则定义CPP因子为:

//同一时钟,一段按最快路径(clk->B)计算,一段按最慢路径(clk->A)计算,导致约束过于悲观。可声明公用部分,修正补偿延迟差异,称为“时钟网络悲观效应降低”

					  +-----+     *****    +-----+      
                      |     +---** C1  *---+     |      
                      | F1  |     *****    | F2  |      
                      |     |              |     |      
                    +-+>A   |         |----+>B   |      
                    | +-----+         |    +-----+      
                    |                 |                 
                    .                 .                 
                   /_\               /_\                
                    |                 |                 
          clk       |                 |                 
          ----------+-----------------+               

setup time与hold time和什么有关

https://blog.csdn.net/FBICIACCC/article/details/52683901

直观而言,SETUP要求数据要比时钟“走得快”,HOLD则防止采到的新数据太快到达而“冲掉”原来的正确数据,数据必须要在一定时间之后才允许到达。

数据跑得越快(TDelay越小),时钟传输时延越大(clock skew越大)对建立时间的满足越有利,而对保持时间的满足越不利,相反则对满足保持时间越有利,对满足建立时间越不利。

建立时间还跟时钟周期有关系,时钟周期越小,越容易发生建立时间违例,而保持时间则跟时钟周期没有关系。

clock Jitter与clock Skew

  • clock Skew(时钟偏移)指同一时钟到达不同寄存器的时间偏移。一般由于时钟路径的长度,负载,驱动有关。在上例中,clock skew体现在 T c l k _ p a t h T_{clk\_path} Tclk_path中。
    • 定义为到达后级寄存器的时间减到前级寄存器的时间,从公式可以看出,正skew(clk2晚于clk1)对建立时间有益,负skew(clk2早于clk1)对保持时间有益。
  • clock Jitter(时钟抖动)指时钟源的频率不确定。一般由于晶振,电源,温度变化引起。clock jitter始终对电路性能造成负面的影响。
  • 时钟约束中,clock uncertainty = clock jitter + clock skew。

setup和hold裕度计算

  • setup

    T d a t a _ p a t h + T s e t u p < = T c l k _ p a t h + T p e r i o d T_{data\_path}+T_{setup}<=T_{clk\_path}+T_{period} Tdata_path+Tsetup<=Tclk_path+Tperiod

    变形: T s e t _ s l a c k = T p e r i o d − ( T c q + T l o g i c ) − T s e t u p + T s k e w > 0 T_{set\_slack} = T_{period} -(T_{cq}+T_{logic})- T_{setup} + T_{skew}>0 Tset_slack=TperiodTcq+TlogicTsetup+Tskew>0

  • hold

    T d a t a _ p a t h − T h o l d > = T c l k _ p a t h T_{data\_path}-T_{hold}>=T_{clk\_path} Tdata_pathThold>=Tclk_path

    变形: T h o l d _ s l a c k = T c q + T l o g i c − T h o l d − T s k e w > 0 T_{hold\_slack} = T_{cq}+T_{logic}-T_{hold} - T_{skew} > 0 Thold_slack=Tcq+TlogicTholdTskew>0

  • 举例

img

T d a t a _ p a t h = 2 + 11 + 2 + 9 + 2 = 26 n s ; T c l k _ p a t h = 2 + 5 + 2 = 9 n s ; 26 + 4 > 9 + 15 T_{data\_path}=2+11+2+9+2=26ns;T_{clk\_path}=2+5+2=9ns;26+4>9+15 Tdata_path=2+11+2+9+2=26ns;Tclk_path=2+5+2=9ns;26+4>9+15

setup违例

T d a t a _ p a t h = 1 + 9 + 1 + 6 + 1 = 18 n s ; T c l k _ p a t h = 3 + 9 + 3 = 15 n s ; 18 − 2 > 15 T_{data\_path}=1+9+1+6+1=18ns;T_{clk\_path}=3+9+3=15ns;18-2>15 Tdata_path=1+9+1+6+1=18ns;Tclk_path=3+9+3=15ns;182>15

hold无违例

总结:计算setup时数据路径延迟取最大,时钟路径延迟取最小;计算hold时相反

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

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

相关文章

10.java程序员必知必会类库之邮件

前言 邮件功能在当前互联网应用中已经是很成熟的功能&#xff0c;也是作为java程序员应该掌握的技能。常见使用场景有&#xff1a; 电商软件开电子发票&#xff0c;需要发到用户邮箱里面生产实时报警&#xff0c;需要发到邮箱里面银行软件申请的征信报告&#xff0c;电子账单…

Django框架之Admin站点管理

Django的强大体现在其内置的Admin模块可以使得开发人员在不做任何编码的情况下就拥有网站后台管理功能。 概述 内容发布&#xff1a;负责添加、修改、删除内容 内容访问查看 配置admin应用 在settings.py中添加django.contrib.admin 默认已添加 创建管理员账户 python man…

九、1~8文章的阶段案例

一、案例 现在我们来做一个相对综合一点的练习&#xff1a;书籍购物车 案例说明&#xff1a; 1.在界面上以表格的形式&#xff0c;显示一些书籍的数据&#xff1b;2.在底部显示书籍的总价格&#xff1b;3.点击或者-可以增加或减少书籍数量&#xff08;如果为1&#xff0c;那…

【论文精读】ISBI 2022 - Retinal Vessel Segmentation with Pixel-wise Adaptive Filters

【论文精读】ISBI 2022 - Retinal Vessel Segmentation with Pixel-wise Adaptive Filters 【论文原文】&#xff1a;Retinal Vessel Segmentation with Pixel-wise Adaptive Filters 【作者信息】&#xff1a;Li, Mingxing and Zhou, Shenglong and Chen, Chang and Zhang, …

【Linux】线程-线程控制

线程控制 线程控制线程创建线程终止线程等待分离线程 线程控制 使用线程需要注意的是&#xff0c;需要引入头文件pthread.h&#xff0c;并且在编译的时候&#xff0c;需要使用-lpthread 线程创建 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*…

QT中TCP的学习

文章目录 qt中TCP的实现 qt中TCP的实现 学习视频 QT中可以通过TCP协议让服务器和客户端之间行通信。服务器和客户端的具体流程 下方的信号都是系统提供的&#xff0c;我们只需要写相应的槽函数 A、服务器&#xff1a; 创建QTcpServer对象启动服务器&#xff08;监听&…

Flutter ListView组件详解

今天是2023年4月24日 今天重新复习了一下关于ListView的内容&#xff0c;现在就重新整理一下关于ListView的内容和理解 : (1)ListView和Column之间有什么区别&#xff1f; 在我理解中ListView和Column都是可以有很多子组件的组件&#xff0c;它们之间区别在于它们排列的形式和…

python实现AI写歌词GUI版本【文末源码】

**引言&#xff1a;**自然语言处理作为人工智能的一个重要分支&#xff0c;在我们的生活中得到了广泛应用。其中RNN算法作为自然语言处理的经典算法之一&#xff0c;是文本生成的重要手段。而今天我们就将利用RNN算法建立一个写歌词的软件。其中的界面如下&#xff1a; RNN指的…

使用binding时,LayoutSubscribeFragmentBinding报错

LayoutRecommendFragmentBinding是一个DataBinding类&#xff0c;它由编译器自动生成&#xff0c;用于访问布局文件中的视图。如果你在代码中看到LayoutRecommendFragmentBinding报红&#xff08;提示未解析的引用&#xff09;&#xff0c;可能有以下原因&#xff1a; 1. 检查…

Docker 的数据管理(dockerfile)

Docker 的数据管理&#xff08;dockerfile&#xff09; 管理 Docker 容器中数据数据卷数据卷容器端口映射 容器互联&#xff08;使用centos镜像&#xff09;Docker 镜像的创建1&#xff0e;基于现有镜像创建2&#xff0e;基于本地模板创建3&#xff0e;基于Dockerfile 创建镜像…

Android主流网络请求开源库的对比

目录 一、为什么要用网络请求开源库&#xff1f; 网络请求开源库是一个将网络请求的相关功能封装好的类库 没有网络请求框架之前 App想与服务器进行网络请求交互是一件很痛苦的事&#xff1a;因为Android的主线程不能进行网络请求&#xff0c;需另开1个线程请求、考虑到线程池…

软件工程开发文档写作教程(03)—开发文档的必备条件

本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;电子工业出版社《软件文档写作教程》 马平&#xff0c;黄冬梅编著 必备条件概述 软件系统配备软件文档不仅对于公司非常有益&#xff0c;而且也能够让客户从中…

【Linux】【配置】网络连接

NetworkManager介绍 NetworkManager 是一个在 Linux 系统上管理网络连接的系统服务和工具。它可以自动配置和管理有线、无线、移动宽带和虚拟专用网络 (VPN) 连接&#xff0c;以及其他类型的网络连接。 NetworkManager 提供了一种简单且易于使用的方法来管理网络连接&#xff…

JSP、JSTL标签

<!-- JSTL的表达式的依赖--><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><!--Standard标签库--><dependency><groupId>java…

QGroundControl之安装调试

QGroundControl之安装调试 1. 源由2. 问题汇总2.1 摄像头播放问题2.2 Windows电脑录像和拍照保存位置2.3 Android设备录像和拍照保存位置 3. 打包资料4. 附录-QGroundControl-Video Streaming5. 附录-QGroundControl效果图6. 参考资料 1. 源由 开源软件的好处就是免费&#xf…

数字政府智慧政务一网通办解决方案2022(ppt可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 建设成效 让政务服务全流程更“好办、智办” 智慧政务“111”架构 服务门户 统一入口、多端同步&#xff0c;一网融合、数据同源 服务门户 智能客服、智能问答、智能外呼实现…

2023一网通办一网统管一码互联一网共治建设方案(PPT可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 智慧城市基础平台的定位 智慧城市各模块的纵向关系 智慧城市-数据中枢整体架构 数据中枢在智慧城市定位 数据中枢定位1、数据中枢是智慧城市基础平台的核心组成部分&#x…

虚拟化技术 — VirtIO 虚拟设备接口标准

目录 文章目录 目录VirtIOVirtIO 虚拟设备接口标准VirtIO 的前后端分层架构标准VirtIO 的数控路径分离架构标准VirtIO 的传输层标准 VirtIO 标准在 Linux 中的实现 VirtIO VirtIO 由 Rusty Russell 开发&#xff0c;最初是为了支持自己开发的 lguest Hypervisor&#xff0c;其…

对象存储之SeaweedFS简介及与MinIO的对比

什么是SeaweedFS&#xff1f; SeaweedFS架构&#xff1a; master service【主服务】和Volume service【卷服务】一起提供分布式对象存储服务&#xff0c;支持用户配置数据的复制和冗余策略。可选的Filer service【过滤器】和S3 service【S3服务】是对象存储之上的附加层&#x…

量子力学 学习

对于同一个竖直向上量子比特&#xff0c;不对他进行任何的干扰&#xff0c;进行第一次水平测试实验会随机得到一个一或者负一&#xff0c;之后再进行多少次水平测试实验都与第一次的试验结果是相同的。 我们换用其他的竖直向上量子比特&#xff0c;或者对原来的量子比特进行干扰…