数字后端教程之Innovus report_property和get_property使用方法及应用案例
数字IC后端实现Innovus中使用report_property可以报告出各种各样object的属性,主要有cell,net,PG Net,Pin,时钟clock,时序库lib属性,Design属性,timing path,timin arc等属性。
在数字IC后端实现中我们写自动化脚本经常会使用这个命令来获取相关object的各种属性。因此很有必要向大家分享下report_property,get_property以及它们在实际项目中的应用。
数字IC后端笔试面试必备 | 低功耗设计实现十大灵魂拷问

数字后端零基础入门系列 | Innovus零基础LAB学习Day10
report_property和get_property不同之处是它可以获取object对象的所有属性。

数字IC后端实现之Innovus Place跑完density爆涨案例分析
1)报告具体instance的所有属性property
report_property [get_cells u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/U43987]
2)报告具体net的所有attribute
report_property [get_nets u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/FE_OFN148398_n86644 ]
通过report_property我们可以快速知道对应object对象的所有属性,这样我们可以通过get_property来获取object相关属性具体的值。

比如我们可以通过下面的命令来快速获取某条net的driver pin。
innovus 183> get_property [get_nets u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/FE_OFN148398_n86644 ] driver_pins
u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/FE_OFC58904_n86644/ZN
innovus 184> get_object_name [get_property [get_nets u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/FE_OFN148398_n86644 ] driver_pins]
u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/FE_OFC58904_n86644/ZN
PS: 如果获取到的对象是指针,我们还可以通过get_object_name来获取指针对应的object名字。
3)获取pg net所有属性
report_property [get_pg_nets -of_objects u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/U43987]

4)报告lib cell相关属性
report_property [get_lib_cells -of_objects u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/U43987]

比如获取具体instance对应lib cell的pin数量和lib中std_cell_main_rail_name属性。
innovus 207> get_property [get_lib_cells -of_objects CTS_ccl_inv_02172 ] pin_count 2
innovus 211> get_lib_cells -of_objects u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/U43987
tcbn28hpcplusbwp40p140ssg0p81v125c_ccs/AN2D2BWP40P1400xd9e9
innovus 212> get_property [get_lib_cells -of_objects u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/U43987] std_cell_main_rail_name
NA
5)报告具体instance所有timing arc
innovus 216> get_lib_arcs -of_objects [get_lib_cells tcbn28hpcplusbwp40p140ssg0p81v125c_ccs/AN2D2BWP40P140] 0xd9f4
report_property [ get_lib_arcs -of_objects [get_lib_cells tcbn28hpcplusbwp40p140ssg0p81v125c_ccs/AN2D2BWP40P140]]

innovus 223> get_property [get_lib_arcs -of_objects [get_lib_cells
tcbn28hpcplusbwp40p140ssg0p81v125c_ccs/AN2D2BWP40P140]] from_lib_pin
tcbn28hpcplusbwp40p140ssg0p81v125c_ccs/AN2D2BWP40P140/A1
tcbn28hpcplusbwp40p140ssg0p81v125c_ccs/AN2D2BWP40P140/A2
0xda10
innovus 224> get_property [get_lib_arcs -of_objects [get_lib_cells tcbn28hpcplusbwp40p140ssg0p81v125c_ccs/AN2D2BWP40P140]] to_lib_pin
tcbn28hpcplusbwp40p140ssg0p81v125c_ccs/AN2D2BWP40P140/Z tcbn28hpcplusbwp40p140ssg0p81v125c_ccs/AN2D2BWP40P140/Z0xda15
6)报告timing path相关cell,pin属性
innovus 226> **set path [report_timing -to u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/g_cpu_0__u_cpuslv_u_dw_dw_data_buff_reg_0__10_/D -collection ]
0xda17**
innovus 227> foreach_in_collection path1 $path {set points [get_property $path1 timing_points]}
innovus 228> puts $points
0xda1a
下面通过get_property来获取timing path上各个pin。当然我们还可以改装成获取timing path上的所有instance和对应的cell name。
咱们社区低功耗四核A7Top对common clock path做clock shielding就是先抓出这条clock path上的所有pin,然后对每一段clock net设置net attribute完成ndr和shielding的处理。

