静态时序分析:SDC约束命令set_disable_timing详解

news2024/9/23 5:33:06

静态时序分析icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12567571.html


目录

指定对象列表

指定源、目的引脚

指定恢复

简单使用

写在最后


        上一章中,我们学习了如何使用set_case_analysis模式分析命令,它通过指定某个端口或引脚为固定值,从而使设计中的一些时序弧失效。本章将学习set_disable_timing命令,它可以用于直接指定失效时序弧,这会导致时序路径的中断,常常用于减少DC分析的复杂度。

        set_case_analysis指令的BNF范式(有关BNF范式,可以参考以往文章)为:

set_disable_timing
    object_list
    [-from from_pin_name -to to_pin_name]
    [-restore]
    //注:该命令的-from选项和-to选项必须同时出现

指定对象列表

        object_list参数指定了对象列表,包括需要删除时序弧的单元、端口或引脚,这个参数是必选的。

指定源、目的引脚

        -from选项和-to选项必须成对出现,它们指定了一个单元需要删除从源引脚到目的引脚这个特定的时序弧,因此如果它们使用了,则对象列表中只能有单元对象。

指定恢复

        -restore选项表示将删除的时序弧恢复,此时指定的其它选项要和指定时序弧失效时的命令一致。

简单使用

        首先我们可以解决静态时序分析:SDC约束命令create_clock详解一文中出现的时序路径混乱问题,原文的图7如本文图1所示,首先在输入端口clk_1和clk_2定义两个时钟。

create_clock -period 10 [get_port clk_1]
create_clock -period 15 [get_port clk_2]

图1 有两个时钟驱动的电路单元 

        对于上面的电路,本意是触发器b_reg和触发器c_reg同时受时钟clk_1或时钟clk_2之一触发,但如果不使用set_case_analysis命令,在使用report_timing命令后会出现时钟clk_2和时钟clk_1之间的时序分析报告,如图2、图3所示,我们真正需要的是图4的时序报告(本文如不加说明,默认时序报告为建立时间报告)。

图2 发射时钟是clk_2,捕获时钟时clk_1

图3 发射时钟是clk_2,捕获时钟时clk_1 

图4 发射时钟是clk_2,捕获时钟是clk_2 

        下面我们使用set_disable_timing命令,直接使得数据选择器U4从输入引脚B到输出引脚Y的时序弧失效,当然你也可以是使输入引脚S0到输出引脚Y的时序弧也失效,但由于输入引脚不会定义始终,因此它可以省略。可以通过report_design命令或report_disable_timing命令查看直接指定失效的时序弧,如图5或图6所示,从图6的Flag栏的u可以看出,此时的失效路径是直接由用户定义的。此时的时序分析结果如图7和图8所示。 

set_disable_timing [get_cell U4] -from B -to Y
set_disable_timing [get_cell U4] -from S0 -to Y //加上这句也可以

图5 失效时序弧报告(一)

图6 失效时序弧报告(二) 

图7 发射时钟和捕获时钟都是clk_2

图8 发射时钟和捕获时钟都是clk_2 

        对于使用set_disable_timing命令,使得数据选择器U4从输入引脚A到输出引脚Y的时序弧失效,与上面是一样的操作和结果。

        在讨论set_case_analysis命令时,我们说到固定值会随着逻辑传播,直到不能将固定值传播下去为止。那set_disable_timing命令是否也会导致失效时序弧沿着逻辑传播?下面来看一个例子,如图9所示。

图9 一个简单的例子 

        首先在输入端口clk定义一个时钟,并对输入端口enable添加输入延迟约束。

create_clock -period 10 [get_port clk]
set_input_delay 0.5 -clock clk [get_port enable]

        此时如果直接使用report_timing命令,则触发器t_reg和触发器data_out_reg以及端口enable和触发器data_out_reg之间的时序路径会正常报告,如图10和图11所示。 

图10 两个触发器间的时序报告

图11 端口和触发器间的时序报告

        下面使用set_disable_timing命令使与门U4从输入引脚B到输出引脚Y的时序弧失效,可以使用report_design命令或report_disable_timing命令查看直接指定失效的时序弧,如图12或图13所示,可以看出,失效时序弧不会沿着逻辑传播。

set_disable_timing [get_cell U4] -from B -to Y

图12 失效时序弧报告(一) 

