时序违例修复

2023-10-10 07:10
文章标签 时序 修复 违例

本文主要是介绍时序违例修复,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

建立时间违例修复

1.Tclk角度

2.Tcomb角度

1)流水线

2)重定时

3)关键信号后移

4)操作数平衡

5)树型加法器

6)消除优先级

3.Tnet角度

逻辑复制

4.Tco角度

5.Tskew角度

保持时间违例修复

1.Tcomb角度

2.Tskew角度

3.Tco角度

实例分析


建立时间与工艺、温度、电压、时钟周期有关。

        保持时间与时钟周期无关。

        建立保持时间是芯片本身的特性,它们的存在是触发器内部的特性,在屏蔽毛刺方面起到了一定作用。

建立时间违例修复

Tsu≤Tclk+Tskew-Tco-Tcomb-Tnet

1.Tclk角度

增大Tclk:降低时钟频率。很多产品等级是根据频率来分的,品质好的芯片频率高,价格贵。

2.Tcomb角度

减小Tcomb:

  1. 组合逻辑设计角度:流水线;重定时;关键信号后移;操作数平衡;树型加法器;消除优先级
  2. 物理版图角度:更换速度更快的标准单元(HVT-High Voltage Threshold;SVT-Standard Voltage Threshold);更换驱动能力更强的标准单元(X2,X4);更换阻值更低的金属以减少标准单元电路的负载和金属线网的延迟

1)流水线

        流水线(pipeline):插入寄存器,将组合逻辑分解,使得分解后的延迟基本一致,降低Tcomb。相当于先插入寄存器,再重定时面积换速度;提高最大时钟频率;保证吞吐量不变的情况下改善设计的时序性能。

PPA:性能 Performance、功耗 Power、面积 Area

流水线越深:追求性能,更高的主频

流水线越浅:追求功耗,小面积低功耗。

越深导致的问题:

1.以面积换速度,消耗更多的寄存器,面积开销大,功耗大。

2.流水线中的反压,流水线冲刷问题。分支预测失败,就会导致预取的指令全部作废,重新取指,造成功耗,造成性能损失。

处理器发展面临的挑战:频率墙、功耗墙、存储器墙、应用墙

2)重定时

        寄存器平衡(重定时retiming):在不改变电路功能的情况下,将大块组合逻辑分解成小块组合逻辑,分布到寄存器之间,通过改变寄存器的位置来优化关键路径,减少组合逻辑最大延迟,从而改进最高时钟频率。寄存器重定时与流水线的区别是,重定时不增加寄存器个数,通过改变寄存器的位置来优化关键路径。而流水线是增加了寄存器个数。

3)关键信号后移

        关键信号后移:关键输入应该在逻辑的最后一级提供,其中关键输入为芯片、Slice、或者LUT提供的延时最大的输入,比如在if...else if...链中,将关键信号放在第一级。

4)操作数平衡

        操作数平衡 (加法树、乘法树):将串行逻辑并行优化处理,积之和变为和之积。例如Z=A* B *C * D ,利用括号进行操作树平衡Z=(A * B)*(C * D)。变成树状乘法器,树状加法器。

5)树型加法器

6)消除优先级

        消除优先级:(又叫 代码结构平坦化技术)本身不需要优先级的地方,case代替if...else,使得顺序执行的语句变成并行执行。

3.Tnet角度

减小Tnet:提高工作电压;减小信号延迟;逻辑复制。

逻辑复制

        逻辑复制:当信号扇出很大的时候,该信号到达各个目的逻辑节点的路径变得很长。通过对寄存器进行赋值来降低扇出。复制几个相同的寄存器来分担原来一个寄存器驱动模块的任务。逻辑复制的另一种方法,是在DC软件的约束文件中,设置max_fanout属性,一般将max_fanout设置为3,当实际设计中该信号的fanout超过了3,综合器就会就行自动优化。扇出过大会导致net delay线延迟过大,不利于时序收敛。

4.Tco角度

减小Tco:使用反应更快的D触发器

5.Tskew角度

增加Tskew:在时钟路径上插入buffer

保持时间违例修复

Th≤Tco+Tcomb-Tskew

保持时间与工艺、温度、电压有关。

1.Tcomb角度

增大Tcomb:插入buffer作缓冲器延时。

2.Tskew角度

减小skew: 做时钟树平衡,减小时钟延迟。

3.Tco角度

增大Tco:提高温度,降低电压。

实例分析

Tsu= Tcycle + Tskew-T1 要使Tsu最小,则Tskew最小,T1最大。

