搭建IC设计EDA虚拟机服务器,忆往昔--集成门控时钟技术的前世--分离门控时钟技术...

本文转自:自己的微信公众号《集成电路设计及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同步的效果,所以输出结果会非常稳定。

794cdba7845aacd3ba6a2361775fc44c.png

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

6f8b5236fadc960a6e8907bc86441128.png

图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所示:

96571d4ddacd2db051bb148d132fb0f4.png

图3  生成的门控时钟报告

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

上篇推文:

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

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

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

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

4bcb7eed6c75be5ec16c8bc29a817562.png

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

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

另一路时钟送到较远的与门一个输入端B,其时钟相比于CLK@A而言,有一段延迟,即CLK@B与CLK@A之间有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中布局完毕后的效果。

416e657235646f64742d784ec7b28291.png

图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软件都能自动处理。在后续的推文中会介绍。

门控时钟相关推文:

低功耗相关推文:

网易云课堂视频课程

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

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

27c95dbe4ed62d5500d6ca17da90a4b8.png

13642d3f47027a84a55f5fbb162196e8.png

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

2ba26d0f14b25fe227319db7721d3298.png

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

bf4e55176b6dd99457c61b8e40d37a3a.png

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

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

相关文章

IntelliJ IDEA for Mac 在MacOS模式下的注释快捷键(Comment Shortcut)

快捷键快捷键符号英文名称功能说明Command/⌘/Comment/uncomment with line comment单行注释Command Option /⌘⌥/Comment/uncomment with block comment块注释,多行注释Shift Control /⇧⌃/Comment/uncomment with block comment块注释,多行注释/…

云服务器的协议,云服务器协议

云服务器协议 内容精选换一换当创建文件系统后,您需要使用云服务器来挂载该文件系统,以实现多个云服务器共享使用文件系统的目的。本章节以Windows 2012版本操作系统为例进行CIFS类型的文件系统的挂载。同一SFS容量型文件系统不能同时支持NFS协议和CIFS协…

java 类名重复_更快地重复访问Java的Java类名?

java 类名重复Claes Redestad已在core-libs-dev邮件列表上发布了消息“ RRF:8187123 :(反映)Class#getCanonicalName和Class#getSimpleName是性能问题的一部分 ”,他在邮件列表中要求审查建议的…

IntelliJ IDEA for Mac在MacOS模式下的编辑快捷键(Editing Shortcut)

快捷键快捷键符号英文名称功能说明Control Space⌃SpaceBasic code completion基本的代码补全(补全任何类、方法、变量),代码智能提示,因为和切换输入法快捷键冲突,所以基本改成Alt/Shift Command Enter⌘⇧↩Compl…

网站服务器被访问 io,服务器端被客户端访问完以后出现java.io.ioexception,socket问题。...

