数字IC后端实现教程| Clock Gating相关clock tree案例解析

今天小编给大家分享几个跟时钟树综合,clock tree相关的典型问题。

数字IC后端设计实现之分段长clock tree经典案例

Q1:星主好,下面的图是通过duplicate icg来解setup违例的示意图。我没看懂这个 duplicate操作在cts阶段是怎么实现的,用什么命令实现的吗?为什么复制成5个icg之后,capture clk上的buffer会变多,然后就timing met了?

数字IC后端专家必备知识体系
在这里插入图片描述

Innovus PR实现阶段可以通过下面的命令来复制或合并clock gating cell。

set_ccopt_property ccopt_merge_clock_gates true
set_ccopt_property cts_merge_clock_gates true
set_ccopt_property ccopt_merge_clock_logic true
set_ccopt_property cts_merge_clock_logic true
set_ccopt_property merge_clock_gates true
set_ccopt_property merge_clock_logic true
set_ccopt_property clone_clock_gates true
set_ccopt_property clone_clock_logic true

复制其他4路ICG后,每路ICG都可以摆放靠近各自控制的寄存器。所以等效于clock gating cell会被摆放至靠近leaf端。这样实现的结果是对我们的setup timing是有利的(power gating的效果要差)。

如果觉得这个case还不够直观,我们可以来看看咱们社区低功耗四核A7 Top Hierarchical Flow实现项目中的一个案例。

从下图所示的clock tree structure报告,我们可以知道每个ICG会控制四个memory的时钟开关。如果把这四个memory分别摆放至芯片中的不同位置(距离相差较大),我们会发现下图框选出来的clock gating cell会被摆放至靠近root端。

在这里插入图片描述

对应到layout上我们可以高亮出这四颗memory和clock gating cell,具体如下图所示。这样的实现结果比较容易出现到clock gating cell使能端的setup violation。

在这里插入图片描述

Innovus clock tree spec文件解析

Q2:请问星主和大家ccopt_design 的时间特别长,到现在已经跑了十天了,有什么方法可以减少run的时间吗?

这又是一个老生常谈的问题了。时钟树综合CTS跑不出来,到底应该怎么debug?这个问题小编至少讲5年了!问题一定出在时钟树综合的clock balance阶段。

在这里插入图片描述

首先我们来看看这位会员在CTS阶段的绕线信息。clock net routing drc数量高达两百多万!这个数字要是年终奖该有多好!而我们知道这个阶段信号线完全都还没有走线呢?仅仅走clock net routing都能有这么多drc,是不是有点不给面子?

在这里插入图片描述

再进一步来看看cts log中clustering步骤做完的各个clock tree长度。从下图中我们可以清晰看到从Macphy到Mac controller的clock tree长度高达24.3ns!(其他clock tree也有十几ns的长度) 小编13年的后端从业生涯还没做过这么长的clock tree!

在这里插入图片描述

在实际soc芯片实现中,我们还会经常遇到如下所示的case。clock mux的一个输入端是经过DLL的场景,此时工具做CLK的clock tree时会把mux的几个输入时钟做clock balance,最终也是跑不出cts结果的。

在这里插入图片描述

所以,遇到这种情况,我们需要先做cts阶段的clustering步骤,找到上述24.3ns的那路clock path,并定位到真正有问题的点。

set_ccopt_property -balance_mode cluster
ccopt_design -cts

当然,对于一个合理的数字IC后端工程师,我们还是建议大家拿到一个design后要认真去trace设计的时钟结构,并画出整体时钟结构图。

在这里插入图片描述

Q3:星主,我看了你的有关门控的主题,你通常设置set_clock_gating_check -setup 0.25,我目前的项目发现门控setup违反较大,在PT(PrimeTime)中setup为-0.6以上,因些我把这个值设为0.6,结果发现Place时门控的时序好一点,但CTS阶段时序变得比设置为0.25时还差,请问一下,这个值设置的依据是什么?

