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

相关阅读

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


        set_load命令用于指定端口(port)或线网(net)的负载电容,该指令的BNF范式(有关BNF范式,可以参考以往文章)为:

set_loadvalue object_list[-min][-max][-pin_load] [-wire_load][-subtract_pin_load]//注:该命令的objects参数一定要放在value参数后  

目录

指定负载值

指定对象列表

简单使用

指定最大、最小条件

对于端口

对于线网

指定引脚、线负载

指定减去引脚负载

移除负载值

写在最后


指定负载值

        指定要设置在端口或引脚的负载值。它的单位必须和工艺库中指定的负载单位一致,例如工艺库中使用了皮法,则该参数的单位也为皮法。

指定对象列表

        指定一个对象列表,包含端口对象或线网对象,如果有多于一个对象,需要使用引号或大括号包围。

简单使用

        以图1所示的电路图为例,首先在输入端口clk定义一个时钟。

create_clock -period 10 [get_port clk]

图1 一个简单的例子

        接着在输入端口d、c,输出端口q上分别定义三个输入延迟,参考时钟为clk。

set_input_delay 0.5 -clock clk [get_port d]
set_input_delay 0.5 -clock clk [get_port c]
set_output_delay 0.5 -clock clk [get_port q]

       使用下面的命令为设计指定线负载模型。

set_wire_load_model -name tsmc13_wl50 -library typical

        下面使用set_load命令在输出端口q指定负载值0.4。

set_load 0.4 [get_port q]

        对于端口上设置的负载值,可以使用report_port -verbose命令查看,如图2所示。

图2 端口负载报告

        可以看到输出端口q的引脚负载(pin load)为0.4,而线网负载(wire load)为0。(从图2中也能看出,端口默认拥有pin load(max)和wire load(max)属性以及默认值0),这两者的差异在后面会说明。

        使用report_net -connections -verbose [get_nets q]命令可以报告线网q相关的信息,如图3所示。

图3 线网q信息报告(最大条件)

        需要注意的是,报告中的min和max应该是显示bug,实际上报告的信息都是最大条件(max)下的,如果需要报告最小条件下的信息,需要添加-min选项。图中的wire capacitance指的是线网负载总量,这是累计了端口和线网的线网负载的结果,图中的pin capacitance指的是引脚负载总量,这是累积了端口和引脚的引脚负载的结果。图中的total capacitance指的是负载总量,是线网负载总量加上引脚负载总量的结果。

指定最大、最小条件

对于端口

        -max选项用于指定负载值为最大条件(建立时间分析)设置,-min选项用于指定负载值为于最小条件(保持时间分析)设置。如果这两个选项都没有指定,负载值只为最大条件设置(就像是指定了-max选项一样,这与很多命令不同),但在最小条件分析时如果没有指定对应的负载值则会使用最大条件的负载值,就好像同时设置了最大、最小条件那样,这与很多其他命令不一样,许多其他命令在这种情况下会直接使用最小条件时的默认值,例如0。

        对于端口而言,-max选项(该选项默认)加-pin_load选项(该选项默认)设置了load属性,-max选项(该选项默认)加-wire_load选项设置了wire_capacitance属性;-min选项加-pin_load选项(该选项默认)设置了min_load属性,-min选项加-wire_load选项设置了min_wire_capacitance属性。

        现在出现了一个问题,report_port命令并不能使用-min选项,如何得知端口的最小条件负载情况呢?这时候就需要使用get_attribute命令直接获得端口上的属性,如下所示。

get_attribute [get_port q] load     //获取输出端口q上的max_pin_load
0.4                                 //这符合预期
get_attribute [get_port q] min_load //获取输出端口q上的min_pin_load
//这也符合预期,我们说了当-min、-max都不指定时,默认只设置最大条件的负载值
Warning: Attribute 'min_load' does not exist on port 'q'. (UID-101)

        使用report_net -connections -verbose -min [get_nets q]命令可以报告线网q相关的最小条件下的信息,如图4所示。

