使用去填充和再填充操作来实现集成电路设计的制作方法

文档序号:10725189阅读:253来源:国知局
使用去填充和再填充操作来实现集成电路设计的制作方法
【专利摘要】在寄存器重新定时操作的预期中,电路设计计算设备在电路设计中可以执行去填充操作、约束生成以及再填充操作。在放置前和/或布线操作前的去填充操作可以防止各自的放置和/或布线操作来放置和/或布线来自电路设计的寄存器。约束生成可以对放置和/或布线操作产生约束,其允许寄存器在布线操作后的再次插入。再填充操作可以在布线操作后根据约束在电路设计中再次插入寄存器。如果需要,电路设计计算设备可以执行寄存器重新定时操作,以进一步改善电路设计的性能。
【专利说明】使用去填充和再填充操作来实现集成电路设计
[0001 ] 本申请要求于2015年5月I日提交的美国专利申请14/702,627的优先权,其全部内容通过引用并入本文。
技术领域
[0002]本文涉及集成电路,且更具体地涉及在实现集成电路设计期间执行去填充(depopulat1n)和再填充(repopulat1n)操作。
【背景技术】
[0003]从一个技术节点到下一个技术节点的每次转变已经导致更小的晶体管几何尺寸,因此集成电路区域的每个单元有可能实现更多的功能性。同步集成电路已经从这种发展中进一步获益,如减少的互连和单元延迟所证实的那样,其已经导致性能增加。
[0004]为了进一步增加性能,已经提出诸如寄存器重新定时的方案,其中寄存器在组合逻辑的多个部分之间被移动,从而实现寄存器之间更平衡的延迟分布,并且因此有可能实现更高的时钟频率,在该时钟频率下可操作集成电路。
[0005]但是,在放置操作之前执行寄存器重新定时是基于预期延迟的估计(S卩,估计是基于预放置电路设计中的寄存器之间的组合逻辑门的数量)并且可能导致依据寄存器之间的实际延迟的次优寄存器重新定时方案。
[0006]类似地,在布线操作之前执行寄存器重新定时是基于预期延迟的估计(S卩,估计是基于所放置的电路设计中的寄存器之间的曼哈顿距离)并且可能导致依据寄存器之间的实际延迟的次优寄存器重新定时方案,该实际延迟是由于布线堵塞所造成的更长布线引起的。
[0007]在放置操作之后或布线操作之后执行寄存器重新定时可能分别需要先前确定的放置方案的更新或先前确定的放置和布线方案的更新。

【发明内容】