ICG的全称是Integrated Clock Gating。目前的芯片实现都是使用这种集成的时钟门控单元。之所以加ICG的目的是对设计中暂时不用的寄存器通过ICG来关断后面寄存器的时钟Clock来实现低功耗设计的目的。

Place阶段由于clock还是ideal的,此时Latency1=Latency2=Latency3=0 (默认情况不偷timing的情况下)。所以这个阶段其实不一定能看到ICG EN pin的setup violation。

在时钟树综合CTS阶段,ICG的时钟端ECK是non-stop pin或者说是Through pin,所以此时ICG的clock tree长度一定比其他寄存器的clock latency要短。至于短多少取决于ICG在clock tree中的位置。

如果ICG是靠近sink端(也叫leaf端),那么ICG的clock latency就会越接近其他寄存器的latency,这样setup就不容易会有violation。相反,如果ICG是靠近clock root,那么ICG的latency和寄存器latency的差值就会比较大,这时候就非常容易有setup violation。

在这里插入图片描述

此时有三个关键点,需要牢记!

1)Latency1约等于Latency3
2)Latency2小于Latency3
3)ICG Downstream Latency(ICG到寄存器这段的clock latency)约等于Latency1-Latency2

在这里插入图片描述

所以,长tree后ICG的latency并不再是约等于寄存器的Latency(Place阶段是相等的)。这样就会出现原来在place阶段ICG EN pin的timing是meet的,但此时经常会有很大的timing violation的情况。

为了解决placement(preCTS)阶段和CTS后的timing不一致性问题,我们主要采取以下几种方法:

1)设置更大的clock gating check

工艺库lib中有个clock gating check值的二维查找表。我们在place阶段设置一个比lib中更大的set_clock_gating_check约束是为了让工具提前把这类path的data path logic优化到位!

在这里插入图片描述
在这里插入图片描述

2)使用Early Clock Flow
在place阶段使用Early Clock Flow后我们可以从时序报告上看到工具会给ICG/CK反标一个负的delay值,这个跟长clock tree后的情况就比较match了。

在这里插入图片描述

3)控制clock gating的fanout

4)Manual Place Clock Gating cell和它的fanout

Q4:星主,请教一个问题,就是我现在这个block的timing有风险,然后根据place结果设置insertion delay到cto后仍然没做干净,但是前后余量都是够的。我一般是过约slack的30ps,但是工具还是没做干净,效果可能只有一半左右,我是继续加大过约的量还是后面到pt手动在tree上加ck inv来解呢。星主一版遇到类似情况是如何解决的,或者我就什么也不干预,等到pt,用pt的结果回到cts调一版tree?

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S学习之基础十一:k8s中容器钩子

容器钩子 容器钩子分为post-start和pre-stop post-start:容器启动后执行的命令 pre-stop:容器关闭前执行的命令,可用于优雅关闭 # 分别定义两个钩子,启动pod后更新index.html,关闭pod前正常关闭服务 vi post-pre.…

RabbitMQ知识点

1.为什么需要消息队列? RabbitMQ体系结构 操作001:RabbitMQ安装 二、安装 # 拉取镜像 docker pull rabbitmq:3.13-management ​ # -d 参数:后台运行 Docker 容器 # --name 参数:设置容器名称 # -p 参数:映射端口号&…

HTML + CSS 题目

1.说说你对盒子模型的理解? 一、是什么 对一个文档进行布局的时候,浏览器渲染引擎会根据标准之一的css基础盒模型,将所有元素表示为一个个矩形的盒子。 一个盒子由四个部分组成: content,padding,border,margin 下…

利用Postman和Apipost进行API测试的实践与优化-动态参数

在实际的开发和测试工作中,完成一个API后对其进行简单的测试是一项至关重要的任务。在测试过程中,确保API返回的数据符合预期,不仅可以提高开发效率,还能帮助我们快速发现可能存在的问题。对于简单的API测试,诸如验证响…

