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

静态时序分析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_timingobject_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.hqwc.cn/news/512943.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业计算机服务器中了halo勒索病毒如何解密,halo勒索病毒数据恢复流程

随着网络技术的不断发展,企业的生产运营效率得到了极大提升,越来越多的企业开始利用网络开展各项工作业务,企业的网络数据安全问题,成为大家关心的主要话题。近期,云天数据恢复中心接到多家企业的求助,企业…

数据结构中红黑树的概念以及代码

红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它在插入和删除节点时通过一系列的旋转和重新着色操作来保持平衡。红黑树的平衡性质使得它的查找、插入和删除操作的时间复杂度都能保持在 O(log n) 红黑树的定义如下: 每个节点要…

【短时交通流量预测】基于单层BP神经网络

课题名称:基于单层BP神经网络的短时交通流量预测 版本时间:2023-04-27 代码获取方式:QQ:491052175 或者 私聊博主获取 模型简介: 城市交通路网中交通路段上某时刻的交通流量与本路段前几个时段的交通流量有关&…

「爬虫职海录」三镇爬虫

HI,朋友们好 「爬虫职海录」第三期更新啦! 本栏目的内容方向会以爬虫相关的“岗位分析”和“职场访谈”为主,方便大家了解一下当下的市场行情。 本栏目持续更新,暂定收集国内主要城市的爬虫岗位相关招聘信息,有求职…

Python给图片加水印

受到“手动给证件加文字太麻烦”的感触,想用Python来实现给图片加水印,这不方便多了。 这里使用PIL模块: from PIL import Image from PIL import ImageFont from PIL import ImageDrawimg_t Image.open(cat.jpg) img_size_t img_t.size…

《剑指offer》76--删除链表中重复的结点[C++]

目录 题目: 思路: 贴代码: 代码输出 题目: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,最后返回链表头指针。 如: 链表1->…

合泰HT66F2390----定时器中断学习笔记

前言 无需多言 直接开始定时器中断 的学习 通过上次的PWM学习&#xff0c;上次用的是周期型TM定时器模块 这次使用标准型TM定时器模块&#xff08;STM&#xff09; 代码 #include <HT66F2390.h>void Timer0_Init(void){_stm0c0 0b00001000;_stm0c1 0b11000001;_stm…

【论文精读】Mask R-CNN

摘要 基于Faster RCNN&#xff0c;做出如下改变&#xff1a; 添加了用于预测每个感兴趣区域(RoI)上的分割掩码分支&#xff0c;与用于分类和边界框回归的分支并行。mask分支是一个应用于每个RoI的FCN&#xff0c;以像素到像素的方式预测分割掩码&#xff0c;只增加了很小的计…

List类

目录 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers list中还有一些操作&#xff0c;需要用到时大家可参阅list的文档说明。 1.2.6 list的迭代…

一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读!

一本书讲透ChatGPT&#xff0c;实现从理论到实践的跨越&#xff01;大模型技术工程师必读 个人简介前言内容简介作者简介专家推荐读者对象购买链接直播预告参与方式 个人简介 &#x1f3d8;️&#x1f3d8;️个人主页&#xff1a;以山河作礼。 &#x1f396;️&#x1f396;️:…

第八节 龙晰Anolis 8.8 安装 DDE 桌面环境

一、前言 最小化安装的龙晰 Anolis OS 8.8 是不带图形化界面的&#xff0c;只能使用命令行&#xff0c;有些时候需要用到桌面环境&#xff0c;而DDE (Deepin Desktop Enviroment) 就是很好的桌面环境&#xff0c;它是指龙晰 Anolis 所搭载的中国自主桌面环境&#xff0c;用起来…

【SpringBoot教程 01】SpringBoot简介及工程搭建

前言&#xff1a;什么是SpringBoot&#xff1f; SpringBoot是一个开源的Java基础框架&#xff0c;它被设计来简化Spring应用的初始搭建以及开发过程。这个框架利用了“约定优于配置”的理念&#xff0c;提供了一系列大型项目中常用的默认配置&#xff0c;让开发者可以快速启动和…