首页 > 其他分享 >ic基础|时序篇06:输入约束set_input_delay与输出约束set_output_delay详解

ic基础|时序篇06:输入约束set_input_delay与输出约束set_output_delay详解

时间:2024-03-16 20:29:58浏览次数:26  
标签:触发器 set 路径 约束 delay ns 延迟

大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是已经还准备入行,看过之后都会有有一些收获,如果看完后喜欢的话就请关注我吧~谢谢~

对ic前端设计工程师来说,对时序分析还是需要有一定程度的了解,毕竟芯片设计的各个流程的了解越多,就越有利于职业发展,而且我当时在求职时,也被面试官问到过这类问题,遗憾的是当时的我没有回答上来,不过亡羊补牢,为时未晚,现在就让我们来了解一下时序分析中对输入和输出路径的约束。

一、建立时间和保持时间

我们在定义输入延迟和输出延迟时,需要定义最大和最小延迟,这两个延迟实际上是对建立时间和保持时间的约束。

这是因为建立时间检查的是从发射触发器时钟的第一个有效沿到捕获触发器时钟的下一个有效沿,并且建立时间检查的是从发射触发器到捕获触发器之间的最长路径是否满足建立时间, 所以应该用最大延迟进行约束。

而保持时间检查的是从发射触发器的一个时钟有效沿到捕获触发器的相同时钟沿。保持时间检查需要确保一个触发器输出值在变化时不会传递到一个触发器,并且在捕获触发器有机会捕获它原来的值之前,不会覆盖掉它的的输出值,所以适用于最小延迟进行约束。

二、输入路径延迟约束

输入路径约束约束的是上游芯片触发器到设计芯片的输入端口之间的延迟。

当我们在给定了外部触发器的Tclk2q(外部发射触发器的时钟端CK到输出端Q的延迟),以及Tc1(外部组合逻辑之间的延迟)后,EDA工具会自动约束和优化设计芯片内部的触发器类型,组合逻辑等等,以确保能够满足时序约束要求。
在这里插入图片描述
基于上图举例:

若UFF0的Tclk2q的最大延迟和最小延迟分别为1.1ns和0.8ns;

组合逻辑延迟Tc1的最大延迟和最小延迟分别为5.6ns和2.2ns;

于是有clka到inp1的最大延迟为 1.1+5.6=6.7ns

于是有clka到inp1的最小延迟为 0.9+2.2=3ns

我们再加上时钟周期为15ns,于是有以下约束:


creat_clock -period 15 -waveform {5, 12} [get_ports CLKA]
set_input_delay -clock CLKA -max 6.7 [get_ports INP1]
set_input_delay -clock CLKA -min 3 [get_ports INP1]

由于建立时间用最大延迟进行约束,且检查的是到下一个时钟沿,于是我们内部设计的建立时间加上时延需要满足:

			T - Tmax_delay = 15 - 6.7 = 8.3

				Tsetup + Tcomb < 8.3ns

而保持时间用最小延迟进行约束,且检查的是同一个时钟沿,于是我们内部设计的保持时间加上延时需要满足:

  				 Tmin_delay = 3 ns

     			Thold + Tcomb > 3 ns

数据可变化的区间如下图所示,输入延迟是对应CLKA的上升沿指定的:

在这里插入图片描述

三、输出路径延迟约束

输出路径约束约束的是设计芯片的输出端口到下游芯片触发器之间的延迟。

类似输入延迟,我们需要在给定了外部触发器的建立时间,保持时间以及路径延迟后,EDA工具会自动约束和优化设计芯片内部的触发器类型,组合逻辑等等,以确保能够满足时序约束要求。
在这里插入图片描述

同样基于上图举例:

假设外部触发器UFF1的建立时间为0.4ns,保持时间为0.2ns;

外部路径的最大组合逻辑延时为7ns,最小为0ns;

因此有最大路径延迟:Tc2_max+Tsetup = 7 + 0.4 =7.4ns

最小路径延迟:Tc2_min-Thold = 0 - 0.2 =-0.2ns

假设时钟CLKQ周期为20ns,因此有以下的输出延时约束:

creat_clock -period 20 -waveform {0 15} [get_ports CLKQ]
set_output_delay -clock CLKQ -min -0.2 [get_ports OUTB]
set_output_delay -clock CLKQ -max 7.4 [get_ports OUTB]

于是,先考虑最大延时,我们内部设计的Tclk2q加上Tcomb需要满足:

     		 T - Tmax_delay = 20 - 7.4 = 12.6ns

         		Tclk2q+Tcomb    < 12.6 ns