图4 线网q信息报告(最小条件)

         从图4中可以看到,尽管没有设置端口q在最小条件下的负载值,但DC使用了最大条件下的负载值。

        下面使用set_load命令在输出端口q明确指定最小条件的负载值0.6。

set_load 0.6 -min [get_port q]

        此时使用命令get_attribute [get_port q] min_load可以得到结果0.6,而线网q最小条件下的信息报告如图5所示。

图5 线网q信息报告(最小条件)

对于线网

        -max选项用于指定负载值为最大条件(建立时间分析)设置,-min选项用于指定负载值为于最小条件(保持时间分析)设置。如果这两个选项都没有指定,负载值同时为最大条件和最小条件设置(相当于它们同时指定)。如果使用命令时仅指定了-min选项,但此时最大条件情况下的线网负载尚未设置,则命令同时会设置最大条件的线网负载;如果使用命令时仅指定了-max选项,但此时最小条件情况下的线网负载尚未设置,则命令同时会设置最大条件的线网负载。

        对于线网而言,-max选项设置了wire_capacitance_max属性,-min选项设置了wire_capacitance_min属性。

        如下所示的命令指定了线网q在最小条件下的线网负载(对于线网而言,只能使用命令指定线网负载,而不能指定引脚负载(线网的引脚负载总量是累计得到的);对于端口而言,既能使用命令指定线网负载,也能指定引脚负载)。假设此时尚未指定最大条件的线网负载,则结果如图6、图7所示。

set_load 0.1 -min [get_net q]

 图6 线网q信息报告(最小条件)

图7 线网q信息报告(最大条件) 

        可以看到,命令仅仅使用了-min选项,但最大条件依然被设置了(再次强调,这仅限于某一个条件下的线网负载尚未设置时)。另外从图中的线网负载总量可以看出,直接使用set_load指定线网负载会覆盖使用线负载模型得出的线网负载

指定引脚、线负载

        上面说到,端口可以指定引脚负载线网负载,这是由-pin_load和-wire_load选项指定的,当两者都不指定时,默认指定引脚负载;当两者都指定时,负载值同时设置为引脚负载线网负载

        端口上的线网负载会被累加到与端口连接的线网的线网负载总量之中,注意这里在进行端口的线网负载的设置时,“对于端口”小节中红字相关的描述也成立,即如只设置了最大条件下的线网负载,最小条件分析时会使用最大条件下的线网负载

        我们首先使用 reset_design命令复位设计,便于下面的实验。下面使用set_load命令在输出端口q指定引脚负载值0.4,线网负载值0.5,如图8所示。(注意,这里两者都默认只设置了最大条件)

set_load 0.4 -pin_load [get_port q]
set_load 0.5 -wire_load [get_port q]

图8 端口负载报告

        接着我们查看线网q在最大条件和最小条件下的负载信息,如图9、图10所示。

图9 线网q信息报告(最小条件)

 图10 线网q信息报告(最大条件)

        可以看到,尽管我们只设置了端口最大条件下的引脚负载线网负载,即只设置了端口q的load和wire_capacitance属性,最小条件的引脚负载线网负载也被累计进线网q的引脚负载总量线网负载总量了(但注意,此时线网q的wire_capacitance_max和wire_capacitance_min属性尚未设置)。

        使用下面的命令设置线网q在最大条件下的线网负载,如图11、图12所示。

set_load 1 [get_net q]

图11 线网q信息报告(最小条件)

图12 线网q信息报告(最大条件)

        可以看到,最大、最小条件下线网的线网负载都被累计进线网负载总量了,这正如“对于线网” 小节中说的那样,当wire_capacitance_min属性尚未设置时,如果指定了-max选项设置了wire_capacitance_max属性,则wire_capacitance_min属性也会一起被设置。

        -pin_load选项和-wire_load选项只能用于给端口对象指定负载值,这很好理解,因为给线网对象指定的负载值都是指线网负载,这没得选。

