具体实施方式
将参照附图更加详细地描述本发明的优选实施方式,在附图中显示了本发明的优选实施例。然而,本发明可以以各种形式实现而不应该理解为被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且,完全将本发明的范围传达给本领域的技术人员。
图1示出了一个实际的集成电路设计例子,该电路包含两个逻辑域(Logic Domain)P1和P2以及两个时序模式,如表1所示。每个逻辑域在不同的时序模式下的时序要求不同,其中例如数据20ns表示第一逻辑域P1在第一时序模式下的时钟周期为20纳秒(ns)。其中DTA参数(延迟和时序调整Delay and Timing Adjust)主要用于计算时序检查时的时序调整,例如计算源头为寄存器时钟输出,信号末端为寄存器时钟接收,信号源头到达时间是AT1,信号末端到达时间是AT2,时序分析会作信号建立时间的检查,可用公式标示为:
AT2<(AT1+DTA参数-信号建立时间)
表1中在第一时序模式下,逻辑域P2到逻辑域P1的DTA参数为10ns。
图2示出了另外一个实际的集成电路设计的不同的时序模式。该电路主要功能是高速数据的接收。在功能时序分析的时候,高速核给逻辑域B提供时钟,片上锁相环为逻辑域A提供时钟,逻辑域A和逻辑域B之间有交互,但是因为时钟来源不同,彼此间没有时序检查;但设计的集成电路常常要做ASST(AT Speed Structural Test)测试,ASST时序主要用来检查芯片上会被测试机高速测试的路径是否已经完成了时序收敛,在作ASST时序分析的时候,逻辑A和逻辑域B的时钟均由同一锁相环提供,逻辑域A和逻辑域B之间的交互发生了时序检查。图2中的第一条路径(即圆圈1指示的路径)为ASST模式路径,第二条路径(即圆圈2指示的路径)为功能模式路径,正常情况下,这两个模式路径的时序要求应该是相同的,但是,在该示例中,由于两个模式路径走了不同的路径,他们的时序要求就不同了。
表1一个实际的集成电路设计的不同时序要求
在多个时序模式下,集成电路的逻辑器件工作在不同的时钟频率下,设计人员一个直观的想法是:如果该设计在最大时钟频率都已经满足时序要求,那么就可以满足所有的其它时序要求。但是,实际上这种观点是不完全正确的。对于表1的示例,如果对逻辑域的时序要求简单地使用最大频率(即最小时钟周期)进行合并,合并的DTA将会选择不同逻辑域的时序要求的最大公约数,则使用集成电路设计工具进行合并的结果如表2所示,显然,合并的DTA并不能满足第一时序模式的要求,因此,上述简单的合并在逻辑域之间有交互时并不能满足设计的要求。
下面简单介绍一下时序检查的冗余。例如对于图1中的例子,逻辑域P1内部会作DTA=20ns,DTA=40ns的建立时间检查,逻辑域P2内部会作DTA=50ns,DTA=40ns的建立时间检查,逻辑域2到逻辑域1之间会作DTA=10ns,DTA=40ns的建立时间检查.但是其中逻辑域内部P1的DTA=40ns的检查是冗余的,因为它已经做了小于40ns的10ns的检查。这种冗余检查虽然不会造成结果的变化,但是会造成设计周期变长。同样,对于图2,这种冗余检查也会造成设计周期变长。
表2图1电路使用集成电路设计工具进行合并的结果
另外对于图2中的例子,使用现有技术中的另一种方案,也就是接收多个在不同时序下所要求的时序约束文件,并且生成合并的时序约束文件。这种做法只是将所有时序约束文件进行合并,不能够知道电路内部的时序路径,即不检查电路,因此它并不知道高速核的内部时序路径是什么样的,不知道是存在路径1还是路径2,因此它即使合并了所有的时序约束文件,也不能保证ASST时序模式可以被包含在最终合并后的时序约束文件下所作的时序模式中。
本发明的发明人通过分析发现:不同时序模式的合并不仅要求具有完整性,即合并后的时序模式涵盖了所有的时序模式要求,还要求具有唯一性,即合并后的时序模式没有时序冗余。也就是说,合并就可以将所有的时序模式合并成一个最差时序模式,只要在最差时序模式进行时序分析,达到时序收敛,就可以使得所有的时序模式都达到时序收敛。最差时序模式可能是要求的时序模式之一,也可能与所有的要求的时序模式都不同。
图3示意性地示出了根据本发明的一种实施方式的用于集成电路的多个时序模式合并的方法的流程图,根据图3,在步骤S301,对电路中的逻辑器件根据驱动该逻辑器件的时钟创建逻辑组。在该步骤中,可以利用集成电路设计工具对电路中的逻辑器件反向追踪驱动它的时钟来进行分组,也可以从时钟开始,追踪其驱动的逻辑器件来分组。优选地,在分组过程中,由同一时钟驱动的逻辑器件在一个逻辑组中。
在步骤S302,对所述电路在多个给定的时序模式下进行静态时序分析。静态时序分析可以采用现有的集成电路时序分析工具进行,例如Synopsys的PrimeTime,或者IBM EinsTimer。静态时序分析输入无任何时序信息的电路图,以及多个给定的时序模式下的时序约束文件,其输出包括包含时序信息的电路,例如电路每个节点上的时钟相位和到达时间,每两个时钟之间的DTA参数,每个寄存器是否存在建立时间检查违例等等。优选地,可以只进行一次静态时序分析,就可以利用该静态时序分析结果进行后续步骤。当然,本领域技术人员可以知道,也可以进行多次静态时序分析,选择较好的结果,但是这样需要花费的时间更长。
在步骤S303,根据静态时序分析结果获得多个给定的时序模式的每个时序模式的逻辑组之间的关系。逻辑组之间的关系包括逻辑组之间是否存在交互、交互的方向、交互的参数以及逻辑组内部交互的参数。
在一种获得多个给定的时序模式下的每个时序模式的逻辑组之间的交互以及交互的方向的实施方式中,是利用在静态时序分析过程中将时钟在电路中进行传播来得到逻辑组之间是否存在交互以及交互的方向的。由于在作静态时序分析的过程中,会将时钟在电路中进行传播,例如逻辑组A的时钟源头的时钟名字是clkA,逻辑组B的时钟源头的时钟名称是clkB,传播完毕之后,如果逻辑组B中出现了clkA的时钟,说明逻辑组A会发射信号到逻辑组B中,也就是逻辑组A与逻辑组B交互.使用这种方法去获得逻辑组之间的关系只要保证各个时钟源头上的时钟使用不同的名字即可。
在另外一种获得多个给定的时序模式下的每个时序模式的逻辑组之间的交互以及交互的方向的实施方式中,利用对逻辑组内各个逻辑器件进行向前或向后追踪来得到该逻辑组与其它逻辑组之间是否存在交互以及交互的方向。例如,可以对逻辑组A内各个逻辑器件进行向前或向后追踪,如果向前追踪到逻辑组B中的逻辑器件,则表示逻辑组B会发射信号到逻辑组A.如果向后追踪到逻辑组B中的逻辑器件,则表示逻辑组A会发射信号到逻辑组B,从而得到逻辑组之间的交互。
在又一种获得多个给定的时序模式下的每个时序模式的逻辑组之间的交互以及交互的方向的实施方式中,利用遍历电路中所有逻辑器件之间的连接关系来得到逻辑组之间是否存在交互以及交互的方向的,例如,可以将电路结构以一种数据结构在计算机中保存,包括电路中所有逻辑器件之间的连接关系,每个连接关系包括起始节点和终止节点,遍历所有的连接关系,如果发现连接关系的起始节点和终止节点在不同的逻辑组中,则表示逻辑组A和B交互。
此外,还有很多种本领域技术人员公知的其它获得多个给定的时序模式下的每个时序模式的逻辑组之间的交互以及交互的方向的实施方式,这里不再列举。逻辑组内部交互的参数通常是由用户自定义的。
以下以图4的电路示意图为例,定义一种描述多个时序模式下的逻辑组之间关系的数据结构,包括逻辑组之间的交互、交互的方向、以及相关参数。该数据结构可以采用表3进行描述,或者采用其它类似的数据结构,只要能够表达这些关系即可,例如数组,链表等。
表3描述多个时序模式下的逻辑组之间关系的数据表结构
图4是一个常规电路示意图,该电路中,锁相环输出时钟,通过时钟波形产生器(分频器,波形对齐,门控时钟等器件组合而成)之后,输出给不同的逻辑域,实现逻辑功能。根据表3,第一列为逻辑组的序号,其中每一行包含一个逻辑组,如逻辑组1,逻辑组2...,,逻辑组i,第二列为本逻辑组的时钟物理源头,例如图4的时钟波形产生器的输出管脚;第三列为本逻辑组时钟物理源头的所有时钟,例如图4的时钟波形产生器的输出管脚上的所有时钟;第四列,第五列,...,第i列分别对应各个逻辑组,每个逻辑组行和逻辑组列交叉的部分表示了两个逻辑组之间交互的参数,上述静态时序分析的输出为包含时序信息的电路,能够从包含的时序信息中获得两个逻辑组之间交互的参数,这些参数包括DTA,静态时序分析获得的输出包括每两个逻辑组之间每两个时钟相位之间的DTA参数DTA1、DTA2、DTA3......。当表3中i和j相等时,也就是逻辑组内部,还包括时钟最小脉冲宽度参数。在每一个时序模式下,都可以得到一张诸如表3所表示的该时序模式下的逻辑组之间关系。
优选地,逻辑组之间的交互还可以包含很多其它参数,例如时序例外中的伪路径,时序例外中的建立时间检查,时序例外中的保持时间检查等等参数。这些参数一般也是通过上述静态时序分析输出的包含时序信息的电路中获得的。
回到图3,在步骤S304,将获得的多个给定的时序模式的每个时序模式的逻辑组之间的关系进行合并。合并时,可以将所述多个给定的时序模式合并成一个时序模式,这样后续的时序分析最节省时间。当然,本领域技术人员知道,也可以合并成多个时序模式,只要少于给定的多个时序模式的个数,就能够节省后续时序分析的时间。具体合并过程中,采用的方法是一样的。以下以合并成一个时序模式为例,陈述合并方法。具体合并时,获得所有时序模式表中的[逻辑组i,逻辑组j]的表项,也就是说,如果有m个时序模式,会有m个诸如表3所示的表;然后比较m个诸如表3所示的表中对应表项的DTA,取出最小的DTA,例如i=1,j=0,m=3,m个表中对应表项的DTA分别为10ns、20ns、30ns,则取出最小的DTA为10ns;然后比较m个诸如表3所示的表中当i=j时的时钟最小脉冲宽度参数,例如i=j=1,m=3,m个诸如表3所示的表中对应表项的DTA和时钟最小脉冲宽度参数分别为10ns、4.5ns;10ns、5ns;20ns、10ns,则先选最小DTA,然后再从最小DTA对应的时序模式的时钟最小脉冲宽度参数中选最大的时钟最小脉冲宽度参数,即选择10ns、5ns;可以总结合并的步骤包括:对于任意两个逻辑组,根据在所述多个时序模式的每个时序模式中的所述两个逻辑组之间的DTA参数获得最小DTA参数;对于逻辑组内部,根据获得的最小DTA参数对应的时序模式中的时钟最小脉冲宽度参数,获得最大的时钟最小脉冲宽度参数。
优选地,还可以比较m个诸如表3所示的表中对应表项的其它用户自定义参数,例如时序例外参数,用户自定义最大延迟参数等。对于用户自定义最大延迟参数,例如在模式1中要求电路节点1到电路节点2最大的延迟为5ns,模式2中要求电路节点1到电路节点2最大的延迟为2ns,在合并模式为2ns。
这样,就将m个诸如表3所示的表合并成一张诸如表3所示的表,也就是得到了合并的结果,即合并的时序模式的关系。
以下以图1为例,使用本发明图3所示的方法,首先创建逻辑组1和逻辑组2,在表4和表5中给出得到的逻辑组1和逻辑组2之间的在不同时序模式下(时序模式1和时序模式2)的关系,最后进行合并,表6也给出了合并后的时序模式关系。
表4图1的逻辑组1和逻辑组2在时序模式1下的关系
优选地,在步骤S305,将合并的结果生成时序约束文件。也就是说,通过合并成的一张诸如表3所示的表,生成时序约束文件。然后,设计人员就可以进一步进行时钟树规划等等设计步骤,从而完成整个设计。以表4为例,首先取出i=j=1的表项(以下i表示逻辑组行,j表示逻辑组列),即DTA=20ns,时钟最小脉冲宽度=10ns,则可以转化为下列时序约束代码:
表5图1的逻辑组1和逻辑组2在时序模式2下的关系
表6图1的逻辑组1和逻辑组2模式合并后的关系
sdc::create_clock-name clk11-period 20ns-waveform[list 0.0 10ns]inst1/A;
sdc::set_min_pulse_width-value 10ns-object_list clk11
然后取出i=1,j=2的表项,即DTA=10ns,则可以转化为下列时序约束代码
sdc::create_clock-name clk11-period 20ns-waveform[list 0.0 10ns]inst1/A;
sdc::create_clock-name clk21-period 50ns-waveform[list 0.0 25ns]inst2/A;
sdc::set_min_pulse_width-value 10ns-object_list clk11
sdc::set_min_pulse_width-value 25ns-object_list clk21
然后取出i=2,j=1的表项,即DTA=10ns,则可以转化为下列时序约束代码
sdc::create_clock-name clk11-period 20ns-waveform[list 0.0 10ns]inst1/A;
sdc::create_clock-name clk21-period 50ns-waveform[list 0.0 25ns]inst2/A;
sdc::set_min_pulse_width-value 10ns-object_list clk11
sdc::set_min_pulse_width-value 25ns-object_list clk21
然后取出i=2,j=2的表项,即DTA=40ns,时钟最小脉冲宽度=20ns,则可以转化为下列时序约束代码
sdc::create_clock-name clk22-period 40ns-waveform[list 0.0 20ns]inst2/A;
sdc::set_min_pulse_width-value 20ns-object_list clk22
最后因为clk22没有在任何i不等于j的表项中用到,所以添加:
sdc::set_false_path-from clk11-to clk22
sdc::set_false_path-to clk11-from clk22
然后进行代码整合,去掉完全一致的代码,就得到生成的时序约束文件。也就是说,生成的时序约束文件如下:
sdc::create_clock-name clk11-period 20ns-waveform[list 0.0 10ns]inst1/A;
sdc::create_clock-name clk21-period 50ns-waveform[list 0.0 25ns]inst2/A;
sdc::create_clock-name clk22-period 40ns-waveform[list 0.0 20ns]inst2/A;
sdc::set_min_pulse_width-value 10ns-object_list clk11
sdc::set_min_pulse_width-value 25ns-object_list clk21
sdc::set_min_pulse_width-value 20ns-object_list clk22
sdc::set_false_path-from clk11-to clk22
sdc::set_false_path-to clk11-from clk22
本发明一方面将逻辑器件分成逻辑组,在划分的过程中需要考虑电路的结构;另一方面,对于图2,本发明可以检测到功能时序模式下逻辑域B是由路径2过来的时钟所驱动的,ASST时序模式下逻辑域B是由路径1过来的时钟驱动的,并且本发明会提取到所在A和B交互时候这两个时钟之间会有不同DTA参数DTA1,DTA2.因此会得到最小DTA,并且写入时序模式文件中,最终转化为时序约束文件.因此保证了ASST时序模式完全被包涵在最终合并后的时序约束文件下所作的时序模式中,从而可以解决图1和图2的使用现有技术进行合并所存在的问题。并且,用该多个时序模式合并的方法使得设计人员能够迅速合并多种时钟模式,从而减少设计时间、提高设计效率。
对于图2,如果使用了本发明的方法,首先创建逻辑组1和逻辑组2,在表7和8中给出得到的逻辑组1和逻辑组2之间的在不同时序模式下的关系,最后进行合并,表9也给出了合并后的时序模式关系。
表7图2的逻辑组1和逻辑组2在时序模式1下的关系
表8图2的逻辑组1和逻辑组2在时序模式2下的关系
表9图2的逻辑组1和逻辑组2模式合并后的关系
输出的时序约束文件对于图2,文件如下,输入是图2表格,输出是以下的时序约束文件
sdc::create_clock-name clk11-period 4ns-waveform[list 0.0 2ns]ICG/output;
sdc::create_clock-name clk21-period 2ns-waveform[list 0.0 1ns]IHSS/RXxDCLK
sdc::create_clock-name clk11-period 4ns-waveform[list 0.0 2ns]IHSS/RXxDCLK
sdc::set_false_path-from clk11-to clk21
sdc::set_false_path-to clk11-from clk21
在同一个发明构思下,本发明还公开了一种用于集成电路的多个时序模式合并的系统,图5示出了用于集成电路的多个时序模式合并的系统500的结构框图,根据图5,该系统包括:分组装置501,被配置为对电路中的逻辑器件根据驱动该逻辑器件的时钟创建逻辑组;静态时序分析装置502,被配置为对所述电路在多个给定的时序模式下进行静态时序分析;关系获得装置503,被配置为根据静态时序分析结果获得多个给定的时序模式的每个时序模式的逻辑组之间的关系;以及合并装置504,被配置为将获得的多个给定的时序模式的每个时序模式的逻辑组之间的关系进行合并。优选地,该系统还包括生成装置505,被配置为将合并的结果生成时序约束文件。
在一种实施方式中,其中所述分组装置创建的逻辑组中,由同一时钟驱动的逻辑器件在一个逻辑组中。
在一种实施方式中,所述每个时序模式的逻辑组之间的关系包括:逻辑组之间是否存在交互、交互的方向、交互的参数以及逻辑组内部交互的参数。
在另一种实施方式中,逻辑组之间是否存在交互以及交互的方向是通过如下方式之一获得的:
(1)利用在静态时序分析过程中将时钟在电路中进行传播来得到逻辑组之间是否存在交互以及交互的方向;
(2)利用对逻辑组内各个逻辑器件进行向前或向后追踪来得到该逻辑组与其它逻辑组之间是否存在交互以及交互的方向;
(3)利用遍历电路中所有逻辑器件之间的连接关系来得到逻辑组之间是否存在交互以及交互的方向。
上述实施方式中,所述逻辑组之间交互的参数是通过所述静态时序分析输出的包含时序信息的电路获得的。其中所述逻辑组之间交互的参数包括DTA,所述相同逻辑组内部交互的参数还包括时钟最小脉冲宽度参数。
在另外一种实施方式中,合并装置进一步被配置为:对于任意两个逻辑组,根据在所述多个时序模式的每个时序模式中的所述两个逻辑组之间的DTA参数获得最小DTA参数;对于逻辑组内部,根据获得的最小DTA参数对应的时序模式中的时钟最小脉冲宽度参数,获得最大的时钟最小脉冲宽度参数。
本发明可以采取硬件实施方式、软件实施方式或既包含硬件组件又包含软件组件的实施方式的形式。在优选实施方式中,本发明实现为软件,其包括但不限于固件、驻留软件、微代码等。
而且,本发明还可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,这些介质提供程序代码以供计算机或任何指令执行系统使用或与其结合使用。出于描述目的,计算机可用或计算机可读机制可以是任何有形的装置,其可以包含、存储、通信、传播或传输程序以由指令执行系统、装置或设备使用或与其结合使用。
介质可以是电的、磁的、光的、电磁的、红外线的、或半导体的系统(或装置或器件)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。目前光盘的例子包括紧凑盘-只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。
适合于存储/或执行程序代码的数据处理系统将包括至少一个处理器,其直接地或通过系统总线间接地耦合到存储器元件。存储器元件可以包括在程序代码的实际执行期间所利用的本地存储器、大容量存储器、以及提供至少一部分程序代码的临时存储以便减少执行期间从大容量存储器必须取回代码的次数的高速缓存存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等等)可以直接地或通过中间I/O控制器耦合到系统。
网络适配器也可以耦合到系统,以使得数据处理系统能够通过中间的私有或公共网络而耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器以及以太网卡仅仅是当前可用的网络适配器类型的几个例子。
从上述描述应当理解,在不脱离本发明真实精神的情况下,可以对本发明各实施方式进行修改和变更。本说明书中的描述仅仅是用于说明性的,而不应被认为是限制性的。本发明的范围仅受所附权利要求书的限制。