忆往昔--集成门控时钟技术的前世--分离门控时钟技术

本文转自:自己的微信公众号《集成电路设计及EDA教程》

《忆往昔--集成门控时钟技术的前世--分离门控时钟技术

多种门控时钟实现方案:

Design Compiler中已经集成了可以进行低功耗设计的Power Compiler,它有多种门控时钟实现方案(分离门控时钟、集成门控时钟、多级门控时钟、层次化门控时钟)。

如何选择?

首先需要看自己所用的标准单元库中是否有集成门控时钟(Integrated Clock Gating, ICG)单元,如果有的话最好选择使用ICG而不用分离门控时钟单元,因为它性能不如ICG,且在后端实现中需要一些人为的干预(需要通过设置net weight将Latch和与非门/或非门靠近放置),较麻烦。无论是分离门控时钟单元还是ICG,他们都可以被用来实现多级以及层次化门控时钟。

如果标准单元库中没有ICG,那么我们只能采用分离门控时钟技术。

在逻辑综合阶段,我们可以通过set_clock_gating_style命令来设置选择采用哪种方案,下面将对几种方式分别做以介绍。

1.  分离门控时钟(Discrete Clock Gating)

Power Compiler在实现CG时,一般会默认采用分离门控时钟技术。

我们采用分离门控时钟技术应该只有一种情况,那就是采用的工艺比较特殊(如BiCMOS)或者工艺比较老,标准单元库中没有ICG,但是又想降低动态功耗,那只能使用分离门控时钟技术了。

它有两种实现方式,即基于锁存器的CG和不用锁存器的CG,一般默认情况下软件会选择前者。基于锁存器的CG单元的结构及波形如图1所示,它由一个锁存器和一个与门(或者或门、与非门、或非门)构成。不用锁存器的CG单元的结构如图2所示,它由一个简单的与门(或者或门、与非门、或非门)构成。在性能上,前者与后者相比有很大的优势,这可以在它们相应的波形图中看出。因为当EN信号不稳定时,不用锁存器的CG单元会在CG单元的输出端形成毛刺,从而影响其后的寄存器组,而基于锁存器的CG单元利用锁存器来采样EN信号,达到与CLK同步的效果,所以输出结果会非常稳定。

图1 基于锁存器的CG单元的结构及波形

图2 不用锁存器的CG单元的结构及波形

分离门控时钟的逻辑综合实现:

如果要在设计中实现基于锁存器的分离门控时钟,则需要在Design(Power) Compiler进行逻辑综合前先选择门控时钟单元的类型:

采用基于锁存器的CG单元:

set_clock_gating_style -sequential_cell latch

而不用锁存器的CG的命令为:

set_clock_gating_style -sequential_cell none

同时我们还需要对CG的对象最低位宽和最大扇出进行控制(具体原因见前篇推文),因为分离门控时钟单元里面含有锁存器和与门等单元,不像集成门控时钟单元,它的时序要求信息写在了lib库里面,所以还得手动指定setup和hold。

set_clock_gating_style -sequential_cell latch \

-max_fanout 32 \

-minimum_bitwidth 4 \

-setup 3 \

-hold 0.3

老版的DC用insert_clock_gating命令插入门控时钟单元,之后用compile进行编译;

新版的DC直接用compile -gate_clcok或者compile_ultra -gate_clock直接在编译过程中就能实现,更加简单。

编译完成后报告实现的效果:

report_clock_gating > ./log/clock_gating.ckgt

生成的报告如图3所示:

图3  生成的门控时钟报告

分离门控时钟技术的优点:

上篇推文:

妇孺皆知的低功耗技术 | 门控时钟(Clock Gating, CG)技术

介绍过了,这里就不说了,着重说下它的缺点。

分离门控时钟技术的缺点:

一般插入分离门控时钟单元可能会引起时钟偏斜(Clock Skew)问题,进而会导致输出的时钟信号中有毛刺

如图4所示,时钟CLK分两路:

图4 分离门控时钟的Skew问题

一路送到比较近的锁存器时钟输入端[email protected],它去采集使能信号EN,锁存器在[email protected]为0时透明,为1时锁存。经过一个锁存器的延迟(CLK to Q latch delay)到EN1。

另一路时钟送到较远的与门一个输入端B,其时钟相比于[email protected]而言,有一段延迟,即[email protected]与[email protected]之间有Skew,Skew小于latch的delay。该Skew很可能会产生一些毛刺(毛刺的宽度大约为Skew-Delay)。

解决方法有两种:

1、采用后边将要介绍的集成门控时钟技术(ICG);

2、在布局阶段设置net weight将与门和锁存器尽量靠近放置(推文后边有介绍)。

分离门控时钟后端物理实现要点:

