用于在设计编译流程中利用针对寄存器重定时的估计的方法和装置转让专利

申请号 : CN201610417530.5

文献号 : CN106257467B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : N·辛纳杜莱B·加姆萨

申请人 : 阿尔特拉公司

摘要 :

本申请涉及用于在设计编译流程中利用针对寄存器重定时的估计的方法和装置。本申请提供了一种用于设计目标设备上的系统的方法,包括执行系统上的综合、布局和布线中的一个。在综合、布局和布线中的一个之后向设计者呈现对系统的时序分析,其中时序分析反映被预测为要被实现在系统上的寄存器重定时优化。响应于在呈现之后由设计者提供的输入来修改综合、布局和布线中的一个。

权利要求 :

1.一种用于设计目标设备上的系统的方法,包括:

通过生成要由所述目标设备实现的所述系统的逻辑设计来执行综合;

在所述综合之后执行第一重定时感知时序分析,以评估所述系统的所综合的逻辑设计,所述第一重定时感知时序分析反映被预测为要被实现在所述系统的所述逻辑设计上的第一寄存器重定时优化;

将综合优化并入到所述系统的所述逻辑设计中,所述综合优化是由设计者响应于所述第一寄存器重定时优化而提供的所述系统的所述逻辑设计的修改;

通过将所述系统的所述逻辑设计布局在所述目标设备上来执行布局;

在所述布局之后执行第二重定时感知时序分析,以评估所述系统的所布局的逻辑设计,所述第二重定时感知时序分析反映被预测为要被实现在所述系统的所述逻辑设计上的第二寄存器重定时优化;

将布局优化并入到所述系统的所述逻辑设计中,所述布局优化是由所述设计者响应于所述第二寄存器重定时优化而提供的所述系统的所述逻辑设计的修改;

在所述目标设备上对所述系统的所布局的逻辑设计进行布线;

在所述布线之后执行第三重定时感知时序分析,以评估所述系统的所布线的逻辑设计,所述第三重定时感知时序分析反映被预测为要被实现在所述系统的所述逻辑设计上的第三寄存器重定时优化;以及将布线优化并入到所述系统的所述逻辑设计中,所述布线优化是由所述设计者响应于所述第三寄存器重定时优化而提供的所述系统的所述逻辑设计的修改。

2.根据权利要求1所述的方法,其中所述系统上的所述综合、所述布局和所述布线响应于被预测为要被实现在所述系统上的所述第一寄存器重定时优化、所述第二寄存器重定时优化和所述第三寄存器重定时优化而被执行。

3.根据权利要求1所述的方法,其中所述第一寄存器重定时优化、所述第二寄存器重定时优化和所述第三寄存器重定时优化包括流水线设计关键路径。

4.根据权利要求1所述的方法,其中所述第一寄存器重定时优化、所述第二寄存器重定时优化和所述第三寄存器重定时优化包括修改寄存器的位置和到寄存器的输入中的一个或多个以减小所述系统中的路径的关键性。

5.根据权利要求1所述的方法,还包括执行寄存器重定时。

6.根据权利要求1所述的方法,其中并入所述综合优化、并入所述布局优化、或并入所述布线优化中的一个包括改变所述系统的方面的功能以缩短所述系统中的回路。

7.根据权利要求1所述的方法,其中并入所述综合优化、并入所述布局优化、或并入所述布线优化中的一个包括去除所述系统中的回路。

8.根据权利要求1所述的方法,其中所述第一寄存器重定时优化基于对所述系统的设计做出的推测的改变,所述推测的改变使所述系统向所述设计者提供推荐以指示能够做出哪些改变以改善要利用所述改变实现的性能和估计的性能增益。

9.根据权利要求8所述的方法,其中所述推测的改变基于所述设计者的指定偏好。

10.一种具有指令序列的非瞬态计算机可读介质,所述指令序列包括指令,所述指令当被运行时使处理器执行根据权利要求1-9中任一项所述的方法。

11.一种用于设计目标设备上的系统的方法,包括:

通过生成要由所述目标设备实现的所述系统的逻辑设计来执行综合;

在所述综合之后执行第一重定时感知时序分析,以评估所述系统的所综合的逻辑设计,所述第一重定时感知时序分析反映被预测为要被实现在所述系统的所述逻辑设计上的第一寄存器重定时优化;

将综合优化并入到所述系统的所述逻辑设计中,所述综合优化是由设计者响应于所述第一寄存器重定时优化而提供的所述系统的所述逻辑设计的修改;

通过将所述系统的所述逻辑设计布局在所述目标设备上来执行布局;

在所述布局之后执行第二重定时感知时序分析,以评估所述系统的所布局的逻辑设计,所述第二重定时感知时序分析反映被预测为要被实现在所述系统的所述逻辑设计上的第二寄存器重定时优化;

将布局优化并入到所述系统的所述逻辑设计中,所述布局优化是由所述设计者响应于所述第二寄存器重定时优化而提供的所述系统的所述逻辑设计的修改;

在所述目标设备上对所述系统的所布局的逻辑设计进行布线;

在所述布线之后执行第三重定时感知时序分析,以评估所述系统的所布线的逻辑设计,所述第三重定时感知时序分析反映被预测为要被实现在所述系统的所述逻辑设计上的第三寄存器重定时优化;

将布线优化并入到所述系统的所述逻辑设计中,所述布线优化是由所述设计者响应于所述第三寄存器重定时优化而提供的所述系统的所述逻辑设计的修改;

生成包括所述系统的所述逻辑设计的数据文件;以及

利用所述数据文件来对所述目标设备进行编程,以物理地变换所述目标设备上的部件来实现所述系统。

12.根据权利要求11所述的方法,其中所述方法还包括:

在所述布局之后向所述设计者呈现对所述系统的所述第二重定时感知时序分析,并且其中并入所述布局优化还包括:并入在所述布局之后接收的来自所述设计者的输入以修改所述布局。

13.根据权利要求12所述的方法,其中所述方法还包括:

在所述布线之后向所述设计者呈现对所述系统的所述第三重定时感知时序分析,并且其中并入所述布线优化还包括:并入在所述布线之后接收的来自所述设计者的输入以修改所述布线。

