两点天上来,爱情一线牵——Global Timing Debugger

2024-03-18 21:32

本文主要是介绍两点天上来,爱情一线牵——Global Timing Debugger,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

7464f767e221b4dd9918639b1a30d2cd.gif

今天我们来介绍一下时序分析的小工具——Global Timing Debugger(简称GTD)。 它是Innovus/ Encounter中分析Data Path的工具, 和Clock Tree Debugger有众多相似的地方。

顾名思义, Global Timing Debugger就是用来debug timing。对于一些新人来说, 可能看懂和分析timing report是一件很困难的事, 而GTD它最大的好处就是将timing report里面的内容结合Innovus GUI, 以图形化的形式表现出来, 这样就很方便于我们去Debug timing path上问题。经常有人问我, Innovus/Encounter中如何去Highlight一条Timing Path之类的问题, 相信看完这篇文章, 大家一定会了解怎么去做这些事情了。

让我们进入正题, 我们通过打开Timing下面的Debug Timing子菜单来打开GTD

0c51e6defb7a84a905577c90d5cf5367.jpeg

然后会出现如下窗口, 使用GTD前, 需要有一个machine readable格式的timing report文件, 该文件可以通过report_timing -machine_readable或者timeDesign -timingDebugReport命令得到。如果已经产生过该文件, 就把Generate前面的勾去掉。

cc1aa7cb0e4cb7c1cc78ae802ce53e90.jpeg

Check Type:可以选择setup或者hold分析。

Append to Current Report:可以将当前timing分析结果添加在之前分析结果之后, 以不同颜色区分显示

a95088bf9fc6b67680e092e10112f47d.jpeg

Path Category File: 指定Path category文件的目录,这个后面会介绍到Path category的作用。

单击OK以后, 进入GTD正式的主界面, 整个GTD界面分为Path Histogram(路径统计图)、 Category Summary(分类汇总)、 Path Category(路径分类)、 Path Analysis(路径分析)、 Path List(具体路径)、 Preference(设置)、 Timing Path Analyzer(路径分析器), 分别对应这下图中的数字编号, 下面我们来一一介绍一下这些模块。

8d6ed25b7c946e31b45fe6a5c55f9a60.jpeg

Path Histogram

c94c0a1d2b50ef7fc75fcf8c34a7ce50.jpeg

这个就是一个总体的路径柱状统计图, 很简单, 纵坐标是Path数量, 横坐标是对应的slack值, 绿色柱条代表Slack为正, 红色柱条代表Slack为负。

Category Summary

e96d6ce7e48eb843407e8797d8951688.jpeg

该模块会显示每种Category的具体内容, 包括Pass, Fail的timing path数量, 以及WNS和TNS, 是GTD里很重要的一个概念。默认只显示All的category, 我们可以自定义category的组成, 单击Category Summary右上方的Category, 如下图所示:

c37e3bf7358d1d4397eefcb9bbf9011d.jpeg

我们可以Save和Load已有的Category文件,当然也可以自己创建一个,如下图所示:

bd80e0181759d66354afdc01dbc71cc1.jpeg

我们可以将具体某种或者多个共同特性的path归化到某个category中, 可以选择的特性有以下几种:这些概念大家都很清楚吧,不过多介绍了

92029be732308e95190e4e07cbb4db5e.jpeg

比如我们可以将以某个instance的pin为终点, 并且slack值小于0的path设成一个category, 如下图所示: Add Sub-ConditionAdd Condition分别控制添加OR和AND条件

98f7910197ff3a8bf16530226b93862a.jpeg

创建完以后我们就可以在GTD上看到这个category了

8fadb57bd2cf345d55c40c9b4b3a6496.jpeg

我们可以看到,在我们创建的的test1这个category中, 有32条path符合我们要求, 另外剩下的99条就被归类到uncategorized中。

我们也可以在已有的category中创建下属的category, 在Master category name中填写现有的category就行, 比如:我们希望在前面test1的category中找出经过TIE_semantic_slot0_fp_madd/FE_OCPC849_C2_partial1_56_这个instance的path, 就可以这样填写:

9710570afe4b00225d487aea1c42cfd7.jpeg

然后, 在GUI上, 你可以看到原来的test1 category下又会有一个新的category test1_sub

df4dcc3d0b8ebeb09fb240b65215b5c7.jpeg

Path Category

