具体实施方式
下面参照附图来说明本发明的实施例。在下面的说明中,阐述了许多具体细节以便更全面地了解本发明。但是,对于本技术领域内的技术人员明显的是,本发明的实现可不具有这些具体细节中的一些。此外,应当理解的是,本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和要素的任意组合来实施本发明,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。
首先参照附图描述根据本发明的实施例的用于构建用于集成电路设计的时钟树的方法的基本思想。
图3示出了时钟树驱动逻辑器件以及相关时延关系的示意图。如图所示,时钟信号通过包括时钟源、缓冲器buf_0、缓冲器buf_1的时钟路径驱动发送时序器件,通过包括时钟源、缓冲器buf_0、缓冲器buf_2的时钟路径驱动捕获寄存器,发送时序器件输出的数据信号经由组合逻辑传送到捕获寄存器的输入。在该图所示的电路中,为保证器件的正确工作,必须满足以下公式:
L1+Gmax+Tsetup<T+C1
其中,L1是从时钟源到发送寄存器的晚期模式的时延,C1是从时钟源到捕获寄存器的早期模式的时延,Gmax是两个寄存器之间的组合逻辑的晚期模式的时延,Tsetup是建立时间,T为时钟周期。
从以上公式可得:T>(L1-C1)+Gmax+Tsetup。可见,L1和C1之间的差值越小,则所能实现的时钟周期越小,即所能实现的时钟频率越大。在上图中,假定缓冲器buf_1和buf_2是相同类型的缓冲器,有相同的时延。但是在计算L1和C1的时候,buf_1会用晚期模式的时延,即时延上限;buf_2会用早期模式的时延,即时延下限。因为buf_1和buf_2处于不同的路径上。但是buf_0的时延在计算L1和C1时是一样的,因为L1和C1共享了buf_0,而buf_0不可能同时拥有不同的时延。因此可以得到结论,两个有数据传递关系的寄存器,共享的时钟路径(common clock path)越多,L1和C1之间的差值越小,从而对提高时钟频率越有帮助。
在图3所示的电路中,为了保证器件的正确工作,还必须满足以下公式:
L2+Gmin>C2+Thold
其中,L2是从时钟源到发送寄存器的早期模式的时延,C2是从时钟源到捕获寄存器的晚期模式的时延,Gmin是两个寄存器之间的组合逻辑的早期模式的时延。
从以上公式可得:C2-L2<Gmin-Thold。如果C2和L2完全共享时钟路径,那么C2-L2=0,即Gmin>Thold,这是很容易满足的。在计算C2的时候,对于非共享的时钟路径会采用晚期模式的时延;在计算L2的时候,对于非共享的时钟路径会用早期模式的时延。因此,如果C2和L2共享的时钟路径很少,则会导致C2-L2的差值很大,则很难满足C2-L2<Gmin-Thold的时序检查;如果C2-L2的差值超过了时钟周期T,则完全不能满足。这时,同样希望有相关时序检查的时序器件尽可能多地共享时钟路径。
对于集成电路设计中的时序器件(例如,寄存器等)与时序器件之间的每一条数据路径,可得到以下参数:数据路径时延,其可表示为DDly。如果两个时序器件之间没有数据路径,则DDly=0。如果两个时序器件之间存在数据路径,则DDly等于数据信号在该数据路径上传输的时延。两个时序器件之间的数据路径是指两个时序器件之间的直接的数据路径,即由一个时序器件输出的数据经由组合逻辑传送到另一个时序器件的输入。如果两个时序器件之间还包括其他时序器件,则在这两个时序器件并不存在直接的数据路径。该参数可以通过对集成电路设计的网表进行时序分析而得到。
假设已通过时钟树综合将时钟树综合到集成电路设计中,则对于时序器件与时序器件之间的每一条数据路径,可得到以下参数:时钟树分叉权重,其可表示为CKweight。对于给定的时钟树,时序器件与其自身之间的CKweight=0;如果两个时序器件的时钟路径在时钟树的最后一级缓冲器分叉,则CKweight=1;如果两个时序器件的时钟路径在时钟树的倒数第二级时钟缓冲器分叉,则CKweight=2;以此类推。
由于在时钟树综合中,二叉树是被广泛应用的树结构。因此,本发明中假设采用二叉树。图4示出了由一作为二叉树的时钟树驱动时序器件a、b、c、d的示意图。在该图中:
a和b之间的CKweight=1;
a和c之间的CKweight=2;
a和d之间的CKweight=2;
c和d之间的CKweight=1;
任何时序器件到其自身的CKweight=0。
这样,对于集成电路设计中的每两个时序器件之间的路径,可以得到一个乘积:DDly*CKweight。然后,对所有的DDly*CKweight求和。如果该和最小,则认为该时钟树基于最大共享时钟路径是最优的。也就是说,任意两个时序器件之间的路径时延与该两个时序器件的时钟树分叉权重的乘积之和最小化,则时钟路径是最优的,因此,可得到如下公式:
其中,DDly(j,k)为第j和第k的时序器件之间的数据路径时延,CKweight(j,k)为第j和第k个时序器件之间的时钟树分叉权重,且假设集成电路设计中包含n=2t个时序器件。如果集成电路设计中的包含的实际时序器件数m小于2t,则假设存在2t-m个虚拟时序器件,且虚拟时序器件与其他时序器件之间没有数据通路,即DDly=0,这样,实际时序器件与虚拟时序器件的总数仍为n=2t。
这样,为集成电路设计构建最优的时钟树的任务就成为构建一个这样的时钟树,使其CKweight(j,k)与相应的DDly(j,k)的乘积的和即MinF最小。
可以采用多种方法来获得使所述MinF最小的时钟树。根据本发明的一个实施例,集成电路设计中的任意两个时序器件之间的CKweight(j,k)可表示为如图5所示的矩阵形式,该矩阵可称为时钟树分叉权重矩阵,其元素CKweight(j,k)表示时序器件j与k之间的时钟树分叉权重。
该CKweight矩阵满足如下条件:
1.由于时钟树为二叉树,该CKweight矩阵的每一行或者每一列都包含1个0,1个1,2个2,4个3,8个4,...,2t-1个t。因此,每一行或者每一列的元素的和是:
2.对角线上的元素为0;
3.为对称矩阵,即CKweigh(k,j)=CKweight(j,k)。
对于给定的集成电路设计来说,每一个特定的时钟树对应于一个特定的CKweight矩阵。对应于该集成电路设计的不同时钟树的不同CKweight矩阵的每一行和每一列的元素是相同的,但所述元素在每一行和每一列中的位置是不同的。
因此,为该集成电路构建一个最优时钟树的任务就成为确定一个其元素具有特定位置的特定的CKweight矩阵,也就是说,该矩阵包括哪些元素是已知的,但这些元素在该矩阵中的位置是未知的、需要确定的。
集成电路设计中的任意两个时序器件之间的数据路径时延DDly可以表示为图6所示的矩阵形式,该矩阵可称为数据路径时延矩阵,或DDly矩阵,与CKweight矩阵中的行与列相对应,其元素DDly(j,k)表示时序器件j与k之间的数据路径的时延。如果两个时序器件之间没有数据路径,则元素为0。在矩阵的对角线线上的元素代表时序器件输出到本时序器件输入的时延,由于对应的CKweight为0,因此该元素不需要填充实际时延,可填充任意值,在图中以“M”表示。如本领域的技术人员所知的,集成电路设计可由网表(netlist)来表示。可通过对已经过布局(placement)的网表进行时序分析来得到任何两个时序器件之间的数据路径时延。
现在,为集成电路设计构建最优的时钟树的任务就成为:已知DDly矩阵,构建一个满足上述三个条件的CKweight矩阵,并使两个矩阵的元素的乘积的和最小。
该问题可以采用多种方法来求解。根据本发明的一个实施例,该问题可以通过运筹学中的运输理论来求解。运输理论用来解决运输问题,其可简述如下:
假设A1、A2、...、Am表示某物资的m个产地;B1、B2、...、Bn表示某物质的n个销地;si表示产地Ai的产量;dj表示销地Bj的销量;cij表示把物资为从产地Ai运往销地Bj的单位运价。
则在产销平衡的情况下:
图7以表的形式列出了各产地的产量、各销地的销量以及每个产地与每个销地之间的运输单价。
运输理论试图求解出将物资由各产地运输到各销地的成本最低的运输方案。设xij为从产地Ai运往销地Bj的运输量,则可得到下列运输量问题的模型:
运输理论可使用表上作业法、逐块选优解法、直接算法等等多种已知方法求解上述运输问题。以表上作业法为例,其基本步骤为:1.使用西北角法或最小元素法等找到一个初始基可行解;2.使用闭回路法或位势法等进行最优解的差别,求非基变量的检验数;3.使用闭回路法和调整法确定入基变量与出基变量,找出新的基可行解;4.重复步骤2、3直到得到最优解。由于运输问题的求解方法本身并不属于本发明的内容,故在此不再详述,并可参见以下文献:陈宝林、何坚勇,“运输问题的表上作业法的一个解释”[J],《清华大学学报》(自然科学版),1998,38(12):40-43;蒋宏锋,“运输问题的逐块选优解法”,《科学技术与工程》,2006,8(4):922-925;蒋宏峰,“运输问题的直接算法”,《科学技术与工程》,2010;17(6):4109-4112,等等。
根据本发明的实施例,将求解CKweight矩阵的问题转化为运输问题,从而可使用运输理论来求解。由于CKweight矩阵中的每一行和每一列的元素的和是固定的,这类似于运输问题中每一个产地的产量及每一个销地的销量是固定的。CKweight矩阵中的每一个元素需要和DDly矩阵中的相应元素相乘,这类似于运输问题中产地与销地之间的运输量需要和该产量与销地之间的运输单价相乘。因此,可将CKweight矩阵中行和列分别视为产地和销地或销地和产地,将CKweight矩阵中的每一个元素视为运输问题中由一个产地运往一个销地的运输量,将CKweight矩阵中一行的元素之和视为一个产地的产量或一个销地的销量,将CKweight矩阵中一列的元素之和视为一个销地的销量或一个产地的产量;而将DDly矩阵中的行和列相应地分别视为产地和销地或销地和产地,将DDly矩阵中的每一个元素视为其行列所对应的产地和销地之间的运输单价。这样,求解使CKweight矩阵的每一个元素和DDly矩阵的每一个对应元素的乘积的和最小的问题就转化为求解产地和销地之间运输成本最小的运输方案的问题,从而可使用运输理论中的多种已知方法来进行求解。
当获得CKweight矩阵后,就可以得到由该矩阵表示的时钟树的拓扑结构。然后,可以将该时钟树插入到已经过布局的网表中,并进行时钟布线,从而得到经过时钟树综合的集成电路设计。
以上描述了根据本发明的实施例的用于构建用于集成电路设计的时钟树的方法的基本思想,根据本发明的一实施例,该用于构建用于集成电路设计的时钟树的方法包括如下步骤:通过对经过布局的网表进行时序分析,提取出该网表中的时序器件之间的路径时延;以及根据所述时序器件之间的路径时延构建驱动所述时序器件的时钟树,使得任意两个时序器件之间的路径时延与该两个时序器件的时钟树分叉权重的乘积之和最小化,其中,两个时序器件的时钟树分叉权重与该时钟树相对于该两个时序器件的分叉点距离该对时序器件的时钟树级数正相关。也就是说,任何构建时钟树的方法,只要其所构建的时钟树使得两个时序器件之间的路径时延与该两个时序器件的时钟树分叉权重的乘积之和最小化,都能解决本发明所要解决的技术问题。
在一种优选的实施方式中,将参照附图8描述根据本发明的实施例的用于构建用于集成电路设计的时钟树拓扑的方法的过程。如图所示,该方法包括以下步骤:
在步骤801,获得经过布局的网表。如本领域的技术人员所知的,网表是通常由集成电路设计自动化工具从硬件描述语言中产生的,并在自动化集成电路设计的物理设计阶段中使用。
在步骤802,对经过布局的网表进行时序分析,以提取出网表中的各时序器件之间的数据路径时延。可假设不存在数据通路关系的时序器件之间的数据路径时延为0。如本领域的技术人员所知的,数据路径时延可以由现有的时序分析工具产生。
在步骤803,根据所提取的数据路径时延构建DDly矩阵。其中,该DDly矩阵的行和列表示集成电路设计中的时序器件,其元素表示一对时序器件之间的数据路径时延,其中不存在数据通路关系的一对时序器件之间的路径时延为0。DDly矩阵的行数和列数均为2t。对于网表中包含的时序器件的数量m<2t的情况,则通过设立2t-m个虚拟时序器件来使总的时序器件的数量为2t,其中虚拟时序器件之间以及虚拟时序器件与网表中包含的实际时序器件之间的路径时延均为0。
在步骤804,根据DDly矩阵求解CKweight矩阵,并使得CKweight矩阵的每一个元素与DDly矩阵的相应元素的乘积的和最小化,也就是说,任意两个时序器件之间的路径时延与该两个时序器件的时钟树分叉权重的乘积之和最小化。其中,该CKweight矩阵对应于DDly矩阵中的行和列,其元素为时钟树分叉权重,其表示时钟树相对于一对时序器件的分叉点距离该对时序器件的时钟树级数。由于所述时钟树为二叉树,因此所述CKweight矩阵的每一行或者每一列都包含1个0,1个1,2个2,4个3,8个4,...,2t-1个t;对角线上的元素为0;且为对称矩阵,即CKweigh(k,j)=CKweight(j,k)。
根据本发明的实施例,通过应用运输理论来根据DDly矩阵求解CKweight矩阵,其中,所述DDly矩阵中的行和列被视为分别表示产地和销地或销地和产地,其元素被视为表示产地和销地之间的单位运输成本;所述CKweight矩阵中的行和列与DDly矩阵中的行和列相同,也被视为分别表示与产地和销地或销地和产地,其元素被视为表示相应产地运输到的相应销地的货物量;所述DDly矩阵中的每个元素与所述CKweight矩阵中的相应元素的乘积之和被视为总的运输成本。
在步骤805,根据所求解出的CKweight矩阵构建相应的时钟树。如本领域的技术人员可理解的,CKweight矩阵实际上是时钟树拓扑的矩阵表示。例如,如果CKweight矩阵中的某一个元素为1,则表示该元素所属行和列所分别对应的两个时序器件在时钟树的最低一级缓冲器处分叉;如果某一个元素为2,则表示该元素所属行和列所分别对应的两个时序器件在时钟树的倒数第二级缓冲器处分叉,...,如果某一个元素为i,则表示该元素所属行和列所分别对应的两个时序器件在时钟树的倒数第i级缓冲器处分叉。这样,可以根据CKweight矩阵构建出相应的时钟树。
在步骤806,在经过布局的网表中插入所构建的时钟树,这样就可以通过对所插入的时钟树进行时钟布线,最终得到时钟树综合后的集成电路设计。对插入的时钟树进行时钟布线的方法是本领域中公知的。
以上参照附图描述了根据本发明的实施例的用于构建用于集成电路设计的时钟树的方法。应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例的,该方法可具有更多、更少或不同的步骤,且各步骤之间的顺序可以与所描述的不同。另外,应指出的是,以上描述中包含了大量的技术细节,以便使本领域的技术人员更好地理解本发明,但本发明的一些实施例中可以不包含这些技术细节中的一些,或可以概括的方式包含这些技术细节。
例如,根据本发明的进一步的实施例,根据所述时序器件之间的路径时延构建驱动所述时序器件的时钟树包括:根据所述时序器件之间的路径时延构建路径时延矩阵DDly,其中,该路径时延矩阵DDly的元素DDly(j,k)表示时序器件j与k之间的路径时延,其中不存在数据通路关系的两个时序器件之间的路径时延为0;根据所述路径时延矩阵求解时钟树分叉权重矩阵CKweight,其中,该时钟树分叉权重矩阵CKweight的元素CKweight(j,k)表示两个时序器件之间的时钟树分叉权重,且其中所述路径时延矩阵DDly的每一个元素DDly(j,k)与所述时钟树分叉权重矩阵CKweight的相应元素CKweight(j,k)的乘积之和最小化;以及根据所述时钟树分叉权重矩阵构建时钟树。
再例如,根据本发明的进一步的实施例,所述时钟树为二叉树,两个时序器件之间的时钟树分叉权重等于所述时钟树相对于该两个时序器件的分叉点距离该两个时序器件的时钟树级数,且一个时序器件与其自身之间的时钟树分叉权重为零。
再例如,根据本发明的进一步的实施例,所述路径时延矩阵DDly和所述时钟树分叉权重矩阵CKweight的行数和列数均为2t,t为正整数,且当所述集成电路设计中的实际时序器件的数量m小于2t时,所述路径时延矩阵DDly和所述时钟树分叉权重矩阵CKweight的行和列还包括表示2t-m个虚拟时序器件,且虚拟时序器件与实际时序器件之间以及虚拟时序器件之间的数据路径时延为0。
再例如,根据本发明的进一步的实施例,所述根据所述路径时延矩阵求解时钟树分叉权重矩阵是通过应用运输理论进行的,其中,所述路径时延矩阵中的行和列被视为分别表示产地和销地或销地和产地,其元素被视为表示产地和销地之间的单位运输成本;所述时钟树分叉权重矩阵中的行和列被视为分别表示产地和销地或销地和产地,其元素被视为表示相应产地运输到的相应销地的货物量;所述路径时延矩阵中的每个元素与所述时钟树分叉权重矩阵中的相应元素的乘积之和被视为总的运输成本;并且,所述时钟树分叉权重矩阵中的每一行和每一列的元素均为1个0,1个1,2个2,4个3,...,2t-1个t。
再例如,根据本发明的进一步的实施例,该方法还包括:将所述时钟树插入所述经过布局的集成电路设计,以便得到经过时钟树综合的集成电路设计。
现参照附图9描述根据本发明的实施例的用于构建用于集成电路设计的时钟树的装置。该装置可以包括在现有的时钟树综合工具之内,作为该时钟树综合工具的一部分;或者,位于现有的时钟树综合工具之外,并与之协同工作,也就是说,该装置可以将所构建的时钟树提供给现有的时钟树综合工具,以便由时钟树综合工具将时钟树插入集成电路设计中。
如图所示,该装置包括:提取模块901,用于通过对经过布局的网表进行时序分析,提取出该网表中的时序器件之间的路径时延;构建模块902,用于根据所述时序器件之间的路径时延构建驱动所述时序器件的时钟树,使得任意两个时序器件之间的路径时延与该两个时序器件的时钟树分叉权重的乘积之和最小化,其中,两个时序器件的时钟树分叉权重与该时钟树相对于该两个时序器件的分叉点距离该对时序器件的时钟树级数正相关。
根据本发明的实施例,所述构建模块902包括:用于根据所述时序器件之间的路径时延构建路径时延矩阵DDly的装置,其中,该路径时延矩阵DDly的元素DDly(j,k)表示时序器件j与k之间的路径时延,其中不存在数据通路关系的两个时序器件之间的路径时延为0;用于根据所述路径时延矩阵DDly求解时钟树分叉权重矩阵CKweight的装置,其中,该时钟树分叉权重矩阵CKweight的元素CKweigh(k,j)表示时序器件j与k之间的时钟树分叉权重,且其中所述路径时延矩阵DDly的每一个元素DDly(j,k)与所述时钟树分叉权重矩阵CKweigh的相应元素CKweigh(k,j)的乘积之和最小化;以及用于根据所述时钟树分叉权重矩阵构建时钟树的装置。
根据本发明的实施例,所述时钟树为二叉树,两个时序器件之间的时钟树分叉权重等于所述时钟树相对于该两个时序器件的分叉点距离该两个时序器件的时钟树级数,且一个时序器件与其自身之间的时钟树分叉权重为零。
根据本发明的实施例,所述路径时延矩阵DDly和所述时钟树分叉权重矩阵CKweight的行数和列数均为2t,t为正整数,且当所述集成电路设计中的实际时序器件的数量m小于2t时,所述路径时延矩阵DDly和所述时钟树分叉权重矩阵CKweight的行和列还包括表示2t-m个虚拟时序器件,且虚拟时序器件与实际时序器件之间以及虚拟时序器件之间的路径时延为0。
根据本发明的实施例,所述用于根据所述路径时延矩阵求解时钟树分叉权重矩阵的装置是通过应用运输理论进行求解的,其中,所述路径时延矩阵中的行和列被视为分别表示产地和销地或销地和产地,其元素被视为表示产地和销地之间的单位运输成本;所述时钟树分叉权重矩阵中的行和列被视为分别表示产地和销地或销地和产地,其元素被视为表示相应产地运输到的相应销地的货物量;所述路径时延矩阵中的每个元素与所述时钟树分叉权重矩阵中的相应元素的乘积之和被视为总的运输成本;并且,所述时钟树分叉权重矩阵中的每一行和每一列的元素均为1个0,1个1,2个2,4个3,...,2t-1个t。
根据本发明的实施例,该装置还包括一可选的插入模块903,用于将所述时钟树插入所述经过布局的集成电路设计,以便得到经过时钟树综合的集成电路设计。在该实施例中,该装置实际上已成为时钟树综合工具的一部分。
以上描述了根据本发明的实施例的用于构建用于集成电路设计的时钟树的装置,应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,该装置可具有更多、更少或不同的模块,且各模块之间的包含和连接等关系可以与所描述的不同。
本发明可以硬件、软件、或硬件与软件的结合的方式实现。本发明可以集中的方式在一个计算机系统中实现,或以分布方式实现,在这种分布方式中,不同的部件分布在若干互连的计算机系统中。适于执行本文中描述的方法的任何计算机系统或其它装置都是合适的。一种典型的硬件和软件的组合可以是带有计算机程序的通用计算机系统,当该计算机程序被加载和执行时,控制该计算机系统而使其执行本发明的方法,并构成本发明的装置。
本发明也可体现在计算机程序产品中,该程序产品包含使能实现本文中描述的方法的所有特征,并且当其被加载到计算机系统中时,能够执行所述方法。
尽管已参照优选实施例具体示出和说明了本发明,但是本领域内的那些技术人员应理解,可在形式和细节上对其进行各种改变而不会背离本发明的精神和范围。