数字后端——时钟树综合

        在数字集成电路设计中,时钟信号是数据传输的基准,它对于同步数字系统的功能、性能和稳定性起决定性作用,所以时钟信号的特性及其分配网络尤被人们关注。时钟信号通常是整个芯片中有最大扇出、通过最长距离、以最高速度运行的信号。时钟信号必须保证在最差的条件下,关键的时序要求能得到满足,否则对时钟信号任何不当的控制都可能导致紊乱情况,将错误的数据信号锁存到寄存器,从而导致系统功能的错误。

        在现有基于标准单元的ASIC流程中,通常将扇出较大的时钟网络在综合阶段设置为理想时钟,在物理设计阶段进行时钟树综合,因此它是后端物理设计的关键步骤之一。

一、时钟树综合方法

        芯片设计中的时钟分为两类:真实时钟(real clock)和虚拟时钟(virtual clock)。真实时钟又有两种模式,时钟树综合前没有延时的理想时钟(ideal dock)和时钟树综合后的传播时钟(propagated clock)。在设计中有时需要定义相对于系统的参考时钟,例如,对于某个不含PLL的设计模块,其时钟信号来自顶层芯片时,我们就定义它为虚拟时钟。虚拟时钟没有源头,它在整个系统设计中存在,在当前设计中不存在。时钟树综合时必须先定义虚拟时钟,然后才能定义并约束端口的输入输出延迟。


简单的说,设置virtual clock的好处就是可以在不影响real clock的情况下,指定clock的clock network delay。

        我们知道,clock latency包括了clock source latency和clock network delay。当BLOCK中没有做clock tree 的时候,clock network delay 等于0, 这时候,RegA到PORT这个path来说,用virtual clock还是用real clock, 效果都是一样的。

        但是,当BLOCK到了CTS阶段后,因为有BLOCK内部有clock network delay的存在,而RegB仅仅是个虚拟的寄存器,他的clock tree是不存在的,因此,clock network delay也就是0,这就会导致 RegA 到 PORT的timing path变得过于严格(与之相反,input 到 内部寄存器的path的setup check就会过于乐观)。那么我们可以对RegB设source latency。然而不幸的是,如果用的是real clock, 那么必然会导致RegA的clock的source latency也相应的改变。这时候就体现出了virtual clock的作用。

        虚拟时钟在设计中的实际应用是用于作为输入输出端口延时约束的时钟源。EDA工具会基于虚拟时钟,根据芯片/模块内部时钟的实际 delay评估IO外部假定寄存器的propagation time,这样时序分析就可以规避不必要的“假”违例。


         理想时钟开始用于逻辑综合阶段,通过设定一些参数模拟真实时钟。在芯片布局完成后,需要对理想时钟进行延时计算从而建立时钟树,这时,便设定时钟的属性为传播时钟,这样,时序工具在分析时,就会考虑时钟树的门延迟和线延迟

