timingPath/set_data_check和set_max_delay/set_multicycle_path

news2024/9/28 13:18:49

目录

0.timing path

1.set_data_check

1.1set_data_clk约束cdc path

1.2 set_data_check和set_max_delay区别和使用场景

2.set_mulicycle_path


0.timing path

timing path的概念:

start和end不只是reg的CP和REG的D pin

还可以是mem的D/Qpin和 port

port-->port 这种feedthrough也算timing path

1.set_data_check

set_data_check 通常用于信号间的skew 约束,比如一些高速接口相关信号间的约束。摘一段:

Data checks are normally applied where there is a specific requirement of skew (either minimum of maximum) or race condition (where the order of arrival of two signals can affect output and the intention is to get one of the probable outputs by constraining one signal to come before the other) between two or more signals. These may be required where:

At the digital-analog interface within a chip where analog signals at the analog block boundary are required in a specific order.

At the chip boundary, some asynchronous interface signals may have skew requirements.

set_data_check 和set_max_delay是有很大区别的,一个是保证多bit信号到达capture pin时间相差不多另一个是保证所有bit的走线延迟在一定范围内

换一种说法 一个是对skew约束;另外一个主要是约束delay。

可参考:

SDC | set_data_check-腾讯云开发者社区-腾讯云

静态时序分析——Data to data check_沧海一升的博客-CSDN博客

确保数据总线的信号偏移控制 | 电子创新网赛灵思中文社区

在异步电路后端实现流程(cdc signOff 后端做什么)中说明了使用set_max_delay收cdc path,这里讨论一下set_data_check。

1.1set_data_clk约束cdc path

对于grayCode的多bit同步,我们要求这个多bit信号到达dstClk的寄存器时间尽量相等,那么怎么用set_data_check来约束呢?比如dst_gray_code[3:0],我们做如下的约束:

set_data_check -from dst_gray_code_reg_0_/D -to dst_gray_code_reg_1_/D -setup 0.3
set_data_check -from dst_gray_code_reg_0_/D -to dst_gray_code_reg_2_/D -setup 0.3
set_data_check -from dst_gray_code_reg_0_/D -to dst_gray_code_reg_3_/D -setup 0.3
set_data_check -from dst_gray_code_reg_0_/D -to dst_gray_code_reg_1_/D -hold 0.4
set_data_check -from dst_gray_code_reg_0_/D -to dst_gray_code_reg_2_/D -hold 0.4
set_data_check -from dst_gray_code_reg_0_/D -to dst_gray_code_reg_3_/D -hold 0.4

那么约束起效果后,结果就是dst_gray_code[3:1] 3bit信号到达寄存器D端的时间在dst_gray_code[0]到达D端时刻t的 [t-0.3 : t+0.4]范围内,这样对于grayCode来说是否可以呢?

我们可以用公式来描述一下:

设t0时刻src_gray_code[0]发生变化,经过td之后到达dst_gray_code[0] pin D。t0+tf(tf为fastCLk的周期)时刻src_gray_code[1]发生变化,dst_clk在t0+x时刻第一次采样src_gray_code的变化

m为set_data_check的setup时间

n为set_data_check的hold时间

如果要满足此时两个bit都不满足dst_clk的setup,则需同时满足以下的条件

0<t_{0}+x-(t_{0}+t_{d}) < t_{setup}

0<t_{0}+x-(t_{0}+t_{d}+t_{f}+[-m:n]) < t_{setup}

化简可得:

t_{d} <x< t_{setup}+t_{d}

t_{d}+t_{f}+[-m:n] <x< t_{setup}+t_{d}+t_{f}+[-m:n]

正常情况下

t_{f}>m

进一步需要满足下面两个条件

最终要求如下:

t_{d}+t_{f}+n <x< t_{setup}+t_{d}

一般在一种工艺下

t_{f}+n < t_{setup}是不会发生的,

同理hold分析也可以完成

所以set_data_check也是可以保证grayCode的最多只有1bit在dst clk 采样时不稳定。

1.2 set_data_check和set_max_delay区别和使用场景

        那为什么一般cdc check用maxDelay约束而不用set_data_check?

        个人认为 maxDelay除了能保证grayCode同步的上述特性,还能对走线延迟绝对值进行约束。而set_data_check只能保证到达指定pin上的时间相差不大,但这个绝对时延无法保证。

        set_data_check常见用于 I2C的scl和sda之间约束。也用于多bit使用打拍同步器的约束(在SNPS家的hdmi PHY sdc见过)。

        实际上对于I2C/SPI/I2S/dpi这些接口,后端signOff的时候都会同时处理从数字寄存器到pad port上的maxDelay和信号线之间的skew。常有两种做法:

  • 正向约束

        可以正向用set_max_delay+set_date_check来约束,分别设定某类接口的maxDelay和信号之间【clk,多bit数据,控制信号等】的skew。

  • 反向迭代

        这种方法是后端先按照经验做timing,做完之后写脚本检查某类接口的所有信号是否满足maxDelay和信号间skew的要求,如果不满足,那就继续迭代。

2.set_mulicycle_path

可参考原创sdc中set_multicycle_path的解释_进击的芯片的博客-CSDN博客

或本人转载之后的地址:

sdc中set_multicycle_path的解释_cy413026的博客-CSDN博客

该篇文章详细介绍了setup/hold是的检查从launch/capture clk的哪个沿

快慢时钟间的setup/hold检查从launch/capture clk的哪个沿

multicycle path时setup/hold检查用的从launch/capture clk的哪个沿

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

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

相关文章

大模型AI时代哪类人相对更「安全」

最近随着人工智能技术的发展&#xff0c;越来越多的工作被AI智能自动化取代&#xff0c;这导致了许多人失去了TA们的工作。这些人被视为首批因人工智能失业的人。虽然这些人的失业是非常令人遗憾的&#xff0c;但是我们可以从中获得一些启示&#xff0c;以应对未来可能出现的类…

颠覆你的认知,不用开通Plus会员也可以使用ChatGPT的插件功能(兼容3.5)

在看到这篇文章之前&#xff0c;你可能以为只有GPT4.0才能使用插件。但事实上&#xff0c;早就有人基于3.5开发了一套完整的插件体系了&#xff0c;不但可以使用插件&#xff0c;还可以自己开发插件。插件使用的就是JavaScript语法&#xff0c;开发起来可以说是相当简单了。 注…

excel中函数vlookup使用方法

1、VLOOKUP函数是Excel中的一个纵向查找函数&#xff0c;它与 LOOKUP函数和 HLOOKUP函数属于一类函数&#xff0c;在工作中都有广泛应用。VLOOKUP是按列查找&#xff0c;最终返回该列所需查询列序所对应的值&#xff1b;与之对应的HLOOKUP是按行查找的。接下来以5位同学成绩表为…

路径规划算法:基于吉萨金字塔建造优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于吉萨金字塔建造优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于吉萨金字塔建造优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍…

pytorch—实现各种注意力

1.什么是Attention 所谓Attention机制&#xff0c;便是聚焦于局部信息的机制&#xff0c;比如图像中的某一个图像区域。随着任务的变化&#xff0c;注意力区域往往会发生变化。 面对上面这样的一张图&#xff0c;如果你只是从整体来看&#xff0c;只看到了很多人头&#xff0c…

JAVA ORM Bee 2.1.6 更简单,更易用;一行代码,即可完成一个表的 Sharding 分片配置

在一个工程里&#xff0c;同时使用 Mongodb 和 MySQL, 可以吗&#xff1f; 不但可以&#xff0c;还可以使用一套 Dao 的代码。 Java ORM Bee 不但支持 JDBC 类型的数据库&#xff0c;还支持 Mongodb, 也支持 Android, 鸿蒙. 最新功能介绍: V2.1.6 (2023・父亲节版) 1. 添加…

软件设计模式与体系结构-软件体系-调用-返回风格软件体系结构

目录 软件体系结构概述概述 一、调用-返回风格软件体系结构概念代码主程序-子程序软件体系结构自顶向下的设计方法的问题结构化设计的优缺点面向对象体系结构面向对象设计的优缺点主程序-子程序与面向对象体系结构相似差异 课程作业 软件体系结构概述 调用-返回风格软件体系结…

为什么现在原生家庭的问题这么严重?

匿名用户 191 人赞同了该回答 换一个玄学的角度来看这个问题&#xff0c;之前看b站&#xff0c;有一个up主说&#xff0c;中国有历史记载的人口数一直都很稳定&#xff0c;7-8千万到1亿左右&#xff0c;明朝2亿&#xff0c;清朝到民国算是增长比较多的&#xff0c;有4亿&#x…

内网隧道代理技术(十一)之公网资产扫描-代理池配置

公网资产扫描-代理池配置 代理池介绍 代理池的意思就是拥有多个代理可以随意切换IP的东西,每次用户的请求通过代理池,每个请求包的IP地址是不同的,那么代理池一般有几种用法呢? 购买代理池,购买的东西会自动切换IP,简单又方便(大力推荐)有些工具可以支持文本代理的方…