这个表上面已经介绍过, 里面显示了所有Path Category的信息。这边Correction一栏需要介绍一下, 这是一个我们自己对此类category预估的slack值修正, 可以通过右键“Set Category Slack Correction”来设置。

044fcc3a9ca7c7a42e2e2216d3840ef5.jpeg

比如原来test1这组category的WNS, TNS情况如下

1acb6ae4406b7496dda5d09301b2f71d.jpeg

如果设置了0.011的slack修正值, test1的WNS, TNS和Failing Path都会修正成原来slack加上0.011以后的值, 鼠标长时间停留在该组category上, 就会看到修正前后的timing情况

3dbf231a1b29701997beab0a61d1d80b.jpeg

Path Analysis

介绍完了Path Category, GTD里面还支持基本类型的Path Analysis, 单击GTD右上角Analysis选项, 现在我们Innovus/ Encounter支持的Path分析类型有以下几种

403755ab8efccf2bdbc8f0e7ff5d0aa3.jpeg

Path Group Analysis:按照基本Path Group分析, 包括reg2reg, in2reg, reg2out, in2out。

比如我们在前面说创建的test1 category中再细分出reg2reg的分析类型, 那可以先在Master category name中填入test1, 分析类型选择basic path group

9486ebe9a3e4a10669fd62223658863b.jpeg

这样, 在GTD上就会细分出test1  category子集中的reg2reg path类型,

cb804a7dff4731a526eb49f85b07294c.jpeg

Clock Analysis:按照Launch和Capture clock的组合来划分,默认会划分两个category:

1.    起点和终点都来自一个clock的Path

2.    起点和终点来自不同的clock的Path

a815f6cb9610613b24febc23ae468f22.jpeg

创建以后,GTD上如下图所示:

b6b0868b0ff638fbbd01c3f1281f46e5.jpeg

当然, 我们也可以考虑clock的Edge, 以及View和Mode来划分得更加细, 如下图所示

30e8494b0b820874271aff7fc2a018fc.jpeg

Hierarchical Floorplan: 按照Hierarchical层次结构来划分category, 可选的hierarchical项分为以下六种:Port, Hinst, Macro, Black Box, Std Cell, InstGroup

竖轴代表起点, 横轴代表终点, 比如我们想查看起点是Macro, 终点是在Hinst里的path, 就可以选择Macro=>Hinst这一栏.

f52dc8a2752079906f9d641e63fec809.jpeg

GTD上就会显示所有符合该类型的category, 如下图所示:

492ffc52cb300341730eb6b263a8e4bb.jpeg

Views Analysis: 按照analysis view来划分category, 这个很简单, 不过多介绍了

3af6e947bfa5a2271e256e2b34f9c491.jpeg

Bottleneck Analysis: 按照需要的max slack值来划分,这个也比较简单,不过多介绍了

10a32be9919f728d9611489cc846d4f6.jpeg

DRV Analysis:按照DRV violation的类型来划分,

31ca481657c00d59a0d96ae38cc4f827.jpeg

Path List

前面说到在Innovus/Encounter中如何Highlight一条timing path? 这一栏就解决了我们的问题。

我们可以选择需要Highlight的path, 并且选择对应的颜色(默认是黄色), 对应的在GUI上就会把该条timing path highlight出来。如下图所示:

59bee555dec0b605e30efa767594af1d.jpeg

be834f3c4a8bc6694aecd88b21f3ceec.jpeg

Timing Path Analyzer

那如何去分析这条Path呢?接下来,我们需要用到GTD里面的另一个分析具体Timing Path的小工具——Timing Path Analyzer

选中该条Timing Path,右键选择“Show Timing Path Analyzer”

8845cde35f5be3fca82fa2d715ebcedb.jpeg

进入Timing Path Analyzer界面:

ac9a4e633cfdfeb68e19132c045b7692.jpeg

Timing Path Analyzer总体上就是将Innovus/Encounter的timing report图形化。按照上面图片的数字, 我将它分为以下几个板块(对应图上具体数字):

第一部分是基本的timing path信息,包括path类型,analysis view,Slack等等信息

第二部分其实就是一个图形化计算slack的显示, 上面一条直线代表Data Arrival Time, 下面一条代表Data Require Time

第三部分是具体每个section内容, Data Path, Launch Clock Path和Capture Clock Path就是三种path上的具体组成,分别对应着timing report。

下面的这一条timing bar会显示所有cell和net的delay占的比例。鼠标长时间停留会显示该段delay的具体情况