1、设计约束

        时钟树综合(CTS,clock tree synthesis)时需要对期望实现的参数做出定义,这些参数通过“时钟树约束文件”来提供。时钟树所用的约束文件中首先是对时钟信号本身的定义,它们直接来源于标准设计约束SDC文件。SDC文件为设计约束的标准,它的主要内容包括时序约束(timing constraints),因此它也常常被称为时序约束文件。

        标准设计约束SDC文件是规定到达同步寄存器的数据与时钟之间满足设计要求的一种时序关系。SDC文件主要有三部分组成:时钟定义、输入延迟、输出延迟。在顶层设计中,还需要约束输入端口的驱动以及输出端口的负载等信息。对于多时钟的复杂SoC设计,还需要根据设计的具体情况设定多周期检查路径、冗余的伪路径以及最大延迟时间和最小延迟时间等约束,如下表:

        与时钟信号延滞有关的延迟定义还有输入延迟、输出延迟、路径最大延迟和路径最小延迟。输入延迟指的是数据到达输入端口的延迟,输出延迟是数据离开输出端口的延迟,它们主要用于输入和输出端口的时序匹配。

        在模块级设计中,输入延迟与输出延迟是模块之间的时序接口,输入延迟主要用于匹配另一接口模块的输出组合电路的路径延迟,而输出延迟则为另一接口模块的输入组合电路的路径延迟预留一定的时间范围。在芯片设计的顶层,输入输出延迟可作为芯片和板级设计之间的时序接口,主要是预留给PCB上走线的延迟。

         最大最小延迟一般是满足特殊时序所规定的要求,可以是芯片的一个端口到达另一个端口的延迟要求,也可以是芯片内部的某个寄存器到达另外一个寄存器的延迟。

        在输入输出端口,需要分别定义驱动能力和负载大小。定义输入端口的驱动能力可以是标准单元库中的一个缓冲器(buffer,BUF)单元,也可以是指定的电阻值。在芯片的顶层常指定特定的阻值,也即定义输入电阻的大小,由于在顶层驱动的是负载较大的I /O单元,故需要的驱动能力较强,典型的值是0. 05,单位取工艺库中电阻的单位,一般为kΩ;在模块级设计中,则用某个单元来定义,常用中等驱动能力的BUFX2,驱动能力太小(例如BUFX2)会导致优化时插人多余的BUF,而驱动定义得太大(如BUFX16)会造成优化时插入的BUF不足,从而造成两个模块拼接时时序的违例。

        输出负载指的是与输出端口相连接的负载,其值为电容,一般单位为PF。在芯片的顶层设计中,所需要定义的值与板级PCB上的负载相关。例如,某CPU设计常用的数据总线如CPU的输出数据总线、PCI总线、SDRAM总线、LCD控制和数据线等其经验负载一般取30pF,一些特殊的端口,如USB端口其负载较大,取60pF较为合理。

        对于时钟的定义、时钟延迟的定义、时钟不确定性定义是为了在布局、时钟树综合和布线时提供时序约束参考点。时钟的定义将通过时钟树综合来实现,而时钟延迟和时钟抖动或不确定性(jitter或uncertainty)将在静态时序分析时进行检查。静态时序分析将根据时钟树综合和布线的实际结果,通过提取整个电路中所有的时序路径,通过计算信号在路径上的延迟传播找出违背时序约束的错误,详见静态时序分析。

2、时钟树的结构

        时钟信号在物理设计中的实现结果被形象地称之为时钟树,时钟信号的起点叫做根节点(root pin或root cell),时钟信号经过一系列分布节点最终到达寄存器时钟输入端或其他时钟终点(例如,存储器时钟输入端)被称为叶节点。根节点、分布节点和叶节点都依附于的逻辑单元则分别称作根单元、分布单元和叶单元。时钟网络从根节点逐级插人驱动器(buffer、inverter) ,从而到达其叶节点,按照芯片时钟网络的约束要求产生时钟树的过程叫做时钟树综合。

        今天,在基于标准单元的ASIC芯片流程中,通常扇出较大的时钟网络在综合阶段设置为“理想时钟”。在物理设计阶段,即在布局布线的过程中进行综合,而后定义为“传播时钟”进行静态时序分析,时钟树综合的实现已被公认为物理设计的关键步骤。        

        时钟树根据其在芯片内的分布特征,可分为多种结构,主要有H 树(H-tree)、X 树(X-tree)、平衡树(balanced tree),以及梳状或脊椎状时钟网(clock tree mesh: comb or spine)。

        H-tree从中心点到达各个叶节点的距离是相等的,因此信号到达叶节点的时间理论上相等,时钟偏差理论值为0,该结构的不足是布线比较困难,扇出难以协调一致,适用于较小的设计。

        X-tree也是一种实现等长互连线的方法,与H-tree相比,X-tree采用了很多非90°的互连线,与H-tree的扇出为2相比,X-tree的扇出是4。 

        为了减小叶节点反射电流的影响,将分支后的时钟网线的电阻提高到分支前的2倍,也即分支后的线宽为分支前的1/2,得到“裁剪状的’’(tapered)H-tree。

        平衡树采用的是两个层次的驱动,比较适用于分层次的时钟树设计以及较大的时钟树综合。在顶层上,它采用一个层次的驱动插入以平衡时钟偏差,到模块级再采用模块级的驱动插人平衡时钟偏差。从图中可以看出从时钟的根节点通过一级驱动到达模块的时间是不同的,存在时钟偏差,但是比较小

        对于很大的时钟树,用时钟网络或时钟网格(clock mesh,clock grid)的方法是获取较小时钟偏差较好实用方案,如图所示。尽管当代的EDA工具能自动生成时钟网络或网格等拓扑结构,但它还是需要很丰富的经验和细致的手动方法去设计并作调整。

