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

数字后端教程之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 report_property属性
数字后端零基础入门系列 | 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]

report_property使用方法

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 一样的功能&#xff1a; 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

题目&#xff1a; 题解&#xff1a; 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设计模式

设计模式 是一种软件开发中的解决方案&#xff0c;设计原则。目的是使代码具有扩展性&#xff0c;可维护性&#xff0c;可读性&#xff0c;如&#xff1a; 单例模式&#xff08;Singleton Pattern&#xff09; Spring IoC 容器默认会将 Bean 创建为单例&#xff0c;保证一个类…...

信号保存和信号处理

目录 信号保存中重要的概念 内核中信号的保存 对sigset_t操作的函数 对block&#xff0c;pendding&#xff0c;handler三张表的操作 sigpromask ​编辑 sigpending 是否有sighandler函数呢&#xff1f; 案例 信号处理 操作系统是如何运行的&#xff1f; 硬件中断 …...

网站小程序app怎么查有没有备案?

网站小程序app怎么查有没有备案&#xff1f;只需要官方一个网址就可以&#xff0c;工信部备案查询官网地址有且只有一个&#xff0c;百度搜索 "ICP备案查询" 找到官方gov.cn网站即可查询&#xff01; 注&#xff1a;网站小程序app备案查询&#xff0c;可通过输入单位…...

如何利用宏和VBA来提高文档编辑排版速度?

一个真实的文档修改需求 为什么我会去研究VBA呢&#xff1f;主要原因是今年在一个项目里写了太多的文档。文档中很多操作其实都是机械的、重复的&#xff0c;但是偏偏又很耗时。举个例子&#xff0c;当时有这么一个修改需求&#xff0c;修改文档中所有“输入输出需求表格中”添…...

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风格&#xff08;使用printf和scanf&#xff09;输出字符输入字符 C风格&#xff08;使用cin和cout&#xff09;输出字符输入字符 注意事项 在C和C中&#xff0c;字符的输入和输出可以通过多种方式实现&#xff0c;包括使用标准输入输出库函数如 printf和 scanf&…...

[C++] 函数详解

前言 今天zty带来的是函数的详解&#xff0c;搞了4个小时&#xff0c;大家给个赞呗&#xff0c;zty还要上学&#xff0c;发作品会少一点 先 赞 后 看 养 成 习 惯 先 赞 后 看 养 成 习 惯 先 赞 后 看 养 成 习 惯 演示用编译器及其…...

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章:协议与协议扩展

协议&#xff08;Protocol&#xff09;是 Swift 的一种重要特性&#xff0c;它定义了实现特定功能的方法、属性或其他要求。通过协议&#xff0c;可以将行为定义从具体实现中分离&#xff0c;使代码更具可读性和扩展性。Swift 的协议支持协议扩展&#xff0c;这一特性允许我们为…...

麒麟V10,arm64,离线安装docker和docker-compose

文章目录 一、下载1.1 docker1.2 docker-compose1.3 docker.service 二、安装三、验证安装成功3.1 docker3.2 docker-compose 需要在离线环境的系统了里面安装docker。目前国产化主推的是麒麟os和鲲鹏的cpu&#xff0c;这块的教程还比较少&#xff0c;记录一下。 # cat /etc/ky…...

NUXT3学习日记二(样式配置、引入组件库、区分在服务端还是在客户端渲染)

上一章已经给大家分享官网下载的nuxt3了&#xff0c;下面正式进入我所要说的内容吧 一、初始化样式 想必大家从我的git下载下来的nuxt3&#xff0c;能看到nuxt.config.ts这个文件了吧。 这里我们有两种css配置方式 1、css:[~/assets/base.scss] 这种方式不能在scss文件中定义…...

FPGA/Verilog,Quartus环境下if-else语句和case语句RT视图对比/学习记录

基本概念 RTL&#xff08;Register - Transfer - Level&#xff09;视图&#xff1a;是一种硬件描述语言的抽象层次&#xff0c;用于描述数字电路中寄存器之间的数据传输和操作。在这个层次上&#xff0c;可以看到电路的基本结构&#xff0c;如寄存器、组合逻辑、多路复用器等…...

Javascript高级—闭包问题

闭包问题 循环中赋值为引用的问题 for (var i 1; i < 5; i) {setTimeout(function timer() {console.log(i)}, i * 1000) }解决方法有3种 第一种&#xff0c;使用立即执行函数方式 for (var i 1; i < 5; i) {(fuction(j){setTimeout(function timer() {console.log…...

C#入门 017 字段,属性,索引器,常量

字段&#xff0c;属性&#xff0c;索引器&#xff0c;常量都表示数据 字段 什么是字段 字段(field)是一种表示与对象或类型(类与结构体)关联的变量字段是类型的成员&#xff0c;又称“成员变量&#xff0c;写在类体里面与对象关联的字段亦称“实例字段&#xff0c;表示某个对…...

磐石云语音助手拦截介绍

呼叫中心用户实际应用场景下最高会有超过30%的和语音助手&#xff1b;无声主要是进入了语音信箱;如&#xff1a;“听到滴声后留言”&#xff0c;”漏话提醒““发送请按1&#xff0c;重录请按2”以及拨打过程中客户主动拒接产生的”您拨打的用户正忙“&#xff0c;”关机“”停…...

JSP执行过程及其与Servlet执行效率的比较

JSP&#xff08;Java Server Pages&#xff09;和Servlet都是Java Web开发中常用的技术&#xff0c;它们都用于动态生成Web页面。然而&#xff0c;JSP和Servlet在执行过程和效率上存在一些差异。本文将详细探讨JSP的执行过程&#xff0c;并比较JSP与Servlet的执行效率。 一、J…...

open3d

open3d open3d用于 3D 数据处理的现代库。 简介 Open3D 是一个开源库&#xff0c;支持快速开发处理 3D 数据的软件。Open3D 前端公开了一组精心挑选的 C 和 Python 数据结构和算法。后端经过高度优化&#xff0c;并设置为并行化。Open3D 是从零开始开发的&#xff0c;具有一更…...

Vue中优雅的使用Echarts的三种方式

一、原始方法直接使用 1、安装ECharts&#xff1a; npm install echarts --save 2、创建一个Vue公共组件 EChart.vue&#xff1a; <template><div :style"{width: 100%, height: 300px}" ref"chart"></div> </template><scri…...

SpringBoot配置文件/日志

目录 一,SpringBoot配置文件 1,配置文件的格式: 2,properties 3,yml 1,properties与yml的转换 2,读取配置选哪个中的内容 3,单双引号的差异: 4,配置对象: 5,配置集合/配置map 6,yml的优缺点: 二,验证码: 学习目的: 实现样例: 接口定义: 代码总结: 三,日志: 1,概…...

微服务架构面试内容整理-SpringCloud Netflix‌与Spring Cloud Alibaba比较

Spring Cloud Netflix 和 Spring Cloud Alibaba 都是用于构建微服务架构的解决方案,但它们在设计理念、组件和使用场景上存在一些差异。以下是它们的比较: 1. 服务注册与发现 ● Spring Cloud Netflix:使用 Eureka 作为服务注册和发现的组件。Eureka 是基于 REST 的,适合服…...