图13 失效时序弧报告(二) 

        下面我们来看set_disable_timing命令的一个特性:时序路径分割,这与set_case_analysis命令直接使时序路径消失不同,下面来看一个例子。

        由于在图9中,我们只使与门U4从输入引脚B到输出引脚Y的时序弧失效了,而与门U4从输入引脚A到输出引脚Y的时序弧依然保留了,所以t_reg和data_out_reg的时序路径依旧存在,如图14所示。

图10 两个触发器间的时序报告

        但是原本在输入端口enable到触发器data_out_reg之间的时序路径被切断了,此时的时序路径变成了从输入端口enable到与门U4的B引脚(尽管这不是一个常见的时序路径终点,但现在确实如此),如图11所示,而此时与门U4的Y引脚到触发器data_out_reg输入引脚D的时序弧只属于t_reg到data_out_reg的时序路径。

图11 一条奇怪的时序路径 

        如果此时使用下面的命令,再使与门U4从输入引脚A到输出引脚Y的时序弧失效,如图12所示则这把之前的两条时序路径都切断,此时会出现三条时序路径,第一条是从t_reg到与门U4的A引脚,第二条是从输入端口enable到与门U4的B引脚,第三条是从与门U4的Y引脚到触发器data_out_reg,如图13、图14和图15所示,从图中的startpoint和endpoint可以看出时序路径的起点和终点。

set_disable_timing [get_cell U4] -from A -to Y

图12 失效时序弧报告

图13 第一条时序路径

图14 第二条时序路径

 图15 第三条时序路径

        我们可以使用-restore选项移除两个指定的失效时序弧,顺带一提,还可以使用remove_disable_timing命令移除失效时序弧,它们是等价的。

set_disable_timing [get_cell U4] -from A -to Y -restore
set_disable_timing [get_cell U4] -from B -to Y -restore

//下面的命令等价
remove_disable_timing [get_cell U4] -from A -to Y -restore
remove_disable_timing [get_cell U4] -from B -to Y -restore

        如果我们直接指定触发器data_out_reg的时钟引脚CK到数据引脚D的时序弧失效,则针对触发器data_out_reg的建立时间和保持时间检查都不会进行,如图16所示。

图16 建立时间和保持时间不会检查 

写在最后

        set_disable_timing命令能直接指定一条时序弧失效,并中断并分割经过它的时序路径,在实际运用中,使用此命令前需要谨慎,并明确自己在做什么。

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

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

相关文章

国产硅片膜厚检测仪

硅片膜厚检测仪是半导体行业中一种至关重要的设备,用于精确测量硅片上薄膜的厚度。在半导体制造工艺中,薄膜厚度的控制对于保证器件性能和可靠性具有决定性的作用。因此,硅片膜厚检测仪的研发和应用对于推动半导体技术的发展具有重要意义。 一…

登录校验认证

会话技术 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪: 一种维护浏览器状态的方法,服务器需要识别多次请…

Scalable Diffusion Models with Transformers(DiTs)论文阅读 -- 文生视频Sora模型基础结构DiT