在后端设计中除了前面的布局布线流程之外,还要注意以下几点:

(注:由于本笔记是本科毕设阶段基于Astro工具来做的,因此下面的讲解都基于Astro工具,ICC的话应该类似。)

1.布局前的准备

在布局阶段,需要将插入的CG单元中的锁存器和与门(或者与非门)尽量靠近放置,这需要完成布局前的准备工作。

首先根据CG Cell的信息编写gatedclock.nets文件,增大锁存器和与门之间的连线的netWeight。然后在Astro中加载完.sdc时序约束文件并进行时序分析后、布局阶段前,以导入tdf文件的形式导入该gatedclock.nets文件来实现对锁存器和与门之间间距的约束,后面的布局便会自动按照此文件来将两者尽量靠近放置。

根据其中一个CG Cell的信息编写的命令如下:

netWeight "ENL" 255 255

netWeight "dan/clk_gate_dout_reg/net456"255 255

以导入tdf文件的形式导入gatedclock.nets文件后,开始布局操作后边给出Astro中的布局结果。

2.分离门控时钟单元布局结果

如图5所示为Astro中布局完毕后的效果。

图5  Astro中与门和锁存器靠近放置

从图中两个单元的FRAM View的位置关系可以看出,Cell名为"dan/clk_gate_dout_reg/main_gate"的AND2HSV2.FRAM的与门和名为"dan/clk_gate_dout_reg/latch"的LALHSV1.FRAM的锁存器是靠近放置的,成功达到了预期的效果。

 3. 时钟树综合(CTS)之前的相关设置:

CTS之前,需要让时钟clk穿过锁存器,而不能让软件将锁存器的clk端视为一个sync pin(时序单元的时钟端口,这些Pin上的Latency工具都会自动进行Balance)。因为Astro默认会将所有时序单元(如锁存器和触发器)和宏单元的时钟端口视为sync pin,所以需要在CTS之前去除CG单元中latch时钟端的stop属性,否则时钟树综合的时候会插入倒向器和缓冲器来平衡电路中的Skew,这会严重影响门控时钟的功能,导致到达CG中与门两输入端的信号不满足建立时间或保持时间的要求,从而会导致输出端产生毛刺。

这可以用astSetClockNonSop命令来实现。现仍以前面图中显示的锁存器为例讲解其相应的设置命令:

astSetClockNonStop "dan/clk_gate_dout_reg/latch"#t

当设计中插入的CG Cell非常多时,可以将这些命令编写成一个脚本文件,然后以命令load加载进来。

4. 后续操作:

后续的操作就是常规的NDR绕时钟线和non-NDR绕普通信号线,没什么特殊的,可以参照ICC的流程。

结束语:

希望通过分离门控时钟技术大家能对CTS中门控时钟单元的stop pin和nonstop有清楚的认识。在最新的集成门控时钟实现方案中,所有这些问题都变得更加简单了,基本上不需要任何特殊的设置,EDA软件都能自动处理。在后续的推文中会介绍。

门控时钟相关推文:

妇孺皆知的低功耗技术 | 门控时钟(Clock Gating, CG)技术

Memory门控时钟低功耗 --在Floorplan和Placement阶段有何考虑?

效果贼棒 | 门控时钟低功耗--Auto Bound 与Physical Aware Clock Gating

门控时钟低功耗--在Placement阶段有什么技巧?

低功耗相关推文:

轻松的低功耗策略 | Transistor Sizing with Longer Channel Length

千呼万唤始出来--QQ交流群 | 多种低功耗技术及其在IC后端布局中的应用

润物细无声--却鲜为人知的低功耗设计技术--Stack Effect

与状态相关的Leakage power(State-dependent leakage power)

网易云课堂视频课程

链接:https://study.163.com/course/introduction/1005909004.htm

《Calibre DRC教程-一键搞定DRC》

《Calibredrv教程-提高流程自动化》

《搭建IC设计的EDA虚拟机/服务器》

原文地址:https://www.cnblogs.com/ASIC-Horizon/p/10105470.html

时间: 2024-10-06 12:13:35

忆往昔--集成门控时钟技术的前世--分离门控时钟技术的相关文章

己亥年(2019年)忆往昔表

? ????年关将至,望垂暮落日之余晖,欲捶胸顿足之仰天长叹,若卿欲问何故,吾曰:而立之年,唯有鸿鹄之志,郁郁不得志.三十之末,未立业亦未成家,此为众人普遍之现象,焦虑之心亦为而立年之心态,固书己亥年之忆往昔表,省以往昔之不当.不精.不勤,冀庚子年稳步登峰,不求造极只求小有所名,小有所获,小有所果. ? 丙寅月(2月-春节): ????年初伊始,阖家欢乐之际,把酒言欢,酒肉穿肠,满了口腹之欲却落得个肚满肠肥,度(duo)步便便.身处京城虽西装革履,格子衫牛仔裤,多一份忙碌身影,是否尔虞我诈,趋炎

