时序深入之CPR(Clock Pessimism Removal)详解

目录

CPR%E6%A6%82%E5%BF%B5-toc" style="margin-left:0px;">一、CPR概念

CPR%E7%9A%84%E8%AE%A1%E7%AE%97-toc" style="margin-left:0px;">二、CPR的计算

CPR%E7%9A%84%E5%BC%80%E5%90%AF%E5%85%B3%E9%97%AD-toc" style="margin-left:0px;">三、CPR的开启关闭

CPR%E4%B8%BA0-toc" style="margin-left:0px;">四、CPR为0

​五、参考资料


CPR%E6%A6%82%E5%BF%B5">一、CPR概念

在时序报告的目标时钟路径中,会有一行数据clock pesssimism,第一次见可能都会对这个概念感到疑惑

同样在每条时序路径的summary中,clock path skew的计算会出现CPR,根据下方的解释大意为CPR是人为从时序路径的起点和终点间的共同时钟路径移除悲观因素,看到这仍旧会满头问号

为了进一步详细的解释,以下面的官网图片来解释。REGA和REGB是由相同的时钟驱动,数据从REGA到REGB,还有下面几个概念需作为前提知识,

1)静态时序分析中,通常主要进行setup分析和hold分析,两种分析本质是比较时钟路径和数据路径的时延,但时钟路径和数据路径在FPGA的时延是一个和工艺,电压,温度有关的概率时延,即同一段路径的时延值不是完全的固定值。

2)通常环境由两种极端环境情况,最好fast和最差slow,每种情况下的信号时延(包括时钟信号和数据信号)又存在最大值和最小值。

3)对于setup最差的情况分析,则采用数据时延最大,时钟时延最小的场景来分析。

回到下图中,时钟路径中,最前面一段加粗的是源时钟路径与目的时钟路径共同的部分,根据上面的第3条,上面的路径(红色)采用最大时延即Max Delay,时钟路径用最小时延(淡蓝色)Min Delay,这时计算REGB上的setup分析时,

数据路径时延Td=Max(Tsource_clk+Tckq+Tdata)

时钟路径时延Tclk=Min(Tdestination_clk)

setup=Tclk-Td=Min(Tdestination_clk)-Max(Tsource_clk)-Max(Tckq+Tdata)

对于Min(Tdestination_clk)-Max(Tsource_clk),仔细看下图中加粗的一段Destination clock和Source clock共同部分可知,同一个时钟同一段路径同一时刻是不可能出现一个最大时延和一个最小时延的,换句话说可以理解,对于共同的部分Min(Tdestination_clk)等于Max(Tsource_clk)。但如果这一段仍按照最大时延和最小时延来计算,则最终计算的setup值非准确值,因为,引入CPR来校正引入的误差,CPR的值为源时钟与目的时钟共同段的Max(Tsource_clk)-Min(Tdestination_clk)

CPR%E7%9A%84%E8%AE%A1%E7%AE%97">二、CPR的计算

    ​在目标时钟路径中,延时应该加上还是减去CPR值取决于分析的类型,对于最大时延分析,如setup/recovery分析,则是加上CPR,对于最小时延分析,如hold/removal分析,则是减去CPR值。

    ​在每条时序路径的summary中,clock path skew由DCD,SCD和CPR决定,DCD为目的时钟延时,SCD为源时钟延时,CPR的作用如下图。

setup分析

hold分析

    ​在很多设计中,CPR的精度在布线前后是不一样的。例如,假设起点和终点的时钟引脚是由相同的时钟BUFFER驱动,在布线前,共同的部分是时钟网线驱动源,即时钟BUFFER的输出引脚,CPR仅仅补偿从时钟根到时钟BUFFER输出引脚的差异。但在布线后,共同点的分叉位置是源时钟和目的时钟共享的最后一段布线资源,此时,共同的分叉点不能用网表来表现了,因此,CPR不能通过减去共有的时钟电路的延时差异。时序分析工具计算基于器件信息的CPR值也是不会直接呈现给用户。

CPR%E7%9A%84%E5%BC%80%E5%90%AF%E5%85%B3%E9%97%AD">三、CPR的开启关闭

    ​CPR可以设置打开或关闭,默认打开,不建议关闭,关闭后会导致时序分析不准,如果需要关闭,在tcl console执行命令config_timing_pessimism -disable

   ​查看是否关闭成功,tcl窗口执行命令report_config_timing -name config,其中config为自定义的报告名称,enable pessimism removal的值为no表示关闭

此时,查看时序路径的clock path skew中已经没有CPR

在destination clock path中,在路径的最后也不会计算clock pessimism

要打开则执行config_timing_pessimism -enable后查看信息,值为YES,说明打开成功

CPR%E4%B8%BA0">四、CPR为0

    ​上面提到CPR是为解决源时钟和目的时钟在计算公共路径段引入的时延误差,但有时会发现时序路径上存在clock pessimism,但值为0的特殊场景。

不难理解,即源时钟和目的时钟的公共路径在setup/hold分析不会有误差,换句话说,就是没有公共部分。此处示例是因为设置了set_input_delay,分析的是输入端口到第一级触发器的时序,因为data path中是没有时钟的,无源时钟。

​五、参考资料

《ug906-vivado-design-analysis-en-us-2023.2.pdf》


http://www.ppmy.cn/server/1794.html

相关文章

工业冷水机组选型

关于工业冷水机组设计选型的一般计算原则 现将归纳出一般性计算原则,供经验之用。 第一步,首先确定耗冷量,耗冷量计算方法一般有以下几种途径: 1、通过冷却水(油)进、出口温差来计算发热量 : …

