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

2023-05-16

文章目录

    • 时序分析
        • 如何查看时序报告
        • 时序分析的分类和任务
        • 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时相反

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时序分析与时序约束知识总结 的相关文章

  • git取消超过范围大文件并重新提交

    问题报错 remote error File db383b59a623629b36cc62dd3917db21c1375cf0 span class token number 690 93 span MB exceeds span clas
  • 基于pyqt的无边框浏览器

    自己写了个基于pyqt的无边框浏览器 xff0c 可以配合源阅读的web看书 xff0c 自用自取 目录结构 xff1a ui ui webview pycall webview y 环境安装 xff1a pip span class to
  • Pycharm默认输入状态是insert状态,选中文字无法直接输入替换或删除

    最近开始学习python xff0c 使用Pycharm编辑器进行学习过程中却发现 xff1a 打开一个新的py文件 xff0c 我的光标处于加粗状态 xff0c 也就是编程软件经常出现的insert插入编辑模式 xff0c 我就点击了一下
  • 输入字体之间的间隔突然变大了

    额 xff0c 这个问题之前也遇到几次 xff0c 后来莫名其妙变好了 我就没深究 最近写代码又出现了这种情况 就是敲了个快捷键 xff0c 就变成 后来发现是IDE的快捷键和输入法快捷键冲突了 解决方法 xff1a 按一下 shift 4
  • 西瓜的JSON笔记

    1 JSON是什么 JSON 指的是 JavaScript 对象表示法 xff08 J ava S cript O bject N otation java xff0c 脚本 xff0c 对象 xff0c 注释 xff09 JSON的特点
  • Windows 下安装 Ubuntu 双系统

    转载自 xff1a Windows 下安装 Ubuntu 双系统 一 准备 xff1a xff08 一 xff09 准备工具 xff1a U盘一个 xff08 请提前备份U盘里面的资料 xff0c 因为后面操作要格式化U盘 xff09 Ub
  • FreeRTOS 互斥信号量和二值信号量对比

    互斥信号量 1 有优先级继承 2 尽量不要在中断中调用 3 xSemaphoreCreateMutex创建后 xff0c 可以直接take使用 二值信号量 1 无优先级继承 2 允许在中断中调用 3 可以当做标志位来使用 4 xSemaph
  • 工作站常见问题处理

    常见问题1 xff1a 系统重启网桥消失 1 现象 公司的工作站自从搬到新地方以来 xff0c 每次关机再启动 xff0c 或重启后 xff0c 都会出现网桥消失的情况 2 分析 查找了网桥和网卡的配置 xff0c 也觉得没有什么问题 xf
  • Ubuntu17 安装ProxyChains4

    span class hljs preprocessor 切换目录 span cd Downloads span class hljs preprocessor 下载 span git clone https span class hljs
  • c++实现ip是否在同一个网段的判断

    废话不说直接贴代码 xff1a ip的数据结构 typedef struct IP Struct ip地址划分后各个域的值 struct IpAdress Struct int first int second int third int
  • 计算ip地址是否在同一网段

    一 要判断两个IP地址是不是在同一个网段 xff0c 就将它们的IP地址分别与子网掩码做与运算 xff0c 得到的结果 gt 网络号 xff0c 如果网络号相同 xff0c 就在同一子网 xff0c 否则 xff0c 不在同一子网 例 xf
  • 面试官再问你 HashMap 底层原理,就把这篇文章甩给他看

    前言 HashMap 源码和底层原理在现在面试中是必问的 因此 xff0c 我们非常有必要搞清楚它的底层实现和思想 xff0c 才能在面试中对答如流 xff0c 跟面试官大战三百回合 文章较长 xff0c 介绍了很多原理性的问题 xff0c
  • Java核心技术读书笔记——集合

    本笔记为读 Java核心技术 卷1 第9版 而记录 目录 1 集合接口与实现相互分离1 1Java类库中集合接口和迭代器接口1 2泛型实用方法 2 具体的集合2 1链表2 2数组列表2 3散列表2 4树集2 5对象的比较2 6队列与双端队列
  • #每天一篇论文#(213/365) Joint 2D-3D-Semantic Data for Indoor Scene Understanding 结合2D-3D室内语义数据场景理解

    Joint 2D 3D Semantic Data for Indoor Scene Understanding http 3Dsemantics stanford edu A 摘要 本文提供了一个大型室内空间的数据集 xff0c 它提供了
  • 我心中的AI

    首先说一下我的身份 xff0c 一个刚刚踏入IT行业的年轻小伙 xff0c 相信在坐的大家心中都会有一个小小的梦想 拥有一个 大黄蜂 xff0c 这是我从事这个职业的原因所在 人工智能从诞生以来 xff0c 理论和技术日益成熟 xff0c
  • 2021-09-04 **mininet+flowvisor+floodlight实现网络切片功能**

    mininet 43 flowvisor 43 floodlight实现网络切片功能 这个项目所使用的软件flowvisor 和floodlight 都已经过时了网上能找到的资料太少了 xff0c 整个项目搭建过程中遇到的坑太多了 花了大量
  • CentOS 6.5 时间同步

    1 检查是否安装ntpdate rpm qa grep ntp 有返回说明已经安装 xff0c 若无返回 xff0c 执行安装命令进行安装 2 安装ntpdate yum install y ntp ntpdate 3 修改时区 vi et
  • 在linux安装elasticsearch-7.6.2 所遇到的坑

    64 TOC在linux安装elasticsearch 7 6 2 所遇到的坑 问题描述 刚接触学习elasticsearch xff0c 在linux环境安装就遇到了一些问题 运行角色问题 elasticsearch不建议使用root账号
  • freeRTOS多任务启动流程和源码分析

    最近学习白问网韦东山老师在B站开源的freeRTOS课程 xff0c 网址 xff1a 韦东山直播公开课 xff1a RTOS实战项目之实现多任务系统 第1节 xff1a 裸机程序框架和缺陷 哔哩哔哩 bilibili和7天物联网训练营 第