14.根据权利要求13所述的方法,其中,所述方法还包括在所述布线之后执行在所述系统上的寄存器重定时。

15.根据权利要求13所述的方法,其中所预测的所述第一寄存器重定时优化、所述第二寄存器重定时优化或所述第三寄存器重定时优化包括对关键路径添加流水线设计。

16.根据权利要求11所述的方法,其中所述综合通过减少所述系统中的逻辑的深度来修改。

17.根据权利要求12所述的方法,其中所述布局通过将寄存器和逻辑放置得更为靠近在一起来修改以减小回路延迟。

18.根据权利要求13所述的方法,其中所述布线通过缩短回路的路径来修改。

19.一种具有指令序列的非瞬态计算机可读介质,所述指令序列包括指令,所述指令当被运行时使处理器执行根据权利要求11-18中任一项所述的方法。

说明书 :

用于在设计编译流程中利用针对寄存器重定时的估计的方法

和装置

技术领域

[0001] 本发明的各实施例涉及用于设计目标设备上的系统的工具。更具体地,本发明的各实施例涉及一种用于在设计编译流程中利用针对寄存器重定时的估计的方法和装置。

背景技术

[0002] 诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)和结构化ASIC的目标设备用于实现可以包括数百个门和兆比特的嵌入式内存的大型系统。大型系统的复杂度常常需要使用电子设计自动化(EDA)工具来创建并优化针对到物理目标设备上的系统的设计。在由计算机辅助设计(CAD)中的EDA工具执行的流程之中编译流程是目标设备上的系统的设计生成和集成、综合、布局(placement)和布线。
[0003] 当解决传统时序收敛时,设计者关注于设计中的关键路径。关键路径是通过组合元件或布线元件从一个寄存器到另一寄存器的路径,其未能或接近于未能满足时序要求。在使时序收敛的努力中,设计者可以检查关键路径并尝试通过减少沿路径的组合延迟或布线延迟的量来对其进行改善。
[0004] EDA工具可以利用寄存器重定时算法以便使时序收敛。寄存器重定时是用于改善同步电路的速度性能的同步电路变换。寄存器重定时涉及跨各组合元件或布线电路元件来移动寄存器以便减小时序上关键的路径的长度。组合结构保持不变,并且电路的可观察行为与原始电路相同。

发明内容

[0005] 根据本发明的实施例,在针对系统的设计编译流程中的每个综合、布局和布线流程之后执行时序分析。该时序分析被提供给设计者,并且允许该设计者修改针对系统的设计而无需等待完成设计的整个编译。根据本发明的实施例,时序分析和编译中的其他流程由处理器执行,并且时序分析被输出给设计者。根据本发明的方面,被提供给设计者的时序分析是重定时感知时序分析,其反映被预测为要被实现的布局后和布线后寄存器重定时优化。为了反映被预测为要被实现的布局后和布线后寄存器重定时优化,可以对寄存器应用歪斜和/或可以将正/负延迟元件添加到数据路径上以对实际的离散的寄存器重定时的效果进行建模。根据本发明的另一方面,通过对系统的设计做出的推测的改变来使得能够进行被预测为要被实现的布局后和布线后寄存器重定时优化。推测的改变可以与时序分析结果一起被呈现给设计者,并且可以响应于由设计者提供的反馈来做出对设计的实际的改变。通过执行反映布局后和布线后寄存器重定时优化的时序分析,将时序分析呈现给设计者并且允许在整个系统的编译之前进行修改,本发明的各实施例允许在比先前已知的途径更短的时间段内设计目标设备上的系统并且是本技术领域中的改进。
[0006] 根据本发明的实施例,一种用于设计目标设备上的系统的方法包括执行系统上的综合、布局和布线中的一个。在综合、布局和布线中的一个之后向设计者呈现对系统的时序分析,其中时序分析反映被预测为要被实现在系统上的寄存器重定时优化。响应于在呈现之后由设计者提供的输入来重新运行综合、布局和布线中的一个,并修改来自综合、布局和布线中的一个的先前结果。
[0007] 根据本发明的实施例,一种用于设计目标设备上的系统的方法包括对系统的设计应用推测的改变以改善寄存器重定时。响应于所应用的推测的改变来预测要被实现在系统上的寄存器重定时优化。在综合、布局和布线中的一个之后向设计者呈现对系统的时序分析,其中时序分析反映被预测为要被实现在系统上的寄存器重定时优化和所应用的推测的改变。响应于在呈现之后由设计者提供的输入来重新运行综合、布局和布线中的一个,并修改来自综合、布局和布线中的一个的先前结果。

附图说明

[0008] 本发明的各实施例的特征和优点是通过举例的方式来说明的并且不旨在将本发明的各实施例的范围限于所示出的特定实施例。
[0009] 图1是根据本发明的示例性实施例的用于设计目标设备上的系统的方法的流程图。
[0010] 图2A和图2B图示了根据本发明的示例性实施例的重定时感知时序分析如何呈现关键路径。
[0011] 图3是图示了根据本发明的示例性实施例的用于执行重定时感知时序分析的方法的流程图。
[0012] 图4A-C图示了根据本发明的示例性实施例的可以如何修改网表以反映寄存器重定时预测的结果。
[0013] 图5图示了根据本发明的另一示例性实施例的可以如何修改网表以反映寄存器重定时预测的结果。
[0014] 图6图示了根据本发明的示例性实施例的用于考虑到推测的改变执行重定时感知时序分析的方法。
[0015] 图7图示了根据本发明的示例性实施例的用于执行寄存器重定时的方法。
[0016] 图8图示了根据本发明的实施例的实现系统设计器的计算机系统的框图。
[0017] 图9图示了根据本发明的实施例的系统设计器的框图。
[0018] 图10图示了根据本发明的实施例的示例性目标设备。

具体实施方式

