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

2024-02-25 17:04

本文主要是介绍静态时序分析: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,这符合预期结果。该选项主要用于避免某些情况下引脚负载被重复指定两次。 

写在最后

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

这篇关于静态时序分析:SDC约束命令set_load详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/746120

相关文章

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1