3、时钟树综合策略

        在SoC芯片设计中,它的时钟数目多,时钟结构复杂,有很多叶节点同时属于多个时钟域,在时钟树综合时需要采取一些相关的策略。

        自动时钟树综合对于自我交叉(self-reconvergent)和相互交叉(crossover)两种情况的处理方法如下:

  1. 自我交叉是很常见的一种情况,从PLL出来的时钟,经过不同的处理(分频或控制等)然后又通过一个选择器(mux)汇集到一起,在这种情况下,工具在被设定为处理自我收敛状态时,先综合平衡右侧tree部分的偏差(skew),然后再均衡circuit1和circuit2的偏差,从而平衡整个时钟树偏差。
  2. 相互交叉时钟如图所示,tree3是wb_clk和lcd_clk经过一个选择器mux所重复的部分,工具在时钟树综合时,首先综合tree3,平衡其内部偏差,然后对tree1进行综合,同时平衡其内部偏差以及到达mux输入端的延迟,最后对tree2进行综合,平衡tree2自身的偏差以及tree2与tree1之间的偏差。如果两个时钟的频率相差很多,对于其重复的区域,应当选择对快速时钟的要求作为统一目标要求再进行时钟树综合。

        

二、时钟树设计策略

1、综合优化

1)有用偏差

        在传统的或早期的时钟树综合时,期望获得“零偏差”的时钟树。但是后来研究发现即使能够获得“零偏差”的时钟树,它的性能也不见得就是最好,有用偏差(useful skew)的概念随即被提出并应用。

        从一些时钟树拓扑结构中发现,有些组合逻辑电路(如datapath)延时较大,而处于同一时钟树中的寄存器的时钟延时相对较小时,这时如果迁就延时长的组合逻辑电路,增加寄存器的时钟延时并不影响时钟树的功能。这种方法称作时钟树的有用偏差。如下图中针对组合逻辑的延时违例,我们可以在CTS之前去加快到达第一个寄存器的源(source)时钟信号,完成CTS后再去添加填塞单元(padding cell)去减慢到达第二个寄存器的靶(target)时钟信号。

        显然,有用偏差就是利用时钟偏差来满足时序要求。

2)OCV与CPPR

        在纳米工艺条件和12英寸硅片技术中,片上误差OCV在时序检查时已经成为非常重要的一步工作。同时人们发现在考虑OCV时,它会对时钟时序路径延时偏差(skew)和数据路径(data path)延时提出更严格的要求,因此需要在时钟树综合阶段进行分析和处理。同一个芯片上的误(OCV,on-chip variation)会对芯片的时序产生直接影响。如两个相同的缓冲器单元在输入信号变化和负载相同的条件下,由于在芯片上所处位置不同,它们的实际门延时却不同。

详见静态时序分析——On-chip Variation 

3)与布局结合的手动时钟树设计

        在布局布线常用流程中,EDA工具自动放置标准单元,并在要插入时钟树的时序单元附近预留一定的空间,设计者指定时钟的根节点和频率、整个时钟树最大的电容值、转换时间值以及所要达到的目标偏差值,CTS工具会根据设计者的要求将buffer单元自动地插入时钟树。当对具体的设计非常地了解时,可以采用与布局相结合的手动时钟树设计,具体实施如下:搜索所有的叶节点,根据模块之间的关系,按照一定的相对规则指导工具将其放置在芯片适当的位置。在时钟树综合阶段,先在小范围内综合各个模块的时钟,即手动设置插入buffer的级数,每级buffer所驱动的具体的叶节点,然后在顶层平衡全局时钟。      

4)多驱动buffer

        对负载很大的时钟树,也即叶节点数目较大的时钟树,在根节点处采用多个buffer驱动(STA不能对这种平行连接的buffer做出准确的时序计算,而需要通过SPICE仿真),从而提高驱动负载的能力,如下图(a)所示,从根节点出来的时钟其中cpu_clk的负载较大,则在根节点处扩展多个驱动后再进行后面的时钟树综合。下图(b)展示了时钟树应用的综合实例,它由三节结合组成,第一节为buffer链驱动,第二节为H-tree(也称为鱼骨状)和第三节局部时钟树(叶)。

