一种时钟树综合方法以及计算机可读存储介质与流程

文档序号:16248910发布日期:2018-12-11 23:50阅读:173来源:国知局
一种时钟树综合方法以及计算机可读存储介质与流程

本发明涉及芯片设计技术领域,尤其涉及一种时钟树综合方法以及计算机可读存储介质。

背景技术

在数字集成电路中,时钟信号作为整个芯片的时序参考,对芯片的性能和工作稳定性起着至关重要的作用。时序收敛是数字集成电路设计中最重要的任务之一。随着集成电路设计进入了深亚微米时代,芯片规模不断增加,设计日趋复杂,时序收敛的难度也随之越来越大。

层次化设计是一种最常用的集成电路的芯片的设计方法,在该设计方法中,要设计的芯片被划分成了很多子模块,每个子模块单独设计,然后被顶层模块调用,这种设计方法将庞大而复杂的设计在物理设计阶段分割成数个分割块(partition),对各个子模块单独进行时钟树平衡,全芯片只需要关注子模块接口处的寄存器的时钟延迟即可,这样能使设计的周期显著提高,并使时序问题局部化。

但是,现有数字设计实现(encounterdigitalimplementation,edi)工具报出子模块中的所有寄存器的时钟延迟,并给出时钟延迟的最大值和最小值,统计出来的数据与寄存器真实的时钟延迟有一定的偏差,由此造成反标给顶层的时钟延迟数值失真,导致全芯片全局时钟树平衡的时钟延迟在全芯片寄存器和子模块寄存器之间长短不一,出现大量时序违例。



技术实现要素:

为了解决上述技术问题,本发明提供了一种时钟树综合方法以及计算机可读存储介质,能够加快全芯片时序收敛的速度并缩短设计周期。

为了达到本发明目的,本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种时钟树综合方法,包括:

全芯片中的子模块做完时钟树平衡后,获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟,计算获取的时钟延迟的若干个统计值;

子模块选取时钟延迟的一个统计值反标给全芯片,指导全芯片进行全局时钟树平衡。

进一步地,所述获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟包括:

所述子模块生成所有与端口相关的时序路径,并从所述时序路径中选出所述和顶层模块有时序检查的寄存器在子模块内部的时钟延迟。

进一步地,所述时钟延迟的若干个统计值包括最大值、最小值、平均值和分布区间。

进一步地,所述方法之前还包括:

将所述全芯片分为若干个所述子模块和一个所述顶层模块;

所述各个子模块单独进行时钟树平衡。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现以下步骤:

全芯片中的子模块做完时钟树平衡后,获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟,计算获取的时钟延迟的若干个统计值;

子模块选取时钟延迟的一个统计值反标给全芯片,指导全芯片进行全局时钟树平衡。

进一步地,所述获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟的步骤之前,所述一个或者多个程序还可被所述一个或者多个处理器执行,以实现以下步骤:

所述子模块生成所有与端口相关的时序路径,并从所述时序路径中选出所述和顶层模块有时序检查的寄存器在子模块内部的时钟延迟。

进一步地,所述时钟延迟的若干个统计值包括最大值、最小值、平均值和分布区间。

进一步地,所述全芯片中的子模块做完时钟树平衡后的步骤之前,所述一个或者多个程序还可被所述一个或者多个处理器执行,以实现以下步骤:

将所述全芯片分为若干个所述子模块和一个所述顶层模块;

所述各个子模块单独进行时钟树平衡。

本发明的技术方案,具有如下有益效果:

本发明提供的时钟树综合方法以及计算机可读存储介质,通过获取子模块和顶层模块接口处寄存器在子模块内部的时钟延迟(clocklatency)数值,反标给全芯片进行全局时钟树平衡(clocktreebalance),忽略了子模块内部与顶层模块没有逻辑交互的大量无关寄存器的时钟延迟,提高了反标数值的准确性,使得子模块和顶层模块接口处不会出现大量的时序违例,加快了全芯片时序收敛的速度,缩短了设计周期。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为现有的时钟树平衡原理示意图;

图2为本发明实施例的一种时钟树综合方法的流程示意图;

图3为本发明实施例中子模块端口处的时序检查示意图;

图4为本发明实施例中全芯片和子模块接口处的时钟延迟示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

一个芯片设计中通常存在大量的寄存器,寄存器是时钟沿触发的时序单元,离不开时钟信号。时钟信号要驱动与之相关的所有寄存器,时钟信号到达寄存器的时间我们称之为时钟延迟(clocklatency),如图1所示,一个理想的时钟树平衡是到达每个寄存器的时钟延迟一样大。

如图2所示,根据本发明的一种时钟树综合方法,包括如下步骤:

步骤201:全芯片中的子模块做完时钟树平衡后,获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟,计算获取的时钟延迟的若干个统计值;

进一步地,在所述步骤201之前,所述方法还包括:

将全芯片分为若干个子模块和一个顶层模块,各个子模块单独进行时钟树平衡。

值得说明的是,对做完时钟树综合的子模块来说,时钟信号到各个寄存器的时钟延迟已经确定,子模块内部寄存器到寄存器之间的时序是否能收敛也基本确定,唯一不能确定的时序问题就是子模块和顶层模块接口的地方。因此,本发明只获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟,而忽略子模块内部与顶层模块没有逻辑交互的大量无关寄存器的时钟延迟,从而获得子模块和顶层模块接口处寄存器在子模块内部的真实时钟延时的数值,由于反标数值的准确,全芯片做完时钟树平衡后,子模块和顶层模块接口处不会出现大量时序违例,能够加快全芯片时序收敛的速度并缩短设计周期。