innovus 230> get_property $points pinpd_a7_0_dwn_clamp_n
u_cortexa7/FE_OFC15517_pd_a7_0_dwn_clamp_n/I u_cortexa7/FE_OFC15517_pd_a7_0_dwn_clamp_n/ZN u_cortexa7/FE_OCPC17521_FE_OFN146884_n/I u_cortexa7/FE_OCPC17521_FE_OFN146884_n/ZN u_cortexa7/FE_OCPC17522_FE_OFN146884_n/I u_cortexa7/FE_OCPC17522_FE_OFN146884_n/ZN u_cortexa7/FE_OCPC17523_FE_OFN146884_n/I u_cortexa7/FE_OCPC17523_FE_OFN146884_n/ZN u_cortexa7/FE_OCPC17529_FE_OFN114_FE_DBTN0_pd_a7_0_dwn_clamp_n/I u_cortexa7/FE_OCPC17529_FE_OFN114_FE_DBTN0_pd_a7_0_dwn_clamp_n/ZN u_cortexa7/FE_OCPC17530_FE_OFN114_FE_DBTN0_pd_a7_0_dwn_clamp_n/I u_cortexa7/FE_OCPC17530_FE_OFN114_FE_DBTN0_pd_a7_0_dwn_clamp_n/ZN u_cortexa7/FE_OCPC17531_FE_OFN114_FE_DBTN0_pd_a7_0_dwn_clamp_n/I u_cortexa7/FE_OCPC17531_FE_OFN114_FE_DBTN0_pd_a7_0_dwn_clamp_n/ZN u_cortexa7/FE_OCPC17532_FE_OFN114_FE_DBTN0_pd_a7_0_dwn_clamp_n/I u_cortexa7/FE_OCPC17532_FE_OFN114_FE_DBTN0_pd_a7_0_dwn_clamp_n/ZN u_cortexa7/FE_OFC39_pd_a7_0_dwn_clamp_n/I u_cortexa7/FE_OFC39_pd_a7_0_dwn_clamp_n/ZN u_cortexa7/FE_OFC13540_FE_OCPN156551/I u_cortexa7/FE_OFC13540_FE_OCPN156551/Z u_cortexa7/FE_OCPC17888_FE_OFN158805_n/I u_cortexa7/FE_OCPC17888_FE_OFN158805_n/ZN u_cortexa7/FE_OCPC18349_FE_OFN161153_n/I u_cortexa7/FE_OCPC18349_FE_OFN161153_n/ZN u_cortexa7/FE_OCPC18350_FE_OFN161153_n/I u_cortexa7/FE_OCPC18350_FE_OFN161153_n/Z u_cortexa7/snps_CPU0__CPU02MP_LOW_snps_biu_dw_data_o_10__UPF_ISO/ISO u_cortexa7/snps_CPU0__CPU02MP_LOW_snps_biu_dw_data_o_10__UPF_ISO/Z u_cortexa7/FE_OCPC97807_biu_cpu0_dw_data_10/I u_cortexa7/FE_OCPC97807_biu_cpu0_dw_data_10/Z u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/g_cpu_0__u_cpuslv_u_dw_dw_data_buff_reg_0__10_/D
foreach_in_collection path1 $path {set attributes [report_property $path1 ]}
下面我们在innovus中报告前面那条timing path的setup时序,看看setup是否和通过get_property获取到的值一致。结果表明完全一样。


report_timing -to u_cortexa7/u_cortexa7l2/u_cortexa7l2noram/u_ca7scu/g_cpu_0__u_cpuslv_u_dw_dw_data_buff_reg_0__10_/D
典型案例1:
抓取特定timing path的逻辑深度。这个可以用来快速判断逻辑关键路径和物理关键路径是否一致!
proc report_logic_depth {timing_path} { set total_logic_depth [get_property $timing_path num_cell_arcs] set bufinv 0 foreach_in_collection tp [get_property [get_property $timing_path timing_points] pin] { if { [get_property $tp object_type]=="pin" && [sizeof_collection [filter_collection [get_cells -of_object $tp] "is_buffer==true||is_inverter==true"]]} { incr bufinv }} return [list $total_logic_depth [expr $bufinv/2]]}
像咱们社区cortexa7core后端训练营项目中这条timing path,我们使用上述脚本快速获取data path的逻辑深度和buffer,inverter数量。通过输出结果我们就可以知道当前这条timing path是有大问题的!
Output:Total logic depth of path: 21
Count of buf/inv in path: 9


典型案例2:
这个案例使用get_property,get_arcs等命令来获取某个view下某条net的delay情况。而且我们还可以稍作改进修改成抓取design中net delay大于特定数值的net list。
proc get_arc_delay {netName viewName} {set net [ get_nets -hier $netName]foreach_in_collection net_coll $net {set netObj [get_object_name $net_coll]puts ""puts "########################################"puts "Delay parameters for net $netObj "set drv [ get_object_name [ get_property [get_nets $netObj ] driver_pins ] ]set drv1 [ get_property [get_nets $netObj ] driver_pins ]set load [ get_property [get_nets $netObj ] load_pins ]set load_col [ sizeof_collection $load ]set drv_col [ sizeof_collection $drv1 ]
if { $load_col >= 1 && $drv_col >=1 } {foreach_in_collection lPin $load {set name [ get_object_name $lPin ]set netArcCollection [get_arcs -from $drv -to $name]
foreach_in_collection arc $netArcCollection {set del_max_rise [get_property $arc delay_max_rise -view $viewName]set del_max_fall [get_property $arc delay_max_fall -view $viewName]set del_min_rise [get_property $arc delay_min_rise -view $viewName]set del_min_fall [get_property $arc delay_min_fall -view $viewName]
puts "########################################"puts "Arc from $drv to $name:Delay_max_rise: $del_max_rise Delay_max_fall: $del_max_fall Delay_min_rise: $del_min_rise Delay_min_fall: $del_min_fall" } } }}}
相关文章:
数字后端教程之Innovus report_property和get_property使用方法及应用案例
数字IC后端实现Innovus中使用report_property可以报告出各种各样object的属性,主要有cell,net,PG Net,Pin,时钟clock,时序库lib属性,Design属性,timing path,timin arc等…...
JS中console对象内部提供调试方法
console.log() console.log() 是最常用的输出方法,用于将信息输出到浏览器控制台,通常用于普通的调试信息。 用途: 打印普通的消息、变量、对象等。 let user { name: "Alice", age: 25 }; console.log(user); // 输出对象 console.log(&…...
python设计模式
一、单例模式 学习目标:掌握单例模式的作用和写法 可以明显的看出他两是独立的对象,而且是两个完全不同的id 当我们希望是s1和s2是同一个对象,这就是我们所说的单例模式。 最后获得的都是同一个对象,这样就可以避免去重复的创建…...
机器学习 笔记
特征值提取 字典 from sklearn.extaction import DictVectorizer mDictVectorizer(sparseFalse)#sparse是否转换成三元组形式 data[], #传入字典数据 data1model.fit_transform(data) #使用API 英文特征值提取 from sklearn.feature_extraction.text import CountVe…...
江协科技之STM32驱动1.3寸/0.96寸/0.91寸OLED显示屏介绍
目录 编码介绍 ASCII码 汉字编码 取模软件 江协科技OLED库适用器件 SSD1306简介 模块引脚更改 0.91寸OLED适配 模块驱动必备知识 驱动代码 OLED_Font.h OLED.h OLED.c 编码介绍 ASCII码 ASCII码是一套数字到字符的映射标准,它规定了用什么数字表示…...
Spring Security 认证流程,长话简说
一、代码先行 1、设计模式 SpringSecurity 采用的是 责任链 的设计模式,是一堆过滤器链的组合,它有一条很长的过滤器链。 不过我们不需要去仔细了解每一个过滤器的含义和用法,只需要搞定以下几个问题即可:怎么登录、怎么校验账户、认证失败…...
74HC245
74HC245:典型的CMOS型缓冲门电路 在这里用于增加电压...
Java的static关键字和静态代码块
一、当static关键字用来修饰属性时,所修饰的属性就是类属性,而不是对象属性,所以可以做到全类共享。 不能用对象名去调用,只能用类名调用。 二、静态方法只能调用同为静态的方法和属性,非静态方法什么都可以调用。 三…...
Apex 批处理将 account owner 转移,同时实现关联的 opp 和 case 转移
实现和 mass transfer account 一样的功能: global class AccountBatchScript implements Database.Batchable<sObject>,Schedulable{String query;Id oldOwnerId xxxxxxxxxxxx;Id newOwnerId yyyyyyyyyyyy;List<Id> AccountIds new List<Id>(…...
Python | Leetcode Python题解之第557题反转字符串中的单词III
题目: 题解: class Solution:def reverseWords(self, s: str) -> str:stack, res, s [], "", s " "for i in s:stack.append(i)if i " ":while(stack):res stack.pop()return res[1:]...
Spring设计模式
设计模式 是一种软件开发中的解决方案,设计原则。目的是使代码具有扩展性,可维护性,可读性,如: 单例模式(Singleton Pattern) Spring IoC 容器默认会将 Bean 创建为单例,保证一个类…...
信号保存和信号处理
目录 信号保存中重要的概念 内核中信号的保存 对sigset_t操作的函数 对block,pendding,handler三张表的操作 sigpromask 编辑 sigpending 是否有sighandler函数呢? 案例 信号处理 操作系统是如何运行的? 硬件中断 …...
网站小程序app怎么查有没有备案?
网站小程序app怎么查有没有备案?只需要官方一个网址就可以,工信部备案查询官网地址有且只有一个,百度搜索 "ICP备案查询" 找到官方gov.cn网站即可查询! 注:网站小程序app备案查询,可通过输入单位…...
如何利用宏和VBA来提高文档编辑排版速度?
一个真实的文档修改需求 为什么我会去研究VBA呢?主要原因是今年在一个项目里写了太多的文档。文档中很多操作其实都是机械的、重复的,但是偏偏又很耗时。举个例子,当时有这么一个修改需求,修改文档中所有“输入输出需求表格中”添…...
Kafka - 启用安全通信和认证机制_SSL + SASL
文章目录 官方资料概述制作kakfa证书1.1 openssl 生成CA1.2 生成server端秘钥对以及证书仓库1.3 CA 签名证书1.4 服务端秘钥库导入签名证书以及CA根证书1.5 生成服务端信任库并导入CA根数据1.6 生成客户端信任库并导入CA根证书 2 配置zookeeper SASL认证2.1 编写zk_server_jass…...
c++基础32输入和输出
输入和输出 C风格(使用printf和scanf)输出字符输入字符 C风格(使用cin和cout)输出字符输入字符 注意事项 在C和C中,字符的输入和输出可以通过多种方式实现,包括使用标准输入输出库函数如 printf和 scanf&…...
[C++] 函数详解
前言 今天zty带来的是函数的详解,搞了4个小时,大家给个赞呗,zty还要上学,发作品会少一点 先 赞 后 看 养 成 习 惯 先 赞 后 看 养 成 习 惯 先 赞 后 看 养 成 习 惯 演示用编译器及其…...
AMD CPU下pytorch 多GPU运行卡死和死锁解决
参考链接 https://medium.com/amitparekh/solving-ddp-deadlock-with-multiple-gpus-and-amd-cpus-442186632034 简要说明 AMD的IOMMU和NVIDIA的NCCL不兼容问题导致AMD的IOMMU是BIOS 级组件,它基本上充当将虚拟地址映射到 GPU 上的物理地址的接口,它的全部目的是让 CPU 和 G…...
Swift 开发教程系列 - 第12章:协议与协议扩展
协议(Protocol)是 Swift 的一种重要特性,它定义了实现特定功能的方法、属性或其他要求。通过协议,可以将行为定义从具体实现中分离,使代码更具可读性和扩展性。Swift 的协议支持协议扩展,这一特性允许我们为…...
麒麟V10,arm64,离线安装docker和docker-compose
文章目录 一、下载1.1 docker1.2 docker-compose1.3 docker.service 二、安装三、验证安装成功3.1 docker3.2 docker-compose 需要在离线环境的系统了里面安装docker。目前国产化主推的是麒麟os和鲲鹏的cpu,这块的教程还比较少,记录一下。 # cat /etc/ky…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