2、异步时钟树设计

        虽然同步时钟设计及其时钟树的综合较为容易实现,但由于信号传送在同一时间频率发生,通常各模块间的时钟同属于同一个主时钟,因此能量功耗也最大。如果将结构bus作成自我定时各个模块的时钟成为相互独立,时钟的偏差与平衡也就容易实现了。在实际的SoC设计中,它是以非同步时钟即异步时钟设计来实现,从而降低功耗。

  • 时钟树综合对同步电路实现的优点是:电路结构简单明朗,具有较好的鲁棒性,验证简单。同步电路的缺点是:较大的时钟在物理实施时具有一定的难度,封装电感和电源电阻会在同步时钟跳变的瞬间产生很大的噪声。
  •  异步电路与同步电路相反,其电路不规则,但是速度快,功耗低,将全局时钟变为多个局部时钟,成为目前人们关注的热点。

        

        如上图所示,各级电路都有自己的局部自定时电路(self-timed circuit),各级之间通过异步握手信号完成电路的功能。异步电路的时钟控制信号一般都是异步应答信号,在同一个异步电路中,要求其涵盖的时序单元是在异步应答信号下同步工作,故异步应答信号在一个异步模块中也是需要当作特殊的时钟信号来处理。故异步电路的应用将一个大的全局时钟,抽象成各个独立的局部时钟,给时钟树综合带来了极大的方便。

3、锁存器时钟树

        在一些设计中,人们发现同一时钟周期的时序不够用,而引入了时间借用(time borrowing)的概念和方法。

 详见静态时序分析——Timing borrow

        与寄存器相比较,锁存器的特点是数据在有效电平区间内传输,而非在时钟的边沿传输。在寄存器电路中,两个寄存器之间组合路径的延迟决定了时钟最小的周期值,如果在一个周期内,组合路径早早的完成了其功能,则将处于闲置状态,直到下个周期的到来。相对于寄存器电路,锁存器半个时钟周期内直通,故能在本周期内容忍一定的负的剩余时间或者借用下一级的时间(time borrowing),因此锁存器上的时序更容易满足。

        锁存器可以实现较高频率的电路,但是锁存器在半个周期内透明的特性增加了电路的灵活性同时也带来了一定的问题。由于噪声的影响,数据上的毛刺信号很容易在锁存器电路中传递从而造成功能的错误,因此锁存器的抗噪性比较差,在应用中要非常地谨慎。一般不提倡使用锁存器,但是在设计经验丰富,对内部电路了解较透彻,在物理设计中采用一定的抗噪方法的前提下,是可以考虑采用锁存器的。

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

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

相关文章

52次课(mysql用户管理、常用sql语句、 mysql数据库备份恢复)

MySQL创建用户以及授权 默认用户是root用户,不可能所有人员都用root用户,创建用户防止误删除,因为mysql里边有多个库每个库里有很多表,所以需要给单独的用户做一些授权我只需要它对某一个数据库有权限,或者说对某个数据…

20145225 《信息安全系统设计基础》第14周学习总结

第九章 虚拟存储器 虚拟存储器是计算机系统最重要的概念之一,它是对主存的一个抽象 三个重要能力: 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据&#xf…

数字后端——布线

布线是继布局和时钟树综合之后的重要物理实施任务,其内容是将分布在芯片核内的模块、标准单元和输入输出接口单元( I /O pad)按逻辑关系进行互连,其要求是百分之百地完成它们之间的所有逻辑信号的互连,并为满足各种约束条件进行优…

streamsets 集成 minio s3测试

具体streamsets crate 集成可以参考 streamsets crate 以下文档只关注minio 集成的配置 minio 服务 搭建 具体搭建参考: https://www.cnblogs.com/rongfengliang/p/9197315.html 创建bucket (crate 集成使用) 测试的csv 文件从https://www.s…

【codecombat】 试玩全攻略 第十四关 已知敌人

第十四关 已知敌人 在这一关里,我们的英雄获得了一副可以看见敌人的眼镜,所以他很强势的学会了“发现敌人”的技能。 hero.findNearestEnemy()命令,单词多了,首字母都要大写了,不然分不出来。玩过wow的小伙伴用过 宏命…

数字后端——信号完整性分析

随着光刻和集成电路制造工艺的不断进步,以及芯片的特征尺寸从深亚微米到纳米的迅速采用,人们一方面因为芯片的功能极大提高而受益,另一方面,当逻辑门的沟道长度减小时,门的开关时间会减小,这意味着输出驱动…

CMOS图像传感器——TDI CIS

一、面阵与线阵图像传感器 人们在日常生活中见到的相机大多基于普通的面阵图像传感器,这种相机多用来拍摄静止的物体。即使用它们來拍摄运动的物体,也仅仅是缩短了相邻两次拍摄的时间间隔,无需对所拍摄图像进行额外操作,对物体的运动方向和速度也没有限定条件。 除此之外,…