指定减去引脚负载

        -subtract_pin_load选项指定了在设置线网的线网延迟值时,该线网延迟值会首先先减去线网上的引脚负载总量。例如使用下面的命令,则线网延迟值1在设置前会被减去引脚负载总0.4,如图12所示。

set_load 1 -subtract_pin_load [get_net q]

图12 线网q信息报告(最大、最小条件) 

        从图中可以看出,线网负载总量为0.5+1-0.4=1.1,这符合预期结果。该选项主要用于避免某些情况下引脚负载被重复指定两次。 

移除负载值

        如果想要移除之前指定的各种负载,需要使用remove_attribute命令,这时需要使用具体的属性名作为参数,这也是为什么本文解释了各选项分别设置了哪些属性。

        下面的命令移除了端口q上的最大条件的引脚负载(这里说是移除属性,实际上laod属性还是会保留,并被设置为0,这与很多其他属性不一样)

remove_attribute [get_port d] load

写在最后

        set_load命令的设置规则较为复杂,需要熟悉线网的线网负载线网负载总量引脚负载总量、负载总量与端口的线网负载引脚负载这几个概念之间的区别与联系。

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

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

相关文章

锂电池SOC估计 | PyTorch实现基于Basisformer模型的锂电池SOC估计

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 PyTorch实现基于Basisformer模型的锂电池SOC估计 锂电池SOC估计,全新【Basisformer】时间序列预测 1.采用自适应监督自监督对比学习方法学习时序特征; 2.通过双向交叉注意力机制计算历史序列和…

计算机网络面经-TCP的拥塞控制

写在前边 前边我们分享了网络分层协议、TCP 三次握手、TCP 四次分手。今天我们继续深入分享一下 TCP 中的拥塞控制。 对于 TCP 的拥塞控制,里边设计到很多细节,平平无奇的羊希望通过这一节能够将这部分内容串通起来,能够让你更深刻的记忆这部分内容。 思维导图 1、什么…

嵌入式学习 Day 23

一. 进程基本概念: 1.进程: 程序:存放在外存中的一段数据组成的文件 进程:是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息(根据CPU占用率排序)…

Java/Python/Go不同开发语言基础数据结构和相关操作总结-GC篇

Java/Python/Go不同开发语言基础数据结构和相关操作总结 1. 常见gc方式1.1 gc判断对象是否存活1.2 引用计数法1.2 标记-清除算法1.3 复制算法1.4 标记-压缩算法1.5 分代收集算法 2. java的gc方式以及垃圾回收器2.1 gc方式2.1 gc回收器2.1.1 Serial收集器2.1.2 ParNew收集器2.1.…

成长优化算法(Growth Optimizer,GO)求解不闭合MD-MTSP(提供MATLAB代码)

一、成长优化算法介绍 成长优化算法(Growth Optimizer,GO)由Qingke Zhang等人于2023年提出,该算法的设计灵感来源于个人在成长过程中的学习和反思机制。学习是个人通过从外部世界获取知识而成长的过程,反思是检查个体…

手写myscrapy(五)

项目地址:https://gitee.com/wyu_001/myscrapy 我们继续完成返回的处理类 MyResponse的实现 先上类图: 主要功能: json() 方法解析返回的json格式内容,转换为 python 的json对象 xpath()方法解析返回的html格式的内…

LabVIEW和Python开发微细车削控制系统

LabVIEW和Python开发微细车削控制系统 为满足现代精密加工的需求,开发了一套基于LabVIEW和Python的微细车削控制系统。该系统通过模块化设计,实现了高精度的加工控制和G代码的自动生成,有效提高了微细车削加工的自动化水平和编程效率。 项目…

微服务-微服务Spring Security OAuth 2实战

1. Spring Authorization Server 是什么 Spring Authorization Server 是一个框架,它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。它建立在 Spring Security 之上,为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产…

区分服务 DiffServ

目录 区分服务 DiffServ 区分服务的基本概念 区分服务 DiffServ 的要点 每跳行为 PHB DiffServ 定义的两种 PHB 区分服务 DiffServ 区分服务的基本概念 由于综合服务 IntServ 和资源预留协议 RSVP 都较复杂,很难在大规模的网络中实现,因此 IET…