异常为:java.io.ioexception客户端代码如下:package package1.socket;import java.net.*;import java.io.*;import java.util.*;public class C_Scoket {Socket C_S;BufferedReader br;PrintWriter pw;String receive;public static void main(String[] …

layui绑定json_认识定制:JSON绑定概述系列

layui绑定json让我们看一下自定义JSON绑定序列化和反序列化过程时 , 注释模型和运行时配置如何工作。 本系列的下一篇文章介绍JSON-B如何处理自定义对象的创建。 注释方法 使用注释方法,可以通过注释字段,JavaBean方法和类来定制默认的序列…

IntelliJ IDEA for Mac在MacOS模式下的调试快捷键(Debugging Shortcut)

快捷键快捷键符号英文名称功能说明F8F8Step Over进入下一步,如果当前行断点是一个方法,不会进入当前方法体内。逐行执行程序F7F7Step Into进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方…

jakarta ee_Jakarta EE,EE4J和Java EE之间的关系

jakarta eeJakarta EE的名称已经存在了一个多月,即使Mike Milinkovich在他的博客文章“ The Name Is…”中很好地解释了名称和概念,但对于它们之间的关系仍然有些困惑,我也提出了疑问只要有话题就可以围绕它。 我试图在这里总结一下。 希望能…

无线网服务器有辐射吗,WiFi对孕妇有辐射吗

针对无线WiFi上网产生的辐射是否会对人体有伤害已有实验研究。实验结果已经显示,现在包括由无线路由器发射的WiFi在内的无线网络频率虽然较高,但是功率都不大,对人体的辐射影响可以说微乎其微。那么对于孕妇来说,辐射也是非常小的…

IntelliJ IDEA for Mac在MacOS模式下的选择快捷键(Select Shortcut)

快捷键快捷键符号英文名称功能说明Shift Command 8按列选择模式。按下此组合键,再按鼠标左键拖动选择矩形区域,输入新的内容,可以替换被选择的所有行的内容OptionCommand↑⌥⌘↑Extend selection扩展选定范围,和系统快捷键有冲…

jvm虚拟机内存结构_JVM体系结构101:了解您的虚拟机

jvm虚拟机内存结构Java虚拟机(JVM)架构和Java字节码101的初学者速成班 Java应用程序无处不在,它们在我们的手机,平板电脑和计算机上。 在许多编程语言中,这意味着多次编译代码以使其在不同的OS上运行。 对于我们作为开…

IntelliJ IDEA for Mac在MacOS模式下的搜索/查询/查找快捷键(Search Shortcut)

文章目录根据内容查找文件根据名称查找类文件(源代码文件)根据名称查找任何类型文件查找字段名称、方法名、类名声明的地方查找所有的内容查找任何动作快捷键快捷键符号英文名称功能说明Double ShiftDouble ⇧Search everywhere查询任何东西。建议改成 S…

json解析适配模板_认识适配器:JSON绑定概述系列

json解析适配模板适配器通过实现JsonbAdapter接口来配置自定义对象的创建和序列化。 方法AdaptToJson()和AdaptFromJson()被执行序列化和反序列化操作的逻辑覆盖。 下一篇文章介绍了使用自定义序列化器和反序列化器自定义JSON-B的…

IntelliJ IDEA for Mac在MacOS模式下的替换快捷键(Replace Shortcut)

快捷键快捷键符号英文名称功能说明Command R⌘RReplace选择要被替换的内容,按下此组合键,然后会出现替换内容输入框,输入替换内容,按下回车一次,替换一个,继续按回车再替换一个Shift Command R⇧⌘RRepla…

震惊kafka_5个令人震惊的统计数据证明日志不足

震惊kafka事实证明,我们都犯有记录不良的罪名。 不相信我们吗? 这些统计数据可能会改变您的想法 当人们提出带有明显答案的问题时,这非常令人不快,因此,我不会坐在这里问您和您的团队是否使用日志文件来监视预生产和生…

IntelliJ IDEA for Mac在MacOS模式下的动态代码模板快捷键(Live Templates Shortcut)

快捷键快捷键符号英文名称功能说明Option Command J⌥ ⌘ JSelect Template弹出模板选择窗口,将选定的代码使用动态模板包住Option Command T⌥ ⌘ TSurround with Live Template弹出模板选择窗口,将选定的代码使用动态模板包住,和上面那个…

jdk 8 时区 转换_JDK 8 BigInteger精确缩小转换方法

jdk 8 时区 转换在博客文章“ Java中Long到Int的精确转换 ”中,我讨论了使用Math.toIntExact(Long)将Long精确地转换为int或者如果无法缩小转换范围则抛出ArithmeticException 。 JDK 8引入了该方法, JDK 8还向BigInteger类引入了…

IntelliJ IDEA快捷键(Shortcut)官方文档地址

快捷键官方文档地址:https://resources.jetbrains.com/storage/products/intellij-idea/docs/IntelliJIDEA_ReferenceCard.pdf

通过OAuth 2.0和Okta使用安全的服务器到服务器通信构建Spring Boot应用

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 大多数OAuth 2.0指南都围绕用户的上下文,即使用Google,Github…

IntelliJ IDEA for Mac在MacOS模式下添加到收藏夹的快捷键(Add Favorite Shortcut)

快捷键快捷键符号英文名称功能说明Option Shift F⌥⇧FAdd Favorite添加到收藏夹 添加到收藏夹后,你可以按下组合键 Command 2 打开收藏夹窗格,或者直接在视图的左边栏找到『收藏夹』如下图所示: