数字后端教程之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…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
深入理解 React 样式方案
React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…...
Ubuntu 安装 Mysql 数据库
首先更新apt-get工具,执行命令如下: apt-get upgrade安装Mysql,执行如下命令: apt-get install mysql-server 开启Mysql 服务,执行命令如下: service mysql start并确认是否成功开启mysql,执行命令如下&am…...
ubuntu系统 | docker+dify+ollama+deepseek搭建本地应用
1、docker 介绍与安装 docker安装:1、Ubuntu系统安装docker_ubuntu docker run-CSDN博客 docker介绍及镜像源配置:2、ubuntu系统docker介绍及镜像源和仓库配置-CSDN博客 docker常用命令:3、ubuntu系统docker常用命令-CSDN博客 docker compose安装:4、docker compose-CS…...
python3GUI--基于PyQt5+DeepSort+YOLOv8智能人员入侵检测系统(详细图文介绍)
文章目录 一.前言二.技术介绍1.PyQt52.DeepSort3.卡尔曼滤波4.YOLOv85.SQLite36.多线程7.入侵人员检测8.ROI区域 三.核心功能1.登录注册1.登录2.注册 2.主界面1.主界面简介2.数据输入3.参数配置4.告警配置5.操作控制台6.核心内容显示区域7.检…...