随机推荐

  • mkdir 创建目录命令

    mkdir命令 mkdir 命令简介 mkdir命令用来创建指定的名称的目录 xff0c 要求创建用户在当前目录权限 xff0c 并且制定的目录名不能是当前目录中已有的目录 命令格式 mkdir 选项 目录 命令参数 m mode 61 模
  • UCOS-II任务间通信(信号量、邮箱、消息队列)

    保护任务之间的共享数据和提供任务之间的通讯方法 xff1a 利用宏OS ENTER CRITICAL 和OS EXIT CRITICAL 来关闭和打开中断 xff0c 这可以用于多任务或者任务和ISR共享某些数据时可以采用这种方法 利用OS
  • 高考到程序员,从娇惯到耐艹

    现在的我刚好是走出校门没两天 xff0c 踏入it行业的程序员 此刻的心情 xff0c 有与挚友分别的不舍 xff0c 有悔恨当初的颓废 xff0c 还有一种提到望月的闯劲儿 总之心理活动错综复杂 xff0c 和高考那会儿玩世不恭的我大不相
  • AI浪潮下需要思考的事

    一 AI的意义 AI xff0c 即ArtificialIntelligence的缩写 xff0c 它是研究如何以人类的智能行为以及思考方式来解决问题的计算机科学的一个分支 目前主要研究的领域包括语音识别 图像识别 自然语言处理以及在某一特
  • Hive(二) -- ddl

    Hive支持标准SQL xff0c 同时又有自己的特点 xff0c 属于方言版SQL Hive的ddl主要包含对于数据库和表的查询 创建和删除 dml包含数据查询和插入 xff0c 其中插入有load和insert两种方式 xff0c 针对
  • autolisp的各种框(DCL)

    一 DCL是什么 前面的事情 xff0c 是通过在命令行输入参数来实现某个指令的 xff0c 而DCL是通过用户界面来实现交互的 下图就是一个典型的DCL 二 DCL怎么用 xff1f 首先说明 xff0c DCL不像lisp xff0c
  • 在hbase shell中过滤器的简单使用

    在hbase shell中查询数据 xff0c 可以在hbase shell中直接使用过滤器 xff1a span class hljs comment hbase shell span gt scan span class hljs st
  • kswapd0占用CPU过高问题处理

    项目场景 xff1a kswapd0占用CPU过高 xff0c 严重影响服务器及虚拟机的使用 问题描述 最近同事反应工作站上的虚拟机太慢了 到虚拟机上看了一下 xff0c 资料占得很满 xff0c 一点很长时间没反应 xff0c 卡得不行
  • QQ新版表情序号及对应

    在学习QQ机器人发送消息接口时遇到了新版表情发送问题 xff0c 以及QQ新版表情序号跟面板中不是完全对应的 xff0c 于是遍历了0 500号表情 xff0c 作一一输出 xff0c 得到了大部分表情的序号及对照如下 xff1a 表情使用
  • Java判断String字符串是否相等时容易出现的问题

    在程序设计中 xff0c 我们经常需要判断字符串是否相等 xff0c 如if a 61 61 b xff0c 但在java中 xff0c a和b两个字符串值相等 xff0c 但有时会判断出不相等的情况 例如 xff1a span class
  • ALDS1_2_C:Stable Sort

    题目链接 xff1a ALDS1 2 C Stable Sort 题目概要 xff1a 扑克牌中存在数字相同而花色不同的情况 xff0c 该题需要利用扑克牌这一特性来比较两种排序 xff1a 冒泡排序 选择排序 xff08 题中给出伪代码
  • jupyter notebook 安装nbextension不显示问题

    2023年4月18日 更新 评论区一位老哥的方法 xff0c 不用下载mark js xff0c 复制一份源目录里的文件改名即可 xff0c 经测试 xff0c 有效 xff0c 评论已置顶 首先放一下安装nbextensions的步骤 如
  • Python对象序列化性能比较:pickle、json、msgpack

    目录 前言三种工具介绍PickleJsonMsgpack性能参考 xff08 由ChatGPT给出 xff09 实际测试测试条件测试结果 前言 最近在做毕设 xff0c 需要读取处理大量的数据 xff0c txt中文文本 xff0c 大概有
  • IRQL_NOT_LESS_OR_EUQAL,间歇性蓝屏,4800h笔记本,暗影精灵6,解决办法,蓝屏问题排查

    目录 前言机器配置蓝屏情况已测试方法及思路前期准备使用WinDbg分析蓝屏文件软件 系统排查 xff1a 驱动排查 xff1a 系统排查 硬件排查硬件检测硬件替换 送修 已知解决办法总结 前言 本文章所列出解决方法适用于AMD Ryzen
  • 单片机PWM输出原理与实践

    一 什么是PWM xff1f PWM xff08 Pulse Width Modulation xff09 脉冲宽度调制 xff0c 它是通过对一系列脉冲的宽度进行调制 xff0c 等效出所需要的波形 xff08 包含形状以及幅值 xff0
  • 数字IC/FPGA面试笔试准备(自用填坑中)

    文章目录 前言常见的IC问题数字电路基础问题Verilog amp SV 跨时钟域信号处理类CRG 同步与异步复位综合与时序分析类低功耗方法STA 静态时序分析 DC综合RTL设计 包含手撕代码 总线问题AXIAPBAHB 体系结构的问题R
  • 时序图工具哪家强?

    设计时序是基本功 xff0c 怎样才能高效的设计时序图呢 xff1f 下面是我搜集到的工具以及我目前在用的工具 xff0c 希望大家能找到最适合自己的工具 Visio 使用步骤 Visio时序图工具 xff0c 其中有一些做好的模具 xff
  • FIFO设计笔记(双口RAM、同步FIFO、异步FIFO)Verilog及仿真

    文章目录 0 前言0 1 FIFO0 2 FIFO与RAM 1 异步双口RAM1 1 原理1 2 Verilog代码1 3 tb仿真 2 FIFO设计前瞻知识2 1 格雷码2 1 1 二进制转格雷码Verilog代码tb仿真 2 1 2 格
  • el-table在行单击时获取行的index

    一 涉及参数及事件 参数说明类型类型说明row class name行的 className 的回调方法 xff0c 也可以使用字符串为所有行设置一个固定的 className Function row rowIndex String ro
  • 时序分析与时序约束知识总结

    文章目录 时序分析如何查看时序报告时序分析的分类和任务HOLD违例修复 xff1a SETUP违例修复 xff1a 时序违例的修复 时序约束约束的分类时序约束的作用SDF文件OCVPVT共同路径悲观效应 CPP setup time与hol