nlpcver 忠于理想 ​关注他 106 人赞同了该文章 文章地址:Scalable Diffusion Models with Transformers 简介 文章提出使用Transformers替换扩散模型中U-Net主干网络,分析发现,这种Diffusion Transformers(DiTs&#xff09…

市域社会治理现代化指挥中心项目方案

1.4.1专题分析应用建设要求 1.4.1.1总体要求 系统根据各专题实际业务需求提供详细的指标体系清单,同时应根据指标体系提供设计各专题应用的原型效果图;围绕党建引领、基层治理、城市管理、公共服务、公共安全多方面进行分析展示核心数据,体…

AI跟踪报道第32期-新加坡内哥谈技术-本周AI新闻:超越GPT4的Claude

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

删除网络连接不存在的网络驱动器

目录预览 一、问题描述二、解决方案三、参考链接 一、问题描述 虚拟机之前连接了主机, 二、解决方案 方法一:从文件资源管理器断开 Windows 10 上映射的网络驱动器, 在 Windows 10 上打开文件资源管理器。 从左窗格中单击此 PC 。 在“网络…

Linux系统架构----nginx的访问控制

nginx的访问控制 一、nginx基于授权的访问控制概述 Nginx与Apache一样,可以实现基于用户权限的访问控制,当客户端想要访问相应的网站或者目录时,要求用户输入用户名和密码,才能正常访问配置步骤生成用户密码认证文件 &#xff1…

若依/RuoYi-Vue使用docker-compose部署

系统需求 JDK > 1.8 MySQL > 5.7 Maven > 3.0 Node > 12 Redis > 3 思路 前端服务器 nginx 后端服务器代码打包 java、maven、node 数据库/缓存 mysql、redis 开始 创建目录ruoyi并进入 克隆若依代码 git clone RuoYi-Vue: 🎉 基于Spring…

【数据分享】2013-2022年全国范围逐日SO2栅格数据

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2013-2022年全国范围逐月SO2栅格数据和逐年SO2栅格数据(均可查看之前的文章获悉详情)。 本次我们给大家带来的是2013-2022年全国范围的逐日的SO2栅格数据,原始…

mq基础类设计

消息队列就是把阻塞队列这样的数据结构单独提取成一个程序独立进行部署。——>实现生产者消费者模型。 但是阻塞队列是在一个进程内部进行的; 消息队列是在进程与进程之间进行实现的, 解耦合:就是在分布式系统中,A服务器调用B…

RT-DETR优化改进:特征融合篇 | GELAN(广义高效层聚合网络)结构来自YOLOv9

🚀🚀🚀本文改进:使用GELAN改进架构引入到RT-DETR 🚀🚀🚀RT-DETR改进创新专栏:http://t.csdnimg.cn/vuQTz 🚀🚀🚀学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 🚀🚀🚀RT-DETR模型创新优化,涨点技巧分享,科研小助手; 1.YOLOv9介绍 论…

在用Java写算法的时候如何加快读写速度

对于解决该方法我们一般如下操作,不需要知道为什么,有模板(个人观点) 使用BufferedReader代替Scanner:Scanner类在读取大量输入时性能较差,而BufferedReader具有更高的读取速度。可以使用BufferedReader的r…

JVM的工作流程

目录 1.JVM 简介 2.JVM 执行流程 3. JVM 运行时数据区 3.1 堆(线程共享) 3.3 本地方法栈(线程私有) 3.4 程序计数器(线程私有) 3.5 方法区(线程共享) 4.JVM 类加载 ① 类…

webUI自动化之元素及浏览器操作

一、元素定位方式 1、元素属性定位: 1 element driver.find_element_by_id(self, id)    该类方法已经过时,新的方法如下: element driver.find_element(By.ID, ID 值)        # 用元素的 ID 属性定位element driver.find_eleme…

云打印软件免费版在哪?云打印服务怎么使用?

随着新的一年的到来,很多同学们又开始准备着新一轮的学习冲刺了。在学习的旅途中,打印资料的需求必然伴随着每一个人,但是线下打印店价格贵、打印不方便、没时间去打印等多种因素总是制约着我们。在这种情况下,云打印软件和云打印…

Svg Flow Editor 原生svg流程图编辑器(一)

系列文章 Svg Flow Editor 原生svg流程图编辑器(二) 效果展示 项目概述 svg flow editor 是一款流程图编辑器,提供了一系列流程图交互、编辑所必需的功能,支持前端研发自定义开发各种逻辑编排场景,如流程图、ER 图、…

【论文笔记】Scalable Diffusion Models with State Space Backbone

原文链接:https://arxiv.org/abs/2402.05608 1. 引言 主干网络是扩散模型发展的关键方面,其中基于CNN的U-Net(下采样-跳跃连接-上采样)和基于Transformer的结构(使用自注意力替换采样块)是代表性的例子。…

使用R语言进行聚类分析

一、样本数据描述 城镇居民人均消费支出水平包括食品、衣着、居住、生活用品及服务、通信、文教娱乐、医疗保健和其他用品及服务支出这八项指标来描述。表中列出了2016年我国分地区的城镇居民的人均消费支出的原始数据,数据来源于2017年的《中国统计年鉴》&#xf…

传递函数硬件化

已知一个系统的传递函数,如何进行硬件化呢? 只需要将传递函数离散化,得到差分方程,就可以根据差分方程进行硬件设计。 通过例子说明: 得到差分方程后,其中y(k)/y(k-1)/y(k-2)/u(k-1)/u(k-2)等代表不同周期…

【Spring】Spring状态机

1.什么是状态机 (1). 什么是状态 先来解释什么是“状态”( State )。现实事物是有不同状态的,例如一个自动门,就有 open 和 closed 两种状态。我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有…