当前位置: 首页 > news >正文

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

相关阅读

静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm=1001.2014.3001.5482


        set_ideal_network命令可以将当前设计中的一组端口或引脚标记为理想网络源(设置端口或引脚对象的ideal_network_source属性为true),且在一定情况下,理想属性会沿着组合逻辑进行传播。不要使用set_ideal_net设置理想线网,它已经被set_ideal_network命令替代。如果想要移除理想网络,使用remove_ideal_network命令。

        本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。set_ideal_network命令的BNF范式(有关BNF范式,可以参考以往文章)为:

set_ideal_networkobject_list[-dont_care_placement][-no_propagate]//注:该命令的选项和参数顺序任意

指定理想网络源

        指定一个对象列表,包含端口对象、线网对象或叶单元的引脚对象(不可以是层次单元的引脚),如果有多于一个对象,需要使用引号或大括号包围。

        如果列表中包含线网对象,所有驱动该线网的端口/引脚将被标记为理想网络源,且必须使用-no_propagate选项。

指定不考虑布局

        -dont_care_placement选项指定理想网络中的单元在布局过程中不会被考虑,而随机分配位置,理想网络中的线网视为未连接。默认情况下,理想网络在布局时优先级最低。

指定不传播

        -no_propagate选项指定理想属性不会跨组合逻辑传播,但仍然可以跨层次结构传播。默认情况下,理想属性会跨组合逻辑传播,直到时序逻辑为止。

理想属性传播规则

        从理想网络源开始,理想属性的传播规则如下:

组合逻辑单元被标记为理想:

        1、当它的所有输入引脚要么是理想的,要么连接到常量线网(注意:case analysis属性不会被视为常量)。

引脚被标记为理想:

        1、如果它是set_ideal_network命令指定的引脚。

        2、如果它是驱动引脚,且它所属的单元是理想的。

        3、如果它是负载引脚,且驱动它的线网是理想的。

线网被标记为理想:

        1、所有驱动它的引脚都是理想的。

理想网络的影响

        1、所有理想网络中的单元和线网都会被设置dont_touch属性,防止它们在优化过程中被修改。

        2、理想网络源所属的单元(如有)会被设置size_only属性,这样可以确保理想网络源不会在综合过程中被优化掉(注意:该设置优先级高于set_size_only命令的设置)。

        3、理想网络中的线网不会受到DRC约束,即max_capacitance、max_fanout和max_transition等约束。

        4、理想网络中的线网和单元的延迟和转换时间默认为0,可以通过set_ideal_latency命令和set_ideal_transition命令人为指定。

简单使用

        下面以图1为例说明set_ideal_network命令的使用。

图1 简单的例子

        首先使用create_clock命令以clk端口为源对象创建一个周期为10的时钟。 

create_clock -period 10 [get_port clk]

        接着使用set_input_delay命令在输入端口a、b、c上添加输入延迟,参考时钟为clk,此时经过端口a的时序报告如图2所示(注意,该时序报告使用了-input_pins选项来显示输入引脚)。 

set_input_delay 0.5 {a b c} -clock [get_clock clk]

图2 建立时间时序报告

        然后使用set_ideal_network命令设置端口a为理想网络源,可以使用report_ideal_network命令报告所有的理想网络源,如图3所示(使用get_attribute ideal_network_source命令也可以确认一个对象是否是理想网络源)。

set_ideal_network [get_port a]

图3 理想网络源报告

        根据理想属性的传播规则,线网a变成了理想线网,可以使用report_ideal_network -net命令进行确认,如图4所示(使用report_net或get_attribute ideal_net命令也可以确认一个对象是否是理想线网)。

图4 理想线网报告

        此时经过端口a的时序报告如图5所示,其中唯一的不同是线网a的延迟变成了0。  

图5 建立时间时序报告

        需要注意的是,此时只有端口a、线网a和引脚u1/A被标记为理想,但理想属性不会穿过单元u1,因为其另一个输入引脚不是理想的。

        下面接着使用set_ideal_network命令设置端口b为理想网络源,如图6所示。

set_ideal_network [get_port b]

图6 理想网络源报告

        此时经过端口a的时序报告如图7所示,其中两个线网和一个单元的延迟为0。

图7 建立时间时序报告

        此时被标记为理想的有:端口a、端口b、线网a、线网b、单元u1、单元u1的两个输入引脚、线网and_out、单元u2的输入引脚A,为了简略,这里不进行验证。

        最后,set_ideal_network命令将单元u2的输出引脚Y设置为理想网络源,如图8所示。

set_ideal_network [get_pin u2/Y]

图8 理想网络源报告

        根据理想属性的传播规则,u2此时不是理想单元,所以不管是引脚A还是引脚B到引脚Y的延迟都不是0,此时经过端口a的时序报告如图9所示。

图9 建立时间时序报告

        但是由于此时单元u2的输出引脚Y传播,线网logic_out变成了理想线网,而理想线网的电容为0,这也会间接影响u2的单元延迟,图10所示为report_delay_calculation命令的结果。

图10 单元延迟计算

相关文章:

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

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 set_ideal_network命令可以将当前设计中的一组端口或引脚标记为理想网络源(设置端口或引脚对象的ideal_network_source属性为true)&#…...

【学习方法】技术开发者的提问智慧:如何高效获得解答?

技术开发者的提问智慧:如何高效获得解答? 在技术开发过程中,每个人都会遇到无法解决的问题。此时,我们通常会向团队、社区或论坛求助。然而,为什么有些人的问题能迅速得到解答,而有些人的问题却石沉大海&a…...

C++:入门详解(关于C与C++基本差别)