【银河麒麟高级服务器操作系统实际案例分享】数据库资源重启现象分析及处理全过程

更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…

C++ Primer 拷贝、赋值与销毁

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

Java面经

Java 知识点总结 1. 封装,继承和多态 封装: “高内聚,低耦合”,隐藏内部实现细节,只通过接口开放部分使用权限给外部。继承: 主要是提高代码复用性,通过子类继承父类,来增加功能扩…

常见的限流算法有哪些?

好的,关于这个问题,我会从几个方面来回答。 首先,限流算法是一种系统保护策略,主要是避免在流量高峰导致系统被压垮,造成系统不可用的问题。 常见的限流算法有 5 种。 1. (如图)计数器限流&a…

GitHub获取token

获取token clone代码 git clone https://$tokengithub.com/*****/*****.git

公司网络安全组织结构

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 第17章 网络安全应急响应技术原理与应用 17.1 网络安全应急响应概述 居安思危,思则有备,有备无患。网络安全应急响应是针对潜在发生的网络…

《深度学习进阶》第7集:深度实战 通过训练一个智能体玩游戏 来洞察 强化学习(RL)与决策系统

深度学习进阶 | 第7集:深度实战 通过训练一个智能体玩游戏 来洞察 强化学习(RL)与决策系统 在深度学习的广阔领域中,强化学习(Reinforcement Learning, RL)是一种独特的范式,它通过智能体与环境…

【web前端开发】CSS--CSS简介及其编写位置(上)

1、CSS简介 (1)CSS的全称为:层叠式样式表(Cascading Style Sheets) (2)CSS也是一种标记语言,用于给HTML结构设置样式,例如:文字大小、颜色、元素宽度等等…

计算机视觉|Swin Transformer:视觉 Transformer 的新方向

一、引言 在计算机视觉领域的发展历程中,卷积神经网络(CNN) 长期占据主导地位。从早期的 LeNet 到后来的 AlexNet、VGGNet、ResNet 等,CNN 在图像分类、目标检测、语义分割等任务中取得了显著成果。然而,CNN 在捕捉全…

UE4 组件 (对话组件)

制作一个可以生成对话气泡,显示对话台词的简单组件。这个组件要的变量:台词(外部传入)。功能:开始对话(生成气泡UI) ,结束对话。 一、对话组件创建 二、开始对话事件 1、注意这里获…

WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中

WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中 一、前言二、部署与发布基础概念2.1 部署的定义与目的2.2 发布的方式与渠道2.3 部署与发布的关键要素 三、WPF 应用程序打包3.1 使用 Visual Studio 自带的打包工具3.2 使用第三方打包工具 四、发布到不同…

Vue3自定义hooks

Vue3自定义hooks 什么是自定义hooks 把一个功能的所有数据和方法写到同一个ts文件里。 命名规范:useXxx,小驼峰。 在每一个hooks中,都可以写onMounted、computed等属性,互不干扰。 体现出了组合式AI的优势,一个功能的…

Win7重装不翻车!ISO镜像安全下载渠道+BIOS设置避雷手册

一、写在前面:为什么你需要这份教程? 当电脑频繁蓝屏、系统崩溃甚至无法开机时,重装系统可能是最后的救命稻草。但市面上的教程往往存在三大痛点: ⚠️ 镜像来源不明导致系统被植入后门 ⚠️ 启动盘制作失败反复折腾 ⚠️ 操作失…

DeepSeek大模型 —— 全维度技术解析

DeepSeek大模型 —— 全维度技术解析 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家!点我试试!! 文章目录 DeepSeek大模型 —— 全维度技术解析一、模型架构全景解析1.1…

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 目录 AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 一、简单介绍 二、Docker 下载安…

外键 FK enable constraints enq:TM lock

ALTER TABLE X ENABLE NOVALIDATE CONSTRAINT XX; 如果referenced 表在DML 就会出现 enq:TM lock