进一步地,所述获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟包括:子模块生成所有与端口相关的时序路径,并从所述时序路径中选出和顶层模块有时序检查的寄存器在子模块内部的时钟延迟。

在本发明一实施例中,如图3所示,第一寄存器ff1和第二寄存器ff2位于子模块内部,并分别使用相互独立的时钟信号clka’与clkb’,din端口为数据输入端口,dout端口为数据输出端口,子模块内的buf为子模块内部做完时钟树平衡后插入的时钟缓冲器。子模块生成所有与端口相关的时序路径,所述时序路径包括din端口到ff1数据输入端(ff1/d)、clka’到ff1时钟输入端(ff1/ck)和clkb’到ff2时钟输入端(ff2/ck),所选出的和顶层模块有时序检查的寄存器为ff1和ff2,其在子模块内部的时钟延迟分别为clka’到ff1/ck的时钟延迟和clkb’到ff2/ck的时钟延迟。

进一步地,所述时钟延迟的若干个统计值包括最大值、最小值、平均值和分布区间。

步骤202:子模块选取时钟延迟的一个统计值反标给全芯片,指导全芯片进行全局时钟树平衡。

需要说明的是,选取时钟延迟的哪一个统计值(最大值、最小值、平均值或分布区间)反标给全芯片,需要使用各个统计值反复进行尝试,并根据尝试后得到的时序结果来决定最终使用哪一个统计值,选择时序结果最接近时钟树平衡的统计值反标给全芯片。或者根据经验,通常选择最大值反标给全芯片。本发明强调的是只获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟,至于步骤202中全芯片如何根据时钟延迟的统计值进行全局时钟树平衡,可以通过现有技术中的时序预算方法实现,本发明对此并不做限制。

如图4所示,第三寄存器ff3和第四寄存器ff4位于子模块外部,第三寄存器ff3和第一寄存器ff1共用时钟信号clka,第四寄存器ff4和第二寄存器ff2共用时钟信号clkb。从步骤203中选出的clka’到ff1/ck的时钟延迟以及clkb’到ff2/ck的时钟延迟反标给全芯片后,通过eda(electronicsdesignautomation)工具自动平衡clka到ff1/ck与clka到ff3时钟输入端(ff3/ck)的时钟延迟,同理可得ff2和ff4之间的时钟树平衡。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现以下步骤:

全芯片中的子模块做完时钟树平衡后,获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟,计算获取的时钟延迟的若干个统计值;

子模块选取时钟延迟的一个统计值反标给全芯片,指导全芯片进行全局时钟树平衡。

进一步地,所述全芯片中的子模块做完时钟树平衡后的步骤之前,所述一个或者多个程序还可被所述一个或者多个处理器执行,以实现以下步骤:

将全芯片分为若干个子模块和一个顶层模块;

各个子模块单独进行时钟树平衡。

值得说明的是,对做完时钟树综合的子模块来说,时钟信号到各个寄存器的时钟延迟已经确定,子模块内部寄存器到寄存器之间的时序是否能收敛也基本确定,唯一不能确定的时序问题就是子模块和顶层模块接口的地方。因此,本发明只获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟,而忽略子模块内部与顶层模块没有逻辑交互的大量无关寄存器的时钟延迟,从而获得子模块和顶层模块接口处寄存器在子模块内部的真实时钟延时的数值,由于反标数值的准确,全芯片做完时钟树平衡后,子模块和顶层模块接口处不会出现大量时序违例,能够加快全芯片时序收敛的速度并缩短设计周期。

进一步地,所述获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟的步骤之前,所述一个或者多个程序还可被所述一个或者多个处理器执行,以实现以下步骤:

子模块生成所有与端口相关的时序路径,并从所述时序路径中选出和顶层模块有时序检查的寄存器在子模块内部的时钟延迟。

在本发明一实施例中,如图3所示,子模块生成所有与端口相关的时序路径,所述时序路径包括din端口到ff1数据输入端(ff1/d)、clka’到ff1时钟输入端(ff1/ck)和clkb’到ff2时钟输入端(ff2/ck),所选出的和顶层模块有时序检查的寄存器为ff1和ff2,其在子模块内部的时钟延迟分别为clka’到ff1/ck的时钟延迟和clkb’到ff2/ck的时钟延迟。

进一步地,所述时钟延迟的若干个统计值包括最大值、最小值、平均值和分布区间。

需要说明的是,选取时钟延迟的哪一个统计值(最大值、最小值、平均值或分布区间)反标给全芯片,需要使用各个统计值反复进行尝试,并根据尝试后得到的时序结果来决定最终使用哪一个统计值,选择时序结果最接近时钟树平衡的统计值反标给全芯片。或者根据经验,通常选择最大值反标给全芯片。本发明强调的是只获取和顶层模块有时序检查的寄存器在子模块内部的时钟延迟,至于全芯片如何根据时钟延迟的统计值进行全局时钟树平衡,可以通过现有技术中的时序预算方法实现,本发明对此并不做限制。

如图4所示,将选出的clka’到ff1/ck的时钟延迟以及clkb’到ff2/ck的时钟延迟反标给全芯片后,通过电子设计自动化(electronicsdesignautomation,eda)工具自动平衡clka到ff1/ck与clka到ff3/ck的时钟延迟,同理可得ff2和ff4之间的时钟树平衡。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1