CN118052180A - 一种确定时钟源点的方法、装置、电子设备及存储介质 - Google Patents
一种确定时钟源点的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN118052180A CN118052180A CN202410239717.5A CN202410239717A CN118052180A CN 118052180 A CN118052180 A CN 118052180A CN 202410239717 A CN202410239717 A CN 202410239717A CN 118052180 A CN118052180 A CN 118052180A
- Authority
- CN
- China
- Prior art keywords
- registers
- driving unit
- driving
- register
- circle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000003860 storage Methods 0.000 title claims abstract description 12
- 230000005540 biological transmission Effects 0.000 claims description 40
- 230000008569 process Effects 0.000 claims description 32
- 238000004088 simulation Methods 0.000 claims description 14
- 238000004804 winding Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 7
- 230000003068 static effect Effects 0.000 claims description 7
- 238000000605 extraction Methods 0.000 claims description 3
- 239000000872 buffer Substances 0.000 abstract description 25
- 230000015572 biosynthetic process Effects 0.000 abstract description 10
- 238000003786 synthesis reaction Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 20
- 238000013461 design Methods 0.000 description 12
- 238000003780 insertion Methods 0.000 description 11
- 230000037431 insertion Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003071 parasitic effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/3312—Timing analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请涉及一种确定时钟源点的方法、装置、电子设备及存储介质,属于集成电路领域。方法包括:获取芯片中的功能模块所包含的寄存器集合,其中,每个寄存器集合中的寄存器共用一个时钟源点;按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,得到至少一个寄存器组;在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元;按照驱动单元的特性,对所有的第i级驱动单元进行分组,得到至少一个第i级驱动单元组,i依次取1至n;在每一个第i级驱动单元组中插入用于驱动该驱动单元组的第i+1级驱动单元,直至第i+1级驱动单元的总量为预设值。本申请能够减少时钟树综合时插入的缓冲器的数量,从而降低芯片的功耗。
Description
技术领域
本申请属于集成电路领域,具体涉及一种确定时钟源点的方法、装置、电子设备及存储介质。
背景技术
在大规模集成电路物理设计中,通常采用层次化的设计方法,该方法能够加快时序收敛,缩短设计周期。设计时,通常将集成电路划分为若干个模块(block),对多个模块并行设计和开发,提高集成电路设计效率。如果两个模块不相邻,即该两个模块之间的连接线需要穿过其他模块,则该连接线被称为馈通(feed through)线。当不相邻模块距离较远时,需要在传输信号路径上插入大量的流水线寄存器(pipeline repeater)来保证芯片高频率。
在对模块进行时钟树综合之前,需要先确定时钟源点的位置,之后从时钟源点开始向流水线寄存器做时钟树综合。当前确定时钟源点的方法主要有两种,一种为平均值与中位值法,另一种为递归几何匹配算法。其中,平均值与中位值方法的基本思想是:递归地将时钟线网端点集合S,分割为两个基数相等的子集(中位值)S1和S2。然后,将集合的质心连接到两个子集的质心,如原理如图1所示,图1中的每一个白点为一个端点。具体实施方法如下:首先找出所有端点(白点)集合S的质心(黑点,也称中位点),之后用中位值划分S,之后找出左右子集的质心,最后连接子集的质心到S的质心。而递归几何匹配算法的基本思想是:对n个时钟线网端点的集合进行最小代价几何匹配分组,找出N/2个线段的平衡点(在子树中实现零偏斜的点),之后再对N/2个平衡点进行最小代价几何匹配分组,之后在每个新产生的子集上递归执行以上操作,其原理图如图2所示,图2中的白点即为断点,黑点为平衡点。
现有方案均属于二叉树算法,目标在于实现时钟信号的零偏斜,其质量依赖于划分过程中汇点(平衡点或中位点)的选择。如果汇点选择不当,会引入大量的缓冲器,增加功耗。而且实际上由于种种因素不可能实现真正的零偏斜。
发明内容
鉴于此,本申请的目的在于提供一种确定时钟源点的方法、装置、电子设备及存储介质,以减少时钟树综合时插入的缓冲器的数量,从而降低芯片的功耗。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种确定时钟源点的方法,包括:获取芯片中的功能模块所包含的寄存器集合,其中,每个寄存器集合中的寄存器共用一个时钟源点;按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,得到至少一个寄存器组;在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元;按照驱动单元的特性,对所有的第i级驱动单元进行分组,得到至少一个第i级驱动单元组,i依次取1至n,n为最大迭代次数;在每一个第i级驱动单元组中插入用于驱动该驱动单元组的第i+1级驱动单元,直至第i+1级驱动单元的总量为预设值。
本申请实施例中,每个寄存器集合对应一个时钟源点,在确定每个寄存器集合的时钟源点时,按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,然后选取合适的位置插入第i级驱动单元,之后冉钊相同的方法对所有第i级驱动单元进行分组,并确定第i+1级驱动单元的位置,以此类推,逐渐归一化为一点,从而找到时钟源点。在确定时钟源点位置时,会根据寄存器或第i级驱动单元位置,并同时考虑驱动单元的特性,通过将邻近的寄存器或驱动单元进行分组优化,最终确定插入点的位置进而逐渐归一化的找到时钟源点,能最大限度地减少驱动单元插入的数量,有效的降低时钟网络上驱动单元的插入数量导致的局部拥塞,降低功耗。
结合第一方面实施例的一种可能的实施方式,所述驱动单元的特性包括驱动单元的最大传输距离以及最大驱动负载数量;按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,包括:针对每一个寄存器集合,从所述寄存器集合中选取尚未分组的两个寄存器;获取包含所述两个寄存器的最小圆形;在所述最小圆形的直径不小于驱动单元的最大传输距离,或者,所述最小圆形中包含的寄存器的数量不小于驱动单元的最大驱动负载数量时,将所述最小圆形中的寄存器分为一组。
本申请实施例中,通过考虑驱动单元的最大传输距离以及最大驱动负载数量来进行分组,充分利用驱动单元的特征,从而尽可能多的将寄存器分为一组,以此来减少插入的驱动单元数量。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:在所述最小圆形的直径小于驱动单元的最大传输距离,并且,所述最小圆形中包含的寄存器的数量小于驱动单元的最大驱动负载数量时,增大所述最小圆形的直径,直至新圆形的直径不小于驱动单元的最大传输距离,或者,新圆形中包含的寄存器的数量不小于驱动单元的最大驱动负载数量时,将新圆形中的寄存器分为一组。
本申请实施例中,当在最小圆形的直径小于驱动单元的最大传输距离,并且最小圆形中包含的寄存器的数量小于驱动单元的最大驱动负载数量时,通过最小圆形的直径,从而扩大搜索范围,使得圆形可以包含更多的寄存器,从而尽可能多的将寄存器分为一组,以此来减少插入的驱动单元数量。
结合第一方面实施例的一种可能的实施方式,获取包含所述两个寄存器的最小圆形,包括:以所述两个寄存器的中点为圆心,以所述两个寄存器的距离为直径模拟作圆,得到包含所述两个寄存器的最小圆形。
本申请实施例中,以两个寄存器的中点为圆心,以两个寄存器的距离(直线距离)为直径模拟作圆,这样可以快速得到包含两个寄存器的最小圆形,以便于后续进行分组。
结合第一方面实施例的一种可能的实施方式,在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元,包括:针对每一个寄存器组,获取包含所述寄存器组中的寄存器的最小长方形;在所述最小长方形的中心位置插入用于驱动该寄存器组的第1级驱动单元。
本申请实施例中,获取包含寄存器组中的寄存器的最小长方形,在最小长方形的中心位置插入用于驱动该寄存器组的第1级驱动单元,这样使得驱动每个寄存器的驱动能力大致相同,有利于提高信号传输的质量。
结合第一方面实施例的一种可能的实施方式,获取芯片中的功能模块所包含的寄存器集合之前,所述方法还包括:获取芯片中的功能模块所包含的寄存器;按照位置对寄存器进行分组,得到多个寄存器集合。
本申请实施例中,按照位置对寄存器进行分组,将功能模块所包含的寄存器分为多个集合,并对每个集合确定一个的时钟源点,从而实现根据寄存器的位置来确定时钟源点,不再是将时钟源点放在模块的中间,以实现零偏斜。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:针对指定工艺库,用不同的绕线组合、不同的驱动单元,搭建组合电路,并模拟真实绕线后的组合电路;用RC工具对模拟真实绕线后的组合电路进行RC抽取,生成SPEF文件;基于SPEF文件、工艺参数文件以及时序约束文件进行静态时序仿真;基于静态时序仿真结果,获取该指定工艺库下特定驱动单元的最大传输距离与最大驱动负载数量。
在本申请实施例中,通过使用不同的绕线组合(宽度,间距,线长)、不同的驱动单元,来搭建不同的组合电路,进而确定出指定工艺库下特定驱动单元的最大传输距离与最大驱动负载数量,以便于后续以此来对寄存器或第i级确定单元进行分组,通过将绕线组合等也考虑在内,进而可以进一步减少驱动单元插入的数量,有效的降低时钟网络上驱动单元的插入数量导致的局部拥塞,降低功耗。
第二方面,本申请实施例还提供了一种确定时钟源点的装置,包括:获取模块、分组模块以及插入模块;获取模块,用于获取芯片中的功能模块所包含的寄存器集合,其中,每个寄存器集合中的寄存器共用一个时钟源点;分组模块,用于按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,得到至少一个寄存器组;插入模块,用于在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元;所述分组模块,还用于按照驱动单元的特性,对所有的第i级驱动单元进行分组,得到至少一个第i级驱动单元组,i依次取1至n,n为最大迭代次数;所述插入模块,还用于在每一个第i级驱动单元组中插入用于驱动该驱动单元组的第i+1级驱动单元,直至第i+1级驱动单元的总量为预设值。
第三方面,本申请实施例还提供了一种电子设备,包括:存储器和处理器,所述处理器与所述存储器连接;所述存储器,用于存储程序;所述处理器,用于调用存储于所述存储器中的程序,以执行如上述第一方面实施例和/或结合上述第一方面实施例的任一种可能的实施方式提供的方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述第一方面实施例和/或结合上述第一方面实施例的任一种可能的实施方式提供的方法。
上述第二方面实施例~第四方面实施例的有益效果与前述第一方面实施例的有益效果相同。
本申请的其他特征和优点将在随后的说明书阐述。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。
图1为现有技术中利用平均值与中位值法确定时钟源点位置的原理示意图。
图2为现有技术中利用递归几何匹配算法确定时钟源点位置的原理示意图。
图3示出了本申请实施例提供的一种确定时钟源点的方法的流程示意图。
图4示出了本申请实例提供的一种将模块中的寄存器分为2个集合的示意图。
图5a示出了在图4所示的block中间设置时钟源点,并进行时钟树综合的示意图。
图5b示出了在图4所示的block中从两个时钟源点分别向相应的寄存器做时钟树综合的示意图。
图6示出了本申请实施例提供的一种对寄存器集合进行分组的原理示意图。
图7示出了本申请实施例提供的一种扩大圆形直径的原理示意图。
图8示出了本申请实施例提供的一种插入驱动单元的原理示意图。
图9示出了本申请实施例提供的一种确定时钟源点的方法原理示意图。
图10示出了本申请实施例提供的一种所有寄存器连接到同一个时钟源点的原理示意图。
图11示出了本申请实施例提供的一种确定时钟源点的装置的模块示意图。
图12示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。以下实施例可作为示例,用于更加清楚地说明本申请的技术方案,而不能以此来限制本申请的保护范围。本领域技术人员可以理解的是,在不相冲突的情况下,下述实施例及实施例中的特征可以相互结合。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本申请实施例的描述中,除非另有明确的规定和限制,技术术语“连接”可以是直接电性连接,也可以是通过中间媒介间接电性连接。
现有方案通常是将时钟源点放在block(模块)中间以达到时钟网络的零偏斜。然而流水线寄存器为了规避block自身逻辑,通常靠近block边界摆放。如果仍旧将时钟源点放在block中间,那么流水线寄存器距离时钟源点较远,之后从时钟源点向流水寄存器做时钟树综合的阶段,势必会导致时钟网络上插入大量的缓冲器,从而加大芯片的功耗。
因此,针对寄存器这种排布不均匀的情况,全局零偏斜会造成插入的缓冲器数量过多。本申请实施例提供了一种根据寄存器的位置确定时钟源点位置的方法,之后从确定的时钟源点开始做时钟树综合,可以减少插入的缓冲器数量,从而达到降低时钟网络功耗的目的。
下面将结合图3对本申请实施例提供的确定时钟源点的方法的原理进行说明。
S1:获取芯片中的功能模块所包含的寄存器集合。
一个完整芯片(集成电路)涉及很多功能模块,为了加快设计进程,通常会由不同设计人员或团队,并行对每个功能模块进行单独设计,不同的设计人员或团队负责不同功能模块的设计。
集成电路设计通常涉及以下几个步骤:设计的初始阶段、验证和仿真、物理设计阶段、再次验证、实际制造阶段等。其中,物理设计阶段是将逻辑设计转换为实际的物理结构。它包括布局设计(包含布局规划、布局)、时钟树综合、布线等过程。物理设计的目标是确保芯片的物理连接符合电气和时序要求。其中,在完成模块布局之后,在对模块进行时钟树综合之前,需要先确定时钟源点的位置,本申请所示的方法就发生在这一阶段。当需要确定时钟源点的位置时,获取芯片中的功能模块所包含的寄存器集合,其中,芯片中的功能模块可以包含一个或多个寄存器集合,每个寄存器集合中的寄存器共用一个时钟源点。
一种实施方式下,可以事先将功能模块所包含的寄存器进行分组,将得到的寄存器集合存储到数据库中,后续待需要确定时钟源点的位置时,直接从数据库获取芯片中的功能模块所包含的寄存器集合即可。
一种可选实施方式下,在S1之前,该方法还包括:获取芯片中的功能模块所包含的寄存器;按照位置对寄存器进行分组,得到多个寄存器集合。在对寄存器进行分组时,可以是按照寄存器的位置进行分组,将位置在一定范围内的多个寄存器分为一个集合。例如,可以是将模块中已有的时钟相应寄存器分为一个集合,将新插入的流水线寄存器(通常靠近block边界摆放)分为一个集合,如图4所示,三角形点集代表block中原本存在的时钟相应寄存器,圆形点集代表新插入的流水线寄存器。显而易见,如果将时钟源点设在block中间如图5a所示,会加大时钟树综合的开销,增大功耗。所以此种情况分别对两个点集(三角形与圆形)找相应的时钟源点,如图5b所示,从两个时钟源点分别向相应的寄存器做时钟树,之后从顶层将H树连接在一起。其中,图5a中的O代表时钟源点,图5b中的O1代表三角形集合的时钟源点,图5b中的O2代表原形集合的时钟源点。
其中,图4、图5a、图5b中的每一个三角形、圆形均代表一个寄存器。
S2:按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,得到至少一个寄存器组。
在获取到芯片中的功能模块所包含的寄存器集合后,按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,得到至少一个寄存器组。其中,驱动单元的特性包括驱动单元的最大传输距离以及最大驱动负载数量。本申请实施例中,针对每一个寄存器集合,按照驱动单元的特性来对其进行分组,将其进一步拆分为至少一个寄存器组,以最大限度的减少插入驱动单元的数量,有效的降低时钟网络上驱动单元的插入数量导致的局部拥塞,降低功耗。
一种可选的实施方式下,按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组的过程可以是:针对每一个寄存器集合,从寄存器集合中选取尚未分组的两个寄存器;获取包含两个寄存器的最小圆形(为虚拟圆形);在最小圆形的直径不小于驱动单元的最大传输距离,或者,最小圆形中包含的寄存器的数量不小于驱动单元的最大驱动负载数量时,将最小圆形中的寄存器分为一组。在一些实施方式下,在最小圆形的直径小于驱动单元的最大传输距离,并且,最小圆形中包含的寄存器的数量小于驱动单元的最大驱动负载数量时,增大最小圆形的直径,直至新圆形的直径不小于驱动单元的最大传输距离,或者,新圆形中包含的寄存器的数量不小于驱动单元的最大驱动负载数量时,将新圆形中的寄存器分为一组。按照上述原理进行分组,直至寄存器集合中的每个寄存器均已完成分组。
为了更好理解,下面结合图6所示的原理图,对上述的分组过程进行说明。先从寄存器集合中选取尚未分组的两个寄存器,例如,可以是选取寄存器集合中距离原点坐标最近的2个寄存器(假设为A、B两点),之后获取包含(或覆盖)这两个寄存器的最小圆形,然后判断圆形的直径是否小于驱动单元的最大传输距离,如果圆形的直径不小于驱动单元的最大传输距离,则将圆形中的寄存器分为一组,如果圆形的直径小于驱动单元的最大传输距离,则进一步判断圆形中包含的寄存器的数量是否小于驱动单元的最大驱动负载数量,如果圆形中包含的寄存器的数量不小于驱动单元的最大驱动负载数量,则将圆形中的寄存器分为一组。在圆形的直径小于驱动单元的最大传输距离,并且,圆形中包含的寄存器的数量小于驱动单元的最大驱动负载数量时,增大最小圆形的直径,从而扩大搜索范围,使得圆形可以包含更多的寄存器,之后,重复上述的判断过程,直至新圆形的直径不小于驱动单元的最大传输距离,或者,新圆形中包含的寄存器的数量不小于驱动单元的最大驱动负载数量时,将新圆形中的寄存器分为一组。之后,判断是否所有寄存器都分组完毕,如果没有分组完毕,则重复图6的分组过程,直至寄存器集合中的每个寄存器均已完成分组。
在一些实施方式下,获取包含两个寄存器的最小圆形的过程可以是:以两个寄存器的中点为圆心,以两个寄存器的距离为直径模拟作圆,得到包含两个寄存器的最小圆形。这样可以快速得到包含两个寄存器的最小圆形。
下面结合图7,对图4中的圆形点集进行分组的过程进行说明,在从寄存器集合中选取尚未分组的两个流水线寄存器(假设为A、B两点)后,连接A、B两点,取其中点为P,以点P为圆心,以点A、B连线为直径成圆,得到覆盖两点的最小圆,并判断其直径是否小于最大传输距离,以及判断当前圆形覆盖的寄存器数量是否小于最大驱动负载数量,若以上两个条件都满足,则扩大圆半径继续寻找邻近的寄存器,以覆盖更多的寄存器,直至不满足以上两个条件中的任一条件,则停止寻点,直到将所有的寄存器以这样的方式分组完毕。例如,图7中的第(1)阶段,在得到包含A、B两点的圆形后,如果当前圆形直径小于最大传输距离,以及当前圆形覆盖的寄存器数量小于最大驱动负载数量,则扩大圆形范围,寻找与其两点(A和B)中任意一点邻近的点,如点C,进入图7中的第(2)阶段,如果当前圆形直径小于最大传输距离,以及当前圆形覆盖的寄存器数量小于最大驱动负载数量,则继续扩大圆形范围,寻找第4个点,如点D,之后如果还不满足要求,则继续扩大范围,寻找更多的点,进入图7中的第(3)阶段,以此类推,直至所有的寄存器均完成分组。
在扩大圆形范围时,如果已经没有多余的点,则不再继续扩大范围,即使当前圆形的直径小于驱动单元的最大传输距离,或者,圆形中包含的寄存器的数量小于驱动单元的最大驱动负载数量时,也直接将其包含的寄存器分为一组。
其中,在扩大圆形范围时,可以是单纯的扩大圆形直径(圆心不变),也可以是调整圆心位置,并扩大圆形直径。需要说明的是,上述的圆形为模拟的圆形,并不是真实的圆形,实际处理过程中,并不存在作圆,但会模拟作圆的动作。
其中,驱动单元的最大传输距离以及最大驱动负载数量需要事先确定,可以通过实验获得,不同的驱动单元的特性可能不同,即不同的驱动单元最大传输距离以及最大驱动负载数量可能不同。针对同一种驱动单元,如缓冲器,缓冲器所使用的工艺和库文件不同,对应的特性也不同,例如,库文件中有x1、x2、x4、x6、x8的buffer(缓冲器),其中,数字x1、x2、x4、x6、x8代表buffer的不同驱动能力。具体选择何种驱动单元,可以根据需要来定。其中,驱动单元可以包括缓冲器、反相器等。
一种可选实施方式下,可以通过如下方式,确定驱动单元的特性,在该种实施方式下,方法还包括:针对指定工艺库,用不同的绕线组合(宽度,间距,线长)、不同的驱动单元,搭建多个组合电路,并模拟真实绕线后的组合电路;用RC(电阻R、电容C)工具对模拟真实绕线后的每一个组合电路进行RC抽取,生成寄生参数文件(Standard Parasitic ExchangeFormat,SPEF)文件;基于SPEF文件、工艺参数文件(如lib文件或db文件)以及时序约束文件进行静态时序仿真;基于静态时序仿真结果,获取该指定工艺库下特定驱动单元的最大传输距离与最大驱动负载数量。
其中,每一个组合电路包含用传输线串联的多个驱动单元,每个组合电路中的驱动单元数量相同,任意两个组合电路中可以只有一个变量(宽度,间距,线长或驱动单元)不同。
例如,针对指定工艺,用不同的绕线组合(宽度,间距,线长)、不同的缓冲器,用穷举法在ICC2工具中搭建所有的组合电路,并模拟真实绕线后的环境。假设每一个组合电路包含用传输线串联的6个缓冲器,连接6个缓冲器的传输线的宽度、线长,以及6个缓冲器的间距可以不同。之后,用StarRC工具抽取每个组合电路的SPEF文件,结合工艺参数文件以及时序约束文件,利用PT时序工具进行静态时序仿真,得到多个仿真结果,如一个组合电路对应一个仿真结果,根据每一个仿真结果,找出符合传输串扰要求的指定驱动单元的最大传输距离与最大驱动负载数量,之后再从多个最大传输距离与最大驱动负载数量中选取出指定驱动单元(用户所需的驱动单元)的最大传输距离与最大驱动负载数量。其中,特定驱动单元为用户需要的驱动单元。
S3:在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元。
在对每一个寄存器集合进行分组得到至少一个寄存器组后,在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元,例如,插入第1级缓冲器。
由于在寄存器分组时,是将同一个圆形覆盖(包含)的寄存器分为一组,因此,在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元时,一种可能的方式下,可以是该寄存器组所在圆形的圆心位置插入第1级驱动单元。
一种可选实施方式下,在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元的过程可以是:针对每一个寄存器组,获取包含寄存器组中的寄存器的最小长方形(为虚拟长方形),在最小长方形的中心位置插入用于驱动该寄存器组的第1级驱动单元。假设一个寄存器集合被分为3个寄存器组,则需要插入3个第1级驱动单元,其原理图如图8所示,图8中的11、12、13均为插入的第1级驱动单元。假设一个寄存器集合被分为4个寄存器组,则需要插入4个第1级驱动单元,以此类推。
需要说明的是,上述的长方形为模拟的长方形,并不是真实的长方形,实际处理过程中,并不存在画长方形,但会模拟画长方形的动作。
S4:按照驱动单元的特性,对所有的第i级驱动单元进行分组,得到至少一个第i级驱动单元组,i依次取1至n,n为最大迭代次数。
S5:在每一个第i级驱动单元组中插入用于驱动该驱动单元组的第i+1级驱动单元,直至第i+1级驱动单元的总量为预设值。
在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元后,会得到至少一个第1级驱动单元,之后,将按照驱动单元的特性,对所有的第1级驱动单元进行分组,得到至少一个第1级驱动单元组。对所有的第1级驱动单元进行分组的过程与上述对寄存器集合中的寄存器进行分组的过程一样,例如,将对应同一个寄存器集合的第1级驱动单元看作一个集合,之后按照图6所示的原理对其进行分组,得到至少一个第1级驱动单元组。之后,在每一个第1级驱动单元组中插入用于驱动该驱动单元组的第2级驱动单元,如果第2级驱动单元的数量不为预设值,如1,则继续按照驱动单元的特性,对所有的第2级驱动单元进行分组,得到至少一个第2级驱动单元组,之后在每一个第2级驱动单元组中插入用于驱动该驱动单元组的第3级驱动单元,如果第3级驱动单元的数量不为预设值,则继续重复上述过程,直至第i+1级驱动单元的总量为预设值,如1。这样针对每一个寄存器集合,就可以确定到唯一的时钟源点位置,即最后一级驱动单元的位置。
其中,i依次取1至n,n为最大迭代次数,上述的S4~S5即为一次迭代过程,执行一次S4~S5,即为迭代一次。需要说明的是,最后一级插入的驱动单元与最后一级之前插入的驱动单元可以相同,例如,最后一级插入的驱动单元和最后一级之前插入的驱动单元均可以同为缓冲器或同为反相器等。
以驱动单元为缓冲器为例,上述过程的原理,可以如图9所示,提取所有第i级缓冲器位置,组成新的集合,遍历新的集合,选取第i+1级缓冲器位置(在该过程中,会涉及对第i级缓冲器进行分组),判断该第i+1级缓冲器位置能否将所有第i级缓冲器归一化到一点,否则继续重复上述过程。本申请的主要思路是,对共用一个时钟源点的寄存器集合进行分组,然后选取合适的位置插入level1缓存器驱动该组寄存器。然后按照相同的方法对level1缓存器进行分组并确定level2缓存器位置。以此类推,逐渐归一化为一点,从而找到时钟源点。
为了更好理解,结合图10进行说明,图10中的点2即为时钟源点,通过驱动缓冲器11、缓冲器12、缓冲器13、缓冲器14,进而实现对整个寄存器的驱动。
本申请根据寄存器位置并同时考虑驱动单元的特性,通过将邻近的寄存器或驱动单元进行分组优化,最终确定插入点的位置进而逐渐归一化的找到时钟源点,能最大限度地减少驱动单元插入的数量,有效的降低时钟网络上驱动单元的插入数量导致的局部拥塞,降低功耗。该方法可以对现有方案进行补充和优化。
本申请实施例还提供了一种确定时钟源点的装置100,如图11所示,该确定时钟源点的装置100包括获取模块110、分组模块120以及插入模块130。
获取模块110,用于获取芯片中的功能模块所包含的寄存器集合,其中,每个寄存器集合中的寄存器共用一个时钟源点。
分组模块120,用于按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,得到至少一个寄存器组。
插入模块130,用于在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元。
所述分组模块120,还用于按照驱动单元的特性,对所有的第i级驱动单元进行分组,得到至少一个第i级驱动单元组,i依次取1至n,n为最大迭代次数。
所述插入模块130,还用于在每一个第i级驱动单元组中插入用于驱动该驱动单元组的第i+1级驱动单元,直至第i+1级驱动单元的总量为预设值。
可选地,获取模块110,还用于获取芯片中的功能模块所包含的寄存器;按照位置对寄存器进行分组,得到多个寄存器集合。
可选地,分组模块120,具体用于针对每一个寄存器集合,从所述寄存器集合中选取尚未分组的两个寄存器;获取包含所述两个寄存器的最小圆形;在所述最小圆形的直径不小于驱动单元的最大传输距离,或者,所述最小圆形中包含的寄存器的数量不小于驱动单元的最大驱动负载数量时,将所述最小圆形中的寄存器分为一组。
可选地,分组模块120,具体用于在所述最小圆形的直径小于驱动单元的最大传输距离,并且,所述最小圆形中包含的寄存器的数量小于驱动单元的最大驱动负载数量时,增大所述最小圆形的直径,直至新圆形的直径不小于驱动单元的最大传输距离,或者,新圆形中包含的寄存器的数量不小于驱动单元的最大驱动负载数量时,将新圆形中的寄存器分为一组。
可选地,分组模块120,具体用于以所述两个寄存器的中点为圆心,以所述两个寄存器的距离为直径模拟作圆,得到包含所述两个寄存器的最小圆形。
可选地,插入模块130,具体用于针对每一个寄存器组,获取包含所述寄存器组中的寄存器的最小长方形;在所述最小长方形的中心位置插入用于驱动该寄存器组的第1级驱动单元。
本申请实施例所提供的确定时钟源点的装置100,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
如图12所示,图12示出了本申请实施例提供的一种电子设备200的结构框图。所述电子设备200包括:收发器210、存储器220、通讯总线230以及处理器240。
所述收发器210、所述存储器220、处理器240各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线230或信号线实现电性连接。其中,收发器210用于收发数据。存储器220用于存储计算机程序,如存储有图11中所示的软件功能模块,即确定时钟源点的装置100。其中,确定时钟源点的装置100包括至少一个可以软件或固件(Firmware)的形式存储于所述存储器220中或固化在所述电子设备200的操作系统(Operating System,OS)中的软件功能模块。所述处理器240,用于执行存储器220中存储的可执行模块,例如确定时钟源点的装置100包括的软件功能模块或计算机程序。例如,处理器240,用于执行上述的确定时钟源点的方法。
其中,存储器220可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器240可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)、微处理器等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。或者该处理器240也可以是任何常规的处理器等。
其中,上述的电子设备200,包括但不限于计算机、服务器等。
本申请实施例还提供了一种非易失性的计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备200运行时,执行上述所示的确定时钟源点的方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者电子设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的计算机可读存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种确定时钟源点的方法,其特征在于,包括:
获取芯片中的功能模块所包含的寄存器集合,其中,每个寄存器集合中的寄存器共用一个时钟源点;
按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,得到至少一个寄存器组;
在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元;
按照驱动单元的特性,对所有的第i级驱动单元进行分组,得到至少一个第i级驱动单元组,i依次取1至n,n为最大迭代次数;
在每一个第i级驱动单元组中插入用于驱动该驱动单元组的第i+1级驱动单元,直至第i+1级驱动单元的总量为预设值。
2.根据权利要求1所述的方法,其特征在于,所述驱动单元的特性包括驱动单元的最大传输距离以及最大驱动负载数量;按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,包括:
针对每一个寄存器集合,从所述寄存器集合中选取尚未分组的两个寄存器;
获取包含所述两个寄存器的最小圆形;
在所述最小圆形的直径不小于驱动单元的最大传输距离,或者,所述最小圆形中包含的寄存器的数量不小于驱动单元的最大驱动负载数量时,将所述最小圆形中的寄存器分为一组。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述最小圆形的直径小于驱动单元的最大传输距离,并且,所述最小圆形中包含的寄存器的数量小于驱动单元的最大驱动负载数量时,增大所述最小圆形的直径,直至新圆形的直径不小于驱动单元的最大传输距离,或者,新圆形中包含的寄存器的数量不小于驱动单元的最大驱动负载数量时,将新圆形中的寄存器分为一组。
4.根据权利要求2所述的方法,其特征在于,获取包含所述两个寄存器的最小圆形,包括:
以所述两个寄存器的中点为圆心,以所述两个寄存器的距离为直径模拟作圆,得到包含所述两个寄存器的最小圆形。
5.根据权利要求1所述的方法,其特征在于,在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元,包括:
针对每一个寄存器组,获取包含所述寄存器组中的寄存器的最小长方形;
在所述最小长方形的中心位置插入用于驱动该寄存器组的第1级驱动单元。
6.根据权利要求1所述的方法,其特征在于,获取芯片中的功能模块所包含的寄存器集合之前,所述方法还包括:
获取芯片中的功能模块所包含的寄存器;
按照位置对寄存器进行分组,得到多个寄存器集合。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对指定工艺库,用不同的绕线组合、不同的驱动单元,搭建组合电路,并模拟真实绕线后的组合电路;
用RC工具对模拟真实绕线后的组合电路进行RC抽取,生成SPEF文件;
基于SPEF文件、工艺参数文件以及时序约束文件进行静态时序仿真;
基于静态时序仿真结果,获取该指定工艺库下特定驱动单元的最大传输距离与最大驱动负载数量。
8.一种确定时钟源点的装置,其特征在于,包括:
获取模块,用于获取芯片中的功能模块所包含的寄存器集合,其中,每个寄存器集合中的寄存器共用一个时钟源点;
分组模块,用于按照驱动单元的特性,对每个寄存器集合中的寄存器进行分组,得到至少一个寄存器组;
插入模块,用于在每一个寄存器组中插入用于驱动该寄存器组的第1级驱动单元;
所述分组模块,还用于按照驱动单元的特性,对所有的第i级驱动单元进行分组,得到至少一个第i级驱动单元组,i依次取1至n,n为最大迭代次数;
所述插入模块,还用于在每一个第i级驱动单元组中插入用于驱动该驱动单元组的第i+1级驱动单元,直至第i+1级驱动单元的总量为预设值。
9.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器与所述存储器连接;
所述存储器,用于存储程序;
所述处理器,用于调用存储于所述存储器中的程序,以执行如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410239717.5A CN118052180A (zh) | 2024-03-01 | 2024-03-01 | 一种确定时钟源点的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410239717.5A CN118052180A (zh) | 2024-03-01 | 2024-03-01 | 一种确定时钟源点的方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118052180A true CN118052180A (zh) | 2024-05-17 |
Family
ID=91053386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410239717.5A Pending CN118052180A (zh) | 2024-03-01 | 2024-03-01 | 一种确定时钟源点的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118052180A (zh) |
-
2024
- 2024-03-01 CN CN202410239717.5A patent/CN118052180A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5179699A (en) | Partitioning of sorted lists for multiprocessors sort and merge | |
JPH03156572A (ja) | 論理回路比較検証システムおよび方法 | |
CN109885614B (zh) | 一种数据同步的方法和装置 | |
US8788990B2 (en) | Reuse of circuit labels in subcircuit recognition | |
CN112181430B (zh) | 代码变更统计方法、装置、电子设备及存储介质 | |
CN117057290A (zh) | 时序优化方法、装置、电子设备及存储介质 | |
CN103345519A (zh) | 无共享分布式数据库的数据分布的方法和装置 | |
US6904584B2 (en) | Method and system for placing logic nodes based on an estimated wiring congestion | |
CN112232010B (zh) | 可编程逻辑器件分组方法和装置 | |
CN118052180A (zh) | 一种确定时钟源点的方法、装置、电子设备及存储介质 | |
US20090217214A1 (en) | Unidirectional relabeling for subcircuit recognition | |
CN116167330A (zh) | 时钟树综合方法、装置、电子设备及计算机可读存储介质 | |
US20020100008A1 (en) | Method for min-cut and ratio min-cut partitioning | |
CN113255265B (zh) | 分割及验证方法、装置、电子设备、存储介质 | |
CN107122242B (zh) | 一种有效提升分布式运算性能的大数据均衡切片方法 | |
CN114595215A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113191405B (zh) | 一种基于集成电路的带权超图的多级聚类方法及存储介质 | |
US20180307782A1 (en) | Circuit encoding method and circuit structure recognition method | |
CN114156864B (zh) | 光伏逆变器配置方法、装置、终端及存储介质 | |
US10824609B2 (en) | Method for storing a sequence of data records in a database and cooking recipe tool with a storage unit for a database | |
CN112749526A (zh) | 电源轨设计方法、装置及其非瞬时计算机可读介质 | |
CN118586338B (zh) | 一种现场可编程门阵列同时装箱布局的方法及装置 | |
CN115658730B (zh) | 稀疏数据的查询方法、装置、设备和计算机可读存储介质 | |
Cai et al. | A fast hypergraph bipartitioning algorithm | |
JP3251792B2 (ja) | 回路ネットワーク分割方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |