innovus中path group 的策略和应用(下)

news2024/11/15 8:38:44

BPG(basic path group)和PG(path group)的异同

INVS默认使用了BPG,但是基于SDC理论下PG(path group)也是天然存在,两者在数据库里边有各自存在的方式,也可以共融共生中,通过其中的异同,看到INVS的一些有趣的处理。
在这里插入图片描述

BPG (basic path group)timeDesign报告简析

如果用户没有在SDC里边使用任何的group_path命令,INVS默认就会是使用BGP进行分组(PS:这点和S家的有区别)。
用户在导入数据库后,通过timeDesign就可以看到类似下面的分组关系:
img

【图1】timeDesign summary
这个分组表达了BGP的基本理念,但是注意,这里的数量有些许差异:
 (default – reg2reg – reg2cgate) - all = (125024+787+479) - 125882 = 408

所有BGP的path总量竟然要比all 要多!
这个是因为:all 是基于EP的path核算,一个EP点就对应1,如果某个EP有路径展开,譬如: FF1 -> FF0 和 INPUT -> FF0 ,这样在default里边就会再出现以FF0为EP的path。这里称为:EP展开

为了验证这个理论,尝试做一下IO的set_false_path操作,然后再用timeDesign

img

【图2】disable IO timing

img

【图3】timeDesign summary with IO timing disable

这里的default=0说明所有的EP都没有二次展开,可以明确的看到:

reg2reg + reg2cgate = 125024 + 787 = all = 125811

PS:无论用户是否通过group_path调整分组,timeDesign的all的值是不会发生变化的。可以利用这个信息,查看用户EP展开路径的数量:

EP展开路径  = all – [user_group_path_count_sum | BGP_path_count_sum]

BPG和PG(path group)的兼容

虽然INVS拥有自己独创的BGP,但是在兼容传统SDC的大前提下,INVS当然也支持了用户自定义的path group。
通过下图理解BPG和PG的关系:
img

【图4】BPG/PG with INVS DB

可以看到,通过group_path命令定义PG的优先级是大于BPG的,任何时候用户使用了group_path 命令,那么原始的BGP就会被完全替代,(PS:两个系统只能居其一,不能同时存在)。无论用户的group path定义是否完备,都可以让INVS从BPG进入到PG系统:

譬如下例:这里用户只使用了group_path 定义了一个组
img

【图5】timeDesign with user PG

可以看到,由于用户定义的组没有timing path,所以整个系统的path都归集为了default,此时,系统已经切换到PG了。
尽管如此,用户依然可以通过all path数量来评估自己的EP展开问题,这个和BPG是一样的,无论是在那个系统,all的信息是一致的,INVS的底层逻辑其实并没有发生改变。
但是,如果用户定义的分组很多,这个在做place_opt_design的时候,INVS采用了更多的iteration进行收敛,这个和INVS基于BGP EP 的优化方式是类似的不同,只不过分组变多会直接导致iteration变多。也会简介导致时序收敛的问题。
img

【图6】datapath optimization per-HEPG

工具会把所有的HEPG (high effort path group)在这里描述一下TNS/WNS,同时,后续的正常修复也是集中在HEPG组的(如Active Path Group行所示),所以HEPG越多,工具的考虑就会越多。
PS:这里注意,default带了一个*,其实他也是一个high effort组,

report_timing对BPG和 PG 的支持

由于BPG是系统默认的分组方式,INVS把BPG设定为为隐性的(implicit),而把用户使用group_path的分组定义为显性的(explicit)。无论是那个系统,data path optimization的工作方式是没有区别的,甚至在timeDesign的时候也是看不出来区别的。
但是对于report_timing命令系统,INVS处理还是略有不同:

BGP下的report_timing 命令使用

report_timing 后面跟的-group选项,需要制定的是显性组(explicit),如果这里用户使用了BPG的隐性组(implicit),工具返回错误:

img

【图7】BPG下,report_timing不能指定的非default组

那这里问题来了,数据库里的group都去哪里了。

INVS使用了BPG和PG里边都有的一个公共组:default 巧妙的处理了这个问题:

img

【图8】BGP下defaut组的形态

可以看到,在BPG下,所有的path对应于report_timingpath_group都回归到了default。可以视为对隐性组的一个简单管理方法。

但是,这里还有一个点需要探究:

INVS用户都知道,一个timing path里边会有很多属性,如果在BPG下,report_timing借用了default组,那么这个属性何去何从呢?

  • 如果是使用-path_group 指定 default组,这个会返回设计里边所有的timing path
  • 如果用户去query这个某个path的path_group_name属性,这个会立刻现实类似S家的策略:所有的EP都是基于clock domain的,同时你也可以看到S家里边熟悉的异步和clock gating 组,譬如下面的统计结果

image

【图9】BGP按照clock domain进行隐性分组

所以这个时候,用户又可以用上述的path_group进行report_timing 报告了,尽管你在get_path_group得不到上述的组。INVS这里有一次巧妙地利用了implicit的语境。

report_timing -path_group CLK_1

这个可以被是为BPG的隐形福利,这种处理方式较为方便用户在使用BPG的时候查验数据。

PG下的report_timing 命令使用

PG下,由于用户都是使用了SDC标准的group_path命令,这个时候所有定义的组,在data path optimization和report_timing下都是完全统一的,这里就不做过多的赘述了。

BPG对实现人员的启发

INVS的BPG对于multi-clock per FF给出了比较好的解决方法。相较而言,后端工具更善于对单纯的数据进行分析和优化,过于复杂的环境处理的结果,经测试明显会变差不少,并且runtime 和area都变得更差一点。

譬如下面的示例:

img

【图10】设计里的timing path举例

FF0-> FF1/2/3 三条路径都比较critical,直接的感官印象就是到FF1/2/3的timing 很差,如果只是简单的基于FF1/2/3 三个EP分别做组,其实是不利于优化的
因为INVS每一次对HEPG的优化都会把common path和local path推进一次,但是这两类path是会互相牵制的。所以,简单的单分组,并不能很好的解决这类问题。

用户还是需要顺应工具的特点进行约束规划,从而得到自己期望的结果。

BPG和PG的融合使用

BPG符合INVS原生策略。但是由于INVS兼顾了SDC里的group_path的一些设定,所以会对用户的report_timing系统带来一些困惑,知识星球会提供一个具体脚本,使用一个脚本,可以在使用BPG的便利性的同时,也可以在兼顾report_timing报告的使用便利性

【敲黑板划重点】

在这里插入图片描述
BPG可以视为INVS的data path optimization的一个基础起点,在大部分情况下会更好的体现INVS的优势,用户需要理解其中的奥秘,灵活使用/切换BPG和PG系统,找到适合自己设计的方式/流程。

参考资料

Synopsys Design Compiler® User Guide
Cadence Innovus User Guide

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1534519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

100个openharmony开源demo:1.日历

准备用开发者手机写100个开源的demo不知道能不能实现,日拱一卒,期待蜕变。 第一个demo:日历,借鉴了网上的日历算法,自己用arkts写了界面和点击事件,各位可根据此demo写自己的日历选择器等组件。 1.目录结…

【JAVA笔记】IDEA配置本地Maven

文章目录 1 配置本地Maven1.1 Maven下载1.2 Maven安装与配置1.2.1 安装1.2.2 配置1.2.2.1 环境配置1.2.2.2 本地仓库配置 2 IDEA设置本地Maven 1 配置本地Maven 1.1 Maven下载 官网:http://maven.apache.org/下载地址:http://maven.apache.org/downloa…

SinoDB客户端工具dbaccess

类似Oracle的客户端工具sqlplus,Mysql的客户端工具mysql,SinoDB数据库也有自带的命令行客户端工具dbaccess。 dbaccess 识别用户输入,将用户输入的 SQL 语句打包发送给 SinoDB 数据库服务器执行,然后接收服务器的执行结果&#xf…

windows上打开redis服务闪退问题处理

方法1:在windows上面打开redis服务时,弹窗闪退可能是6379端口占用,可以用以下命令查看: netstat -aon | findstr 6379 如果端口被占用可以用这个命令解决: taskkill /f /pid 进程号 方法2: 可以使用…

Java特性之设计模式【装饰器模式】

一、装饰器模式 概述 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装 装饰器模式通过将对象包装在装饰器类中,以…

数据泄露问题怎么解决?迅软DSE加密软件助您守护重要信息

