静态时序分析: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_load
    value 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命令的设置规则较为复杂,需要熟悉线网的线网负载线网负载总量引脚负载总量、负载总量与端口的线网负载引脚负载这几个概念之间的区别与联系。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA毕业设计129—基于Java+Springboot+thymeleaf的物业管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootthymeleaf的物业管理系统(源代码数据库)129 一、系统介绍 本项目前后端分离,本系统分为管理员、小区管理员、用户三种角色 1、用户: 登…

基于Pytorch的猫狗图片分类【深度学习CNN】

猫狗分类来源于Kaggle上的一个入门竞赛——Dogs vs Cats。为了加深对CNN的理解,基于Pytorch复现了LeNet,AlexNet,ResNet等经典CNN模型,源代码放在GitHub上,地址传送点击此处。项目大纲如下: 文章目录 一、问题描述二、数据集处理…

【GPTs分享】GPTs分享之Write For Me

Write For Me 是一个专门定制的GPT版本,旨在为用户提供高质量的文本内容创作服务。它适用于各种写作需求,从商业计划、学术文章到创意故事等。下面是从简介、主要功能、使用案例、优点和局限性几个方面对Write For Me 的详细介绍。 简介 Write For Me …

MySQL-主从复制

目录 1. 主从复制概述 1.1 如何提升数据库并发能力 1.2 主从复制的作用 2. 主从复制的原理 2.1 原理剖析 三个线程 复制三步骤 复制的问题 2.2 复制的基本原则 3. 一主一从架构搭建 3.1 准备工作 3.2 主机配置文件 3.3 从机配置文件 3.4 主机:建立账户…

每日五道java面试题之spring篇(六)

目录: 第一题 ApplicationContext通常的实现是什么?第二题 什么是Spring的依赖注入?第三题 依赖注入的基本原则第四题 依赖注入有什么优势?第五题 有哪些不同类型的依赖注入实现方式? 第一题 ApplicationContext通常的…

【hashmap】【将排序之后的字符串作为哈希表的键】【获取 HashMap 中所有值的集合】Leetcode 49 字母异位词分组

【hashmap】【将排序之后的字符串作为哈希表的键】【获取 HashMap 中所有值的集合】Leetcode 49 字母异位词分组 解法1 将排序之后的字符串作为哈希表的键解法2 在解法一的基础上加入了getOrDefault ---------------🎈🎈题目链接🎈&#x1f3…

groovy:XmlParser 读 Freeplane.mm文件,生成测试案例.csv文件

Freeplane 是一款基于 Java 的开源软件,继承 Freemind 的思维导图工具软件,它扩展了知识管理功能,在 Freemind 上增加了一些额外的功能,比如数学公式、节点属性面板等。 强大的节点功能,不仅仅节点的种类很多&#xff…

【管理咨询宝藏资料25】某能源集团五年发展战略报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏资料25】某能源集团五年发展战略报告 【关键词】战略规划、五年战略、管理咨询 【文件核心观点】 - LL应以快速做大做强为目标,专注…

CleanMyMac X2024告别硬盘空间不足,让您的Mac电脑极速如新

CleanMyMac X支持多种操作系统版本,包括macOS 10.10(Yosemite)、macOS 10.11(El Capitan)、macOS 10.12(Sierra)、macOS 10.13(High Sierra)、macOS 10.14(Mo…

查看笔记本电池健康状态-windows11

在 Windows 11 中获取详细的电池报告 Windows 11 中内置的 Powerfg 命令行选项来生成电池报告。 在任务栏上选择“搜索”,键入“cmd”,长按(或右键单击)“命令提示符”,然后选择“以管理员身份运行” ->“是”。 …

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

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

Unity(第五部)新手图层和标签的理解

1、标记用于在物体上显示名字,方便开发 2、标签(某一类物体,方便给某一类进行组件脚本编写) 而且有了标签之后,我们在写代码的时候就可以直接通过标签找到一系列我们需要的游戏物体了 Untagged未标记Respawn重生Edi…

力扣随笔之移除元素(简单27)

思路:定义一个指针left,使该指针及该指针左边的数全部都不等于val,定义一个遍历指针i,若nums[i] val,则i自加,若nums[i] ! val,则将left,并将nums[i]的值赋给nums[left]&#xff0c…

YOLO算法改进Backbone系列之:EfficientViT

EfficientViT: Memory Effificient Vision Transformer with Cascaded Group Attention 摘要:视觉transformer由于其高模型能力而取得了巨大的成功。然而,它们卓越的性能伴随着沉重的计算成本,这使得它们不适合实时应用。在这篇论文中&#x…

LeetCode_Java_环形链表(题目+思路+代码)

141.环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位…

图像的压缩感知的MATLAB实现(第3种方案)

前面介绍了两种不同的压缩感知实现: 图像压缩感知的MATLAB实现(OMP) 压缩感知的图像仿真(MATLAB源代码) 上述两种方法还存在着“速度慢、精度低”等不足。 本篇介绍一种新的方法。 压缩感知(Compressed S…

【Django开发】0到1开发美多shop项目:用户登录模块开发。全md文档笔记(附代码 文档)

本系列文章md笔记(已分享)主要讨论django商城项目相关知识。项目利用Django框架开发一套前后端不分离的商城项目(4.0版本)含代码和文档。功能包括前后端不分离,方便SEO。采用Django Jinja2模板引擎 Vue.js实现前后端…

(202402)多智能体MetaGPT入门1:MetaGPT环境配置

文章目录 前言拉取MetaGPT仓库1 仅仅安装最新版2 拉取源码本地安装MetaGPT安装成果全流程展示 尝试简单使用1 本地部署大模型尝试(失败-->成功)2 讯飞星火API调用 前言 感谢datawhale组织开源的多智能体学习内容,飞书文档地址在https://d…

《Docker 简易速速上手小册》第9章 Docker 与持续集成(2024 最新版)

文章目录 9.1 持续集成的基本概念9.1.1 重点基础知识9.1.2 重点案例:Python Web 应用的 CI 流程9.1.3 拓展案例 1:Python 数据分析项目的 CI9.1.4 拓展案例 2:Python 微服务的 CI/CD 9.2 Docker 在 CI/CD 中的应用9.2.1 重点基础知识9.2.2 重…

全志H713/H618方案:调焦电机(相励磁法步进电机)的驱动原理、适配方法

一、篇头 全志H713平台,作为FHD投影的低成本入门方案,其公板上也配齐了许多投影使用的模组,本文即介绍投影仪调焦所用的步进电机,此模组的驱动原理、配制方法、调试方法。因为条件限制,本文采用的是H618香橙派Z3平台&…