做好数据挖掘模型的9条经验总结

爱数据学习社 welcome数据挖掘是利用业务知识从数据中发现和解释知识(或称为模式)的过程,这种知识是以自然或者人工形式创造的新知识。当前的数据挖掘形式,是在20世纪90年代实践领域诞生的,是在集成数据挖掘算法平台发展的支撑下适合商业分析…

数字后端——低功耗设计物理实施

一、低功耗设计方案综述 为了实现集成电路的低功耗设计目标,我们需要在系统设计阶段就采用低功耗设计方案,因为随着设计流程的逐步推进,到了芯片设计实现阶段,降低芯片功耗的方法将越来越少,可节省功耗的百分比将不断下…

H5项目开发分享——用Canvas合成文字

以前曾用Canvas合成、裁剪、图片等《用H5中的Canvas等技术制作海报》。这次用Canvas来画文字。 下图中“老王考到驾照后”这几个字是画在Canvas上的,与在PS中打入的字非常接近,毫无违和感。 前面一段时间也在研读JavaScript设计模式相关的知识&#xff0…

CMOS图像传感器——SNR计算

图像质量评价在计算机视觉,人工智能,高清视频传输上面有很广泛的应用。目前,图像质量评价主要分为三个方向,有参考图像的质量评价,半参考的图像质量评价,以及无参考的图像质量评价。许多时候,我们利用CIS采集的RAW DATA本身就是含噪信号,因为我们往往不知道感兴趣的像素…

Java this 关键字的用法

this 关键字的用法 this 在类中就是代表当前对象,可以通过 this 关键字完成当前 对象的成员属性、成员方法和构造方法的调用。 那么何时用 this? 当在定义类中的方法时,如果需要调用该类对象,就可以用 this 来表示这个对象。也就是说&#x…

数字图像处理——中值滤波及其改进算法

一、算法介绍 中值滤波器是非线性滤波器的一个例子,它在保留图像特征方面非常有效。 但是,滤波器的窗口大小直接影响中值滤波器的性能。 较小的窗口保留了特征,但会导致噪声抑制的减少。 在较大窗口的情况下,噪声抑制很高&#xf…

环信快速集成,以及实际集成中遇到的坑

一.pod集成遇到的问题 1.直接pod 安装 pod EaseUI, :git > https://github.com/easemob/easeui-ios-hyphenate-cocoapods.git 在这个过程中,如果你pod已经安装了sdwebimage,mjrefresh等他自身包含的三方,就需要在你的podfile里面把这个给删…

用NPOI从DataBase到Excel '2

NPOI的C# Helper代码2 1 public static MemoryStream ExportXls(DataTable dt)2 {3 HSSFWorkbook wk new HSSFWorkbook();4 ISheet sheet null;5 6 string sheetName "Sheet1";7 if (!string.Is…

CMOS图像传感器——噪声模型

由于CMOS图像传感噪声的复杂性和不可控性,学者们一直在寻求一种能对其比较精确表的噪声模型。在图像降噪领域,为了降低算法设计的复杂度,人们普遍采用基于信道相关噪声的模型(即加性噪声),但其缺点就是不能精确地表示传感器的噪声。于是Hirakawa提出了一 种精确CMOS传感器…

TCp传输粘包问题

解决TCP网络传输“粘包”问题 当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协 议:TCP和UDP。其中TCP(transport control protocol,传…

AtomicIntegerArray和AtomicIntegerFieldUpdater

2019独角兽企业重金招聘Python工程师标准>>> AtomicIntegerArray 对int数组中元素的操作不是原子性的,所以存在并发操作时,我们应该使用AtomicIntegerArray类来代替int数组。 下面是验证演示代码: public class AtomicIntegerArra…

CMOS图像传感器——高动态范围

动态范围是CMOS 图像传感器中很重要的一项评价指标。动态范围指示了CMOS 图像传感器能够在同一帧图像中同时探测到的最大光强信号和最小光强信号的范围。动态范围通常用dB 形式来表示,其计算公式如下 其中Pmax 和Pmin 分别是最大非饱和光强与最小可探测光强。对于线性…

《Linux内核设计与实现》读书笔记(七)- 中断处理

中断处理一般不是纯软件来实现的,需要硬件的支持。通过对中断的学习有助于更深入的了解系统的一些底层原理,特别是驱动程序的开发。 主要内容: 什么是中断中断类型中断相关函数中断处理机制中断控制方法总结1. 什么是中断 为了提高CPU和外围硬…