再考虑最小延时,我们内部设计的Tclk2q加上Tcomb需要满足:

                Tclk2q+Tcomb    > 0.2ns

指定输出路径延迟下,数据可变化的区间如下图所示:
在这里插入图片描述

四、总结

可见,输入延迟约束和输出延迟约束的实质,实际上是根据外部已经选定好的器件和路径延时等参数,对内部器件和路径延时等参数进行优化的过程。

如果你喜欢这篇文章的话,请关注我的公众号-熊熊的ic车间,里面还有ic设计和ic验证的学习资料和书籍等着你呢~欢迎您的关注!

标签:触发器,set,路径,约束,delay,ns,延迟
From: https://blog.csdn.net/demayiya/article/details/136768939

相关文章

  • 【Java】List, Set, Queue, Map 区别?
    目录List,Set,Queue,Map区别?Collection和CollectionsListArrayList和Array区别?ArrayList与LinkedList区别?ArrayList能添加null吗?ArrayList插入和删除时间复杂度?LinkedList插入和删除时间复杂度?LinkedList为什么不能实现RandomAccess接口?SetComparabl......
  • 前端React篇之React setState 调用的原理、React setState 调用之后发生了什么?是同步
    目录ReactsetState调用的原理ReactsetState调用之后发生了什么?是同步还是异步?ReactsetState调用之后发生了什么?setState是同步还是异步的ReactsetState调用的原理在React中,setState方法是用于更新组件状态的重要方法。当setState被调用时,React会对组件进......
  • [算法学习笔记] 差分约束
    Description一个差分约束系统是这样的。给定一组包含\(m\)个不等式,有\(n\)个不等式形如:\[\begin{cases}x_{c_1}-x_{c'_1}\leqy_1\\x_{c_2}-x_{c'_2}\leqy_2\\\cdots\\x_{c_m}-x_{c'_m}\leqy_m\end{cases}\]求任意一组可行解。Solution观察这个式子:\(x_{c1}-......
  • [maven] maven settings.xml/pom.xml之repositories/pluginRepositories元素
    0序repositories针对项目本身的【JAR依赖】,通过repositories进行自定义配置。pluginRepositories针对的是maven命令需要的【插件依赖】地址(比如clean、install都是maven的插件),通过pluginRepositories进行自定义配置。如果只配置了repositories,则:打包时,默认的【插件依赖】......
  • java 高效递归查询树 find_in_set 处理递归树
    建表语句DROPTABLEIFEXISTS`sys_dept`;CREATETABLE`sys_dept`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'部门id',`parent_id`bigint(20)DEFAULT'0'COMMENT'父部门id',`ancestors`varchar(256)DEFAULT''......
  • set/multiset容器
    set/multiset容器头文件:#include<set>1.set基本概念所有元素都会在插入时自动被排序set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set不允许容器中有重复的元素multiset允许容器中有重复的元素2.set构造和赋值构造:set<T>st;//默......
  • Preview pipeline: Display_Out SetupTargetBuffer
    camx/src/core/hal/camxhaldevice.cppCamxResultHALDevice::ProcessCaptureRequest(Camera3CaptureRequest*pRequest){result=GetCHIAppCallbacks()->chi_override_process_request(reinterpret_cast<constcamera3_device*>(&m_c......
  • 【C++进阶】C++关联式容器map和set用法详解
    map和set用法详解一,关联式容器二,键值对pair三,set1.set的用法2.multiset的用法四,map1.键值对pair的介绍2.map用法3.multimap用法五,总结上一节我们讲解了二叉搜索树,在讲解之前我们先来讲一下set和map,因为set和map的底层是AVL树和红黑树,而AVL树和红黑树又是一种二......
  • Write failed: Broken pipe > Couldn‘t read packet: Connection reset by peer SFTP
    如果你链接服务器的时候出现下面的提示:Writefailed:BrokenpipeCouldn’treadpacket:Connectionresetbypeer这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root,权限是750或者755。......
  • MogDB openGauss数据完整性约束简介
    MogDB/openGauss数据完整性约束简介本文出处:https://www.modb.pro/db/124910创建基本表的同时,还可以指定表中数据完整性约束,例如在创建warehouse基本表时,通过分析可以得到如下结论:不同仓库必须有不同的w_id,且w_id不能为NULL。仓库必须有具体的名称,不能为NULL。仓库......