Tsu(min) = Tcycle + Tskew(min) - T1(max) = Tcycle(=15) + Tskew(min)(=2+5+2-2) - T1(max) (=11+2+9+2) = 15+2+5+2-2-11-2-9-2 = 22- 24 < Tsetup 因此发生了setup violation

这篇关于时序违例修复的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/178823

相关文章

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

【经验交流】修复系统事件查看器启动不能时出现的4201错误

方法1,取得『%SystemRoot%\LogFiles』文件夹和『%SystemRoot%\System32\wbem』文件夹的权限(包括这两个文件夹的所有子文件夹的权限),简单点说,就是使你当前的帐户拥有这两个文件夹以及它们的子文件夹的绝对控制权限。这是最简单的方法,不少老外说,这样一弄,倒是解决了问题。不过对我的系统,没用; 方法2,以不带网络的安全模式启动,运行命令行,输入“ne

六种msvcp110.dll丢失修复的方法分享,有效快速修复msvcp110.dll丢失

在日常使用电脑的过程中,我们可能会遭遇各种程序运行错误,其中“msvcp110.dll丢失”是一种非常常见的问题。这个问题通常发生在尝试启动某些程序时,系统会弹出一个错误消息,提示“程序无法启动,因为计算机缺少msvcp110.dll”,这可能会让用户感到困惑和无助。幸运的是,这个问题有多种解决方法,本文将指导你通过几种简单的步骤来修复“msvcp110.dll丢失”的问题,让你的程序回到正常运行

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测 目录 多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测(完整源码和数据) 2.SS

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention 文章目录 一、基本原理1. 变分模态分解(VMD)2. 双向时域卷积(BiTCN)3. 双向门控单元(BiGRU)4. 注意力机制(Attention)总结流程 二、实验结果三、核心代码四、代码获取五、总结 时序预测|变分模态分解-双向时域卷积

MyBatis-Plus 框架 QueryWrapper UpdateWrapper 方法修复sql注入漏洞事件

什么是漏洞? 漏洞是指软件、系统或网络中存在的安全弱点或错误,这些弱点可能导致系统遭受攻击或被不当使用。在计算机安全领域,漏洞通常源于编程错误、设计缺陷或配置失误。 对于对象关系映射(ORM)框架来说,漏洞通常指的是设计或实施中的安全问题,这些问题可能让应用程序面临SQL注入攻击的风险。 SQL 注入漏洞 如果ORM框架在执行SQL操作时没有正确过滤或转义用户输入,攻击者可以利用输入的恶意数据

《长得太长也是错?——后端 Long 型 ID 精度丢失的“奇妙”修复之旅》

引言 在前后端分离的时代,我们的生活充满了无数的机遇与挑战——包括那些突然冒出来的让人抓狂的 Bug。今天我们要聊的,就是一个让无数开发者哭笑不得的经典问题:后端 Long 类型 ID 过长导致前端精度丢失。说到这个问题,那可真是“万恶之源”啊,谁让 JavaScript 只能安全地处理 Number.MAX_SAFE_INTEGER(也就是 9007199254740991)以内的数值呢?

修复msvcp100.dll文件丢失的问题,如何高效率修复msvcp100.dll

在Windows操作系统中,msvcp100.dll是Microsoft Visual C++ 2010 Redistributable Package的一部分,它支持多种与C++库相关的关键功能。这个文件对于许多程序的正常运行非常重要。有时用户可能会遇到msvcp100.dll文件缺失的问题,这会导致某些程序无法启动或运行错误。本文将探讨一系列有效的解决方案,帮助用户修复msvcp100.dll

今天做了freemaker 导出word文档 的bug修复,解决 \n换行 问题

结合Freemaker导出文件 public void exportSimpleWord() throws Exception{// 要填充的数据, 注意map的key要和word中${xxx}的xxx一致Map<String,String> dataMap = new HashMap<String,String>();dataMap.put("username", "张三");dataMap.

前端 ESlint 代码规范及修复代码规范错误

代码规范及ESlint介绍 代码规范:一套写代码的约定规则。例如:赋值符号的左右是否需要空格?一句结束是否是要加分号? 虽然不遵守这些代码规范并不会造成语法错误,但是一个团队中,我们通常希望各个团队成员的代码风格是统一的 没有规矩不成方圆 ESLint:是一个代码检查工具,用来检查你的代码是否符合指定的规则(你和你的团队可以自行约定一套规则)。在创建项目时,我们使用的是 JavaSc