具体实施方式
将参照附图更加详细地描述本发明的优选实施方式,在附图中显示了本发明的优选实施例。然而,本发明可以以各种形式实现而不应该理解为被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且,完全将本发明的范围传达给本领域的技术人员。
首先明确一些基本概念以便后面发明的描述。
网表:表达数字电路的器件的拓扑连接关系的文件或者数据结构。
时钟树:***的由缓冲器组成的树状的信号中继网络被称为时钟树。因此,一个专用集成电路一般有一个或多个时钟树。
时钟树的延迟时间(latency):是指对于一个单独的时钟树,时钟信号从根节点到叶节点的传递时间为时钟树的延迟时间。
时钟树的偏差(Skew):是指对于一个单独的时钟树上的各个时序器件,时钟树的延迟时间的不同。
时钟树效应:本发明中是指时钟树的时序效应,主要包括时钟树的延迟,和时钟树的偏差。
在现有的专用集成电路设计领域,逻辑设计人员与电路设计人员是两组不同的设计人员,逻辑设计人员了解电路的功能及要求,而电路设计人员只是根据逻辑设计人员的设计要求进行电路设计,他们并不具体了解电路的功能。在业界,由逻辑设计人员交给电路设计人员的标准交付件包括网表和时序约束文件。然后电路设计人员完成图1的步骤S102到步骤S107的设计过程。时序设计要求设计的电路满足时序约束文件中的时序要求,例如,对于一个时钟树中的所有时序器件,时钟树的延迟是相同的,也就是时钟信号基本同时达到各个时序器件的时钟管脚,如果有些时序器件延迟大,有些时序器件延迟小,就在延迟小的时序器件的时序路径中***缓冲器,增大延迟,最后使得时钟信号基本同时达到各个时序器件的时钟管脚,时钟树的偏差最小,达到时钟树平衡。另外有一些时序器件之间不存在时序约束,就无需平衡。
对于一个时序器件很多的复杂设计,在本发明提供的时钟树规划方法(即图1的步骤S104)中,可以进一步分为两个步骤:首先对时序器件分组,使得每组时序器件之间不存在时序约束,只有组内的时序器件之间存在时序约束;然后对每一组时序器件,采用现有的时钟树规划方法满足时序平衡。
在本发明的一种实施方式中,提供了一种用于专用集成电路的时钟树规划的方法,可以使得每组时序器件之间不存在时序约束,只有组内的时序器件之间存在时序约束,并且电路设计人员无需与逻辑设计人员迭代沟通,只需要获得标准交付件,即可执行。图2示意性地示出了该方法的步骤,并且结合一个实例,来陈述该方法步骤。根据图2,在步骤S201,确定该专用集成电路的网表和时序约束文件。图4示出了一个示例性的专用集成电路,图4中,左边的Clk信号表示时钟信号的源端,Data 1和Data 2表示数据输出,Data 3和Data 4表示数据输入,每个REG表示一个时序器件,AND表示与门,OR表示一个或门。图4的专用集成电路的网表如下。该网表至少包含构成该时钟树的源器件Clk和时序器件REG及其连接关系。这里,时钟树的源端为所述构成该时钟树的源器件的时钟输入端,时钟树的终端为所述构成该时钟树的源器件的时钟输出端。
图4所示的专用集成电路的网表的内容如下:
图4所示的专用集成电路的时序约束文件的内容如下:
Timing Constraint:
create_clock CLK1[get_ports Clk1]-period 10-waveform{05}#产生一个时钟,周期为10,上升沿为0,下降沿在5
create_clock CLK2[get_ports Clk2]-period 14-waveform{07}
set_clock_uncertainty0.1[get_clocks CLK1]#设置时钟边沿抖动
set_clock_uncertainty0.1[get_clocks CLK2]
set_input_delay-clock CLK1 4[get_ports{Data1}]#设置信号的输入延迟
set_input_delay-clock CLK2 3[get_ports{Data2}]
set_output_delay 1[get_ports{Data3}]#设置信号的输出延迟
set_output_delay 1[get_ports{Data4}]
set_clock_group-asynchronous-name g1-group CLK1-group CLK2
#设置CLK1和CLK2之间为异步时钟
set_false_path-from REG5/L2-to REG6/D #设置两点路径为假性约束路径
set_multicycle_path 2-from REG1/L2-to REG2/D #设置路径为多周期延迟路径
返回图2,在步骤S202,根据网表中时序器件的连接关系和时序约束文件中时序器件的时序约束关系,为网表中的时序器件生成时序器件无向图。图3示出了图2中步骤S202的具体流程,根据图3,在步骤S301,根据网表中时序器件的连接关系,为网表中的时序器件建立连接无向图;在步骤S302,根据时序约束文件中时序器件的时序约束关系,为网表中的时序器件建立时序无向图;在步骤S303,通过合并连接无向图和时序无向图,获得时序器件无向图。
在建立连接无向图的过程中,首先要获得网表中的时序器件。数字电路的每一个器件(包括IP),都有表示是否时序器件的标记,作为器件的特征之一,列举在设计的库文件中。因此,在获得时钟树相关的网表之后,根据某器件的类型,逐一查对库文件,就可以判断该器件是否为时序器件。这样,就可以提取所述时钟树连接的所有时序器件。另外一种实施方式中,可以使用某种数据结构(例如表、数组等)列出网表中所涉及的所有时序器件的名称,然后用程序排查网表中的所有器件的名称是否在该数据结构所列出的名称范围之内,从而获得所有时序器件。然后在连接无向图中用节点代表网表中的时序器件;最后在连接无向图的节点之间建立连接边,其中,连接无向图中的一个节点与另一个节点之间的连接边,表示这两个节点所代表的时序器件在网表中是通过路径连接的。这里,时序器件在网表中是否通过路径连接是根据网表中时序器件的连接关系来判断的。上述路径包括连接路径或者组合路径。这里,连接路径指两个时序器件直接相连;组合路径包含器件路径和分支路径,其中,器件路径指两个时序器件之间通过至少一个非时序器件相连,分支路径指两个时序器件相连的部分存在电路分支。也就是说,两个时序器件之间只要有一条路径相通,无论该条路径中间包含多少器件和分支路径,都在两个时序器件对应的节点之间建立一条连接边。由于在网表中包含了所有器件的连接关系,通过这些连接关系,就可以判断任意两个时序器件之间是否通过路径相连。
时序无向图的建立比较复杂。时序无向图中,仍然将网表中的时序器件表示为一个节点,在时序约束文件中,只要符合下列三种情况之一,就在两个时序器件之间建立一条时序边。
(1)异步时钟(Asynchronous Clocks):图5示出了异步时钟的定义,两个时序器件有各自驱动的时钟,无法预知两个时钟的上升或下降沿之间的关系,则时序无向图中在这两个时序器件之间建立一条时序边。
(2)假性路径(False Path):图6示出了假性路径的原理,两个时序器件有路径,但是它们之间不需要做时序约束,称为假性路径。时序无向图中,在存在假性路径的时序器件之间建立一条时序边。
(3)多周期路径(Multicycle path with enough margin):通常两个时序器件之间的时序检查周期数为一个时钟周期,当两个时序器件之间的时序检查周期数超过一个时钟周期的约束时,称为多周期路径,图7示出了多周期路径的定义。时序无向图中,可以在存在多周期路径的时序器件之间建立一条时序边。
应当可以理解的是,在上述三种情况下,时钟都不需要平衡。
因此,在时序无向图的节点之间建立时序边时,时序无向图中的一个节点与另一个节点之间的如果建立了时序边,就表示这两个节点所代表的时序器件之间存在上述时序约束的至少之一。建立时序边的时序器件之间不需要时钟平衡。这里,异步时钟、假性路径和多周期路径为包含在时序约束文件中的时序约束关系,换句话说,时序约束文件中包含了很多时序约束关系,异步时钟、假性路径和多周期路径是其中的一种约束关系类型,但是并不表示时序约束文件中都包含这种时序约束关系,可能时序约束文件中不包含任何上述三种时序约束关系的一种,这时,时序无向图中就只有节点,不存在时序边。
在进一步的实施方式中,对多周期路径可以设定一个参数,该参数表示两个时序器件之间的时序检查周期数超过该设定的时钟周期数才在两个时序器件之间建立一条时序边。这时,时序无向图的建立过程就包括:首先在时序无向图中用节点代表网表中的时序器件;然后在时序无向图的节点之间建立时序边,其中,时序无向图中的一个节点与另一个节点之间的时序边,表示这两个节点所代表的时序器件之间存在以下时序约束的至少之一:异步时钟;假性路径;多周期路径并且两个时序器件之间的时序检查周期数超过了预设的时钟周期数;其中异步时钟、假性路径和多周期路径为包含在时序约束文件中的时序约束关系。如果两个节点所代表的时序器件之间不存在上述时序约束关系,两个节点之间就不建立时序边。
在合并连接无向图和时序无向图过程中,首先将连接无向图与时序无向图其中之一中的节点表示为时序器件无向图中的节点;由上述两个无向图的建立过程可见,这两种无向图包含的节点是相同的。然后在时序器件无向图的节点之间建立边,其中,时序器件无向图中一个节点与另一个节点之间的边,表示这两个节点在连接无向图中所对应的节点之间存在连接边,但是这两个节点在时序无向图中所对应的节点之间不存在时序边。这样就完成了无向图合并。也就是说,在合并的时序器件无向图中,对于存在两条边的节点,即既有连接边又有时序边,删除二者之间的边;但是只存在连接边,不存在时序边,则保留二者之间的边。由于建立了时序边的时序器件之间不需要时钟平衡,因此,在时序器件无向图中,建立了时序边的时序器件之间无边。根据上述方法的步骤S301,S302和S303对图4所示的集成电路建立的连接无向图、时序无向图以及时序器件无向图如图8所示。对另外一个未示出网表以及时序约束文件的专用集成电路,建立的连接无向图、时序无向图以及时序器件无向图如图9所示。
返回图2,在步骤S203,根据时序器件无向图为网表中的时序器件分组,使得一组中的时序器件与另一组中的时序器件之间没有时序约束关系。具体来说,就是将时序器件无向图中的一个连通的子图包含的节点所代表的时序器件划分在同一个组中。一个单独的节点可以作为一个连通子图,因此其对应的时序器件也分成一组。例如,图8的时序器件无向图包含5个连通子图,就可以将这些时序器件分成5个组,后续的时序分析中,只需要对包含两个时序器件的组进行时钟平衡,时钟平衡由原来的6个时序器件减少为两个时序器件;图9的时序器件无向图包含6个连通子图,可以将这些时序器件分成6个组,后续的时序分析只需要对包含两个或两个以上时序器件的组进行时钟平衡,时钟平衡由原来的19个时序器件减少4个组,每组分别为7、5、3、2个时序器件。后续的时钟平衡工作将大大减少。
使用上述方法分组后可以使得各组之间的时序器件之间不存在时序关系,所以无需时钟平衡;并且每组内部时序器件数量可以大大减少,在组内使用现有的设计工具中采用的使得所有的时钟树的终端(也就是时序器件)的时钟偏差和时钟延迟尽可能小的设计原则***时钟树,达到时钟平衡。使用该方法改进的专用集成电路设计方法将设计流程从周为单位减少到天,设计人员能够迅速规划时钟树,因此减少了设计时间,提高了设计效率。
在同一个发明构思下,本发明还公开了一种用于专用集成电路的时钟树规划的***1000,包括:确定装置1001,被配置为确定该专用集成电路的网表和时序约束文件;时序器件无向图建立装置1002,被配置为根据网表中时序器件的连接关系和时序约束文件中时序器件的时序约束关系,为网表中的时序器件生成时序器件无向图;以及分组装置1003,被配置为根据时序器件无向图为网表中的时序器件分组,使得一组中的时序器件与另一组中的时序器件之间没有时序约束关系。
在一种实施方式中,时序器件无向图建立装置包括(图10未示出):连接无向图建立装置,被配置为根据网表中时序器件的连接关系,为网表中的时序器件建立连接无向图;时序无向图建立装置,被配置为根据时序约束文件中时序器件的时序约束关系,为网表中的时序器件建立时序无向图;以及合并装置,被配置为通过合并连接无向图和时序无向图,获得时序器件无向图。
在另一种实施方式中,连接无向图建立装置包括(图10未示出):连接无向图节点建立装置,被配置为在连接无向图中用节点代表网表中的时序器件;连接无向图的连接边建立装置,被配置为在连接无向图的节点之间建立连接边,其中,连接无向图中的一个节点与另一个节点之间的连接边,表示这两个节点所代表的时序器件在网表中是通过路径连接的;其中时序器件在网表中是否通过路径连接是根据网表中时序器件的连接关系来判断的。
在又一种实施方式中,时序无向图建立装置包括(图10未示出):时序无向图节点建立装置,被配置为在时序无向图中用节点代表网表中的时序器件;时序无向图的时序边建立装置,被配置为在时序无向图的节点之间建立时序边,其中,时序无向图中的一个节点与另一个节点之间的时序边,表示这两个节点所代表的时序器件之间存在以下时序约束的至少之一:异步时钟;假性路径;多周期路径;其中异步时钟、假性路径和多周期路径为包含在时序约束文件中的时序约束关系。
在再一种实施方式中,时序无向图建立装置包括(图10未示出):时序无向图节点建立装置,被配置为在时序无向图的节点之间建立时序边,其中,时序无向图中的一个节点与另一个节点之间的时序边,表示这两个节点所代表的时序器件之间存在以下时序约束的至少之一:异步时钟;假性路径;多周期路径并且两个时序器件之间的路径超过预设的时钟周期个数;其中异步时钟、假性路径和多周期路径为包含在时序约束文件中的时序约束关系。
在又一种实施方式中,合并装置包括(图10未示出):时序器件无向图节点建立装置,被配置为将连接无向图与时序无向图其中之一中的节点表示为时序器件无向图中的节点;时序器件无向图边建立装置,被配置为在时序器件无向图的节点之间建立边,其中,时序器件无向图中一个节点与另一个节点之间的边,表示这两个节点在连接无向图中所对应的节点之间存在连接边,但是这两个节点在时序无向图中所对应的节点之间不存在时序边。
在再一种实施方式中,分组装置进一步配置成将时序器件无向图中的一个连通的子图包含的节点所代表的时序器件划分在同一个组中。
本发明可以采取硬件实施方式、软件实施方式或既包含硬件组件又包含软件组件的实施方式的形式。在优选实施方式中,本发明实现为软件,其包括但不限于固件、驻留软件、微代码等。
而且,本发明还可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,这些介质提供程序代码以供计算机或任何指令执行***使用或与其结合使用。出于描述目的,计算机可用或计算机可读机制可以是任何有形的装置,其可以包含、存储、通信、传播或传输程序以由指令执行***、装置或设备使用或与其结合使用。
介质可以是电的、磁的、光的、电磁的、红外线的、或半导体的***(或装置或器件)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。目前光盘的例子包括紧凑盘-只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。
适合于存储/或执行程序代码的数据处理***将包括至少一个处理器,其直接地或通过***总线间接地耦合到存储器元件。存储器元件可以包括在程序代码的实际执行期间所利用的本地存储器、大容量存储器、以及提供至少一部分程序代码的临时存储以便减少执行期间从大容量存储器必须取回代码的次数的高速缓存存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等等)可以直接地或通过中间I/O控制器耦合到***。
网络适配器也可以耦合到***,以使得数据处理***能够通过中间的私有或公共网络而耦合到其他数据处理***或远程打印机或存储设备。调制解调器、线缆调制解调器以及以太网卡仅仅是当前可用的网络适配器类型的几个例子。
从上述描述应当理解,在不脱离本发明真实精神的情况下,可以对本发明各实施方式进行修改和变更。本说明书中的描述仅仅是用于说明性的,而不应被认为是限制性的。本发明的范围仅受所附权利要求书的限制。