心似双丝网,中有千千结——Clock Tree Debugger(一)

2024-03-18 21:32

本文主要是介绍心似双丝网,中有千千结——Clock Tree Debugger(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

239db1ce83bf8fa6177fd5b1a8a9af0e.gif

今天我们来学习一下Innovus中分析clock tree的小工具——CCOPT Clock Tree Debugger,简称CTD

看这名字就知道,这工具是用来Debug clock tree。大家知道,CTS在PR流程中,占据着极其重要的地位,tree build好以后,你的design就完成了一半。通常这是一个需要反复尝试的过程,我们需要根据clock tree现在的状况,去调整各个参数。如果能有一个图形化的工具帮助我们更加形象直观地观察到整个clock tree的状况,那对我们的Debug是非常有帮助的。而这次要介绍的Clock Tree Debugger就是起到这个作用。

话不多说,切入正题,我们可以通过打开GUI上Clock下面的CCOPT Clock Tree Debugger来打开它,

5ee909236aaf99a075b52bed058cf779.jpeg

或者输入命令ctd_win

4c7dc6c47c11640dde4ca2582341a27e.jpeg

Window ID Name代表内部CTD的窗口标记,只是一个记号,CTD默认可以打开六个窗口,大概是起到防止重复的作用吧。

Window Title则可以显性地指定CTD窗口的显示名字。 

Unit Delay Mode在后文会提到。

使用CTD之前,我们必须首先创建clock tree的spec,如果没有创建,CTD会弹出一个warning窗口

ed9ea7cd64e5367f8f6a2c98c4505a78.jpeg

进入到CTD的主界面窗口,整个工具可以分为7个部分:MenuBar(菜单栏),ToolBar(工具栏),Key Panel(按键板),Control Panel(控制板),Browser(浏览器),Clock Tree Viewer (时钟树视角),World Viewer(全局视角),下面我们来分别学习一下这每个部分的作用。

5b9c1d18939447888c357f2cdc8edcf5.jpeg

Clock Tree Viewer 

首先来看Clock Tree Viewer, 这是最主要的部分,显示了Clock Tree的结构。在CTD中,Clock tree以倒Y字形结构不断地往下分叉,直到trace到clock sink端为止。结构显示也分为两种模式。Unit DelayReal Delay,可以在菜单栏Visibility中选择切换。如下图所示:

44b48b469cee00b4114d3e04eb62b9f8.jpeg

Unit Delay按照clock tree中的level划分排列,左边的纵坐标显示clock tree上所有cell的级数,同一个level的clock cell处在同一水平线上。Unit Delay只能从层级上简单地反应整个tree的结构,并不能按照真实的clock tree的指标参数显示。

Real Delay按照clock tree的实际insertion delay来显示clock tree的信息,这是默认的显示设置,相对而言更加真实,左边的纵坐标显示着clock  tree上cell的insertion delay信息。因此path的长短不一,也让我们可以很直观地观察出整个tree的skew情况。

我们来看具体insertion delay是如何计算显示的。前面说过,整个tree以倒Y字形向下分叉,下左图中,看似平整的直线其实放大了看也是有斜度的。那一段Y字形分别代表着Gate Delay和Wire Delay,如下右图红圈所示。鼠标移至对应的clock cell,左边纵坐标轴上就会显示对应的insertion delay数值,如下图黄色箭头所示,如果你想在CTD上查询具体的Gate Delay和Wire Delay,暂时我们没有直接显示的方式,只能通过Ruler工具去纵坐标上量取对应的值。

我们也可以选中clock buffer, 右键将sink collapse起来,这样,所有所有clock sink便会以数字的形式简单显示在CTD上,当然它会将最长和最短的path以实虚线的形式分隔开来,如右下图蓝圈所示:

0ef39a573e04ad946ded4e14aaeeef79.jpeg

如果鼠标长时间停留在某个clock cell上,CTD就会自动弹出一个小窗口,显示该clock cell的名字以及insertion delay等数值

118b7d27d1c659741aa91ca5d85d1205.jpeg

Menu Bar

Menu Bar(菜单栏):CTD上菜单栏并不多,一共有4列,Help选项就不介绍了

29bff61e969b11c9abf9f7dad3a47110.jpeg

先看View菜单,它主要控制CTD上整个界面上的显示要素

(1)Clock path browser:主要控制Clock path browser的显示位置,默认在显示在主界面下方,Clock path browser的功能后面会介绍到

 7c473bad5c20e37a1fcaa126e35f4611.jpeg

Min/Max level代表着显示到Clock path browser中的多少个skew group的数值信息,默认只显示Skew最大的skew group,level越大,可以显示的skew group也越多,如下图所示:

5a8c4cce8c1db533310b2ce951e71594.jpeg

(2)Zoom:就是平常使用放大缩小功能,不过多介绍了

b12ebde31eee936e49a61dbc1bf5d078.jpeg

(3)Simplify:该功能可以将clock tree的显示简单化,将一些不想看的东西用缩略图表示。

51cbadde537f270c60c4236fe9e5df2f.jpeg

Collapse可以将Sink,ICG,Buffer等cell不展开显示,只以一个简单数字和虚线表示连接关系,下图蓝圈表示该buffer驱动了100个clock sink

29a66d0e6c8b0d0f7e0e9faea57beaf0.jpeg

Expand就起相反作用,将前面收缩显示的东西又全部展开

ddbf1999bacc395101f69baae74b1384.jpeg

Abstract则是一种各简单抽象的显示图了,它放弃了倒Y字形的叉状显示图,而是直接采用类似飞线的连接方式,在这种情况下,它并不关注clock tree上insertion delay了。

8a02213b63e7110f3eaf4b6d6f43596d.jpeg

461a8b4d0ea9aff53f196fcf3edcee4a.jpeg

(4)Delay corner: 该选项很简单,就是切换不同的corner下面,tree的显示情况。可以按快捷键"d"切换至下一corner,按“D”则是切回defalut的corner。需要注意的是CCOPT默认只工作在你的primary corner下面

fe6b84219dce8cc4fe965be0856c74a2.jpeg

(5)Select: 该功能能实现一些特殊的“选择”功能

207a87afc8aba1691d1ba9b7070249c2.jpeg

Select minimum和Select Maximum:分别可以选择当前control菜单下,最小和最大的sink,比如我选择了Transition time的control界面,那么点击Select Minimum或Select Maximum,工具就会自动地帮我们选中最小或者最大的transition sink。如下图中的黄色虚线所示:

5e1fb297ad12c488b85ba81b3b7d7523.jpeg

Enable crossprobing: crossprobing是一个非常好用的功能,从名字就能知道,它起着交叉显示的作用。它很好地同步了CTD,innovus layout和Schematic view三个显示界面。在CTD上执行Selection,Highlight等操作,会自动在Layout和Schematic view上同步执行相同的操作,我们看下面三张图:

CTD上选中一个buffer,Innovus layout界面和schematic view界面上也会选中该buffer

e3ee12ae9bfbe7de21ed08543061f51a.jpeg

CTD上Highlight这个选中的buffer,Innovus layout界面和schematic view界面上也会Highlight该buffer

e38c30ab1f4c9a80d5c91ac8c75aec9e.jpeg

Enable Zoom Selected:打开该功能的话,在CTD上选中某个Object后,Innovus layout界面会自动放大该Object.

82e2645a9497b420ca694405852b198e.jpeg

(6)Find窗口就是平时经常使用的搜索Object界面

【图形界面介绍<Find/Select Object>】

(7)Histogram: 打开clock tree中insertion delay分布的柱状图,如下图所示:该柱状图的Y轴代表sink的数量,X轴代表对应insertion delay的分布。可以按Clock Tree或者Skew Group显示:

9daa18c6fdf59a9b73efa4c0e75b5361.jpeg

(8)Dump view:可以讲当前的clocktree截图下来,这个很简单就可以理解

(9)Control panel,Key panel,Browser则分别可以控制三个面板的显示与否。后面会分别介绍这三个面板

(10)Preference: 设置选项,大部分前面都介绍过。

b8a825cad602f757d90d56c0cd02547d.jpeg

Enable update synchronously: 当你对clock tree上的net或者cell做eco时,clock tree viewer上会直接更新。

Show connection line: 打开后可以显示飞线

Rectangular selection mode: 在clock tree上框选一块区域时,指定在layout view上应该显示instance或者net

Display leaf pins in each bar: 在柱状图中显示每个柱条的实际数值,Linear是代表Y轴显示数字线性增长,Log是代表Y轴显示数字指数增长。

Linear:

7a13804f6064099f567599a0bfe7f0b8.jpeg

Log:

cf988160358c0c4a5b21b627d72046db.jpeg

22334db321615729bd280455e1f06516.jpeg

往期回顾

静态时序分析STA合集一

静态时序分析STA合集二

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

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

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

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

Low Power概念介绍合集

数字后端dbGet使用方法合集

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

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

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

Timing ECO手修攻略

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

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

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

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

这篇关于心似双丝网,中有千千结——Clock Tree Debugger(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

树(Tree)——《啊哈!算法》

树 什么是树?树是一种特殊的图,不包含回路的连通无向树。 正因为树有着“不包含回路”这个特点,所以树就被赋予了很多特性。 一棵树中的任意两个结点有且仅有唯一的一条路径连通。一棵树如果有n个结点,那么它一定恰好有n-1条边。在一棵树中加一条边将会构成一个回路。 一棵树有且只有一个根结点。 没有父结点的结点称为根结点(祖先)。没有子结点的结点称为叶结点。如果一个结点既不是根结点也不是叶

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

问:Super与this在Java中有什么区别?

this: this 关键字用于引用当前对象。它通常用于区分成员变量和方法参数或局部变量。在实例方法中,this 指向调用该方法的对象。在构造函数中,this 指向正在被初始化的对象。 super: super 关键字用于引用父类(超类)的构造函数、方法或变量。在子类的构造函数中,super() 用于调用父类的构造函数。在子类的方法中,super.methodName() 用于调用父类的方法。

226 Invert Binary Tree

//226 Invert Binary Tree//算法思路:主要使用递归算法public class Solution {public TreeNode invertTree(TreeNode root) {//1 出口 空节点if (root==null)return null;//2 递归 调用自己TreeNode left = root.left;TreeNode right = ro

Sorry!Hbase的LSM Tree就是可以为所欲为!

我们先抛出一个问题: LSM树是HBase里使用的非常有创意的一种数据结构。在有代表性的关系型数据库如MySQL、SQL Server、Oracle中,数据存储与索引的基本结构就是我们耳熟能详的B树和B+树。而在一些主流的NoSQL数据库如HBase、Cassandra、LevelDB、RocksDB中,则是使用日志结构合并树(Log-structured Merge Tree,LSM Tr

【spring】does not have member field ‘com.sun.tools.javac.tree.JCTree qualid

spring-in-action-6-samples 的JDK版本 最小是11,我使用 了22: jdk21 jdk22 都与lombok 不兼容,必须使用兼容版本, 否则报错: thingsboard 的大神解释了: java: java.lang.NoSuchFieldError: Class com

[LeetCode] 863. All Nodes Distance K in Binary Tree

题:https://leetcode.com/problems/all-nodes-distance-k-in-binary-tree/ 题目大意 求给树中,距给定 结点 指定长度的 所有结点的val 思路 tree -> graph 、 bfs 先遍历树,并用map记录每个结点的父结点 ,将树变为图,然后 bfs。 /*** Definition for a binary tree

js实现树级递归,通过js生成tree树形菜单(递归算法)

1、效果图 需求:首先这是一个数据集—js的类型,我们需要把生成一个tree形式的对象 : var data = [{ id: 1, name: "办公管理", pid: 0 },{ id: 2, name: "请假申请", pid: 1 },{ id: 3, name: "出差申请", pid: 1 },{ id: 4, name: "请假记录", pid: 2 },{ id:

【unity实战】利用Root Motion+Blend Tree+Input System+Cinemachine制作一个简单的角色控制器

文章目录 前言动画设置Blend Tree配置角色添加刚体和碰撞体代码控制人物移动那么我们接下来调整一下相机的视角效果参考完结 前言 Input System知识参考: 【推荐100个unity插件之18】Unity 新版输入系统Input System的使用,看这篇就够了 Cinemachine虚拟相机知识参考: 【推荐100个unity插件之10】Unity最全的最详细的C

树链剖分 + 后缀数组 - E. Misha and LCP on Tree

E. Misha and LCP on Tree  Problem's Link   Mean:  给出一棵树,每个结点上有一个字母。每个询问给出两个路径,问这两个路径的串的最长公共前缀。 analyse: 做法:树链剖分+后缀数组. 记录每条链的串,正反都需要标记,组成一个长串. 然后记录每条链对应的串在大串中的位置,对大串求后缀数组,最后询问就是在一些链