10e428c1586d8a706a566a2e41e40212.jpeg

Hierarchy View:按层次显示了每个hInst占它上一级层次的Delay分布比例

709e34cbc007f4b5ea071334f3243b04.jpeg

Path SDC:列出和这条timing path相关联的sdc语句

4c81a8f69e4cae4a41f2559806cacdfb.jpeg

Timing Interpretation:显示出该条timing path中可能出现问题的地方,比如fanout过大, wire length太长等等, 用红色高亮表示。

3b12a5e08fcefbfd2548a437561b3b1e.jpeg

Schematics:显示该条path的schematic电路图

d350cc02f163a75405ebc4981b8fcbd4.jpeg

Timing Debug Preferences

最后介绍一下GTD的一些设置参数吧,说实话,这个设置界面不好找,在File目录下面,而且在Timing Path Analyzer中也没有保留。

21c5ecbbd08993a25890ec15427263d5.jpeg

设置界面主要分为以下五块内容,General的设置比较繁琐,其他四栏只是一些基本的颜色设置。

781d89ebbdf51f841337bf0febb5f96a.jpeg

General:

前面数字那些参数都是控制GTD上Path Histogram上的参数, 包括横坐标、纵坐标的数值、 间距等, 不一一介绍了, 作用不是很大, 取默认的就行。

DisableCommon Clock Delay Elements:Timing Path Analyzer中的data delay不显示launch and capture clock的common部分

Highlight Clock Path withData Path: 把clock path也highlight出来,默认只高亮data path

红色直线代表Launch clock path,绿色直线代表特定的那段capture clock path

76169412daf68de4b076e4f48e3ee414.jpeg

Exclude CPPR from Skew: 计算skew时不考虑CPPR

Appear Only In One Category: 在一个category中一条path只出现一次

Auto Resize in histogram: GTD中hide path category时自动隐藏Path histogram

Not Zoom In Delay Element:Timing Path Analyzer中选中cell或者net时,Innovus GUI不自动放大选中的东西

Select Delay Element With Connections: Timing Path Analyzer中选中cell或者net时,Innovus GUI上自动选择与它有连接性的东西

Overwrite Existing Group: 覆盖现有的path category group

Append to Current Highlight:Highlight Path时不清除原来已经highlight过的path

Highlight Path:Innovus GUI上highlight path的方式

Flightline:

0ecd166a20cb2a222c94801bb48609b4.jpeg

Wire segment:

f628abc6488784d48a5473976ffb4ccb.jpeg

Whole Net:

813653a16fc7cab37981d5b6ceb3dec2.jpeg

Merge Path By: 把一些path按照对应要求merge, 可以选择按照StartPoint、 EndPoint、 StartClock和EndClock, 默认就是EndPoint。

剩余几个窗口都只是设置GTD上颜色的选项,平时一般不用修改,选择默认的就行

Color:最基本的颜色设置

291613cbd529243b75d0e77c69cbd897.jpeg

Bottleneck Analysis:  控制某个cell的颜色, 如果在5~10条的violation path中都有它, 就mark成黄色, 10~15条就mark成橘黄色, 以此类推

2d04fe6d798e5336d313966f08ebad18.jpeg

Cell Coloring: 控制基本cell类型的颜色

335611e624dace7d6c05e39b5969e8c5.jpeg

Highlight Path: 控制不同path category的颜色

ea68bb8e339e42c02fedab29c4506e92.jpeg

aa451c3ef84551295a900afac04d2ddc.png

Global Timing Debugger就介绍到这里了,很小的一个工具,但是对于初学timing分析的用户,还是有一定用处的。

b513ce6962bed93e08ea4690d37b0e0a.jpeg

往期回顾

静态时序分析STA合集一

静态时序分析STA合集二

时序基本概念介绍<sdc合集>

数字后端基本概念合集(一)

数字后端基本概念合集(二)

数字后端基本概念合集(三)

Low Power概念介绍合集

数字后端dbGet使用方法合集

号外,数字后端交流群招人啦

IC圈的世界杯 | 论芯片设计的胜利十一人

知否?知否?Block PD应该提交哪些数据?

Timing ECO手修攻略

数字后端面试100问(2019全新版)

数字后端面试100问(校招版)

简历请戳邮箱:taozhang3260@163.com

觉得有用的话,给我点个好看吧f541faa1fb16173a0088adb10d6d4382.gif