[0008]根据本发明的某些方面,电路设计计算设备可以接收包括耦合在第一电路设计元件和第二电路设计元件之间的寄存器的电路设计描述。电路设计计算设备可以执行防止布线操作连接寄存器的去填充操作并且执行使用被配置成以非流水线模式操作的流水线布线资源连接第一电路设计元件和第二电路设计元件的布线操作。电路设计计算设备可以执行将流水线布线资源的配置从以非流水线模式操作改变到以流水线寄存器模式操作的再填充操作。
[0009]应当理解,本发明可以在计算机可读介质上以多种方式诸如过程、装置、系统、设备或方法来实现。下面描述了本发明的几个创造性实施例。
[0010]在某些实施例中,上述电路设计计算设备可以执行配置流水线布线资源以非流水线模式操作的寄存器重新定时操作。如果需要,电路设计计算设备可以执行通过将附加流水线布线资源的配置从以非流水线模式操作改变到以流水线寄存器模式操作的寄存器重新定时操作。
[0011]在一些实施例中,附加流水线布线资源可以连接到第二电路设计元件的输出。在其它实施例中,附加流水线布线资源可以连接到第一电路设计元件的输入。
[0012]本发明的另外特征、其特性和各种优点将从附图和后面优选实施例的详细描述中变得更明显。
【附图说明】
[0013]图1是根据一个实施例的说明性集成电路的示意图。
[0014]图2是根据一个实施例的说明性寄存器重新定时操作的示意图。
[0015]图3是根据一个实施例的使用寄存器使布线信号流水线化的说明性流水线布线资源的示意图。
[0016]图4是根据一个实施例的可用来设计集成电路的说明性电路设计系统的示意图。
[0017]图5是根据一个实施例的可用在电路设计系统中的说明性计算机辅助设计(CAD)工具的示意图。
[0018]图6是根据一个实施例的用于设计集成电路的说明性步骤的流程图。
[0019]图7是根据一个实施例在放置操作之前的说明性去填充和约束生成操作的示意图。
[0020]图8是根据一个实施例在放置操作之后的说明性去填充和约束生成操作的示意图。
[0021 ]图9是根据一个实施例的说明性布线和再填充操作的示意图。
[0022]图10是根据一个实施例的说明性寄存器重新定时和重新布线操作的示意图。
[0023]图11是根据一个实施例的说明性预测性重新定时和约束操作以及之后的布线和再填充操作与寄存器重新定时和重新布线操作的示意图。
[0024]图12是根据一个实施例的用于执行去填充、布线和再填充操作的说明性步骤的流程图。
[0025]图13是根据一个实施例的在执行放置操作之前用于从集成电路设计中消除时钟存储元件的说明性步骤的流程图。
[0026]图14是根据一个实施例的在放置操作之后用于从电路设计描述中消除电路设计元件的说明性步骤的流程图。
【具体实施方式】
[0027]当前实施例涉及集成电路,且更具体地涉及在实现集成电路设计期间执行去填充(depopulat1n)和再填充(repopulat1n)操作。
[0028]如在上面【背景技术】部分提到的,在放置操作之前和/或布线操作之前执行寄存器重新定时基于预期延迟的估计,并且可能导致依据寄存器之间的实际延迟的次优寄存器重新定时方案。但是,在放置操作之后或布线操作之后执行寄存器重新定时可能分别需要先前确定的放置方案的更新或先前确定的放置和布线方案的更新。
[0029]因此,可能期望在放置操作之前和/或布线操作之前通过执行去填充操作(例如,通过从电路设计中消除在寄存器重新定时操作期间可移动的寄存器)来预期潜在的寄存器重新定时操作,并且期望在布线操作完成后通过执行再填充操作(例如,通过将先前消除的寄存器插入已布线的电路设计中)执行实际寄存器重新定时操作。
[0030]本领域技术人员应当理解,呈现的示例性实施例可在没有这些具体细节中的一些或全部的情况下实施。在其它实例中,没有详细地描述众所周知的操作,以免不必要地模糊所呈现的实施例。
[0031]图1中示出诸如可编程逻辑设备(PLD)10的集成电路的说明性实施例,其可被配置成实现电路设计。如图1中所示,可编程逻辑设备(PLD)可以包括功能块的二维阵列,其包括逻辑阵列块(LAB) 110和其它功能块,例如随机存取存储器(RAM)块130和数字信号处理(DSP)块120。诸如LAB 110的功能块可以包括更小的可编程区域(例如,逻辑元件、可配置逻辑块或自适应逻辑模块),其接收输入信号并且在输入信号上执行自定义功能以产生输出信号。
[0032]可编程逻辑设备100可以包含可编程存储器元件。存储器元件可以使用输入/输出元件(10E)102加载配置数据(也被称为编程数据)。一旦被装载,每个存储器元件提供控制相关联的功能块(例如,LAB 110,DSP 120,RAM 130或输入/输出元件102)的操作的相应静态控制信号。
[0033 ]在通常情形下,被加载的存储器元件的输出被施加到功能块中的金属氧化物半导体晶体管的栅极以接通或关断某些晶体管,从而配置包括布线路径的功能块中的逻辑。可以以这种方式被控制的可编程逻辑电路元件包括多路复用器(例如,用于在互连电路中形成布线路径的多路复用器)、查找表、逻辑阵列、AND、OR、NAND以及NOR逻辑门、传输门(passgate)等中的一些部分。
[0034]存储器元件可以使用任何合适的易失性和/或非易失性的存储器结构,诸如随机存取存储器(RAM)单元、熔断器、反熔断器、可编程只读存储器的存储单元、掩模编程和激光编程的结构、这些结构的组合等。因为存储器元件在编程期间被加载配置数据,所以存储器元件有时候被称为配置存储器、配置RAM( CRAM)或可编程存储元件。
[0035]另外,可编程逻辑设备可以具有输入/输出元件(10E)102,用于从PLD驱离信号并且用于从其它设备接收信号。输入/输出元件102可以包括并联输入/输出电路系统、串联数据收发器电路系统、差分接收器和发射器电路系统或用于将一个集成电路连接到另一个集成电路的其它电路系统。如图所示,输入/输出元件102可以围绕芯片的周边设置。如果需要,可编程逻辑设备可以具有以不同方式布置的输入/输出元件102。例如,输入/输出元件102可以形成一列或多列输入/输出元件,其可以定位于可编程逻辑设备上的任何地方(例如,横跨PLD的宽度均匀分布)。如果需要,输入/输出元件102可以形成一行或多行输入/输出元件(例如,横跨PLD的高度分布)。可替代地,输入/输出元件102可以形成输入/输出元件的岛区(island),其可以分布在PLD的表面上或聚集在所选择的区域中。
[0036]PLD也可以包括垂直布线通道140形式的可编程互连电路系统(即沿PLD100的垂直轴形成的互连)和水平布线通道150(即沿PLD 100的水平轴形成的互连),每个布线通道包括至少一个轨道以布线至少一个引线(wire)。如果需要,互连电路系统可以包括流水线元件,并且存储在这些流水线元件中的内容可以在操作期间被访问。例如,编程电路可以提供对流水线元件的读写访问。
[0037]需要注意,除了图1中描述的互连电路系统的拓扑结构外,其它布线拓扑结构也旨在包括在本发明的范围内。例如,布线拓扑结构可以包括沿着其范围的不同部分对角地行进或者水平地和垂直地行进的引线,以及在三维集成电路的情况下垂直于设备平面的引线,并且引线的驱动器可以位于与引线的一个端部不同的点处。布线拓扑结构可以包括跨越基本上所有PLD 100的全局引线、诸如跨越部分PLD 100的引线的分段全局引线、特定长度的交错引线、较小的局部引线或任何其它合适的互连资源布置。
[0038]此外,应当理解,实施例可以以任何集成电路实现。如果需要,这种集成电路的功能块可以被布置在更多等级和层中,其中多个功能块被互连以形成更大的块。其它设备布置可以使用不以行或列布置的功能块。
[0039]图2示出PLD 100可实现的电路设计的不同型式(vers1n)。电路设计的第一型式可以包括时钟存储电路诸如寄存器210、220、230和240以及组合逻辑245。
[0040]组合逻辑245可以包括由布尔电路实现的任何数字逻辑,其输出可以作为仅当前输入的函数异步地改变。组合逻辑的示例可以包括AND、OR、NAND、NOR和XOR逻辑门、反相器、传输门、多路复用器、去多路复用器、查找表、逻辑阵列等以及它们的任何组合。
[0041]相比之下,时序逻辑可以包括由电路实现的任何数字逻辑,其输出可以响应于同步信号(例如,时钟信号)在离散时间同步地改变。时序逻辑的示例可以包括任何时钟存储电路诸如寄存器(有时候被称为触发器)或者存储器诸如随机存取存储器(RAM)、只读存储器(R0M)、可按内容寻址存储器(CAM)等。
[0042]电路设计元件可以包括电路设计中的任何组合逻辑、时序逻辑和/或引线。如果需要,延迟可以与电路设计元件相关联。
[0043]在图2的示例中,寄存器210可以发送信号到寄存器220;寄存器220可以发送信号通过组合逻辑240到寄存器230;并且寄存器230可以发送信号到寄存器240。作为一个示例,从寄存器220通过组合逻辑245到寄存器230的路径可以具有6ns(纳秒)的延迟,而寄存器210和220之间与寄存器230和240之间的路径可以具有零纳秒的可忽略延迟。因此,电路设计的第一型式可以在166MHz的频率下操作。
[0044]在电路设计的第一型式上执行寄存器重新定时可以创建电路设计的第二型式。例如,寄存器230可以被推回通过一部分组合逻辑245,从而将电路设计的第一型式的组合逻辑245分离成电路设计的第二型式的组合逻辑242和244。在电路设计的第二型式中,寄存器210可以发送信号到寄存器220;寄存器220可以发送信号通过组合逻辑242到寄存器230;并且寄存器230可以发送信号通过组合逻辑244到寄存器240。
[0045]作为一个示例,从寄存器220通过组合逻辑242到寄存器230的路径可以具有4ns的延迟,并且从寄存器230通过组合逻辑244到寄存器240的路径可以具有2ns的延迟。因此,电路设计的第二型式可以在250MHz的频率下操作。
[0046]在电路设计的第二型式上执行寄存器重新定时可以创建电路设计的第三型式。例如,寄存器220可以被向前推动通过一部分组合逻辑242,从而将电路设计的第二型式的组合逻辑242分离成电路设计的第三型式的组合逻辑241和243。在电路设计的第三型式中,寄存器210可以发送信号通过组合逻辑241到寄存器220;寄存器220可以发送信号通过组合逻辑243到寄存器230;并且寄存器230可以发送信号通过组合逻辑244到寄存器240。
[0047]作为一个示例,从寄存器210通过组合逻辑241到寄存器220的路径,从寄存器220通过组合逻辑243到寄存器230的路径,以及从寄存器230通过组合逻辑244到寄存器240的路径都可以具有2ns的延迟。因此,电路设计的第三型式可以在500MHz的频率下操作,该频率是电路设计的第一型式可以操作的频率的三倍。
[0048]在一些实施例中,寄存器可以沿引线被推动,而不被向前或向后推动通过组合逻辑。例如,考虑一种情形,其中从寄存器220到电路设计的第二型式的组合逻辑242的引线具有2ns的延迟,并且通过组合逻辑242到寄存器230的路径具有2ns的延迟。在这种情形下,寄存器220可以沿更靠近组合逻辑242的引线被推动,从而实现与在电路设计的第三型式中相同的结果(即寄存器210、220、230和240之间的2ns的最坏情况延迟),而无需推动寄存器220通过任何组合逻辑。
[0049]因此,为了避免不必要地模糊当前的实例,我们将所有的寄存器移动(包括将寄存器向前或向后推动通过组合逻辑以及沿引线将寄存器向前或向后推动)都称为寄存器重新定时操作。
[0050]如果需要,布线资源诸如图1的垂直布线通道140或水平布线通道150可以包括能够促进寄存器重新定时的流水线元件。图3示出根据一个实施例使用寄存器的流水线布线资源300。如图所示,流水线布线资源300包括第一多路复用器302、驱动器304、寄存器306以及第二多路复用器308。
[0051]多路复用器302可以是驱动器输入多路复用器(DIM)或功能块输入多路复用器(FBBOt3DIM可以从多个来源选择信号并且将所选择的信号发送到驱动引线的驱动器304。多个来源可以包括来自功能块的输出和其它布线引线的信号,这些信号在与引线相同的方向或与引线正交的方向行进。FB頂输出信号到功能块并且可以从多个布线引线选择信号。
[0052]如图3所示,根据本发明的一个实施例,通过提供多路复用器302的输出到寄存器306的数据输入,多路复用器302可以被流水线化。流水线布线资源300中的多路复用器308可以直接接收多路复用器302的输出,并且也可以接收来自寄存器306的数据输出。
[0053]尽管流水线布线资源300包括寄存器,但本领域技术人员应当理解,可以使用不同的寄存器实现方式来存储布线信号,所述实现方式诸如为边沿触发的触发器、脉冲锁存器、透明低锁存器、透明高锁存器,这里仅举几个例子。因此,为避免不必要地模糊当前的实施例,我们将流水线布线资源中的存储电路称为流水线存储元件。
[0054]多路复用器308可以使流水线布线资源300能够以非流水线模式或以流水线寄存器模式使用。在非流水线模式中,多路复用器308的输出选择多路复用器302的直接输出。
[0055]在流水线寄存器模式中,多路复用器308可以选择寄存器306的输出。多路复用器308可以提供其输出到驱动器电路304,并且驱动器电路304的输出可以被用于驱动布线引线。布线引线可以跨越多个功能块(例如,对于具有DIM的流水线布线资源)。可替代地,布线引线可以在一个功能块内(例如,对于具有FB頂的流水线布线资源)。
[0056]每个D頂/FBIM可以包括诸如寄存器306的寄存器,使得所有的布线多路复用器被流水线化。但是,在一些实施例中,这可以是不必要的,因为所提供的功能可能超过设计要求。因此,在某些实施例中,仅仅部分(诸如二分之一或四份之一)的布线多路复用器可以被流水线化。例如,信号可能耗时150皮秒(ps)以横穿给定长度的引线,但是时钟信号可能被约束以便以650ps的时钟周期操作。因此,在这个示例中每四个引线提供一个诸如寄存器306的寄存器是足够的。可替代地,寄存器可以被布置得比每四个引线更频繁(例如,每两个引线),从而在使用哪些寄存器的选择中提供更高的自由度。
[0057]诸如流水线布线资源300的流水线布线资源可以促进寄存器重新定时操作,诸如图2中示出的寄存器重新定时。例如,考虑一种情形,其中寄存器230由以流水线寄存器模式操作的流水线布线元件的第一实例实现(即,寄存器230由流水线布线资源300的第一实例的寄存器306实现)。另外考虑从寄存器220通过组合逻辑245到寄存器230的路径包括以非流水线模式操作的流水线布线元件的第二实例。因此,将流水线布线元件的第一实例从以流水线寄存器模式操作切换到以非流水线模式操作以及将流水线布线元件的第二实例从以非流水线模式操作切换到以流水线寄存器模式操作可以将图2中呈现的电路设计的第一型式转换成第二型式。
[0058]电路设计系统中的CAD工具可以估计寄存器重新定时是否可改善电路设计的当前型式的性能,或者电路设计的当前型式是否满足给定的性能标准。如果需要,并且在CAD工具确定寄存器重新定时将改善电路设计的当前型式的性能的情况下,或者在电路设计的当前型式未达到给定的性能标准的情况下,CAD工具可以执行寄存器重新定时操作,其将电路设计的当前型式转换成电路设计的另一种型式(例如,如图2中所示)。
[0059]根据一个实施例的说明性电路设计系统在图4中被示出。系统400可以基于一个或多个处理器,诸如个人计算机、工作站等。(多个)处理器可以使用网络(例如,局域网或广域网)来联接。这些计算机中的存储器或外部存储器和存储设备诸如内部硬盘和/或外部硬盘可以被用来存储指令和数据。
[0060]基于软件的部件(诸如计算机辅助设计工具420和数据库430)驻留在系统400上。在操作期间,可执行软件(诸如计算机辅助设计工具420的软件)在系统400的(多个)处理器上运行。数据库430被用来存储用于系统400的操作的数据。一般来说,软件和数据可以被储存在系统400中的任何计算机可读介质(存储装置)上。这种存储装置可以包括计算机存储器芯片、可移除的和固定的介质,诸如硬盘驱动器、闪存存储器、高密度光盘(CD)、数字多功能光盘(DVD)、蓝光光盘(BD)、其它光学介质、软磁盘、磁带或任何其它合适的存储器或存储设备。当系统400的软件被安装时,系统400的存储装置具有促使系统400中的计算装备执行各种方法(过程)的指令和数据。当执行这些过程时,计算装备被配置为实现电路设计系统的功能。
[0061 ]计算机辅助设计(CAD)工具420 (其中一些或全部有时被统称为CAD工具、电子设计自动(EDA)工具或电路设计计算设备)可以由单个供应商或多个供应商提供。工具420可以作为一套或多套工具(例如,用于执行与实现可编程逻辑器件中的电路设计相关联的任务的编译器套件)和/或作为一个或多个独立的软件部件(工具)来提供。(多个)数据库430可以包括仅由特定的工具或多个工具访问的一个或多个数据库,并且可以包括一个或多个共享数据库。共享数据库可以由多个工具访问。例如,第一工具可以将用于第二工具的数据存储在共享数据库中。第二工具可以访问共享数据库以检索由第一工具存储的数据。这允许一个工具将信息传递给另一个工具。如果需要,工具也可以在彼此之间传递信息,而不需要将信息存储在共享数据库中。
[0062]图5中示出说明性计算机辅助设计工具520,其可以被用在诸如图4的电路设计系统400的电路设计系统中。
[0063]设计过程可以开始于集成电路设计的功能说明(例如,集成电路设计的功能或行为描述)的公式化。电路设计者可以使用设计和约束输入工具564来指定期望的电路设计的功能运算。设计和约束输入工具564可以包括诸如设计和约束输入辅助566和设计编辑器568的工具。诸如辅助566的设计和约束输入辅助可以被用来帮助电路设计者从现有的电路设计文库(library)定位期望的设计,并且可以将计算机辅助协助提供给电路设计者以便输入(指定)期望的电路设计。
[0064]作为一个示例,设计和约束输入辅助566可以被用来向使用者呈现选项屏幕。使用者可以点击屏幕上的选项以选择所设计的电路是否应该具有某些特征。设计编辑器568可以被用来输入设计(例如,通过输入多行硬件描述语言代码),可以被用来编辑从文库获得的设计(例如,使用设计和约束输入辅助)或者可以协助使用者选择和编辑适当的预封装代码/设计。
[0065]设计和约束输入工具564可以被用来允许电路设计者使用任何合适的格式来提供期望的电路设计。例如,设计和约束输入工具564可以包括允许电路设计者使用真值表输入电路设计的工具。真值表可以使用文本文件或定时图来指定并且可以从文库中导入。真值表电路设计和约束输入可以被用于大电路的一部分或用于整个电路。
[0066]作为另一个示例,设计和约束输入工具564可以包括原理图捕获工具。原理图捕获工具可以允许电路设计者从诸如逻辑门和逻辑门群组的组成零件可视地构造集成电路设计。预先存在的集成电路设计的文库可以被用来允许设计的期望部分借助原理图捕获工具被导入。
[0067]如果需要,设计和约束输入工具564可以允许电路设计者使用硬件描述语言(诸如Veri log硬件描述语言(Veri log HDL )、超高速集成电路硬件描述语言(VHDL )、SystemVeri log或诸如OpenCL或SystemC的更高级的电路描述语言,这里仅举几个例子)来提供电路设计给电路设计系统400。集成电路设计的设计者可以通过用编辑器568编写硬件描述语言代码来输入电路设计。如果需要,代码块可以从使用者保持的或商用的文库导入。
[0068]在已经使用设计和约束输入工具564输入设计后,行为仿真工具572可以被用来仿真电路设计的功能性能。如果设计的功能性能是不完全的或不正确的,则电路设计者可以使用设计和约束输入工具564对电路设计做出改变。在已经使用工具574执行综合操作之前,可以使用行为仿真工具572来证实新电路设计的功能运算。如果需要,诸如行为仿真工具572的仿真工具也可以被用在设计流程中的其它阶段(例如,在逻辑综合之后)。行为仿真工具572的输出可以以任何合适的格式(例如,真值表、定时图等)被提供给电路设计者。
[0069]一旦电路设计的功能运算已经被确定是令人满意的,则逻辑综合和优化工具574可以生成电路设计的门级网表,例如,使用来自与由铸造厂支持的目标工艺有关的特定文库的门,其已经被选择以产生集成电路。可替代地,逻辑综合和优化工具574可以使用目标可编程逻辑器件(即,在特定的可编程逻辑器件产品或产品系列的逻辑和互连资源中)的门来生成电路设计的门级网表。
[0070]逻辑综合和优化工具574可以通过做出适当的硬件选择来优化设计,从而基于由逻辑设计者使用工具564输入的电路设计数据和约束数据实现电路设计中的不同逻辑功會K。
[0071]在使用工具574进行逻辑综合和优化后,电路设计系统可以使用诸如放置和布线工具576的工具来执行物理设计步骤(布局综合操作)。放置和布线工具576被用来确定在哪里放置由工具574产生的门级网表的每个门。例如,如果两个计数器彼此相互作用,则放置和布线工具576可以将这些计数器定位在相邻区域中,以减小互连延迟或满足指定最大允许的互连延迟的定时要求。放置和布线工具576产生用于任何目标集成电路(例如,用于给定的可编程集成电路,诸如现场可编程门阵列(FPGA))的电路设计的有序和有效的实施方式。
[0072]诸如工具574和576的工具可以是编译器套件的一部分(例如,由可编程逻辑器件供应商提供的编译器工具套件的一部分)。根据本发明,诸如工具574、576和578的工具也可以包括诸如定时估计器的定时分析工具。这允许工具574和576在实际产生集成电路之前满足性能要求(例如,定时要求)。
[0073]作为一个示例,基于电路设计中的寄存器之间的组合路径的长度和由逻辑设计者使用工具564输入的相应定时约束,工具574和/或576可以在电路设计上执行寄存器重新定时操作。寄存器重新定时操作可以移动寄存器通过组合逻辑(例如,通过逻辑AND门、OR门、XOR门等、查找表(LUT)、多路复用器、算术运算器等)或者沿着图2中描述的引线移动寄存器。如果需要,工具574和576可以通过配置诸如图3中的流水线布线资源300的流水线布线资源执行寄存器向前和向后推动,从而以非流水线模式或以流水线寄存器模式操作。
[0074]在一些实施例中,工具574和/或576可以预期潜在的寄存器重新定时操作。为了这个目的,工具574和/或576可以执行去填充(depopulat1n)操作,该去填充操作可以消除候选寄存器,从而防止后续的放置和/或布线操作放置该候选寄存器和/或连接该候选寄存器。例如,去填充操作可以从电路设计中移除候选寄存器。如果需要,去填充操作可以贴标签或以其它方式相应地标记候选寄存器。工具574和/或576可以在无需放置或布线先前在去填充操作期间消除的寄存器的情况下执行放置和布线操作。在放置和布线操作后,工具576可以执行再填充(repopulat1n)操作,该再填充操作可以通过配置诸如图3中的流水线布线资源300的流水线布线资源将先前消除的候选寄存器插入已放置和布线的网表中,以便以流水线寄存器模式操作。
[0075]在已经使用放置和布线工具576生成期望的电路设计的实施方式后,可以使用分析工具578来分析和测试该设计的该实施方式。例如,分析工具578可以包括定时分析工具、功率分析工具或正式验证工具,这里仅举几个例子。
[0076]在已经使用工具520并根据目标集成电路技术完成满意的优化操作后,工具520可以产生集成电路的掩膜级布局描述或用于编程可编程逻辑器件的配置数据。
[0077]图6中示出涉及使用图5的工具520来产生集成电路的掩模级布局描述的说明性操作。如图6所示,电路设计者可以首先提供设计规范602。一般来说,设计规范602可以是以应用代码(例如,C代码、C++代码、SystemC代码、OpenCL代码等)的形式提供的行为描述。在一些情形下,可以以寄存器传输级(RTL)描述606的形式提供该设计规范。
[0078]—般来说,行为设计规范602可以包括未定时或部分定时的功能代码(S卩,应用代码不逐周期地描述硬件行为),然而RTL描述606可以包括完全定时的设计描述,其详述在寄存器传输级的电路的逐个周期的行为。
[0079]在步骤604处,行为综合(有时候也被称为算法综合)可以被执行以将行为描述转换成RTL描述606。如果已经以RTL描述的形式提供了设计规范,则可以跳过步骤604。
[0080]RTL描述可以具有描述在寄存器传输级的电路功能的任何形式。例如,可以使用硬件描述语言诸如Verilog硬件描述语言(Verilog HDL或Verilog),SystemVerilog硬件描述语言(SystemVerilog HDL或SystemVerilog)或者超高速集成电路硬件描述语言(VHDL)来提供RTL描述。如果需要,一部分或所有的RTL描述可以被提供作为示意性表征。
[0081 ] 设计规范602或RTL描述606也可以包括目标标准,诸如区域使用、功率消耗、延迟最小化、时钟频率优化或其任何组合。这些优化约束和目标标准可以被统称为约束。
[0082]那些约束可以被提供用于个体数据路径、个体数据路径的一些部分、设计的一些部分或用于整个设计。例如,约束在约束文件中或通过用户输入(例如,使用图5中的设计和约束输入工具564)可以被提供设计规范602、RTL描述606(例如,作为编译指标(pragma)或作为判断提示(assert1n)),这里仅举几个例子。
[0083]在某些实施例中,给定的数据路径可以具有与路径相关联的多于一个的约束,并且这些约束中的一些可能互相冲突(例如,用于给定路径的借助行为设计规范接收的约束可能与借助RTL描述接收的约束并且与借助约束文件接收的约束冲突)。在这种情形下,可以通过CAD工具520明确定义或隐含解析的约束的预定优先级可以确定哪个冲突约束被选择。例如,来自用户或配置文件的约束可以超控(override)从其它来源接收的约束,而借助RTL描述接收的约束可以超控借助行为设计规范接收的约束。
[0084]约束可以将整个电路设计或部分电路设计作为目标。例如,一些约束可以被全局地定义,因此适用于整个电路设计。其它约束可以被局部地分配,因此仅仅适用于电路设计的相应部分。
[0085]考虑电路设计被分层级组织的情形。在这种情形下,每个层级的实例可以包括不同的分配。换句话说,多个不同的约束可以将电路设计的同一部分作为目标,并且可以通过CAD工具520明确地限定或隐含地解析优先级。例如,在设计层级结构(hierarchy)的较高层级定义的约束可以超控较低层级的约束。可替代地,在设计层级结构的较低层级定义的约束可以超控较高层级的约束,或者设计层级结构的个别层级可以被赋予高于设计层级结构的其它层级的优先级。
[0086]包括在设计规范602或RTL描述606中的约束可以以变量、参数、编译指令、宏指令、编译指标或判断提示(仅举几例)的形式被传达到CAD工具520XAD工具520可以使用约束文件,该约束文件可以包括一部分或所有的约束。这种约束文件可以被包括有设计规范602或RTL描述606。在一些情形中,一部分或所有的约束可以嵌入电路设计中。可替代地,可能已经使用设计和约束输入工具564定义了约束(参见图5)。
[0087]在步骤618处,行为仿真工具572可以执行RTL描述的RTL仿真,其可以验证RTL描述的功能性能。如果RTL描述的功能性能是不完整的或不正确的,则电路设计者可以改变HDL代码(作为一个示例)。在RTL仿真618期间,通过仿真RTL描述的行为获得的实际结果可以与期望结果进行比较。
[0088]在步骤608期间,逻辑综合操作可以使用来自图5的逻辑综合和优化工具574生成门级描述610。如果需要,逻辑综合操作可以根据包括在设计规范602或RTL描述606中的约束执行如图2所示的寄存器重新定时。逻辑综合608的输出是门级描述610。
[0089]在步骤612期间,使用例如图5的放置和布线工具576的放置操作可以将门级描述610中的不同门放置在目标集成电路上的优选位置以满足给定的目标标准(例如,最小化面积和最大化布线效率或者最小化路径延迟和最大化时钟频率或其任何组合)。放置612的输出是已放置的门级描述613。
[0090]在步骤615期间,使用例如图5的放置和布线工具576的布线操作可以连接来自已放置的门级描述613的门。布线操作可以尝试满足给定的目标标准(例如,最小化拥塞、最小化路径延迟和最大化时钟频率或其任何组合)。布线615的输出是已布线的门级描述617。
[0091]在步骤619期间,使用例如图5的放置和布线工具576的寄存器重新定时操作可以根据包括在设计规范602或RTL描述606中的约束来移动如图2所示的已布线的门级描述617中的寄存器。作为一个示例,寄存器重新定时操作可以将一些流水线布线资源的配置(例如,图3的流水线布线资源300的一些实例)从以流水线寄存器模式操作改变到以非流水线模式操作,并且将其它流水线布线资源的配置(例如,图3的流水线布线资源300的其它实例)从以非流水线模式操作改变到以流水线寄存器模式操作。寄存器重新定时619的输出是掩模级布局描述616。
[0092]电路设计系统400(图4)可以包括定时估计器(例如,形成为优化工具574、工具576或工具578的一部分),其可以被用来估计在步骤614期间电路设计的同步元件之间的延迟。例如,定时估计器可以估计诸如寄存器和存储电路的时钟存储元件之间的延迟(例如,基于互连的长度、中间的组合逻辑等)。如果需要,逻辑综合608、放置612、布线615以及寄存器重新定时619的步骤可以调用定时分析614来估计在相应步骤期间的时钟存储元件之间的延迟。
[0093]如果需要,可以基于诸如松弛(例如,要求的到达时间和信号的到达时间之间的差值)、松弛比、互连拥塞或其它定时度量的度量来估计延迟。电路设计系统400可以使用所估计的延迟来确定多组电路系统的位置,同时帮助确保延迟满足定时要求(例如,关键路径延迟要求)或其它性能约束。
[0094]考虑电路设计具有从寄存器通过组合逻辑到另一寄存器的给定路径并且该给定路径未达到一个或多个目标标准的情形。定时估计器还可以确定给定路径与大于目标延迟的延迟相关联,所述目标延迟作为目标标准中的一个被指定用于该路径。例如,定时估计器可以检测给定的路径在布线615后具有大于目标延迟的延迟。在这种情形下,寄存器重新定时619可以移动寄存器(例如,向前和/或向后通过组合逻辑和/或沿着引线移动),从而减小寄存器之间的延迟并且有可能改善给定路径的性能。
[0095]在步骤621期间,在放置操作之前和/或布线操作之前,通过执行去填充操作(例如,相应地通过在寄存器重新定时操作期间从电路设计中移除寄存器或者对可以被移动的电路设计中的寄存器贴标签),使用例如图5的放置和布线工具576的去填充、约束生成和再填充操作可以预期潜在的寄存器重新定时操作,并且在布线操作完成后通过执行再填充操作(例如,通过在寄存器重新定时操作期间将先前消除的寄存器插入布线的电路设计中)来执行实际的寄存器重新定时操作。去填充、约束操作和再填充操作621可以被放置612、布线615和/或寄存器重新定时619调用,以在门级描述610、已放置的门级描述613和/或已布线的门级描述617或其组合上直接操作。
[0096]图7根据一个实施例示出在放置操作之前的说明性去填充和约束生成操作。电路设计的第一型式(例如,图6的门级描述610)可以包括诸如寄存器710、720和730的时钟存储电路,以及被分配以通过以流水线寄存器模式配置的流水线布线资源750实现的寄存器750。电路设计的第一型式可以进一步包括组合逻辑740和760。
[0097]组合逻辑740和760可以包括由布尔电路实现的任何数字逻辑,其输出可以作为仅当前输入的函数而异步地改变。组合逻辑的示例可以包括AND、OR、NAND、NOR和XOR逻辑门、反相器、传输门、多路复用器、去多路复用器、查找表、逻辑阵列等以及其任何组合。
[0098]相比之下,时序逻辑可以包括由电路实现的任何数字逻辑,其输出可以响应于同步信号(例如,时钟信号)在离散时刻同步地改变。时序逻辑的示例可以包括任何时钟存储电路,诸如寄存器或存储器,诸如随机存取存储器(RAM)、只读存储器(R0M)、可按内容寻址存储器(CAM)等。
[0099]电路设计元件可以包括电路设计中的任何组合逻辑和/或时序逻辑和/或引线。如果需要,延迟可以与电路设计元件相关联。
[0100]在图7的示例中,寄存器710可以发送信号给寄存器720;寄存器720可以发送信号给寄存器730;寄存器730可以发送信号通过组合逻辑740到以流水线布线资源实现的寄存器750;并且寄存器750可以发送信号通过组合逻辑760。
[0101]考虑图5的工具576预期寄存器720可以在寄存器重新定时操作期间移动(例如,沿着寄存器710和730之间的引线)的情形。作为一个示例,图6的放置612可以调用定时分析614,该定时分析可以确定从寄存器710到寄存器720的延迟与从寄存器720到寄存器730的延迟是不平衡的(例如,从寄存器710到寄存器720的延迟显著地大于从寄存器720到寄存器730的延迟,或者反之亦然)。
[0102]在这种情形下,去填充操作可以从电路设计的第一型式中消除寄存器720,以便进行后续操作(例如,放置和布线操作)。例如,去填充操作可以将寄存器710的输出端直接连接到寄存器730的输入端并且从电路设计中移除寄存器720。可替代地,去填充操作可以贴标签于寄存器720,以防止诸如放置和布线操作的后续操作放置寄存器720和/或连接寄存器720。
[0103]如果需要,约束生成操作可以生成通知诸如放置和布线操作的后续操作沿着从寄存器710到寄存器730的路径保留寄存器的约束。例如,约束生成操作可以生成约束725。基于约束725,图5的工具576可以执行放置寄存器710和730的放置操作,使得布线操作可以在寄存器710和730之间插入至少一个流水线布线资源,诸如图3的流水线布线资源300。
[0104]在一些实施例中,流水线布线资源300(参见图3)的寄存器306可以包括比寄存器720更少的特征。例如,寄存器720可以包括时钟使能电路、同步清零电路、异步清零电路、预置电路(仅举几例),而寄存器306可以不包括或仅包括这些特征中选定的一些特征。
[0105]作为一个示例,考虑寄存器720具有时钟使能电路而寄存器306缺乏时钟使能电路的情形。进一步考虑到,在对寄存器710和730之间的连接布线后,以流水线寄存器模式操作的流水线布线资源(例如,图3的流水线布线资源300中的寄存器306)实现寄存器720。在这个示例中,去填充操作可以生成时钟使能电路系统并且在电路设计中插入该时钟使能电路系统。图5的工具576可以放置和布线所插入的时钟使能电路系统。
[0106]类似地,去填充操作可以实现附加电路系统中寄存器720具有的和寄存器306缺乏的任何其它特征,并且将该附加电路系统插入电路设计。图5的工具576可以放置和布线该附加电路系统。
[0107]在一些实施例中,去填充操作可以根据预定标准选择消除哪个寄存器。例如,去填充操作可以消除与寄存器306中可用的寄存器使用相同的特征集的寄存器,可以消除具有与寄存器306不同的预定特征的寄存器,以及可以消除独立于与寄存器306不同的特征的寄存器等。
[0108]如果需要,去填充操作可以避免消除某些寄存器,诸如具有预定用户分配的寄存器、具有某些特征(例如,异步复位电路系统)的寄存器、在时钟域的边界上的寄存器(即,由第一时钟计时的寄存器,其耦合到由不同于第一时钟的第二时钟计时的寄存器),这里仅举几个例子。
[0109]在一些实施例中,去填充操作可以根据努力水平(effortlevel)来执行。作为一个示例,用户可以使用图5的设计和约束输入工具564来定义努力水平。例如,用户可以选择努力水平,该努力水平基于有待去填充的寄存器的数量(例如,作为设计中的总数量的百分比)、基于所估计的定时改善、基于所估计的布线拥塞(例如,导致更长的路径和比预期更糟的延迟)、基于不匹配(no-fit)的风险(例如,后续的再填充操作不能找到合理的解决方案)、基于所估计的定时改善和不匹配的风险之间的权衡等。
[0110]如果需要,工具576可以包括默认努力水平。例如,默认努力水平可以定义有待去填充的寄存器的百分比,其关联于预定标准(例如,仅去填充与流水线布线资源中的寄存器具有相同的特征集的寄存器)、关联于所估计的定时改善(例如,当所估计的定时改善超过定时约束10%时,停止再填充操作)、关联于所估计的布线拥塞或其组合,这里仅举几个例子。
[0111]努力水平可以是预定的、自适应的或其组合。例如,努力水平可以具有初始设定,该初始设定可以是预定的,并且去填充操作可以基于不匹配的风险、所估计的定时改善等来修改该初始设定。
[0112]去填充操作可以根据预定的优先级选择消除寄存器的顺序。预定的优先级可以基于用户设置。例如,用户可以使用图5的设计和约束输入工具564来定义该顺序。如果需要,工具576可以包括默认优先级。该默认优先级可以基于寄存器的特征集、定时信息(例如,在图6的定时分析614期间获得)、可用资源等。
[0113]去填充操作的预定优先级和预定标准可以被提供用于个体数据路径、个体数据路径的一些部分、设计的一些部分或用于整个设计。例如,去填充操作的预定优先级和预定标准在约束文件中或通过用户输入(例如,使用图5中的设计和约束输入工具564)可以被提供有设计规范602、RTL描述606(例如,作为编译指标或作为判断提示),这里仅举几个例子。
[0114]在某些实施例中,电路设计的给定部分可能具有针对寄存器消除的冲突标准和/或冲突优先级,例如,借助行为设计规范接收的第一标准可能与借助约束文件接收的第二标准冲突。在这种情形下,可以由CAD工具520明确地定义或隐含地解析的用于应用标准的预定优先级可以确定哪个冲突标准被选择。例如,来自用户或配置文件的标准可以超控从其它来源接收的标准,并且借助RTL描述接收的标准可以超控借助行为设计规范接收的标准。
[0115]在图6的步骤621期间,可以在布线之前(例如,在已放置的门级描述613上)执行去填充操作和约束生成。图8根据一个实施例示出在布线操作之前的说明性去填充和约束生成操作。
[0116]图8中放置的电路设计的第一型式可以包括图7中的约束725和放置的电路设计元件,诸如被分配以放置在集成电路上的位置810的寄存器710、被分配以放置在位置820的寄存器730以及被分配以便由以流水线寄存器模式配置的流水线布线资源750实现的寄存器750。放置的电路设计的第一型式可以进一步包括组合逻辑740和760。组合逻辑740和760与流水线布线资源750可以具有将它们放置在集成电路上的位置830的分配。
[0117]考虑图5的工具576预期放置在位置820的寄存器730在寄存器重新定时操作期间可以移动(例如,沿着寄存器710和740之间的引线移动)的情形。在这种情形中,为了后续的操作(例如,布线操作),去填充操作可以从电路设计的第一型式中消除寄存器730以及寄存器730到位置820的分配。例如,去填充操作可以将寄存器710的输出端直接连接到组合逻辑740的输入端并且将寄存器730从电路设计中移除。可替代地,去填充操作可以贴标签于寄存器730,以防止诸如布线操作的后续操作连接寄存器730。
[0118]如果需要,约束生成操作可以生成通知诸如布线操作的后续操作沿从寄存器710到寄存器的路径保留寄存器的约束。例如,约束生成操作可以生成约束840。基于约束725和840,图5的工具576可以执行布线操作,其将诸如图3的流水线布线资源300的至少两个流水线布线资源插入寄存器710和组合逻辑740之间。
[0119]图9根据一个实施例示出说明性布线和再填充操作。图9中已放置的电路设计的第一型式可以包括约束725和840,以及图8中已放置的电路设计元件,诸如被分配以放置在集成电路上的位置810的寄存器710、被分配以放置在位置820的寄存器730以及被分配以放置在集成电路上的位置830的组合逻辑740和760,连同被分配以便由以流水线寄存器模式配置的流水线布线资源750实现的寄存器750。
[0120]在布线操作期间,图5的工具576可以连接被分配以分别放置在位置810和830的电路设计元件。例如,工具576可以基于约束720和840借助两个布线资源910和920连接寄存器710和组合逻辑740。如果需要,流水线布线资源可以以非流水线模式配置。
[0121]再填充操作可以基于约束720和840将寄存器重新插入寄存器710和组合逻辑740之间。作为一个示例,再填充操作可以将流水线布线操作910和920的配置从以非流水线模式操作改变到以流水线寄存器模式操作。
[0122]如果需要,在已布线的门级描述617上布线后,图5的工具576可以执行寄存器重新定时操作(例如,如在图6的步骤寄存器重新定时619中所描述)。图10根据一个实施例示出说明性寄存器重新定时和重新布线操作。图10中已布线的电路设计的第一型式可以包括图9中已放置且布线的电路设计元件,诸如被分配以放置在集成电路上的位置810的寄存器710,以及被分配以放置在集成电路上的位置830的组合逻辑740和760,连同被分配以便由以流水线寄存器模式配置的流水线布线资源750实现的寄存器750。流水线布线资源910和920可以将寄存器710连接到组合逻辑740。
[0123]在寄存器重新定时操作期间,图5的工具576可以将寄存器从组合逻辑740的输入端移动到组合逻辑760的输出端。作为一个示例,工具576可以通过将流水线布线资源910和920的配置从以流水线寄存器模式操作改变到以非流水线模式操作以及通过将流水线布线资源1030和1040的配置从以非流水线模式操作改变到以流水线寄存器模式操作来执行寄存器重新定时操作,从而产生如图10中示出的电路设计的第二型式。
[0124]结果,寄存器710和组合逻辑740之间的连接1020不再需要流水线布线资源。如果需要,重新布线操作可以在寄存器710和组合逻辑740之间生成新的连接1050。相对于图10中的电路设计的第三型式所示出的连接1020,连接1050可以减小位置810和位置830之间的延迟。
[0125]在一些实施例中,工具576可以通过执行预测性重新定时操作来预期寄存器重新定时操作,在该预测性重新定时操作中生成的约束在放置之前和/或布线之前被移动。图11根据一个实施例示出在布线之前的说明性预测性重新定时和约束生成。
[0126]如图所示,图11中已放置的电路设计的第一型式可以包括约束725和840,以及图8中已放置的电路设计元件,诸如被分配以放置在集成电路上的位置810的寄存器710、被分配以被放置在位置820的寄存器730以及被分配以放置在集成电路上的位置830的组合逻辑740和760,连同被分配以便由以流水线寄存器模式配置的流水线布线资源750实现的寄存器750。
[0127]在预测性重新定时和约束生成操作期间,图5的工具576可以将约束725和840从组合逻辑740的输入移动到组合逻辑760的输出。例如,工具576可以移除约束725和840,并且生成如在图11的电路设计的第二型式中所示的新的约束1110和1120。
[0128]布线操作可以将放置在位置810的电路设计元件与放置在位置830的电路设计元件连接。布线和再填充操作可以基于约束1110和1120通过两个寄存器进一步对组合逻辑760的输出进行布线。作为一个示例,布线操作可以将组合逻辑760的输出端连接到流水线布线资源1130和1140;并且再填充操作可以配置流水线布线资源1130和1140以流水线寄存器模式操作。
[0129]如果需要,工具576可以在布线和再填充操作后执行寄存器重新定时和重新布线操作。例如,考虑图11的电路设计的第三型式中的关键路径是从寄存器710通过组合逻辑740到流水线布线资源750中的寄存器的情形。如图所示,在这种情形下,寄存器重新定时操作可以将两个寄存器从组合逻辑760的输出端移动到组合逻辑740的输入端。作为一个示例,工具576可以通过将流水线布线资源1130和1140的配置从以流水线寄存器模式操作改变到以非流水线模式操作以及通过将流水线布线资源1160和1170的配置从以非流水线模式操作改变到以流水线寄存器模式操作来执行寄存器重新定时操作。
[0130]结果,在组合逻辑760的输出处的连接不再需要流水线布线资源。如果需要,重新布线操作可以在如图11所示的电路设计的第三型式中示出的组合逻辑760的输出端处生成新的连接1150。
[0131]图12是根据一个实施例示出诸如图5的工具576的电路设计计算设备在去填充、布线和再填充操作期间可以执行的说明性步骤的流程图。在步骤1210期间,电路设计计算设备可以接收包括耦合在第一电路设计元件和第二电路设计元件之间的寄存器的电路设计描述。
[0132]在步骤1220期间,电路设计计算设备可以执行防止布线操作连接寄存器的去填充操作。例如,电路设计计算设备可以在图8的电路设计描述的第一型式上执行去填充操作,由此被放置在位置820的寄存器730通过后续的布线操作保持不连接。
[0133]在步骤1230期间,电路设计计算设备可以执行所述布线操作,该布线操作使用被配置成以非流水线模式操作的流水线布线资源来连接第一电路设计元件和第二电路设计元件。例如,电路设计计算设备可以使用如图9中所示的流水线布线资源910和920连接寄存器710和组合逻辑740。
[0134]在步骤1240期间,电路设计计算设备可以执行再填充操作,该再填充操作将流水线布线资源的配置从以非流水线模式操作改变到以流水线寄存器模式操作。作为一个示例,电路设计计算设备可以在再填充操作期间将图9的流水线布线资源920的配置从以非流水线模式操作改变到以流水线寄存器模式操作。
[0135]图13是根据一个实施例示出在执行放置操作之前当从集成电路设计中消除时钟存储元件时CAD工具可以执行的说明性步骤的流程图。在步骤1310期间,CAD工具可以从集成电路设计中移除时钟存储元件。作为一个示例,CAD工具可以移除图7中所示的电路设计的寄存器720。
[0136]在步骤1320期间,CAD工具可以将第一电路元件连接到第二电路元件,并且在步骤1330期间生成要求将流水线布线资源插入第一电路元件和第二电路元件之间的约束。作为一个示例,CAD工具可以将寄存器710的输出连接到图7的寄存器730的输入,并且生成要求将流水线布线资源插入寄存器710和寄存器730之间的约束725。
[0137]在步骤1340期间,CAD工具可以执行集成电路设计的放置操作,该放置操作将第一电路元件和第二电路元件相对于彼此放置而不放置时钟存储元件。例如,CAD工具可以生成图8的第一型式中示出的放置,其中寄存器710被放置在位置810、寄存器730被放置在位置820并且寄存器720保持没有放置分配。
[0138]图14是示出在执行放置操作后可由CAD工具执行的用于从电路设计描述中消除电路设计元件的说明性步骤的流程图。在步骤1410期间,CAD工具可以执行用于电路设计描述的放置操作,其将电路设计描述的第一电路元件、第二电路元件和第三电路元件分配到集成电路上相应的第一位置、第二位置和第三位置。例如,如在图8的电路设计的第一型式中所示,工具576可以将寄存器710放置在集成电路上的位置810,将寄存器730放在位置820,并且将寄存器750放置在集成电路上的位置830,该寄存器750被分配以便由流水线布线资源750实现,该流水线布线资源750被以流水线寄存器模式配置并且连接组合逻辑740和组合逻辑760。
[0139]在步骤1420期间,CAD工具可以从电路设计描述中移除第二电路元件;并且在步骤1430期间,CAD工具可以移除第二电路元件到集成电路上的第二位置的分配。例如,CAD工具可以移除寄存器730和寄存器730到位置820的分配,从而产生图8的电路设计的第二型式。
[0140]在步骤1440期间,CAD工具可以将电路设计描述中的第一电路元件连接到第三电路元件。
[0141]本文描述的方法和装置可以被并入任何合适的电子设备或电子设备的系统。例如,方法和装置可以被并入多个类型的设备,诸如微处理器或其它1C。示例性IC包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、专用标准产品(ASSP)、专用集成电路(ASIC)、数字信号处理器(DSP)、图形处理单元(GPU),这里仅举几个例子。
[0142]本文所描述的集成电路可以是数据处理系统的一部分,其包括下列部件中的一个或多个:处理器;存储器;I/O电路系统;以及外围设备。集成电路可以被用在多种应用中,诸如计算机联网、数据联网、检测仪表、视频处理、数字信号处理或任何合适的其它应用,其中执行寄存器重新定时操作的优点是期望的。
[0143]尽管以特定的顺序描述了方法操作,但应当理解,可以在所描述的操作之间执行其它操作,所描述的操作可以被调整以使得它们发生在稍微不同的时间,或者所描述的操作可以被分布在系统中,其允许处理操作以与该处理相关联的各种间隔发生,只要覆盖操作以期望的方式被执行即可。
[0144]附加实施例
[0145]附加实施例1.一种用于操作电路设计计算设备的方法,其包括:借助所述电路设计计算设备,接收包括耦合在第一电路设计元件和第二电路设计元件之间的寄存器的电路设计描述;借助所述电路设计计算设备,执行去填充操作,该去填充操作防止布线操作将所述寄存器连接到所述第一电路设计元件和第二电路设计元件;以及借助所述电路设计计算设备,执行所述布线操作,该布线操作将所述第一电路设计元件连接到所述第二电路设计元件而不穿过所述寄存器。
[0146]附加实施例2.根据附加实施例1所述的方法,其中所述第一电路设计元件和所述第二电路设计元件选自由组合逻辑和时序逻辑组成的群组。
[0147]附加实施例3.根据附加实施例1所述的方法,其中所述第一电路设计元件和所述第二电路设计元件使用被配置成以非流水线模式操作的流水线布线资源来连接。
[0148]附加实施例4.根据附加实施例3所述的方法,其还包括:借助所述电路设计计算设备,执行再填充操作,该再填充操作将所述流水线布线资源的配置从以所述非流水线模式操作改变到以流水线寄存器模式操作。
[0149]附加实施例5.根据附加实施例4所述的方法,其还包括:借助所述电路设计计算设备,执行寄存器重新定时操作,该寄存器重新定时操作配置所述流水线布线资源以所述非流水线模式操作。
[0150]附加实施例6.根据附加实施例5所述的方法,其中执行所述寄存器重新定时操作还包括:借助所述电路设计计算设备,将连接到所述第二电路设计元件的输出端的附加流水线布线资源的配置从以所述非流水线模式操作改变到以所述流水线寄存器模式操作。
[0151]附加实施例7.根据附加实施例5所述的方法,其中执行所述寄存器重新定时操作还包括:借助所述电路设计计算设备,将连接到所述第一电路设计元件的输入端的附加流水线布线资源的配置从以所述非流水线模式操作改变到以所述流水线寄存器模式操作。
[0152]附加实施例8.根据附加实施例1所述的方法,其中执行所述去填充操作还包括:生成对所述布线操作的约束,其中所述约束要求所述布线操作使用至少一个流水线布线资源连接所述第一电路设计元件和所述第二电路设计元件。
[0153]附加实施例9.根据附加实施例1所述的方法,其中所述电路设计描述包括耦合在第三电路设计元件和第四电路设计元件之间的附加寄存器,所述方法还包括:基于预定标准确定是否执行附加去填充操作;以及响应于确定要执行所述附加去填充操作,执行所述附加去填充操作,其防止后续的放置操作放置所述附加寄存器。
[0154]附加实施例10.根据附加实施例9所述的方法,其中所述预定标准选自由以下各项构成的群组:所述附加寄存器的特征集、与所述附加寄存器相关联的设置、由所述附加去填充操作引起的估计布线拥塞以及由于所述附加去填充操作所产生的估计定时改善。
[0155]附加实施例11.根据附加实施例9所述的方法,其中所述附加寄存器具有同步清零输入端并且包括基于在所述同步清零输入端处接收的信号用于执行同步清零操作的逻辑,并且其中所述附加去填充操作还包括:生成执行所述同步清零操作的第五电路设计元件;以及将所述第五电路设计元件耦合在所述第三电路设计元件、所述同步清零输入端和所述第四电路设计元件之间。
[0156]附加实施例12.根据附加实施例9所述的方法,其中所述附加寄存器包括用于执行时钟使能操作的逻辑,并且其中所述附加去填充操作还包括:生成执行时钟使能操作的第五电路设计元件。
[0157]附加实施例13.根据附加实施例9所述的方法,其还包括:执行放置所述第三电路设计元件和所述第四电路设计元件而不放置所述附加寄存器的所述放置操作。
[0158]附加实施例14.根据附加实施例13所述的方法,其还包括:借助所述电路设计计算设备,执行预测性寄存器重新定时操作,该预测性寄存器重新定时操作促使所述后续的布线操作将所述第四电路设计元件的输出端连接到流水线布线资源。
[0159]附加实施例15.—种用于操作电路设计计算设备以编译集成电路设计的方法,所述集成电路设计包括耦合在第一电路元件和第二电路元件之间的时钟存储元件,所述方法包括:借助所述电路设计计算设备,从所述集成电路设计中消除所述时钟存储元件;将所述第一电路元件连接到所述第二电路元件;生成要求将流水线布线资源插入第一电路元件和第二电路元件之间的约束;以及执行所述集成电路设计的放置操作,该放置操作将所述第一电路元件和所述第二电路元件相对于彼此放置而不放置所述时钟存储元件。
[0160]附加实施例16.根据附加实施例15所述的方法,其中所述第二电路元件耦合到第三电路元件,并且其中附加约束要求将给定数量的流水线布线资源插入所述第二电路元件和所述第三电路元件之间,所述方法还包括:借助所述电路设计计算设备,执行预测性重新定时操作,该预测性重新定时操作更新所述约束和第二电路元件与第三电路元件之间的所述给定数量的流水线布线资源。
[0161]附加实施例17.根据附加实施例16所述的方法,其中更新所述约束和所述给定数量的流水线布线资源还包括:要求将附加流水线布线资源插入第一电路元件和第二电路元件之间;以及递减第二电路元件和第三电路元件之间的所述给定数量的流水线布线资源。
[0162]附加实施例18.根据附加实施例16所述的方法,其中更新所述约束和所述给定数量的流水线布线资源还包括:移除要求将流水线布线资源插入第一电路元件和第二电路元件之间的所述约束;以及递增第二电路元件和第三电路元件之间的所述给定数量的流水线布线资源。
[0163]附加实施例19.根据附加实施例15所述的方法,其还包括:借助所述电路设计计算设备,执行使用流水线布线资源连接所述第一电路设计元件和所述第二电路设计元件的所述布线操作。
[0164]附加实施例20.根据附加实施例19所述的方法,其还包括:执行配置所述流水线布线资源以流水线寄存器模式操作的再填充操作。
[0165]附加实施例21.根据附加实施例20所述的方法,其还包括:借助所述电路设计计算设备,执行寄存器重新定时操作,该寄存器重新定时操作通过改变所述流水线布线资源中的多路复用器的选择来重新配置所述流水线布线资源。
[0166]附加实施例22.—种用于编译电路设计描述的非瞬时计算机可读存储介质,其包括用于以下操作的指令:执行用于所述电路设计描述的放置操作,其中所述放置操作将所述电路设计描述的第一电路元件、第二电路元件和第三电路元件分配到集成电路上相应的第一位置、第二位置和第三位置;从所述电路设计描述中消除所述第二电路元件;移除所述第二电路元件到所述集成电路上的所述第二位置的分配;以及在所述电路设计描述中将所述第一电路元件连接到所述第三电路元件。
[0167]附加实施例23.根据附加实施例22所述的非瞬时计算机可读存储介质,其还包括用于以下操作的指令:生成要求将流水线布线资源插入所述第一电路元件和所述第三电路元件之间的约束。
[0168]附加实施例24.根据附加实施例23所述的非瞬时计算机可读存储介质,其还包括用于以下操作的指令:通过更新所述约束预测寄存器重新定时操作,并且要求将附加流水线布线资源插入所述第一电路元件和第三电路元件之间。
[0169]附加实施例25.根据附加实施例23所述的非瞬时计算机可读存储介质,其还包括用于以下操作的指令:通过更新所述约束预测寄存器重新定时操作,并且不再要求将流水线布线资源插入所述第一电路元件和第三电路元件之间。
[0170]附加实施例26.根据附加实施例22所述的非瞬时计算机可读存储介质,其还包括用于以下操作的指令:在所述电路设计描述上执行布线操作,其中所述布线操作使用流水线布线资源将所述第一电路元件与所述第三电路元件连接。
[0171]附加实施例27.根据附加实施例26所述的非瞬时计算机可读存储介质,其还包括用于以下操作的指令:在所述电路设计描述上执行寄存器重新定时操作,其中所述寄存器重新定时操作将寄存器从所述第三电路元件的输出端移动到所述第三电路元件的输入端。
[0172]附加实施例28.根据附加实施例26所述的非瞬时计算机可读存储介质,其还包括用于以下操作的指令:在所述电路设计描述上执行寄存器重新定时操作,其中所述寄存器重新定时操作将寄存器从所述第一电路元件的输入端移动到所述第一电路元件的输出端。
[0173]前述仅仅说明本发明的原理,并且在不偏离本发明的范围和精神的情况下,本领域技术人员可以做出各种修改。前述实施例可以以任何适当的组合实现。
【主权项】
1.一种用于操作电路设计计算设备的方法,其包括: 借助所述电路设计计算设备,接收包括耦合在第一电路设计元件与第二电路设计元件之间的寄存器的电路设计描述; 借助所述电路设计计算设备,执行去填充操作,所述去填充操作防止布线操作将所述寄存器连接到所述第一电路设计元件和所述第二电路设计元件;以及 借助所述电路设计计算设备,执行所述布线操作,所述布线操作在不穿过所述寄存器的情况下将所述第一电路设计元件连接到所述第二电路设计元件。2.根据权利要求1所述的方法,其中所述第一电路设计元件和所述第二电路设计元件选自由组合逻辑和时序逻辑构成的群组。3.根据权利要求1所述的方法,其中使用流水线布线资源连接所述第一电路设计元件和所述第二电路设计元件,所述流水线布线资源被配置为以非流水线模式操作,所述方法还包括: 借助所述电路设计计算设备,执行再填充操作,所述再填充操作将所述流水线布线资源的配置从以所述非流水线模式操作改变到以流水线寄存器模式操作;以及 借助所述电路设计计算设备,执行寄存器重新定时操作,所述寄存器重新定时操作配置所述流水线布线资源以便以所述非流水线模式操作。4.根据权利要求3所述的方法,其中执行所述寄存器重新定时操作还包括: 借助所述电路设计计算设备,将连接到所述第二电路设计元件的输出端的附加流水线布线资源的配置从以所述非流水线模式操作改变到以所述流水线寄存器模式操作。5.根据权利要求3所述的方法,其中执行所述寄存器重新定时操作还包括: 借助所述电路设计计算设备,将连接到所述第一电路设计元件的输入端的附加流水线布线资源的配置从以所述非流水线模式操作改变到以所述流水线寄存器模式操作。6.根据权利要求1所述的方法,其中执行所述去填充操作还包括: 生成用于所述布线操作的约束,其中所述约束要求所述布线操作使用至少一个流水线布线资源连接所述第一电路设计元件和所述第二电路设计元件。7.根据权利要求1所述的方法,其中所述电路设计描述包括耦合在第三电路设计元件和第四电路设计元件之间的附加寄存器,所述方法还包括: 基于预定标准确定是否执行附加去填充操作;以及 响应于确定将要执行所述附加去填充操作,执行防止后续的放置操作放置所述附加寄存器的所述附加去填充操作。8.根据权利要求7所述的方法,其中所述预定标准选自由以下各项构成的群组:所述附加寄存器的特征集、与所述附加寄存器相关联的设置、由所述附加去填充操作引起的估计布线拥塞以及由于所述附加去填充操作带来的估计定时改善。9.根据权利要求7所述的方法,其中所述附加寄存器具有同步清零输入端并且包括基于在所述同步清零输入端处接收的信号来执行同步清零操作的逻辑,并且其中所述附加去填充操作还包括: 生成执行所述同步清零操作的第五电路设计元件;以及 将所述第五电路设计元件耦合在所述第三电路设计元件、所述同步清零输入端和所述第四电路设计元件之间。10.根据权利要求7所述的方法,其中所述附加寄存器包括用于执行时钟使能操作的逻辑,并且其中所述附加去填充操作还包括: 生成执行时钟使能操作的第五电路设计元件。11.根据权利要求7所述的方法,其还包括: 执行所述放置操作,所述放置操作放置所述第三电路设计元件和所述第四电路设计元件而不放置所述附加寄存器;以及 借助所述电路设计计算设备,执行预测性寄存器重新定时操作,所述预测性寄存器重新定时操作促使后续的布线操作将所述第四电路设计元件的输出端连接到流水线布线资源。12.—种用于操作电路设计计算设备以编译集成电路设计的方法,所述集成电路设计包括耦合在第一电路元件和第二电路元件之间的时钟存储元件,所述方法包括: 借助所述电路设计计算设备,从所述集成电路设计消除所述时钟存储元件; 将所述第一电路元件连接到所述第二电路元件; 生成要求在第一电路元件和第二电路元件之间插入流水线布线资源的约束;以及执行所述集成电路设计的放置操作,所述放置操作将所述第一电路元件和所述第二电路元件相对于彼此放置而不放置所述时钟存储元件。13.根据权利要求12所述的方法,其中所述第二电路元件耦合到第三电路元件,并且其中附加约束要求在所述第二电路元件和所述第三电路元件之间插入给定数量的流水线布线资源,所述方法还包括: 借助所述电路设计计算设备,执行预测性重新定时操作,所述预测性重新定时操作更新所述约束和在第二电路元件与第三电路元件之间的所述给定数量的流水线布线资源。14.根据权利要求13所述的方法,其中更新所述约束和所述给定数量的流水线布线资源还包括: 要求在第一电路元件和第二电路元件之间插入附加流水线布线资源;以及 递减在第二电路元件和第三电路元件之间的所述给定数量的流水线布线资源。15.根据权利要求13所述的方法,其中更新所述约束和所述给定数量的流水线布线资源还包括: 移除要求在第一电路元件和第二电路元件之间插入流水线布线资源的所述约束; 递增在第二电路元件和第三电路元件之间的所述给定数量的流水线布线资源; 借助所述电路设计计算设备,执行所述布线操作,所述布线操作使用流水线布线资源连接所述第一电路设计元件和所述第二电路设计元件; 执行再填充操作,所述再填充操作配置所述流水线布线资源以便以流水线寄存器模式操作;以及 借助所述电路设计计算设备,执行寄存器重新定时操作,所述寄存器重新定时操作通过改变所述流水线布线资源中的多路复用器的选择来重新配置所述流水线布线资源。16.—种用于编译电路设计描述的非瞬时计算机可读存储介质,其包括用于以下操作的指令: 执行用于所述电路设计描述的放置操作,其中所述放置操作将所述电路设计描述的第一电路元件、第二电路元件和第三电路元件分配到集成电路上相应的第一位置、第二位置和第三位置; 从所述电路设计描述消除所述第二电路元件; 移除所述第二电路元件到所述集成电路上的所述第二位置的分配;以及 在所述电路设计描述中将所述第一电路元件连接到所述第三电路元件。17.根据权利要求16所述的非瞬时计算机可读存储介质,其还包括用于以下操作的指令: 生成约束,所述约束要求在所述第一电路元件和所述第三电路元件之间插入流水线布线资源;以及 通过更新所述约束来预测寄存器重新定时操作。18.根据权利要求16所述的非瞬时计算机可读存储介质,其还包括用于以下操作的指令: 在所述电路设计描述上执行布线操作,其中所述布线操作使用流水线布线资源将所述第一电路元件与所述第三电路元件连接。19.根据权利要求18所述的非瞬时计算机可读存储介质,其还包括用于以下操作的指令: 在所述电路设计描述上执行寄存器重新定时操作,其中所述寄存器重新定时操作将寄存器从所述第三电路元件的输出端移动到所述第三电路元件的输入端。20.根据权利要求18所述的非瞬时计算机可读存储介质,其还包括用于以下操作的指令: 在所述电路设计描述上执行寄存器重新定时操作,其中所述寄存器重新定时操作将寄存器从所述第一电路元件的输入端移动到所述第一电路元件的输出端。
【文档编号】G06F17/50GK106096070SQ201610271800
【公开日】2016年11月9日
【申请日】2016年4月28日 公开号201610271800.6, CN 106096070 A, CN 106096070A, CN 201610271800, CN-A-106096070, CN106096070 A, CN106096070A, CN201610271800, CN201610271800.6
【发明人】K·A·博兹曼, D·I·密尔顿, N·辛纳杜莱
【申请人】阿尔特拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1