视频管理软件技术分析报告(三)--VMS软件支撑技术分析

1. 通信协议   IP视频监控系统涉及的主要通信协议包括: ? UDP:提供面向事务的简单不可靠信息传送服务. ? TCP: Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的.可靠的.基于字节流的传输层(Transport layer)通信协议. ? SIP:是应用层的会话控制协议,用于创建.修改和释放一个或多个参与者参加的会话,采用基于文本格式的客户/服务器模式,基本功能包含:用户定位(定位设备.客户端),用户能力协商(了解能力集),

Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9

Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9 1. 主要的涉及的技术 1 2. 主要的流程 1 3. 调用法new confirmO9t(); 1 4. 设置确认在后的回溯事件 c.backHandle="window.opener.confirmSubmitBackeventHandle"; 2 5. 设置详细表格显示模板  c.tmplt="/publish/lookOverdetail_templt.jsp";

设备分配中的数据结构:设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)和系统设备表(SDT)

在多道程序环境下,系统中的设备供所有进程共享.为防止诸进程对系统资源的无序竞争,特规定系统设备不允许用户自行使用,必须由系统统一分配.每当进程向系统提出I/O请求时,只要是可能和安全的,设备分配程序便按照一定的策略,把设备分配给请求用户(进程). 在有的系统中,为了确保在CPU与设备之间能进行通信,还应分配相应的控制器和通道. 设备分配中的数据结构 ---- 在进行设备分配时,通常都需要借助于一些表格的帮助.在表格中记录了相应设备或控制器的状态及对设备或控制器进行控制所需的信息. 在进行设备分配

没看西安同步的时钟服务器时,别着急买时钟服务器

没看西安同步的时钟服务器时,别着急买时钟服务器gps卫星校时系统简介卫星校时系统通过在局域网内设置的GPS时钟服务器,接收GPS卫星上标准的时间,并通过接入局域网,以TCP/IP协议将标准时间发送到各个联入网络的工作站,同步校对各工作站时间,从而提供一个精确标准的时间基准,解决各工作站时间不准确.不同步的问题.避免了由于时间的错误而带来不必要的损失,而且该系统的时间和北京时间是完全同步的:同时该系统还能驱动子钟显示屏和 LCD 液晶显示器对外进行时间显示,方便工作人员查看时间.卫星校时系统工作原

《深入理解Java虚拟机》第一部分(Java技术体系,Java虚拟机,Java技术趋势)

第一部分 走进Java 1.Java技术体系 Sun官方定义的Java技术体系包括一下几个组成部分: Java程序设语言 各种硬件平台上的Java虚拟机 Class文件格式 Java API类库 第三方Java类库 JDK是用于支持Java程序开发的最小环境,Java程序设计语言.Java虚拟机.JavaAPI类库统称为JDKJRE是支持Java程序运行的标准环境,JavaAPI类库中的JavaSEAPI子集和Java虚拟机统称为JRE 按照Java技术关注的重点业务领域来分,Java技术体系可

《京东技术解密》读书笔记:坚持技术十年如一日

内容目录: 1.京东技术升级路线 2.京东创新的应用 3.京东那些技术牛人 一直在京东上面shopping,喜欢京东的物流,也有一些同学在京东研发体系上班了,早就听说有了这么一本书,却一直没有阅读.最近,从京东上购买了一本,花了几天的业余时间畅读一番.刘强东在书中的序言中写了一段话,很好地说明了这本书的背景: “京东可以高速发展到今天的规模的原因,其中最核心的是坚持“倒三角”战略:建立出色的团队:打造财务.物流和技术三大核心系统:降低成本.提升效率:为用户带来最佳体验.在<京东技术解密>一书中

五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时

五种情况下会刷新控件状态(刷新控件状态才能刷新所有子FWinControls的显示): 在TWinControls.PaintControls中,对所有FWinControls只是重绘了边框,而没有整个重绘这些FWinControl子控件.那么什么时候才整个重绘全部FWinControls呢?这时候,就不是一个单纯的WM_PAINT来解决控件重绘的问题了,而是这个TWinControl.UpdateShowing函数: procedure TWinControl.UpdateShowing; v

[转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件

作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律责任. 本篇要登场的有三个控件,分别是滚轴控件.进度条控件和编辑控件. 一.滚轴控件 Ext.slider 1.滚轴控件的定义 下面我们定义三个具有代表意义滚轴控件,分别展示滚轴横向.纵向,以及单值.多值选择的特性: [html] <h1>滚轴控件</h1> <div class