目录 一.C的第一个程序 二.命名空间(namespace) 1.命名空间的定义与使用: (1)命名空间里可以定义变量,函数,结构体等多种类型 (2)命名空间调用(&#xf…...

服务器上的nginx因漏洞扫描需要升级

前言 最近客户联系说nginx存在安全漏洞 F5 Nginx 安全漏洞(CVE-2024-7347) F5Nginx是美国F5公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。F5 Nginx存在安全漏洞,该漏洞源于可能允许攻击者使用特制的…...

1688商品列表商品详情API接口全面解析

1688作为中国领先的B2B电子商务平台,汇聚了海量的商品资源,为商家和采购商提供了丰富的交易机会。为了更方便地获取和利用这些商品信息,1688平台提供了商品列表API接口,允许第三方开发者通过编程方式获取平台上的商品列表数据。本…...

【爬虫】开篇词

一、网络爬虫概述 二、网络爬虫的应用场景 三、爬虫的痛点 四、需要掌握哪些技术? 在这个信息爆炸的时代,如何高效地获取和处理海量数据成为一项核心技能。无论是数据分析、商业情报、学术研究,还是人工智能训练,网络爬虫&…...

如何在SpringBoot中灵活使用异步事件?

在现代的应用开发中,事件驱动的架构越来越受到欢迎。当我们在使用SpringBoot时,了解如何实现异步事件变得尤为重要。通过事件机制,我们能够在系统中实现松耦合的组件,让不同模块之间能够有效沟通,而无需直接依赖。本文…...

S19文件格式详解:汽车ECU软件升级中的核心镜像格式

文章目录 引言一、S19文件格式的起源与概述二、S19文件的核心结构三、S19在汽车ECU升级中的应用场景四、S19与其他格式的对比五、S19文件实例解析六、工具链支持与安全考量七、未来趋势与挑战结语引言 在汽车电子控制单元(ECU)的软件升级过程中,S19文件(也称为Motorola S-…...

git安装(windows)+vscode配置

安装git for windows在使用 Git 之前,建议设置全局的用户名称和电子邮件地址,这样每次提交代码时就可以自动关联您的身份信息。设置一次后,您无需每次都输入这些信息,Git 将自动使用您配置的全局用户信息。如果需要针对特定项目使…...

Python性能优化面试题及参考答案

目录 解释字典与列表在查找操作中的时间复杂度差异,如何利用哈希表特性提升性能? 为什么在只读场景下使用元组(tuple)比列表(list)更高效? 如何用 collections.deque 优化频繁的队列插入 / 删除操作? defaultdict 相比普通字典在哪些场景下能减少冗余代码并提升效率…...

【十四】Golang 接口

💢欢迎来到张胤尘的开源技术站 💥开源如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 接口接口定义接口初始化接口嵌套空接口存储任意类…...

ngx_openssl_create_conf

ngx_openssl_create_conf 声明在 src\event\ngx_event_openssl.c static void *ngx_openssl_create_conf(ngx_cycle_t *cycle); 定义在 src\event\ngx_event_openssl.c static void * ngx_openssl_create_conf(ngx_cycle_t *cycle) {ngx_openssl_conf_t *oscf;oscf ngx_…...

54-WLAN 无线局域网配置方案-三层

一、网络拓扑说明 本 WLAN 网络由交换机(LSW1)、无线控制器(AC1)、无线接入点(AP1\2)以及无线客户端(STA1)组成。 用途VLANAC100AP200业务300 二、设备配置 二、设备配置 &#x…...

JVM 类加载原理之双亲委派机制(JDK8版本)

对 Java 程序的运行过程而言,类的加载依赖类加载器完成,而在 Java 默认的类加载器又分为启动类加载器、扩展类加载器和应用程序类加载器三种,但是一个类通常仅仅需要被加载一次即可,双亲委派机制即规定各个类该被何种类加载器加载…...

Mysql快速学习——《一》: Mysql的基础架构

了解mysql的基础架构, 理解大概的实现思想, 更有利与我们知之所以然, 是我们学习mysql起来思路更清晰, 效率更高. 思维导图: mysql 基础架构 mysql基础架构.png 1. 连接器 Mysql作为服务器,一个客户端的Sql连接过来就需要分配一个线程进行处理,这个线程…...

【华为OD机试真题29.9¥】(E卷,100分) - 运维日志排序(Java Python JS C++ C )

最新华为OD机试 题目描述 [运维工程师]采集到某产品线网运行一天产生的日志n条,现需根据日志时间先后顺序对日志进行排序,日志时间格式为H:M:S.N。 H表示小时(0~23)M表示分钟(0~59)S表示秒(0~59)N表示毫秒(0~999) 时间可能并没有补全,也就…...

rust编程实战:实现3d粒子渲染wasm

源码 纯js实现 fps: wasm实现 通过对比可以看出来 wasm 实现的计算比纯js刷新相对稳定。...

本地部署Navidrome个人云音乐平台随时随地畅听本地音乐文件

文章目录 前言1. 安装Docker2. 创建并启动Navidrome容器3. 公网远程访问本地Navidrome3.1 内网穿透工具安装3.2 创建远程连接公网地址3.3 使用固定公网地址远程访问 前言 今天我要给大家安利一个超酷的私有化音乐神器——Navidrome!它不仅让你随时随地畅享本地音乐…...

Unity自定义区域UI滑动事件

自定义区域UI滑动事件 介绍制作1.创建一个Image2.创建脚本 总结 介绍 一提到滑动事件联想到有太多的插件了比如EastTouchBundle,今天想单纯通过UI去做一个滑动事件而不是基于Box2d或者Box去做滑动事件。 制作 1.创建一个Image 2.创建脚本 using UnityEngine; us…...

Redis7——进阶篇(五)

前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...