这篇关于两点天上来,爱情一线牵——Global Timing Debugger的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/823713

相关文章

Debugging Lua Project created in Cocos Code IDE creates “Waiting for debugger to connect” in Win-7

转自 I Installed Cocos Code IDE and created a new Lua Project. When Debugging the Project(F11) the game window pops up and gives me the message waiting for debugger to connect and then freezes. Also a

关于OceanBase MySQL 模式中全局索引 global index 的常见问题

在OceanBase的问答区和开源社区钉钉群聊中,时常会有关于全局索引 global index的诸多提问,因此,借这篇博客,针对其中一些普遍出现的问题进行简要的解答。 什么是 global index ? 由于 MySQL 不具备 global index 的概念,因此这一问题会经常被社区版用户提及。就在前几天,就要人询问下面这个语法的意义。 create table part_tes

C/C++两点坐标求距离以及C++保留两位小数输出,秒了

目录 1. 前言 2. 正文 2.1 问题 2.2 解决办法 2.2.1 思路 2.2.2 代码实现 3. 备注 1. 前言 依旧是带来一个练手的题目,目的就一个,方法千千万,通向终点的方式有很多种,没有谁与谁,我们都是为了成为更好的自己。 2. 正文 2.1 问题 题目描述: 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。 输入格式:

【go语言计算两个经纬度距离】根据经纬度计算两点之间距离

一、需求分析: 输入两个经纬度,计算它们之间的距离 lat1,lng1 := 32.060255,118.796877lat2,lng2 := 39.904211,116.407395 二、计算公式 //C = sin(LatA*Pi/180)*sin(LatB*Pi/180) + cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)

$GLOBALS与global区别 变量销毁机制

代码一: <?php$var1 = 1;function test1(){global $var1; #等价于 $var1 = &$GLOBALS['var1']; 这里的$var1跟外面的$var1是不同的指针,但指向同样的数据unset($var1); #当你unset一个引用,只是断开了变量名和变量内容之间的绑定,这并不意味着变量内容被销毁了.echo $var1; #P

【matlab】global的用法

>> help globalglobal - Declare global variables 声明全局变量This MATLAB function defines X, Y, and Z as global in scope. %此函数定义X,Y,Z为全局global X Y Zglobal 的参考页另请参阅 clear, isglobal, who名为 global 的其他函数mbc/Gl

《父母爱情》:找结婚对象,别只看有房有车有颜,这4个特点更重要!

点击上方△@腾阳 关注 转载请联系授权 你好,我是腾阳。 最近,我重温了电视剧《父母爱情》,不禁被剧中人物的情感纠葛和生活琐事深深吸引。 在当今社会,许多人在选择结婚对象时,往往只关注房子、车子、颜值,似乎这些成了衡量一个人是否适合结婚的首要标准。 然而,《父母爱情》给了我们深刻的启示:在选择伴侣时,我们更应该关注那些能够支撑起长久婚姻的关键特质。 近年来,随着社会竞争

android waiting for debugger

在eclipse中进行调试时经常出现下面这样的提示 Application XXX is waiting for the debugger to attach 但是一般情况下,过了一会之后会进入调试状态 但是最近两天进行调试的时候模拟器上九一直停留在上面这个提示对话框,一直不能进入调试状态 在按照网上说的在dos命令行中进行 adb kill-server adb start-serv

NLP-2015:Luong NMT模型【Attention类型:Global Attention、Local Attention(实践中很少用)】

《原始论文:Effective Approaches to Attention-based Neural Machine Translation》 在实际应用中,全局注意力机制比局部注意力机制有着更广泛的应用,因为局部注意力机制需要预测一个位置向量 p t p_t pt​,而这个位置向量的预测并不是非常准确的,会影响对齐向量的准确率。同时,在处理不是很长的源端句子时,相比于全局注意力并没有减少

已知弧度和半径,如何确定两点之间的距离?

如果已知弧度(通常表示为 θ)和半径(表示为 r),可以使用以下几何关系来确定圆弧上的两点之间的实际线性距离。 圆弧的长度(即两点之间的距离)可以通过以下公式计算: 弧长=r×θ 其中: θ 是以弧度为单位的角度(不是度数)。r 是圆的半径。结果是圆弧的长度,即两点沿着圆的路径的实际距离。 弧度和度数之间的转换关系是: 1 弧度=180/π​  度 如果角度是以度数给出的