挑战杯 基于机器学习与大数据的糖尿病预测

文章目录 1 前言1 课题背景2 数据导入处理3 数据可视化分析4 特征选择4.1 通过相关性进行筛选4.2 多重共线性4.3 RFE(递归特征消除法)4.4 正则化 5 机器学习模型建立与评价5.1 评价方式的选择5.2 模型的建立与评价5.3 模型参数调优5.4 将调参过后的模型重…

vulnhub靶场---->DOUBLETROUBLE: 1

详细思路 知识点1.网段探测2.nmap扫描3.目录扫描4.隐写5.上传木马文件6.awk提权 知识点 图片隐写----->steghide 密码爆破----->stegseek awk提权------>sudo awk BEGIN {system("/bin/bash")}1.网段探测 kali:192.168.0.131 靶机:192.168.0.1…

【小沐学QT】QT学习之Web控件的使用

文章目录 1、简介1.1 Qt简介1.2 Qt下载和安装1.3 Qt快捷键1.4 Qt帮助 2、QtWeb控件2.1 测试代码1(QApplication)2.2 测试代码2(QApplicationQWidget)2.3 测试代码3(QApplicationQMainWindow)2.4 测试代码4&…

Spring事务模板及afterCommit存在的坑

大家好,我是墨哥(隐墨星辰)。今天的内容来源于两个线上问题,主要和大家聊聊为什么支付系统中基本只使用事务模板方法,而不使用声明式事务Transaction注解,以及使用afterCommit()出现连接未按预期释放导致的…

AI赋能Oracle DBA:以自然语言与Oracle数据库互动

DBA AI助手:以自然语言与Oracle数据库互动 0. 引言1. AI赋能Oracle DBA的优势2. AI如何与Oracle数据库交互3. 自然语言查询的一些示例4. 未来展望 0. 引言 传统的Oracle数据库管理 (DBA) 依赖于人工操作,包括编写复杂的SQL语句、分析性能指标和解决各种…

项目解决方案:街道社区视频监控接入、汇聚和联网设计方案

目 录 一、客户需求 二、网络拓扑图 三、方案描述 四、系统配置 1、服务器配置 2、带宽配置 五、方案优势 1. 平台可堆叠使用 2. 支持主流接入协议 4. 多种终端显示 5. 客户端功能强大 6. 一机一档 一、客户需求 1,一个街道有十个社…

计算机设计大赛 深度学习图像风格迁移 - opencv python

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习图像风格迁移 - opencv python 该项目较为新颖,适合作为竞赛课题…

Linux环境基础开发工具使用篇(三) git 与 gdb

一、版本控制器-git 1.简单理解: ①git既是服务端,又是客户端 ②git会记录版本的变化 ③git是一个去中心化的分布式软件 git/gitee 是基于git仓库搭建的网站,让版本管理可视化 2.git 三板斧提交代码 查看安装的git版本 git--version 命令行提交代…

Python读写XML文件的技术指南【第100篇—读写XML文件】

Python读写XML文件的技术指南 在软件开发中,XML(可扩展标记语言)是一种广泛用于数据存储和交换的格式。Python作为一门强大而灵活的编程语言,提供了许多库和工具来处理XML文件。本篇技术博客将介绍如何使用Python读写XML文件&…

FPGA 与 数字电路的关系 - 这篇文章 将 持续 更新 :)

先说几个逻辑:(强调一下在这篇文章 输入路数 只有 1个或2个,输出只有1个,N个输入M个输出以后再说) 看下面的几个图: 图一( 忘了 这是 啥门,不是门吧 :)也就…

笔记本hp6930p安装Android-x86避坑日记

一、序言 农历癸卯年前大扫除,翻出老机hp6930p,闲来无事,便安装Android-x86玩玩,期间多次入坑,随手记之以避坑。 笔记本配置:T9600,4G内存,120G固态160G机械硬盘 二、Android-x86系统简介 官…