企业信息泄露的危害 企业数据泄露事件不仅给企业带来了经济损失和声誉损害,还可能导致用户个人信息的泄露,引起社会广泛关注。 因此,企业需要采取更加严格的数据保护措施,使用数据加密系统以防范潜在的数据泄露风险。同时&#…

Vue.js前端开发零基础教学(三)

目录 2.6 计算属性 2.7侦听器 2.8 样式绑定 2.8.1 绑定class属性 2.8.2 绑定style属性 2.9 阶段案例——学习计划表 2.6 计算属性 概念:Vue提供了计算属性来描述依赖响应式数据的复杂逻辑。 计算属性可以实时监听数据的变化,返回一个计算…

Premiere模板|200个视频标题文字动画pr字幕模板包

Premiere模板,13个类别200个Pr视频标题字幕文字动画模板mogrt包。 几乎适用于任何场景。粗体标题,标注,未来主义和线条标题,下三分之一,霓虹灯,带数字的标题,倒计时,表格&#xff0c…

智慧商显安卓主板MT8788_联发科MTK平台多媒体广告一体机方案

MT8788高性能智能主板,支持Android 9.0操作系统,支持双屏异显功能;MT8788是基于12nm工艺制程四核A73四核A53架构的八核心CPU,主频高达2.0GHz,拥有超强的通用计算性能。 MT8788主板采用10层二阶超高密度PCB板,集成了4G、百兆以太网、2.4G/5G 双频WiFi、蓝…

C# xaml框架以及Java的ORM介绍

c#有ASP.Net,.NET以及EF Core这几个重要的运行时和框架.分别用于web,应用以及数据库的ORM. 目前跨平台的有Avalonia UI,.Net MAUI以及Uno Platform,至于WPF等本身不是跨平台的,但可以依靠其他库实现跨平台.这里面Avalonia应该是认为bug比较少的. 当然目前最火的跨平台解决方案…

Python使用指定端口进行http请求的例子

使用requests库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class SourcePortAdapter(HTTPAdapter): """"Transport adapter" that allows us to set the source port.""" def __init__(self, port, *args, **kwargs): self.poolm…

Spring Cloud Alibaba微服务从入门到进阶(七)(服务容错-Sentinel)

雪崩效应 我们把基础服务故障,导致上层服务故障,并且这个故障不断放大的过程,成为雪崩效应。 雪崩效应,往往是因为服务没有做好容错造成的。 微服务常见容错方案 仓壁模式 比如让controller有自己独立的线程池,线程池满…

数据结构的概念大合集06(树和二叉树)

概念大合集06 1、树1.1 树的相关定义1.2 树的基本运算1.3 树的基本术语1.3.1 结点的度,树的度1.3.2 分支结点,叶子节点1.3.3 路径,路径长度1.3.4 孩子结点,双亲结点,兄弟结点1.3.5 结点层次,树的高度1.3.6 …

24.两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 …

DELL交换机清空配置S4128T

备份配置 show run | no-more show inventory | no-more show environment | no-more show system brief | no-more -------------- 清除数据 delete startup-config system "sudo -i" //输入密码 rm -rf /config/etc/opt/dell/os10/db_init/startup.xml rm…

基于SpringBoot和Vue的大学生租房系统的设计与实现

今天要和大家聊的是一款今天要和大家聊的是一款基于SpringBoot和Vue的大学生租房系统的设计与实现。 !!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!! 💕💕作者:李同…

【Java11下载、安装、部署指南】

oracle jdk11下载 oracle jdk所有版本归档【archive】下载地址: https://www.oracle.com/java/technologies/downloads/archive/ oracle jdk11下载地址: https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html 配置或修改wi…

【Python + Django】启动简单的文本页面

前言: 为了应付(bushi)毕业论文,总要自己亲手搞一个像模像样的项目出来吧 ~ ~ 希望自己能在新的连载中学到项目搭建的知识,这也算是为自己的测试经历增添光彩吧!!! 希望、希望大家…

MySQL 字段定义时的属性设置

开发的时候第一步就是建表,在创建表的时候,我们需要定义表的字段,每个字段都有一些属性,比如说是否为空,是否允许有默认值,是不是逐渐等。 这些约束字段的属性,可以让字段的值更符合我们的预期&…

③【Docker】Docker部署Nginx

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ ③【Docker】Docker部署Nginx docker拉取nginx…