SpringMVC跨域写入Cookie

前后端分离的项目&#xff0c;SpringMVCTomcat(SpringBoot)&#xff0c;前端Vueaxios。 不建议后端去写入Cookie&#xff0c;一般都是在前端写入Cookie&#xff0c;如果后端使用&#xff1a;CrossOrigin(origins "http://localhost", allowCredentials "true…

unity物理系统

物理引擎即描述真实世界中物理现象的算法&#xff0c;如刚体物理&#xff0c;软体物理和流体物理&#xff0c;unity本身支持的主要为刚体物理&#xff0c;我们也可以自己编写一些其它的模拟效果。 unity内置Nvidia开发的Physx引擎&#xff08;3D&#xff09;和一个开源引擎Box…

【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)

当我们的Zabbix自动注册Ansible自动部署在一起时&#xff0c;会碰出什么样的火花&#xff0c;答案就是可以实现执行ansible的一条命令&#xff0c;监控任意一台或多台主机。 目录 一、配置好自动注册规则 二、编写Ansible playbook 三、运行Ansible&#xff0c;查看监控效果…

从零开始 Spring Boot 64:Hibernate 标识符

从零开始 Spring Boot 64&#xff1a;Hibernate 标识符 图源&#xff1a;简书 (jianshu.com) Hibernate 中的实体&#xff0c;由标识符&#xff08;Identitifier&#xff09;确定了其实体实例的唯一性&#xff0c;这对应于表中的主键。 Id 对于单一属性作为标识符的情况&…

Web3与AI:数字时代安全隐私交易的未来

AI&#xff0b;web3&#xff1d;下一个热门赛道&#xff1f; 在数字时代的浪潮中&#xff0c;Web3和人工智能&#xff08;AI&#xff09;成为了两个备受关注的前沿技术。Web3代表着下一代互联网&#xff0c;强调去中心化、透明和用户控制的特点。而人工智能作为一种智能化的技…

【LeetCode】503. 下一个更大元素 II

503. 下一个更大元素 II&#xff08;中等&#xff09; 方法&#xff1a;单调栈 「 对于找最近一个比当前值大/小」的问题&#xff0c;都可以使用单调栈来解决。栈可以很好的保存原始位置&#xff0c;最近影射栈顶。题目要求更大&#xff0c;因此更大即解–出栈&#xff0c;更小…

【leetcode】15.三数之和(python+转为两数之和+去重)

class Solution(object):def threeSum(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""# 思路&#xff1a;转为两数之和# for循环遍历先固定一个数字a&#xff0c;寻找另外两个数字之和-a&#xff08;双指针&#xff09;# 难点…

【高并发内存池】

&#x1f389;项目&#xff1a;高并发内存池 博主主页&#xff1a;桑榆非晚ᴷ 博主能力有限&#xff0c;如果有出错的地方希望大家不吝赐教 给自己打气&#xff1a;成功没有快车道&#xff0c;幸福没有高速路。所有的成功&#xff0c;都来自不倦地努力和奔跑&#xff0c;所有…

自动化测试工具——Fitnesse

1 介绍 是一个完全集成的独立wiki和验收测试框架。 1.1、协作工具 由于FitNesse是一个wiki web服务器&#xff0c;它的入门和学习曲线非常低&#xff0c;这使得它成为一个优秀的工具&#xff0c;可以与业务涉众进行协作。 1.2、测试工具 FitNesse中创建的wiki页面作为测试…

地球万物皆可计算!星图地球智脑引擎重磅发布

人类文明的每一次阶跃&#xff0c;都起源于计算。 1800多年前&#xff0c;在清脆的珠算声中&#xff0c;算盘拨出人类最古老的计算程序&#xff0c;带来农耕文明的繁盛&#xff1b;200多年前&#xff0c;在齿轮的转动间&#xff0c;机械计算机勾勒出第一次工业革命的袅袅蒸汽&…

Leetcode:167. 两数之和 II - 输入有序数组(2023.7.8 每日一题C++)

目录 167. 两数之和 II - 输入有序数组 题目描述&#xff1a; 实现代码与解析&#xff1a; 暴力&#xff08;超时&#xff09; 双指针 原理思路&#xff1a; 二分 原理思路&#xff1a; 167. 两数之和 II - 输入有序数组 题目描述&#xff1a; 给你一个下标从 1 开始的…