[0019] 在下面的描述中,为了解释的目的,阐述了特定命名法以提供对本发明的各实施例的透彻理解。对于本领域技术人员将显而易见的是,可以不需要说明书中的特定细节来实践本发明的各实施例。在其他实例中,众所周知的电路、设备、流程和程序以框图形式被示出以避免不必要地使本发明的各实施例模糊不清。
[0020] 图1是根据本发明的示例性实施例的用于设计目标设备上的系统的方法的流程图。目标设备可以是现场可编程门阵列(FPGA)、专用集成电路(ASIC)、结构化ASIC或其他可编程设备。根据一个实施例,图1中图示的流程可以被称为编译流程并且可以由实现在计算机系统上的计算机辅助设计(CAD)/电子设计自动化(EDA)工具来执行。
[0021] 在101处,对针对系统的设计进行综合。可以通过设计入口工具来提供针对系统的规格。规格可以描述系统的部件和相互连接。根据本发明的实施例,被输入的设计可以以硬件描述语言(HDL)处于寄存器传输级(RTL)中。综合包括生成要由目标设备实现的系统的逻辑设计。根据本发明的实施例,综合根据HDL设计定义来生成系统的优化逻辑表示。系统的优化逻辑表示可以包括具有系统所需要的最小化的数量的功能块(例如逻辑门、逻辑元件)和寄存器的表示。综合还包括对优化逻辑表示进行映射。映射包括确定如何利用目标设备上可用的资源的类型或种类来实现优化逻辑表示中的逻辑门和逻辑元件。目标设备上可用的资源可以被称为“单元”或“部件”,并且可以包括逻辑阵列块、寄存器、存储器、数字信号处理块、输入输出元件以及其他部件。根据本发明的实施例,根据映射来生成网表。该网表可以是根据HDL生成的经优化的经技术映射的网表。在综合101期间,可以执行如在102处所描述的时序分析以提供使得能够进行综合流程的时序数据。
[0022] 在102处,执行重定时感知时序分析。可以响应于来自综合101、布局106或布线110的请求来执行重定时感知时序分析。根据本发明的实施例,重定时感知时序分析是反映被预测为要被实现在系统的设计上的布局后和布线后寄存器重定时优化的时序分析。实现分析和布局后和布线后寄存器重定时优化可以被反映在时序分析网表中。来自重定时感知时序分析的结果被提供回到综合101、布局106或布线110流程。
[0023] 在103处,确定是否要执行时序分析。根据本发明的实施例,可以根据来自设计者的请求来确定关于是否要执行时序分析的确定。如果确定要执行时序分析,则控制继续进行到104。如果确定不要执行时序分析,则控制继续进行到106。
[0024] 在104处,执行重定时感知时序分析。重定时感知时序分析104被执行以访问针对系统的经综合的设计。根据本发明的实施例,重定时感知时序分析104可以与在102处执行的重定时感知时序分析相似并且包括反映被预测为要被实现在系统的设计上的布局后和布线后寄存器重定时优化的时序分析。实现分析和布局后和布线后寄存器重定时优化可以被反映在时序分析网表中或输出给设计者的其他报告中。
[0025] 在105处,将综合优化并入到系统的设计中。综合优化可以是对由设计者接收到的系统的设计的修改。对系统的设计的修改可以由设计者响应于在104处输出的时序分析和重定时优化报告来提供。控制返回到101。
[0026] 在106处,对系统进行布局。根据本发明的实施例,布局涉及将经技术映射的逻辑系统布局在目标设备上。布局包括通过确定目标设备上的哪些特定资源要被分配给在综合期间确定的经技术映射的网表和由在综合期间确定的经技术映射的网表实现来将系统适配在目标设备上。布局可以包括聚簇,其涉及将各逻辑元件分组到一起以形成呈现在目标设备上的逻辑簇。在布局106期间,可以执行如在102处所描述的时序分析以提供使得能够进行布局流程的时序数据。
[0027] 在107处,确定是否要执行时序分析。根据本发明的实施例,可以根据来自设计者的请求来确定关于是否要执行时序分析的确定。如果确定要执行时序分析,则控制继续进行到108。如果确定不要执行时序分析,则控制继续进行到110。
[0028] 在108处,执行重定时感知时序分析。重定时感知时序分析108被执行以访问针对系统的经布局的设计。根据本发明的实施例,重定时感知时序分析108可以与在102处执行的重定时感知时序分析相似并且包括反映被预测为要被实现在系统的设计上的布局后和布线后寄存器重定时优化的时序分析。实现分析和布局后和布线后寄存器重定时优化可以被反映在时序分析网表中或输出给设计者的其他报告中。
[0029] 在109处,将布局优化并入到系统的设计中。布局优化可以是对由设计者接收到的系统的设计的修改。对系统的设计的修改可以由设计者响应于在108处输出的时序分析和重定时优化报告来提供。控制返回到101。
[0030] 在110处,对经布局的设计进行布线。在布线期间,目标设备上的布线资源被分派以提供在目标设备上的各逻辑门、各逻辑元件以及其他部件之间的相互连接。可布线性优化还可以在经布局的逻辑设计上被执行。根据本发明的实施例,可布线性优化的目标在于减小用于将经布局的逻辑设计中的各部件连接的接线量。可布线性优化可以包括执行扇出分裂(fanout splitting)、逻辑重复、逻辑重接线或其他流程。应当认识到,可以在经布局的逻辑设计上执行各流程中的一个或多个流程。在布线110期间,可以执行如在102处所描述的时序分析以提供使得能够进行布线流程的时序数据。
[0031] 在111处,确定是否要执行时序分析。根据本发明的实施例,可以根据来自设计者的请求来确定关于是否要执行时序分析的确定。如果确定要执行时序分析,则控制继续进行到112。如果确定不要执行时序分析,则控制继续进行到114。
[0032] 在112处,执行重定时感知时序分析。重定时感知时序分析112被执行以访问针对系统的经布线的设计。根据本发明的实施例,重定时感知时序分析112可以与在102处执行的重定时感知时序分析相似并且包括反映被预测为要被实现在系统的设计上的布局后和布线后寄存器重定时优化的时序分析。实现分析和布局后和布线后寄存器重定时优化可以被反映在时序分析网表中或输出给设计者的其他报告中。
[0033] 在113处,将布线优化并入到系统的设计中。布线优化可以是对由设计者接收到的系统的设计的修改。对系统的设计的修改可以由设计者响应于在112处输出的时序分析和重定时优化报告来提供。控制返回到101。
[0034] 在114处,在系统上执行寄存器重定时。根据本发明的实施例,寄存器重定时涉及将识别出的寄存器跨各组合电路元件或布线电路元件移动以减小时序上关键或接近关键的路径的长度。
[0035] 在115处,对系统的设计执行时序分析。根据本发明的实施例,时序分析确定是否满足系统的时序约束。时序分析可以取决于其何时被执行来利用近似。根据本发明的实施例,时序分析建立针对系统中的每条路径的长度以及针对系统中的每条路径的时序裕量(slack)。时序裕量可以被定义为在路径变得关键之前能够被添加到路径的延迟量或者信号到达的所要求的时间减去信号到达的实际时间。
[0036] 在116处,执行组装。组装流程涉及创建包括由在101-115处描述的流程确定的信息的数据文件。数据文件可以为用于对目标设备进行编程的比特流。通过利用数据文件来对目标进行编程,目标设备上的各部件被物理变换以实现该系统。
[0037] 根据本发明的实施例,可以在时序分析115之后在设计上执行进一步的分析。例如,如果设计不满足时序要求,则设计者可以识别什么可能在限制性能并且将控制返回到流中的任何部分以进行进一步的处理。
[0038] 当重定时感知时序分析被执行时,提供考虑到要被实现的布局后和布线后寄存器重定时优化的设计的视图。通过考虑用于后续寄存器重定时流程的能力来通过在设计、综合、布局和布线过程内移动寄存器来对设计进行重定时,并且设计者提供的修改可以关注于寄存器重定时不能够解决的其他设计问题和要求。例如,服从于流水线设计的单向或“前向反馈”逻辑路径可以通过寄存器重定时来解决。然而,诸如回路的循环逻辑路径较不服从于流水线设计。如果针对系统的设计包括前向反馈和循环逻辑路径两者,则关注于优化具有最长延迟的路径的技术可以关注于能够通过寄存器重定时缩短的路径,同时忽略将在执行寄存器重定时之后保持为较长路径的明显较短的路径。本发明的各实施例提供从寄存器重定时可获得的改善并且将这些改善的结果输出给设计者。关键的且不能够通过寄存器重定时缩短的并且应当为优化的焦点的逻辑路径被识别给设计者/用户。
[0039] 图2A和图2B图示了根据本发明的示例性实施例的时序分析和重定时感知时序分析如何呈现路径的示例。图2A图示了时序分析将如何呈现路径210、220和230。如所示出的,时序分析将路径210和路径220识别为最关键的,并且将路径230识别为最不关键的。图2B图示了重定时感知时序分析将如何呈现路径210、220和230。重定时感知时序分析意识到沿路径210和220的寄存器将在寄存器重定时之后被移动并且因此路径将不是关键的。如所示出的,在三个路径210、220和230之中,不被重定时的路径230是最关键的。
[0040] 利用哪些路径在布局后和布线后寄存器重定时之后最关键的知识,设计者可以集中资源来解决其关键性。参考回到图1,在104处向设计者提供了重定时感知时序分析之后,设计者可以修改经综合的设计来减小关键路径上的逻辑的深度。在108处向设计者提供重定时感知分析结果之后,设计者可以通过将回路移动得更为靠近在一起来修改经布局的设计。在112处向设计者提供重定时感知分析结果之后,设计者可以通过缩短关键路径上的布线来修改经布线的设计。应当认识到,可以由设计者做出其他修改和优化,例如去除逻辑的级,对设计进行重组以去除回路,添加寄存器以及改变设计的功能。
[0041] 图3是图示了根据本发明的示例性实施例的用于执行重定时感知时序分析的方法的流程图。图3中图示的方法可以用于实现如图1所示的流程102、104、108和112。在301处,执行时序分析。根据本发明的实施例,时序分析可以包括在115处执行的流程,其中做出系统的设计是否满足关于系统的时序约束的确定。应当认识到,时序分析可以取决于其何时被执行来利用估计和近似。当在编译流程中时序分析被调用的时间越早,可以利用的估计和近似越多。根据本发明的实施例,时序分析建立针对系统中的每条路径的长度以及针对系统中的每条路径的时序裕量。时序裕量可以被定义为在路径变得关键之前能够被添加到路径的延迟量或者信号到达的所要求的时间减去信号到达的实际时间。
[0042] 在302处,执行重定时预测。基于在301处执行的时序分析和已经完成的设计的阶段,预测要被实现在系统的设计上的布局后和布线后寄存器重定时优化。根据本发明的实施例,可以执行简略寄存器重定时来生成预测。例如,可以使用归因于编译的阶段而仅仅部分完整的设计来执行寄存器重定时,在该编译的阶段中重定时感知时序分析被执行并且不是关于完全寄存器重定时分析所需要的设计的所有信息都可以是可获得的。在其他实施例中,可以忽略在寄存器重定时上的一个或多个限制以便更快速地生成预测。备选地,可以使用对完成详细分析可获得的所有信息来执行完整的寄存器重定时分析。
[0043] 在303处,更新时序分析。根据本发明的实施例,更新在301处执行的时序分析以包括被预测为要被实现在系统上的寄存器重定时优化。
[0044] 在304处,更新时序分析网表以反映要被实现在系统上的寄存器重定时优化。根据本发明的实施例,寄存器重定时优化可以被反映为时钟歪斜或者数据路径上的正或负延迟元件。备选地,寄存器重定时优化可以被反映为离散寄存器重定时,其中寄存器实际上在系统的设计中被移动。
[0045] 在305处,输出重定时感知时序分析的结果。当重定时感知时序分析被编译流程中的诸如综合、布局或布线的过程调用时,重定时感知时序分析可以被发送到该过程。当重定时感知时序分析被设计者启动时,重定时感知时序分析可以被发送到设计者。重定时感知时序分析结果向设计者提供在布局后和布线后寄存器重定时之后的系统的设计的准确全貌。
[0046] 图4A-C图示了根据本发明的示例性实施例的可以如何修改网表以反映寄存器重定时预测的结果。图4A图示了如下数据路径,其中寄存器A由信号clkA时钟控制,寄存器B由信号clkB时钟控制,并且寄存器C由信号clkC时钟控制。要将数据从寄存器A发送到寄存器B所需要的时间是dataA->B。要将数据从寄存器B发送到寄存器C所需要的时间是dataB->C。用于在寄存器A与寄存器B之间发送数据的时序裕量和用于在寄存器B与寄存器C之间发送数据的时序裕量可以由下式表示,其中,T是时钟周期。
[0047] SlackA->B=T+clkB–clkA–dataA->B
[0048] SlackB->C=T+clkC–clkB–dataB->C
[0049] 图4B图示了通过将寄存器B朝向寄存器C前向移动以实现延迟Δ而重定时的图4A中的数据路径。如所示出的,所执行的寄存器重定时可以通过增加在寄存器A与寄存器B之间的正延迟元件并且增加在寄存器B与寄存器C之间的负延迟元件来表示。图4B和图4C中的用于在寄存器A与寄存器B之间发送数据的时序裕量和用于在寄存器B与寄存器C之间发送数据的时序裕量可以由下式表示。
[0050] SlackA->Bnew=T+clkB–clkA–(dataA->B+Δ)
[0051] SlackB->Cnew=T+clkC–clkB–(dataB->C–Δ)
[0052] 图4C图示了通过将寄存器B朝向寄存器C前向移动以实现延迟Δ而重定时的图4A中的数据路径。如所示出的,所执行的寄存器重定时可以通过将时钟歪斜添加到寄存器B来表示。图4B和图4C中的用于在寄存器A与寄存器B之间发送数据的时序裕量和用于在寄存器B与寄存器C之间发送数据的时序裕量可以由下式表示。
[0053] SlackA->Bnew=T+(clkB–Δ)–clkA–dataA->B
[0054] SlackB->Cnew=T+clkC–(clkB–Δ)–dataB->C
[0055] 图5图示了根据本发明的另一示例性实施例的可以如何修改网表以反映寄存器重定时预测的结果。被标记为“基准”的路径包括三个寄存器并且图示了在实现任何寄存器重定时优化之前的时序裕量。在第一寄存器与第二寄存器之间的时序裕量为-50ps,并且在第二寄存器与第三寄存器之间的时序裕量为-150ps。
[0056] 被标记为“在重定时之后”的路径图示了在执行了寄存器重定时优化之后的路径。如所示出的,将第二寄存器沿该路径朝向第三寄存器移动。移动将在第一寄存器与第二寄存器之间的时序裕量从-50ps改变为-100ps。移动还将在第二寄存器与第三寄存器之间的时序裕量从-150ps改变为-100ps。
[0057] 被标记为“重定时预测”的路径图示了如在重定时感知时序分析之后表示在时序分析中的路径。代替表示利用第二寄存器的移动的寄存器重定时优化,寄存器重定时优化通过将时钟延迟改变为第二寄存器来表示。如所示出的,到第二寄存器的时钟输入被延迟-50ps。到第二寄存器的时钟输入的这种调节将在第一寄存器与第二寄存器之间的时序裕量从-50ps改变为-100ps。移动还将在第二寄存器与第三寄存器之间的时序裕量从-150ps改变为-100ps。这允许使用纯延迟调节来对寄存器重定时优化进行建模,而无需对系统的设计的结构性改变。
[0058] 图6图示了根据本发明的示例性实施例的用于考虑到推测的改变执行重定时感知时序分析的方法。图6中图示的方法可以用于实现如图1所示的过程104、108或112。推测的寄存器重定时修改设计中的限制或阻碍寄存器重定时的结构以改善针对系统的经重定时的结果。根据本发明的实施例,推测的改变允许系统向设计工具的设计者或用户提供推荐以指示能够做出哪些改变以改善将利用这些改变实现的性能和所估计的性能增益。可以响应于由设计者提供的在重定时感知时序分析的先前迭代期间做出的推测的改变上的反馈来做出针对对设计的修改实现的推测的改变。在其中设计者/用户反馈不可获得的重定时感知时序分析的初始迭代期间,可以使用根据预设优先次序的预定义集合的推测的动作来选择推测的改变。
[0059] 在601处,执行时序分析。根据本发明的实施例,时序分析可以包括在来自图1的115处执行的过程,其中做出系统的设计是否满足关于系统的时序约束的确定。应当认识到,时序分析可以取决于其何时被执行来利用估计和近似。当在编译流程中时序分析被调用的时间越早,可以利用的估计和近似越多。根据本发明的实施例,时序分析建立针对系统中的每条路径的长度以及针对系统中的每条路径的时序裕量。时序裕量可以被定义为在路径变得关键之前能够被添加到路径的延迟量或者信号到达的所要求的时间减去信号到达的实际时间。
[0060] 在602处,识别对设计中的寄存器重定时的限制。对寄存器重定时的限制可以包括在设计中限制重定时的能力的任何结构。对寄存器重定时的限制的示例可以是特定寄存器的无法支持一定类型的功能,其中特定寄存器要被用于对利用该功能的另一寄存器进行重定时。根据本发明的方面,功能可以为支持异步清除的能力。对寄存器重定时的限制的另一示例是抑制或限制应当被移动以进行重定时的寄存器的移动的设计者/用户指引。应当认识到,也可以识别到其他限制。
[0061] 根据本发明的实施例,还可以识别在设计上的将改善限制重定时性能的推测的改变。例如,可以提供在异步时钟交叉处的额外的流水线设计。可以调节在双端口RAM上的读/写时序关系。额外的流水线设计可以被提供在被标记为错误路径的边缘上,从而指示设计者/用户不关心沿边缘的定时。可以提高RAM和DSP上的内部流水线设计。可以允许为交叉时钟传输的目标的寄存器移动。
[0062] 在603处,对设计应用推测的改变。根据本发明的实施例,推测的改变被应用以去除对寄存器重定时的限制和/或改善寄存器重定时性能,其中需要寄存器重定时来减小路径的关键性。根据在重定时感知时序分析的先前迭代中进行的推测的改变上的设计者指定的偏好来将推测的改变应用到设计。设计者指定的偏好包括关于哪些推测的改变是可接受的并且哪些推测的改变不是可接受的设计者/用户反馈。根据本发明的实施例,在首次执行重定时感知时序分析并且没有设计者指定的偏好可获得的情况下,可以根据预设优先次序来执行预定义集合的推测的改变。根据本发明的实施例,可以根据下面的顺序来执行预定义集合的推测的动作。首先,异步清除被去除和/或被转换为同步清除。第二,去除设计者/用户指引。第三,通过将寄存器添加到异步时钟传输的任意端来添加流水线设计。
[0063] 在604处,执行重定时预测。基于在601处执行的时序分析、在603处应用的推测的改变和已经完成的设计的阶段,预测要被实现在系统的设计上的布局后和布线后寄存器重定时优化。根据本发明的实施例,可以执行简略寄存器重定时来生成预测。例如,可以使用归因于其中执行重定时感知时序分析并且不是关于完全寄存器重定时分析所需要的设计的所有信息都可以是可获得的编译的阶段而仅仅部分完整的设计来执行寄存器重定时。在其他实施例中,可以忽略在寄存器重定时上的一个或多个限制以便更快速地生成预测。备选地,可以使用对完成详细分析可获得的所有信息来执行完整的寄存器重定时分析。
[0064] 在605处,更新时序分析。根据本发明的实施例,更新在601处执行的时序分析以包括被预测为要被实现在系统上的寄存器重定时优化。
[0065] 在606处,更新时序分析网表以反映要被实现在系统上的寄存器重定时优化。根据本发明的实施例,寄存器重定时优化可以被反映为时钟歪斜或者数据路径上的正或负延迟元件。备选地,寄存器重定时优化可以被反映为离散寄存器重定时,其中寄存器实际上在系统的设计中被移动。
[0066] 在607处,将重定时感知时序分析的结果输出给设计者。重定时感知时序分析结果向设计者提供在布局后和布线后寄存器重定时之后的系统的设计的准确全貌。
[0067] 根据本发明的实施例,在104、108和112处执行说明推测的改变的重定时感知时序分析之后,设计者可以在105、109和113处提供关于与其他优化一起实现的推测的改变的反馈。在105、109和113处提供的设计者反馈可以在做出推测的改变时在重定时感知时序分析的后续迭代期间被利用。基于设计者反馈,还可以对设计做出修改以实现期望的并且改善寄存器重定时的推测的改变。
[0068] 本发明的各实施例允许利用设计者反馈的引导来执行用于寄存器重定时的推测的改变。当面对不能被重定时的路径时,推测的寄存器重定时可以具有能够被做出以允许重定时继续进行的多个推测的改变的选项。代替允许推测的寄存器重定时以选择可以破坏在先前编译期间实现的优化的选项,设计者/用户反馈可以用于选择理想的选项。本发明的各实施例允许设计者/用户通过指示将实现哪些推测的动作并且在设计的进一步修改中将不实现哪些推测的动作来引导编译和推测的寄存器重定时。在寄存器重定时分析期间的编译的未来迭代可以基于将做出的改变来执行优化,并且推测的寄存器重定时的未来迭代可以避免将不做出的推测的改变。根据本发明的实施例,可以以除了源RTL的格式并且独立于源RTL来提供设计者/用户反馈。这允许设计者/用户更好地利用推测的改变的益处,而无需修改代码。应当认识到,尽管针对改善寄存器重定时的推测的改变提供了特定示例,但是还可以实现其他改变来改善寄存器重定时。
[0069] 图7图示了根据本发明的示例性实施例的用于执行寄存器重定时的方法。图7是图示了根据本发明的示例性实施例的用于执行寄存器重定时的方法的流程图。图7中图示的方法可以用于实现图1中示出的114。应当认识到,也可以使用其他方法来实现109。在701处,识别具有连接到接近关键的路径的输入的寄存器并识别具有耦合到接近关键的路径的输出的寄存器。根据本发明的实施例,接近关键的路径是系统中的具有低于阈值的时序裕量值的路径。
[0070] 在702处,将在701处识别的寄存器移动到新的位置。根据本发明的实施例,可以通过将寄存器在接近关键的路径上后向移动到部件的输入来识别针对每个所识别的寄存器的新的位置。针对要发生的后向推动,寄存器需要被呈现在部件的每个扇出上。根据本发明的实施例,可以通过将寄存器在接近关键的路径上前向移动到部件的输出来识别新的位置。针对要发生的前向推动,寄存器需要被呈现在部件的每个输入上。根据本发明的备选实施例,可以通过利用减小关键性的约束来对多个等式进行求解来识别针对寄存器的新的位置。
[0071] 在703处,针对每个移动的寄存器,确定是否在702处将寄存器移动到其新的位置将引发对约束的违反。根据本发明的实施例,约束可以包括设计者/用户定义的时序约束。约束可以包括针对系统的面积约束,例如关于允许的最大面积增加的全局约束和确保均匀地跨系统创建寄存器的约束。约束可以包括体系结构约束,其定义用于处理进位链的规则和关于诸如控制信号的次级信号的各种限制。约束可以包括设计者/用户定义的约束,例如抑制目标设备的指派部分上的部件的布局的约束。应当认识到,其他类型的约束还可以出于在703处对违反的确定的目的而被定义并被包含。如果确定将寄存器移动到其新的位置引发约束的违反,则控制继续进行到704。如果确定将寄存器移动到其新的位置不会引发约束的违反,则控制继续进行到705。
[0072] 在704处,撤销导致违反的移动。控制继续进行到705。
[0073] 在705处,执行时序分析。时序分析建立针对系统中的每条路径的长度以及针对系统中的每条路径的时序裕量。
[0074] 在706处,确定系统的时序是否已经被改善。确定系统的时序是否已经被改善可以通过将最近经重定时的系统设计中的接近关键的路径的时序裕量值与先前系统设计中的接近关键的路径的时序裕量值进行比较来实现。如果系统的时序已经改善,则控制继续进行到707。如果系统的时序尚未改善,则控制继续进行到708。
[0075] 在707处,保存对系统的当前改变。对系统的当前改变包括在702处做出的改变。
[0076] 在708处,确定是否已经了执行阈值数量的迭代701-707。如果尚未执行阈值数量的迭代701-707,则控制返回到701。如果已经执行了阈值数量的迭代701-707,则控制继续进行到709。
[0077] 在709处,在707处保存的当前改变被指派为针对系统的当前设计。在图7中描述的过程可以被称为离散寄存器重定时。
[0078] 根据本发明的实施例,图1、3、6和7中图示的流程可以通过运行在第一计算机系统上的EDA工具来执行。数据文件可以被生成并被发送到第二计算机系统以允许系统的设计被进一步处理。备选地,数据文件可以被发送到第二计算机系统,其可以用于根据系统设计来对目标设备进行编程。应当认识到,系统的设计还可以以其他形式被输出在例如显示器设备或其他介质上。通过利用数据文件来对目标进行编程,目标设备上的各部件被物理变换以实现系统。
[0079] 图1、3、6和7是图示了本发明的各实施例的流程图。在这些附图中描述的流程可以通过由计算机系统实现的EDA工具来执行。图示的技术中的一些可以顺序地、并行地或以除了描述的并且所描述的流程可以被重复的顺序之外的顺序来执行。应当认识到,不是所描述的技术中的全部都需要被执行,可以添加额外的技术,并且可以利用其他技术来替代所图示的技术中的一些。
[0080] 图8图示了根据本发明的实施例的实现系统设计器的计算机系统800的框图。计算机系统800包括处理数据信号的处理器810。处理器810耦合到总线801或其他交换结构,其在处理器810与计算机系统800中的其他部件之间发送数据信号。计算机系统800包括存储器820。存储器820可以存储由数据信号表示的可以由处理器810运行的指令和代码。数据存储设备830也耦合到总线801。
[0081] 网络控制器840耦合到总线801。网络控制器840可以将计算机系统800链接到计算机的网络(未示出)并且支持在各机器之间的通信。显示设备控制器850耦合到总线801。显示设备控制器850允许将显示设备(未示出)耦合到计算机系统800并且用作在显示设备与计算机系统800之间的接口。输入接口860耦合到总线801。输入接口860允许将输入设备(未示出)耦合到计算机系统800并且将数据信号从输入设备发送到计算机系统800。
[0082] 系统设计器821可以驻存在存储器820中并且由处理器810运行。根据本发明的实施例,系统设计器821包括重定时感知时序分析单元。重定时感知时序分析单元可以在编译流程中的每个综合、布局和布线流程之后执行重定时感知时序分析。重定时感知时序分析被提供给设计者,并且允许该设计者修改针对系统的设计而无需等待完成设计的整个编译。重定时感知时序分析反映被预测为要被实现的布局后和布线后寄存器重定时优化。根据本发明的方面,通过对系统的设计做出的推测的改变来使得能够进行被预测为要被实现的布局后和布线后寄存器重定时优化。推测的改变可以与时序分析结果一起被呈现给设计者,并且可以响应于由设计者提供的反馈来做出对设计的实际的改变。
[0083] 图9图示了根据本发明的实施例的系统设计器900。系统设计器900可以用于实现图8中图示的系统设计器821。系统设计器900可以是用于设计目标设备上的系统的EDA工具,目标设备例如FPGA、ASIC、结构化ASIC或其他电路。图9图示了实现系统设计器900的实施例的模块。根据一个实施例,模块表示软件模块,并且系统设计可以由计算机系统来执行,计算机系统例如图8中图示的运行由图9中示出的模块表示的指令序列的计算机系统。如下文将描述的,对指令序列的运行使计算机系统支持系统设计。在备选实施例中,硬接线电路可以代替各软件指令或与各软件指令组合使用以实现本发明的各实施例。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。
[0084] 系统设计器900包括设计者管理器910。系统设计器管理器910连接到系统设计器900的其他部件并且在系统设计器900的其他部件之间发送数据。系统设计器管理器910提供接口,其允许设计者/用户(例如设计者)将数据输入到系统设计器900中并且允许系统设计器900将数据输出给设计者/用户。根据本发明的实施例,针对系统的设计、对设计的修改和关于对设计的推测的改变的反馈可以为使用系统设计器管理器910的输入。重定时感知时序分析的报告、对设计做出的推测的改变以及由推测的改变获得的性能可以由系统设计管理器910输出。
[0085] 系统设计器900包括综合单元920。综合单元920生成要由目标设备实现的系统的逻辑设计。根据本发明的实施例,综合单元920根据HDL设计定义来生成系统的经优化的逻辑表示并对优化逻辑设计进行映射。根据本发明的实施例,根据映射来生成网表。该网表可以是根据HDL生成的经优化的经技术映射的网表。
[0086] 系统设计器900包括布局单元930。根据本发明的实施例,布局单元930将经映射的逻辑系统布局在目标设备上。布局作用在经技术映射的网表上以产生针对每个功能块的布局。根据本发明的实施例,布局单元930通过确定逻辑设计上的哪些资源要被用于特定逻辑元件和被确定为实现如在综合期间所确定的系统的其他功能块来将系统适配在目标设备上。布局可以包括聚簇,其涉及将各逻辑元件分组到一起以形成呈现在目标设备上的逻辑簇。
[0087] 系统设计器900包括布线单元940,其对目标设备上的经布局的设计进行布线。布线单元940分派目标设备上的布线资源以提供在目标设备上的各逻辑门、各逻辑元件以及其他部件之间的相互连接。布线单元940还可以执行在经布局的逻辑设计上的可布线性优化。
[0088] 系统设计器900包括重定时感知时序分析单元950。重定时感知时序分析单元950响应于来自综合单元920、布局单元930、布线单元940或来自设计者的请求来执行重定时感知时序分析。重定时感知时序分析反映被预测为要被实现在系统的设计上的布局后和布线后寄存器重定时优化。实现分析和布局后和布线后寄存器重定时优化可以被反映在由重定时感知时序分析单元950生成的时序分析网表中。来自重定时感知时序分析的结果被提供回到请求发起者。
[0089] 根据本发明的实施例,重定时感知时序分析单元950可以响应于对设计做出的改善寄存器重定时的推测的改变来执行重定时感知时序分析。推测的寄存器重定时单元(未示出)可以识别对寄存器重定时的限制并且响应于由设计者提供的预定集合的优先次序和/或偏好来应用推测的改变。
[0090] 根据本发明的实施例,设计者可以请求在综合、布局或布线之后执行重定时感知时序分析,而无需等待设计的整个编译。这允许设计者查看在早期阶段处的设计并允许设计者做出修改以改善在早期阶段处的设计。当重定时感知时序分析被执行时,将考虑到要被实现的布局后和布线后寄存器重定时优化的设计的视图提供回到设计者。
[0091] 系统设计器900包括寄存器重定时单元960。根据本发明的实施例,寄存器重定时单元960将识别出的寄存器跨组合电路元件移动以减小如所确定的时序上关键或接近关键的路径的长度。寄存器重定时单元960可以执行图7中图示的流程。
[0092] 系统设计器900包括时序分析单元980,其执行在所生成的系统的设计上的时序分析。根据本发明的实施例,时序分析确定是否满足系统的时序约束。时序分析单元980可以建立针对系统中的每条路径的长度以及针对系统中的每条路径的时序裕量。时序裕量可以被定义为在路径变得关键之前能够被添加到路径的延迟量或者信号到达的所要求的时间减去信号到达的实际时间。
[0093] 系统设计器900包括组装单元980。根据本发明的实施例,组装单元980创建描述系统的设计的数据文件。数据文件可以为用于对目标设备进行编程的比特流。通过利用数据文件来对目标设备进行编程,目标设备被物理地变换以实现系统。应当认识到,系统设计器900中的模块可以实现参考图1、3、6和7描述的过程。
[0094] 根据本发明的实施例,当执行所描述的编译流程时,来自综合、布局和布线的数据被存储在计算机系统的存储器中的寄存器中。在综合、布局和/或布线之后完成了重定时感知时序分析之后,得到的经修改的数据可以被存储在存储器中的第二组寄存器中。来自重定时感知时序分析的经修改的数据可以经由显示设备控制器或其他输出设备被输出给设计者。由设计者提供的输入可以经由输入接口来接收。从由设计者提供的输入得到的对综合、布局和/或布线的修改可以被存储在存储器中的第三组寄存器中。描述系统的数据文件可以被存储在数据存储设备中和/或从计算机系统被输出。
[0095] 应当认识到,本发明的各实施例可以被提供为计算机程序产品或软件,其可以包括具有指令的计算机可读或机器可读介质。计算机可读或机器可读介质上的指令可以用于对计算机系统或其他电子设备进行编程。机器可读介质可以包括但不限于软盘、光盘、CD-ROM以及磁光盘或适合于存储电子指令的其他类型的介质/机器可读介质。本文描述的技术不限于任何特定软件配置。它们可以适用于在任何计算或处理环境中。本文使用的术语“计算机可读介质”或“机器可读介质”应包括能够存储或编码指令序列的任何介质,所述指令序列用于由计算机运行并且使计算机执行本文描述的方法中的任何方法。另外,本领域中常见的是提到以一种形式或另一形式的软件(例如,程序、流程、过程、应用、模块、单元、逻辑、等等)作为采取动作或引发结果。这种表达仅仅是陈述对由处理系统的软件的运行使处理器执行产生结果的动作的速记方式。
[0096] 图10图示了根据本发明的实施例的可以用于实现目标设备的设备1000。设备1000是包括多个逻辑阵列块(LAB)的现场可编程门阵列(FPGA)。每个LAB可以由多个逻辑块、进位链、LAB控制信号、查找表(LUT)链以及寄存器链连接线路形成。逻辑块是提供用户逻辑功能的有效实现的小逻辑单元。逻辑块包括一个或多个组合单元,其中每个组合单元具有单个输出以及寄存器。根据本发明的实施例,逻辑块可以与逻辑元件(LE)类似地操作,例如在由 公司制造的Stratix或Cyclone设备中发现的那些,或者组合逻辑块(CLB),例如在由Xilinx公司制造的Virtex设备中发现的那些。在该实施例中,逻辑块可以包括具有可配置寄存器的第四输入LUT。根据本发明的备选实施例,逻辑块可以与自适应逻辑模块(ALM)类似地操作,例如在由Altera公司制造的Stratix设备中发现的那些。LAB被归类成跨设备1000的行和列。LAB的列被示出为1011-1016。应当认识到,逻辑块可以包括额外的或备选的部件。
[0097] 设备1000包括存储器块。存储器块可以例如为双端口随机存取存储器(RAM)块,其以高达的各种频率提供高达各种位宽的专用真实双端口、简单双端口或简单端口存储器。存储器块可以被归类成跨在各选择的LAB之间的设备的列或被单独地或成对地被定位在设备1000内。存储器块的列被示出为1021-1024。
[0098] 设备1000包括数字信号处理(DSP)块。DSP块可以用于实现具有相加或相减特征的各种配置的乘法器。DSP块包括移位寄存器、乘法器、加法器和累加器。DSP块可以被归类成跨设备1000的各列并且被示出为1031。
[0099] 设备1000包括多个输入/输出元件(IOE)1040。每个IOE馈送设备1000上的IO引脚(未示出)。IOE 1040被定位在设备1000的外围周围的LAB行和列的端部。每个IOE可以包括双向IO缓冲器和用于登记输入、输出和输出使能信号的多个寄存器。
[0100] 设备1000可以包括路由资源,例如lAB本地相互连接线路、行相互连接线路(“H型接线”)、列相互连接线路(“V型接线”)(未示出)以在目标设备的各部件之间路由信号。
[0101] 在前面的说明书中,已经参考本发明的具体示例性实施例描述了本发明的各实施例。然而,将显而易见的是,可以在不脱离本发明的各实施例的较广泛的精神和范围的情况下对其进行各种修改和改变。因此,说明书和附图应被认为是在说明性而非限制性的意义上。