java文件夹文件比较工具

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.HashSet; import java.util.Set;public class FolderFileNames {public static void main(String[] args) {// 假设您要读取的文件夹路径是 &q…

大创项目推荐 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 &am…

python爬虫--------Beautiful Soup 案列(二十一天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

【学习】VScode修改侧边栏大小。

侧边栏不可以直接更改,所以先缩放整体界面,再改变工作区大小。 缩放整体界面: Ctrl 或 Ctrl - 。 也可以直接使用如下代码: Ctrl Shifit p 打开搜索 settings ,选择下图第一个。 然后嵌入如下代码&#xff1a…

Geotrust SSL证书:安全加密与身份验证的坚实后盾

Geotrust,作为全球知名的数字证书颁发机构,以其高度的安全性、可靠性和广泛的兼容性,在网络安全领域中占据了举足轻重的地位。尤其在SSL(Secure Sockets Layer)证书服务上,Geotrust更是凭借其卓越的技术实力…

CV 面试指南—深度学习知识点总结(3)

本期专栏文章: CV 面试指南—深度学习知识点总结(1)CV 面试指南—深度学习知识点总结(2)CV 面试指南—深度学习知识点总结(3)CV 面试指南—深度学习知识点总结(4)CV 面试指南—深度学习知识点总结(5)

pnpm 使用 workspace 报错 ERR_INVALID_THIS

有时候真的感觉如果有一个老师指路,那么遇到的坑真的会少很多。 错误示例: GET https://registry.npmjs.org/rollup%2Fplugin-typescript error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.原因是什么?原因就是 pnpm 的…

Maven 总结

文章目录 第一章 Maven概述第一节 为什么要学习Maven?1、从『构建』角度解释①个人开发流程②团队开发流程 2、从『依赖』角度解释①jar包的规模②jar包的来源③jar包之间的依赖关系 第二节 What?什么是Maven?第二节 什么是Maven?…

4. Django 探究FBV视图

4. 探究FBV视图 视图(Views)是Django的MTV架构模式的V部分, 主要负责处理用户请求和生成相应的响应内容, 然后在页面或其他类型文档中显示. 也可以理解为视图是MVC架构里面的C部分(控制器), 主要处理功能和业务上的逻辑. 我们习惯使用视图函数处理HTTP请求, 即在视图里定义def…

国芯科技(C*Core)车规MCU产品选型与应用

一、MCU市场概述 MCU(Micro Controller Unit)即微控制器,俗称单片机,是把 CPU 的规格与频率做适当缩减,并将ROM、RAM、A/D转换、各式I/O接口以及Timer等功能整合在单一芯片上,形成芯片级的计算机。 根据…

多级缓存实现方案

多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈Redis缓存失效时,会对数据库产生冲击 Caff…

【设计模式】MVVM模式在AI大模型领域的创新应用

迎接智能未来 一、自然语言处理二、计算机视觉三、其他四、代码实例ModelViewModel (视图模型)View (视图) 在数字化浪潮的推动下,软件应用开发的边界正不断被技术的革新与融合所拓展。其中,MVVM(Model-View-ViewModel)模式以其独…

SQL-Oracle 获取最大值,第二大,第三大,第 N 大值

目录 1、原始数据2、获取最大值记录3、获取第二大值记录4、获取第三大值记录 1、原始数据 select * from test_2024_04_15_001 order by 销量 desc,渠道2、获取最大值记录 select 渠道,销量 from ( select a.渠道, a.销量 from test_2024_04_15_001 a order by a.销量 desc,…

官宣|Apache Paimon 孵化成功!毕业!

2024年4月16日 - Apache软件基金会(ASF),这个由320多个活跃的开源项目和计划的志愿开发者、管理员和孵化器组成的组织,今天宣布Apache Paimon已从孵化器毕业,成为一个顶级项目(TLP)。 恭喜Paimon! 01 流式湖仓解决方案 Paimon 流式湖仓解决方案 Streaming Lakehouse…

潍微科技-水务信息管理平台 ChangePwd SQL注入漏洞复现(CNVD-2024-14945)

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

【笔记】Android 网络漫游更新网络状态、运营商名称等信息日志分析

业务知识 漫游有国内和国际漫游之分,Android代码定义如下: //frameworks/base/telephony/java/android/telephony/ServiceState.java/*** registered in a domestic roaming network* @hide*/@SystemApipublic static final int ROAMING_TYPE_DOMESTIC = 2;/*** registered…

解释Java中的容器化技术,如Docker和Kubernetes

容器化技术是近年来软件开发和运维领域的一项重大创新,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,从而实现快速、一致和高效的部署。在Java开发中,Docker和Kubernetes是两种非常流行的容器化技术。 ### Docker Do…

使用Python脚本检测服务器信息并定时发送至管理员邮箱

在日常的系统管理工作中,监测服务器的资源占用情况至关重要,我们需要及时获得通知以便采取相应措施。我新装了一台UbuntuServer服务器,写了一个可以定期收集服务器的CPU、内存、网络和磁盘信息,并通过邮件将这些信息发送给管理员的…

如何搭建高效安全的eBay测评环境:步骤与要点解析

eBay测评环境的搭建是一个复杂且需要细致考虑的过程,主要涉及到技术配置和资源准备。以下是一些关键的步骤和要点: 一、资源准备: 1.养号系统及软件:选择稳定、可靠的养号系统,确保能够模拟真实用户行为,…