CN104143015B - 分析集成电路设计的稀疏连线区域的方法及系统 - Google Patents
分析集成电路设计的稀疏连线区域的方法及系统 Download PDFInfo
- Publication number
- CN104143015B CN104143015B CN201410188398.6A CN201410188398A CN104143015B CN 104143015 B CN104143015 B CN 104143015B CN 201410188398 A CN201410188398 A CN 201410188398A CN 104143015 B CN104143015 B CN 104143015B
- Authority
- CN
- China
- Prior art keywords
- gauze
- sparse
- group
- target
- layout block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
标识集成电路设计中的具有某一时序裕量并穿越布线块的一组线网。基于被穿越的布线块为该组线网分配利用率度量。基于一组稀疏线网中的每个线网的利用率度量,从一组线网确定一组稀疏线网。基于目标线网的时序裕量,从一组稀疏线网选择一个或多个目标线网。可以对目标线网进行修改。
Description
技术领域
本发明一般地涉及集成电路,并且更具体地,有关提高可用资源的利用率以建立更多的时序裕量(timing margin),而不影响设计的可布性(routability)。
背景技术
布线(routing)是集成电路设计中的重要步骤。它生成互连管脚的连线(wiring),同时遵循制造的设计规则。布置后,布线过程决定了芯片布局上互连电路模块上的管脚的线网(net)的精确路径。布线最重要的目的是完成所有必需的连接。其他的目的,如减少布线导线长度,以及确保每个线网能满足其必需的时序预算(timing budget),已经成为现代集成电路设计必不可少的部分。多年来,逻辑门中的信号传输延迟是电路延迟的主要贡献来源,而导线中的传输延迟是可以忽略的。然而,技术缩放(technology scaling)显著增加了由于集成电路的连线而导致的传播延迟的相对影响。这增加了信号不能满足时序要求的可能性,也增加了芯片故障的概率。
发明内容
本说明书公开了一种用于分析被布置成布线块(routing tile)网格的集成电路设计的方法的实施例。在一个实施例中,一种方法包括以下操作:对集成电路设计中的一组线网进行标识,其中每个线网都具有时序裕量,并且每个线网都穿越至少一个布线块。此外,该方法可以包括以下操作:基于被穿越的布线块,为每个线网分配利用率度量。此外,该方法可以包括以下操作:基于一组稀疏线网中的每个线网的利用率度量从一组线网确定一组稀疏线网的操作。此外,该方法可以包括以下操作:基于目标线网的时序裕量选择一组稀疏线网中的一个或多个目标线网。在一个实施例中,可以随后修改目标线网。
本说明书还公开了一种用于分析被布置成布线块网格的集成电路设计的系统的实施例。在一个实施例中,一种系统包括适于存储与集成电路设计相关联的标识至少一个被穿越的布线块的一组线网中的每个线网的时序裕量、导线编码以及布线说明的网表。此外,该系统可以包括利用率度量生成器,适于基于被穿越的布线块为一组线网中的每个线网分配利用率度量。此外,该系统可以包括稀疏线网列表生成器,适于基于一组稀疏线网中的每个线网的利用率度量从一组线网中确定一组稀疏线网。此外,该系统可以包括目标线网列表生成器,适于基于目标线网的时序裕量从一组稀疏线网中选择一个或多个目标线网。
本说明书还公开了一种被编码具有用于分析被布置成布线块网格的集成电路设计的指令的计算机可读存储介质的实施例。在一个实施例中,一种计算机可读存储介质包括用于标识集成电路设计中的一组线网的指令,每个线网都具有时序裕量,并且每个线网都穿越至少一个块。此外,该计算机可读存储介质可以包括用于基于一组稀疏线网中的每个线网的利用率度量从一组线网确定一组稀疏线网的指令。此外,该计算机可读存储介质可以包括用于基于目标线网的时序裕量从一组稀疏线网中选择一个或多个目标线网的指令。
附图说明
图1A是示出一种用于利用集成电路设计的稀疏连线区域中的可用连线资源的方法的示例性实施例的流程图的一部分。
图1B是示出一种用于利用集成电路设计的稀疏连线区域中的可用连线资源的方法的示例性实施例的流程图的一部分。
图2是示出将一组稀疏线网缩窄为目标线网列表,并为目标线网分配更大的导线编码的方法的示例性实施例的流程图。
图3是示出将一组稀疏线网缩窄为目标线网列表,并为目标线网分配更大的导线编码的方法的示例性实施例的流程图。
图4是将示例性集成电路设计划分成布线块网格的简化描述。
图5是用于利用集成电路设计的稀疏连线区域中的可用连线资源的示例性系统。
图6示出了根据本发明的一个实施例的示例性系统的高级框图。
具体实施方式
现代电子学的繁荣在很大程度上归功于集成电路的发展。集成电路允许在单个微型芯片上实现许多不同的电路元件。随着技术的进步,微型芯片上的电路元件的数量不断增加,这提升了集成电路的性能,并降低了成本。
集成电路中的布线通常是非常复杂的过程。放置后,集成电路包含有关模块的位置和模块的管脚的信息。集成电路设计也有通过指示哪些管脚应该连接以形成一组线网来描述连接列表的网表。对于现代大型电路设计,芯片可能包含数十亿的晶体管和数百万的线网。为了处理这种高度复杂度,布线算法通常采用总体布线(global routing)然后详细布线(detailed routing)的两阶段方法。
总体布线首先将集成电路划分成多个总体布线块,并为所有的线网确定块到块路径,同时试图最优化某个特定的目标,如导线长度或电路时序。换言之,在总体布线中,为每个线网生成“宽松的”布线,其中为每个线网分配布线区域列表,而不指定导线的实际布局。总体布线可以进一步细分为两类:(1)顺序总体布线(sequential global routing)和(2)并行总体布线(concurrent global routing)。
顺序总体布线需要选择特定的线网顺序,并按照这个顺序布线每个线网。这种方法在线网的顺序上投入了很多精力,因为已经布线的线网可能会堵住(block)随后的线网布线。为了绕过这个限制,顺序布线还涉及拆除(rip-up)和重新布线(rerout)的过程,其中拆除在堵住其他线网的区域中的线网,对被堵住的线网布线,并对被拆除的线网重新布线。该过程继续直到所有的线网完成布线,并通常能够得到更理想的解决方案。
并行总体布线也面临着在顺序总体布线中遇到的线网顺序问题。在并行总体布线中,集成电路设计被划分成多个总体布线块,为每个总体布线块分配线网容量,这里称为拥挤度度量,它表示跨越布线块边界的导线的数量。在此限制和其他因素(如,最短路径和导线长度)的限制下,为每个线网确定可能的布线模式,并确定最小化拥挤度度量的整体布线布局。
在进行总体布线后,进行详细布线。在详细布线中,确定线网的实际走线(track)和过孔(via)。过孔是集成电路中允许单个线网穿越该集成电路的三维空间的层之间的电气连接。两个最常见的详细布线的类型是:(1)通道布线和(2)开关盒布线。
在通道布线中,布线区域被分解为布线通道,导线在布线通道内连接。通道是具有在顶部和底部的固定管脚的水平布线区域。虽然在右边或左边没有管脚,但可以将某些线网指定为布线至边缘(route-to-the-edge),因此,在右边或左边可能有“漂浮管脚”。给每个管脚分配编号,具有相同编号的所有管脚必须布线在一起形成线网。具有不同编号的管脚必须彼此电气隔离。输入到通道布线问题的输入是两组编号,一组给出通道顶部的管脚编号,另一组给出通道底部的管脚编号。管脚编号零指定从不连接任何东西的空管脚。通道在两层中布线,一层用于水平导线,一层用于垂直导线,并且两层彼此绝缘。通过使用主干(水平导线)和分支(垂直导线),将通道顶部的管脚与底部的管脚连接。此外,通过使用dogleg,其中线网的布线路径中包含多个主干,通道高度可以最小化,这直接关系到集成电路芯片的尺寸,以及由此的制造成本。
与通道布线相反,开关盒布线在全部的四侧都有边界,并且在布线时需要考虑所有的边界。端子位于布线区域的四个边界上。每个端子都与线网相关。每个线网都指定四个边界上连接在一起的端子,换言之,所有具有相同的线网编号的端子连接在一起。指定整个端子连接的一组线网称为网表。在开关盒布线中,导线允许水平或垂直走线。只允许单根导线占用每一行和每一列线段,并且允许两根导线交叉。
对于总体和详细布线,有几种可以使用的通用布线算法。这些通用布线算法也可以分为2管脚线网布线或多管脚线网的布线。对于2管脚线网布线,我们将讨论迷宫布线算法、线搜索布线算法以及A*搜索布线算法。对于多管脚线网布线,我们将讨论Steiner树算法。
迷宫布线算法或许是用于查找两个点之间的路径的最广泛使用的算法。迷宫布线使用填充(filling)和回顾(retracing)的两阶段方法。填充阶段遵循“波传播”的过程。从源块开始,根据距离源块的距离标记相邻的布线块直到到达目标块。一旦到达目标块,就从具有导线穿越的减少的标记的目标块到源块回顾最短路径。
线搜索算法最初设置源和目标作为基点,然后生成两个水平和两个垂直的垂直线段通过基点。延长这些线段,直到他们打到设计边界或障碍物。然后,将这些线段在层级i的每个网格点迭代地设置为新的基点,层级i+1的垂直线段生成为穿过每一个新的基点。此过程重复进行,直到从源生成的线段与从目标生成的线段相交,然后可以通过回顾从其交叉点到源和目标两者来找到连接。
A*搜索算法使用函数f(x)=g(x)+h(x)来评估路径的成本,其中g(x)是从源块到当前块x的成本,h(x)是从当前块到目标块的估计成本。在到达新的当前块后,算法选择具有传播直到到达目标块的最小的路径成本的新的块。
对于多管脚线网,以前的算法不能很好地用尽可能最短长度的导线连接管脚。一个更好、更自然的布线多管脚线网的方法是采用基于斯坦纳树的方法。在这种方法中,平面上有N个点,目标是通过最小总长度的导线以任何两个点都可以通过线段直接或通过其他点和线段连接的方式来连接它们。所有N个点都用一条导线线段连接后;该算法选择与一个点直接连接并通过单独的导线与另一个点直接连接的称为斯坦纳点的点。斯坦纳点的选择极大地缩短了总导线长度,选择更多的斯坦纳点,直到不能再改善导线长度。
为了集成电路正常工作并避免干扰,信号必须满足时序要求。在同步数字系统中,数据被认为步调一致地移动,在时钟信号的每个节拍(tick)上前进一级。时钟起着重要的作用,因为它用来打开和关闭数字通道、允许或停止处理以及为电路提供通用时序。时钟可以比作交通灯,它们以及时的方式停止和允许交通,使得交通能够以最小的延迟顺畅流动。时钟尤其用来避免电路中的干扰。干扰是不可预测的输出。如果有一个输入,因为该输入有一个已知的输出,但在输出稳定到预期输出之前,有未预期的过渡,那么发生了干扰。这些会发生是因为输入必须要经过不同的门,每个传输延迟可能不同,信号在不同的时间到达最后的门。数据到达的这种不同会导致输出变化,直到所有的信号稳定,输出才是有效的。如果干扰没有消除,那么它们会去到电路的下一个级,并产生更多不可预测的结果。为了避免这些,时钟可用作时间信号。例如,在时钟的上升沿提供给电路的输入,并在时钟的下一个上升沿读取电路的输出。如果时钟信号的周期比电路的总传输延迟更高,那么输出将在它完全稳定时读取,因此不会发生干扰。此外,具有较高速度的时钟将允许更快的处理。然而,时钟在它向前传递所有的数据之前必须等待所有的数据做好准备。这意味着电路延迟成为非常重要的因素。如果电路延迟很长,那么时钟必须要慢以允许数据有足够的时间到达。因此,增加时钟频率只有当电路延迟减小时才有可能。
时序分析的主要目的是验证不会有保持时间违规(hold time violation),其中信号到达太早,并使得一个时钟周期提前到它应该的之前,或者建立时间违规(setup timeviolation),其中信号到达太晚,并错过它应该前进的时间。当考虑时序要求时,有一些必须讨论的关键术语。
关键路径被定义为输入和输出之间具有最大延迟的路径。一旦计算得到电路时序,就可以很容易地通过使用回溯法(traceback method)找到关键路径。
信号的到达时间是信号到达特定点经过的时间。基准或时间0.0通常作为时钟信号的到达时间。为了计算到达时间,路径的所有组件的延迟计算是必需的。到达时间和时序分析中几乎所有的时间都通常保持为一对值,信号可以变化的可能的最早时间和信号可以变化的可能的最晚时间。
要求时间(required time)是信号可以到达但不会使时钟周期长于所期望的最晚时间。与每个连接相关联的松弛时间(slack time)是要求时间和到达时间之间的差值。正的松弛x意味着可以在不影响电路的整体延迟的情况下将到达时间增加x。相反,负的松弛时间意味着某条路径太慢,如果整个电路要以期望的速度工作,那么该路径必须加快速度。
布线对设计使用逻辑元件的集成电路来说很关键。很长一段时间,在逻辑网络的设计中假设电路延迟仅依赖于执行逻辑元件的操作的时间。由于使用小于1微米的元件的电路的出现,元件之间数据传输的延迟成为总延迟的主要组成部分。此外,当前的布线算法和时序优化算法一般都调整到使得路径的时序余量(timing slack)最佳,从而满足指定的阈值同时也不会导致布线拥挤度超过可接受的阈值。这往往会产生松弛的“墙(wall)”,其中许多时序路径具有恰好在指定阈值的裕量。如果布线不是最优的,那么这可能会限制稍后对降低功率进行优化的能力,并且可能导致一些路径具有负的松弛。因此,在现有技术中存在对一种可以通过利用设计的稀疏连线区域中的可用的连线资源增加集成电路设计中沿路径的到达时间从而增加松弛时间的处理的需要。
在该详细的说明中,参考示出示例性实施例的附图。应当理解的是,还可以使用其他的实施例,并且可以在不脱离本发明的范围的情况下做出结构改变。
本说明书中使用的术语仅用于描述特定的实施例,而不用于限制的目的。如本说明书中使用的,单数形式“一”,“一个”和“该”意在也包括复数形式,除非上下文另有明确说明。应该进一步理解的是,在本说明书中使用术语“包括”和/或“包含”时是指存在所陈述的特征、整数、步骤、操作、元件和/或组件,但不排除存在或增加一个或多个其他的特征、整数、步骤、操作、元件、组件和/或它们的组合。
图1A的流程图100是示出利用集成电路设计的稀疏连线区域中的可用的连线资源的方法的示例性实施例的流程图的一部分。在步骤105,将拥挤度度量分配给集成电路设计中的每个布线块。可以使用任何使用分配拥挤度度量的算法的商业布线工具,许多商业布线工具都是可用的。在布线过程中,算法可以确定每个块的拥挤度度量。拥挤度度量是描述穿越每个布线块的线网的密度的度量。算法有几种方法能够确定布线块的拥挤度度量,一些示例包括精确计数方法(literal count method)、粘附方法(adhesion method)、扇出方法(fanout method)、线网范围方法(net range method)以及邻域群方法(neighborhoodpopulation method)。在确定每个布线块的拥挤度度量后,为布线块分配其各自的拥挤度度量105。
在此示例中,该方法给每个线网分配利用率度量。集成电路设计包含设计中的一组线网。在步骤110中,该方法着眼于集成电路设计中的线网。在该示例中,一组线网穿越一组布线块。在步骤115中,该方法着眼于线网穿越的第一块。在步骤120中,该方法将第一块的拥挤度度量分配为该线网的利用率度量。在步骤125中,该方法确定该线网是否穿越另一个块。在一些实施例中,该方法可以访问集成电路设计的物理描述来确定该线网是否穿越另一个布线块。当设计集成电路时,芯片经过逻辑综合和物理设计。在物理设计过程中,将组件放置在设计中,解决或改变逻辑和时序问题,使放置合法化,并进行布线。保持设计的记录,该方法为了优化或修改的目的或当其他任何时候有需要时可以访问集成电路设计的该物理描述的记录。这里该方法可以确定该线网穿越另一个布线块。如果该线网穿越另一个布线块,那么会看该布线块的拥挤度度量130,如果该线网未穿越另一个布线块,那么该线网确认其利用率度量,该方法确定在集成电路设计140中是否有任何剩余的线网。
在该示例中,如果该线网穿越另一个布线块,并已经研究过该线网穿越的布线块的拥挤度度量130,那么该方法将确定该块的拥挤度度量是否大于该线网的当前利用率度量135。在一些实施例中,该方法可以访问存储在存储器中的当前利用率度量,并将之与布线块的拥挤度度量进行比较。如果拥挤度度量大于当前利用率度量,那么拥挤度度量取代当前利用率度量作为该线网的利用率度量120,然后该方法再次确定该线网是否穿越另一个布线块125。如果拥挤度度量不大于当前利用率度量,那么当前利用率度量仍然是该线网的利用率度量,然后该方法再次确定该线网是否穿越另一个布线块125。该方法继续该过程:确定被穿越的布线块125、比较拥挤度度量与当前利用率度量135以及分配利用率度量120,直到该线网穿越的布线块中所有的拥挤度度量都已经确定130、比较135,并将该线网穿越的布线块中最大的拥挤度度量分配为线网的利用率度量120。在将根据最大拥挤度度量的利用率度量分配给线网120之后,并且该线网未穿越另一个布线块125,该方法确定是否有任何更多的线网需要分配利用率度量140。在一些实施例中,该方法可以通过确定存在于集成电路设计中的线网的数量,并确定该数量是否等于它已经分配利用率度量的线网的数量来做到这一点。如果存在于集成电路设计中的线网的数量不等于它已经分配利用率度量的线网的数量,那么该方法继续该过程:确定被穿越的布线块125、比较拥挤度度量与当前利用率度量135以及分配利用率度量120,直到集成电路设计中所有的线网都被分配利用率度量。如果存在于集成电路设计中的线网的数量等于它已经分配利用率度量的线网的数量,那么该方法可以确定集成电路设计中的一组稀疏的线网。
图1B的流程图100是示出利用集成电路设计的稀疏连线区域中的可用的连线资源的方法的示例性实施例的流程图的一部分。在该示例中,为了确定存在于集成电路设计中的一组线网的一组稀疏线网,该方法可以确定一个阈值,其中该组稀疏线网包含具有小于该阈值的利用率度量的线网。在步骤145,该方法建立定义利用率度量可以是的、视为是存在于集成电路设计的稀疏区域中的最大值的阈值。该阈值可以是设计人员认为对任何区域具有作为利用率度量都安全并仍然允许集成电路正常工作的任何值。在步骤150中,该方法着眼于在集成电路设计中的线网。在步骤155中,该方法确定该阈值是否大于该线网的利用率度量。在一些实施例中,该方法可以访问存储在存储器中的线网利用率度量,并将其与用户定义的阈值进行比较。如果该阈值比线网的利用率度量大,那么将该线网添加到集成电路设计的该组稀疏线网160。如果该阈值不大于集成电路设计的线网利用率度量,那么不将该线网添加到集成电路设计的该组稀疏线网。在已经将或未将线网添加到该组稀疏线网后,该方法然后确定在集成电路设计中是否存在需要检查看看是否应该将它们添加到该组稀疏线网165的更多线网。在一些实施例中,该方法可以通过确定存在于集成电路设计中的线网的数量,并确定该数量是否等于它已经确定应该或不应该添加到该组稀疏线网的线网的数量来做到这一点。如果存在于集成电路设计中的线网的数量不等于该方法已经确定应该或不应该添加到该组稀疏线网的线网的数量,那么该方法将着眼于下一个线网150,并继续该阈值与集成电路设计中剩余的线网的利用率度量进行比较的过程155。如果存在于集成电路设计中的线网的数量等于该方法已经确定应该或不应该添加到该组稀疏线网的线网的数量,那么该方法可以前进,将该组稀疏线网缩窄到将被分配更大的导线编码170的一个或多个目标线网。
为了为步骤175准备,其中为该目标线网分配更大的导线编码,并将该组稀疏线网缩窄到一组目标线网170。用来将该组稀疏线网缩窄到目标线网的方法可以依赖于该组目标线网的选择的大小,以防止在相同的块中同时放大过多的线网,这可能导致拥挤度度量变得大于期望的拥挤度度量。在示例性的流程图100中,由于步骤175的方法被配置为分配更大的导线编码给目标线网,因此保持这些目标线网以供该方法为它们分配更大的导线编码。未被保持为目标线网的稀疏线网未被分配更大的导线编码,然而,这并不排除稀疏线网仍可以观察到其自身利用率度量增加的机会。例如,当该过程更新集成电路设计的拥挤度度量时,被分配更大的导线编码的目标线网可能增加布线块的拥挤度度量。该拥挤度度量可以被指定为已经不包含该组稀疏线网也不包含在一个或多个目标线网中的线网的已更新的利用率度量。
在步骤175中,给目标线网分配更大的导线编码。分配更大的导线编码可以是例如增加目标线网的隔离、更宽的线网宽度或导致减小电路延迟的对线网的任何修改。电路延迟的主要原因是线网的电阻和电容。线网的电阻或线网之间的电容越大,电路延迟越大。因此,一个基本的设计考虑是最小化线网的寄生电阻和电容。
线网中的电流是电子在施加的电场的作用下运动的结果。当电子流过线网时,它们不断地与组成线网的原子碰撞。这些碰撞阻碍电子的流动并导致线网具有电阻,因此,如果线网的宽度更宽,那么电子将不会那么频繁地碰撞线网的原子,因此减小线网的电阻。
电容是两个平行板在它们之间施加电压时的电荷存储能力的度量。耦合噪声或串扰是主要由信号导体之间由于其相互非常接近对方而产生的电容造成的电噪声。串扰可能会由于在线网中出现错误信号或电路时序偏差而导致集成电路故障。特定集成电路所允许的最大串扰确定线网之间的最小间距。当线网之间的间距增加时,电容和串扰减小。
在分配更大的导线编码后,更新集成电路设计的布线块的拥挤度度量180。此外,当布线块的拥挤度度量更新时,集成电路设计的线网的利用率度量的值可能不再是正确的。因此,在步骤185中,更新集成电路设计的线网的利用率度量。在步骤190中,该方法确定该集成电路设计是否有具有大于阈值的利用率度量的任何线网。在一些实施例中,该方法可以访问存储在存储器中的线网的利用率度量,并将其与用户定义的阈值比较155。如果该阈值大于线网的利用率度量,那么将线网添加到集成电路设计的该组稀疏线网160。如果该阈值不大于线网的利用率度量,那么集成电路设计没有剩余的稀疏区域,利用设计的稀疏连线区域中的可用的连线资源的过程完成了。
虽然示例性方法100描述了该方法确定线网是否穿越块125、比较拥挤度度量和利用率度量135、确定是否集成电路设计的每个线网都具有利用率度量140、确定是否已经检查每个线网看看它是否应该被添加到该组稀疏线网165以及比较阈值和更新的利用率度量190的循环,但这些循环仅用作示例目的。实施例可以使用其他的过程或技术来确定或比较这些情况。用于利用集成电路设计的稀疏布线区域中的可用的连线资源的实施例可以不执行示例100中示出的每个步骤,可以以不同的顺序执行一些步骤或全部的步骤,或者可以执行未示出的其他的步骤。此外,实施例可以结合几个步骤或将单个步骤扩展成多个步骤。
图2中的流程图200是示出将一组稀疏线网缩窄为目标线网列表,并为目标线网分配更大的导线编码的方法的示例性实施例的流程图。在步骤205中,该方法确定时序裕量的阈值。此阈值独立于并且不同于利用率度量的阈值。但是,这两个阈值都是用户定义的,都可以用来实现设计人员认为对集成电路设计中的任何区域具有作为拥挤度度量都安全并仍然允许集成电路正常工作的最大值。在步骤210中,该方法着眼于集成电路设计中的线网。在步骤215中,该方法确定阈值是否大于线网的时序裕量值。在一些实施例中,该方法可以访问集成电路设计的网表。如前所述,网表通过指示哪些管脚应该连接以形成一组线网来描述连接列表。网表中还有与每个线网相关的信息,如线网的宽度和它的时序裕量值。该方法可以访问线网的时序裕量值并与用户定义的阈值进行比较。如果阈值大于线网的时序裕量值,那么将该线网确定为目标线网,并分配更大的导线编码。如果阈值不大于线网的时序裕量值,那么该线网不是目标线网,因此,不为它分配更大的导线编码。在步骤220中,为目标线网分配更大的导线编码。分配更大的导线编码可以是例如增加目标线网的隔离或更宽的线网宽度。在步骤225中,该方法确定是否有可能潜在地添加到目标线网列表中的任何更多的稀疏线网。在一些实施例中,该方法可以通过确定存在于集成电路设计中的线网的数量,并确定该数量是否等于它已经确定应该或不应该添加到目标线网列表的线网的数量来做到这一点。如果存在于集成电路设计中的稀疏线网的数量不等于该方法已经确定应该或不应该添加到目标线网列表的线网的数量,那么该方法继续将该组稀疏线网缩窄为目标线网列表,并为目标线网分配更大的导线编码的过程。
虽然示例性方法200描述了通过比较线网的时序裕量与用户定义的阈值来确定是否应该将稀疏线网添加到目标线网列表215,并基于该组稀疏线网和方法已经确定应该或不应该添加到目标线网列表的线网的数量的相等性来确定是否有可能潜在地添加到目标线网列表中的任何更多的线网的方法,但这些确定仅用作示例目的。实施例可以使用其他的技术来确定是否应该将稀疏线网添加到目标线网列表或是否有要检查的任何更多的稀疏线网。并且,用于将该组稀疏线网缩窄为目标线网列表并为目标线网分配更大的导线编码的实施例可以不执行示例200中示出的每个步骤,可以以不同的顺序执行一些或全部的步骤,或者可以执行未示出的其他的步骤。此外,实施例可以结合几个步骤或将单个步骤扩展成多个步骤。
图3中的流程图300是示出将一组稀疏线网缩窄为目标线网列表,并为目标线网分配更大的导线编码的方法的示例性实施例的流程图。在步骤305中,该方法着眼于集成电路设计中的线网。在步骤310中,该方法确定该线网是否穿越另一个稀疏线网穿越的布线块。在一些实施例中,该方法可以访问集成电路设计的物理描述来确定该线网是否穿越与另一个稀疏线网穿越的相同的布线块。保持集成电路设计的记录,该方法为了优化或修改的目的或当其他任何时候有需要时可以访问该记录。在该示例中,如果该方法确定该线网未穿越与另一个稀疏线网穿越的相同的布线块,那么将该线网暂时保留作为目标线网列表的候选320。但是,如果该方法确定该线网穿越与另一个稀疏线网穿越的相同的布线块,那么对该线网进行进一步的评估。在该示例中,进一步的评估在步骤315中进行,其中该方法确定该线网是否具有比它共享某个布线块的其他稀疏线网更小的时序裕量。在一些实施例中,该方法可以访问集成电路设计的网表并比较线网的时序裕量值与该线网穿越相同的布线块的其他稀疏线网的时序裕量值。如果该方法确定该线网具有比其他稀疏线网更小的时序裕量,那么将该线网暂时保留作为目标线网列表的候选320。如果该方法确定该线网具有比另一个稀疏线网更大的时序裕量,那么该线网将不会被添加到目标线网列表。
图3的过程可以通过图4的图来说明。图4是被划分成多个布线块网格的示例性集成电路设计的简化描绘。一些布线块已经编号。此外,在图4中,存在相应编号的三个稀疏线网。如图所示,线网1和线网2穿越布线块1-7,线网1和线网3穿越布线块9-10。在该示例中,该方法确定线网1穿越也被线网2穿越的布线块310,线网1穿越也被线网3穿越的布线块310。然后,该方法比较线网1的时序裕量值与线网2和线网3的时序裕量值315。如果线网2或线网3中任何一个的时序裕量小于线网1的时序裕量,那么不将线网1添加到目标线网列表,线网2和线网3将暂时保留作为目标线网列表的候选320。如果线网1具有比线网2和线网3小的时序裕量,那么线网1将暂时保留作为目标线网的候选,不将线网2和线网3添加到目标线网列表320。
在另一个示例中,该方法确定该线网是否穿越与另一个稀疏线网相同的布线块310。然而,在图3的变型中,该方法然后在确定该线网是否具有比它共享布线块的其他稀疏线网更小的时序裕量之前采用另一个步骤。该方法首先确定每个线网穿越的布线块是否是将其拥挤度度量分配作为每个线网的利用率度量的布线块。如果该方法确定该布线块将其拥挤度度量分配作为每个线网的利用率度量,那么该方法比较线网的时序裕量值315,并暂时保留具有最小的时序裕量的线网作为目标线网列表的候选320,如前所述。如果该方法确定该布线块没有将其拥挤度度量分配作为每个线网的利用率度量,那么所有的线网暂时保留作为目标线网列表的候选320。
图3的变型可以通过图4的图来说明。如图所示,线网1和线网2穿越布线块1-7,线网1和线网3穿越布线块9-10。在该示例中,该方法确定线网1穿越也被线网2穿越的布线块,线网1穿越也被线网3穿越的布线块310。然后,该方法确定布线块1-7是否将它们的拥挤度度量分配作为线网1和线网2的利用率度量。例如,如果线网1的利用率度量是根据布线块3的拥挤度度量分配的,线网2的利用率度量也是根据布线块3的拥挤度度量分配的,那么该方法比较线网1的时序裕量值与线网2的时序裕量值315,并暂时保留具有较小的时序裕量的线网作为目标线网列表的候选320,其他的不会添加到目标线网列表。但是,如果线网1的利用率度量是根据布线块8的拥挤度度量分配的,线网2的利用率度量是根据布线块3的拥挤度度量分配的,那么该方法会看到虽然这些线网穿越一些相同的布线块,但它们的利用率度量不是根据相同的布线块分配的,两者都将暂时保留作为目标线网列表的候选320。同样地,该方法将遵循这个过程确定线网1和线网3是否根据相同的被穿越的布线块的拥挤度度量分配其利用率度量,并由此确定它们是否应该暂时保留作为目标线网列表的候选320。
已经对描述的示例进行了详细的说明,以详细阐述设计人员在评估在添加到目标线网列表的稀疏线网的数量增加和分配更大的导线编码情况下其集成电路设计可以以多高的效率工作的过程中所具有的自由。这些实例也被示出用来强调拥挤度度量的重要性。设计人员负责了解其集成电路将处于的情况,并决定在集成电路设计的线网的拥挤度的哪一点开始对集成电路的整体运行产生不利影响。考虑到这一点,设计人员有能力最大限度地扩张被分配更大导线编码的目标线网列表,并增加信号的到达时间将不超过其要求时间的百分比,从而减少集成电路出现故障的几率。
在步骤325中,在图3,该方法确定是否有可能潜在地添加到目标线网列表中的任何更多的稀疏线网。在一些实施例中,该方法可以通过确定存在于集成电路设计中的稀疏线网的数量,并确定该数量是否等于它已经确定应该或不应该暂时保留作为目标线网列表的候选的线网的数量来做到这一点。如果存在于集成电路设计中的线网的数量不等于该方法已经确定应该或不应该暂时保留作为目标线网列表的候选的线网的数量,那么该方法继续确定稀疏线网是否应该暂时保留作为目标线网列表的候选的过程。如果存在于集成电路设计中的线网的数量等于该方法已经确定应该或不应该暂时保留作为目标线网列表的候选的线网的数量,那么没有可能潜在地从目标线网列表中除去任何暂时保留的稀疏线网的剩余的稀疏线网。因此,剩余的暂时保留的稀疏线网现在可以永久添加到目标线网列表,在步骤330,为目标线网分配更大的导线编码。
虽然示例性方法300描述了通过访问集成电路设计的物理描述的记录确定某个线网是否穿越另一个稀疏线网穿越的布线块310,通过访问网表和比较时序裕量值来确定该线网是否具有比其他稀疏线网更小的时序裕量值315,并基于该组稀疏线网和方法已经确定应该或不应该暂时保留作为目标线网列表的候选的线网的数量的相等性来确定是否有可能潜在地添加到目标线网列表中的任何更多的稀疏线网325的方法,但这些确定仅用作示例目的。实施例可以使用其他的技术来确定某个线网是否穿越另一个稀疏线网穿越的布线块,或确定该线网是否具有比其他稀疏线网更小的时序裕量值,或是否有可能潜在地添加到目标线网列表中的任何更多的稀疏线网。并且,用于将该组稀疏线网缩窄为目标线网列表并为目标线网分配更大的导线编码的实施例可以不执行示例300中示出的每个步骤,可以以不同的顺序执行一些或全部的步骤,或者可以执行未示出的其他的步骤。此外,实施例可以结合几个步骤或将单个步骤扩展成多个步骤。
图5中的实施例500示出了利用集成电路设计的稀疏连线区域中的可用的连线资源的示例性系统。
开始时,集成电路设计工具505可以使用顺序过程来开发集成电路。在该示例中,集成电路设计工具是电子系统级设计工具510。该电子系统级设计工具510可以创建描述该集成电路设计的要求行为的文档。该文档可以通过各种语言和工具描述该设计必须做什么,以及输入和输出的属性。此外,在集成电路设计工具505中,以及在电子系统级设计工具510已经运行后,该集成电路设计工具505可以启动寄存器传输级设计工具515。该寄存器传输级设计工具515可以采用通过电子系统级设计工具510开发的描述集成电路设计做什么的文档,并可以将它转换成寄存器传输级描述。该寄存器传输级描述可以描述集成电路的具体行为和输入和输出的互连。此外,在集成电路设计工具505中,以及在寄存器传输级设计工具515已经运行后,集成电路设计工具505可以启动物理设计工具520。物理设计工具520可以采用寄存器级描述,在可用逻辑门的库的帮助下,可以创建集成电路设计。这需要弄清楚要使用哪些逻辑门,决定在哪里放置它们并把它们连接在一起。
在该示例中,物理设计工具520可以使用顺序过程来创建集成电路设计。在物理设计工具520中可以是底层规划工具525。底层规划工具525可以采用寄存器级描述,并可以将其分配给集成电路设计的多个区域,并分配输入和输出的管脚。在物理设计工具520中,以及在底层规划工具525后也可以是逻辑综合工具530。逻辑综合工具530可以将寄存器级描述映射成逻辑门级网表。在物理设计工具520中,以及在逻辑综合工具530后也可以是放置工具535。放置工具535可以将网表中的逻辑门分配到集成电路设计的非重叠区域。在物理设计工具520中,以及在放置工具535后也可以是时钟插入工具540。时钟插入工具540可以将时钟信号连线引入集成电路设计。在物理设计工具520中,以及在时钟插入工具540后也可以是布线工具545。布线工具545可以放置连接网表中的逻辑门的导线。在物理设计工具520中,以及在布线工具545后也可以是时序收敛工具550。时序收敛工具550可以做后期布线优化,其中对性能和信号完整性进行检查,并除去违规。此外,可以修改集成电路设计以使得能够尽可能简单和高效地制造它。在物理设计工具520中,以及在时序收敛工具550后也可以是验证工具555。验证工具555可以执行错误检查,以确保正确完成逻辑门的映射以及遵守规则和时序要求。
在该示例中,时序收敛工具550可以具有其中已经放置逻辑门、已经布线导线以及已经插入时钟信号的集成电路设计。在该示例中,在时序收敛工具550中可以是集成电路描述560,在集成电路说明560中可以是网表565、拥挤度度量生成器570、利用率度量生成器575、稀疏线网列表生成器580和目标线网列表生成器585。在该示例中,集成电路描述560可以具有拥挤度度量生成器570中记录的集成电路设计的每个布线块的拥挤度度量。拥挤度度量生成器570和网表565可以观察每个线网穿越的布线块。利用率度量生成器575可以与网表565和拥挤度度量生成器570交互,并可以将线网穿越的一组布线块中的最大的拥挤度度量分配作为该线网的利用率度量,还可以保持记录每个线网的每个利用率度量。可以有用户定义的用于利用率度量阈值的输入值,利用率度量生成器575可以与稀疏线网列表生成器580交互。稀疏线网列表生成器580可以比较记录的利用率度量与利用率度量阈值。在该示例中,比利用率度量阈值低的任何利用率度量将作为稀疏线网包括,稀疏线网列表生成器580可以保持记录哪些线网作为稀疏线网包括。稀疏线网列表生成器580可以与目标线网列表生成器585交互,目标线网列表生成器585也可以与网表565交互。网表565可以为目标线网列表生成器585提供有关线网的时序裕量的信息,稀疏线网列表生成器580可以为目标线网列表生成器585提供有关哪些线网是稀疏线网的信息。目标线网列表生成器585可以确定哪些线网它需要从网表565得到有关其时序裕量的信息。在该示例中,可以有用户定义的用于时序裕量阈值的输入值,目标线网列表生成器585可以比较每个稀疏线网的时序裕量值与时序裕量阈值,并可以暂时保留具有比时序裕量阈值更小的时序裕量值的稀疏线网。目标线网列表生成器585可以执行其他的操作,以减少包括在暂时保留的稀疏线网中的线网数量的大小。然后目标线网列表生成器585可以保持记录哪些线网被作为目标线网包括。集成电路描述560可以与时序工具590交互是,时序工具590可以包括导线编码修改器来修改目标线网列表生成器585记录的目标线网的导线编码。在该示例中,修改可以是增加目标线网的隔离或目标线网的超额宽的金属。时序工具590可以为集成电路描述560提供有关目标线网的修改的编码的信息。集成电路说明560可以更新集成电路设计的布线块的拥挤度度量,拥挤度度量生成器570可以保持记录更新的拥挤度度量值。在该示例中,每个组件都可以继续其操作,直到所有的线网都不再具有低于用户定义的利用率度量阈值的利用率度量值。
图6描述了用于实现一个实施例的示例性系统的高级框图。本发明的实施例的机制和装置同等适用于任何合适的计算系统。计算机系统001的主要组件包括一个或多个CPU002、存储器子系统004、端子接口012、存储接口014、I/O(输入/输出)设备接口016以及网络接口018,它们所有都直接或间接地通信耦接,以通过存储器总线003、I/O总线008和I/O总线接口单元010进行组件间通信。
计算机系统001可以包含一个或多个通用可编程中央处理单元(CPU)002A、002B、002C和002D,本说明书统称为CPU002。在一个实施例中,计算机系统001可以包含对相对较大的系统来说典型的多个处理器;然而,在另一个实施例中,计算机系统001可以替代性地是单CPU系统。每个CPU002都执行存储在存储器子系统004中的指令,并可以包括一级或多级板载缓存(on-board cache)。
在一个实施例中,存储器子系统004可以包括用于存储数据和程序的随机存取半导体存储器\存储设备或存储介质(易失性或非易失性)。在另一个实施例中,存储器子系统004可以代表计算机系统001的整个虚拟存储器,并且还可以包括耦合到计算机系统001或经由网络连接的其他计算机系统的虚拟存储器。存储器子系统004可以是概念上的单个单片实体,但在其他实施例中,存储器子系统004可以是更复杂的装置,如缓存和其他存储器设备的层次结构。例如,存储器可以存在于多级缓存中,这些缓存可以根据功能进一步划分,使得一个缓存保存指令,而另一个保存一个或多个处理器使用的非指令数据。存储器可以进一步分散,与不同的CPU或CPU组相关联,如在任何各种所谓非均匀存储器存取(NUMA)计算机架构中已知的。
主存储器或存储器子系统004可以包含用于CPU002所使用的存储器的控制和流动的元件。这可以包括以下所有或部分:存储器控制器005、一个或多个存储器缓冲器006和一个或多个存储器设备007。在示出的实施例中,存储器设备007可以是双列直插存储器模块(DIMM),它是安装在印刷电路板上并设计用于个人计算机、工作站和服务器的一系列的动态随机存取存储器(DRAM)芯片015a-015n(统称为015)。示例中使用DRAM015仅是示例性的,使用的存储器阵列的类型可以变化,如前所述。在各种实施例中,这些元件可以与总线连接以通信数据和指令。在其他的实施例中,这些元件可以组合成执行多个任务或集成到各种类型的存储器模块中的单个芯片。示出的元件显示为包含在计算机系统001的存储器子系统004中。在其他的实施例中,这些组件可以被不同地布置,并具有各种结构。例如,存储器控制器005可在存储器总线003的CPU002侧。在其他的实施例中,它们中的一些或所有可以在不同的计算机系统上,并可以通过例如网络远程访问。
虽然存储器总线003在图6中示出为提供CPU002、存储器子系统004以及I/O总线接口010之间的直接通信路径的单个总线结构,但存储器总线003实际上可以包括多个不同的总线或通信路径,它们可以被布置成任何各种形式,如分层点到点链接、星形或web结构、多层总线、并行和冗余路径或任何其他合适的结构类型。此外,虽然I/O总线接口010和I/O总线008示出为单个相应单元,但计算机系统001实际上可以包含多个I/O总线接口单元010、多个I/O总线008或两者。虽然示出了将I/O总线008与通往各种/O设备的各个通信路径分离的多个I/O接口单元,但在其他实施例中,部分或全部的I/O设备直接连接到一个或多个系统I/O总线。
在各种实施例中,计算机系统001是多用户的主机计算机系统、单用户系统,或服务器计算机或具有很少或没有直接的用户界面的类似设备,但接收来自其他计算机系统(客户端)的请求。在其他的实施例中,计算机系统001实现为台式计算机、便携式计算机、膝上型或笔记本计算机、平板计算机、袖珍型计算机、电话、智能电话、网络交换机或路由器或任何其他合适类型的电子设备。
图6用于描述示例性计算机系统001的代表性主要组件。但各个组件可以具有比图6中表示的更高的复杂度,除了图6示出的那些组件以外也可以存在其他的组件,并且这些组件的数量、类型和结构都可以变化。本说明书中公开了这种复杂度的几个具体实施例或其他的变型。公开的具体实施例仅用作示例,并且不一定是唯一的此类变型。
在该实施例中,存储器缓冲器006可以是智能存储器缓冲器,其中每一个都包括示例性类型的逻辑模块。这种逻辑模块可以包括用于各种操作和任务的硬件、固件或两者,该各种操作和任务的示例包括:数据缓冲、数据分割和数据路由。存储器缓冲器006的逻辑模块可以使用外部元件,如存储器控制器005,控制DIMM007、DIMM007和存储器缓冲器006之间的数据流和数据流。外部元件,如存储器控制器005可以有存储器缓冲器006的逻辑模块与之交互的它自己的逻辑模块。该逻辑模块可以用于DIMM007中可能发生的故障的故障检测和故障纠错。这种技术的示例包括:纠错码(ECC)、内建自测试(BIST)、扩展练习器(extended exerciser)和巡检功能(scrub function)。固件或硬件可以在数据通过系统时添加用于故障确定的附加数据部分。整个系统中的逻辑模块,包括但不限于存储器缓冲器006、存储器控制器005、CPU002以及甚至DRAM0015,可以使用相同或不同形式的这些技术。这些逻辑模块可以将故障和存储器使用的变化通信给管理程序(hypervisor)或操作系统。管理程序或操作系统可以是用来映射系统001的存储器和跟踪CPU002使用的存储器系统中的数据的位置的系统。在组合或重新布置元件的实施例中,可以对固件、硬件或逻辑模块功能多个方面进行组合或重新分配。这些变型将对本领域的技术人员来说是显而易见的。
本说明书描述的实施例可以是系统、方法或计算机程序产品的形式。因此,本发明的实施例的多个方面可以采用完全硬件实施例、完全程序实施例(包括固件、驻留程序、微代码等,这些都存储在存储设备中)或结合程序和硬件方面的实施例(在本说明书中统称为“电路”、“模块”或“系统”)的形式。此外,本发明的实施例可以采用实施在具有实施于其上的计算机可读程序代码的一个或多个计算机可读介质上的计算机程序产品的形式。
可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备或上述任何合适的组合。计算机可读存储介质的更具体的示例(非穷尽列举)可以包括:具有电气连接一根或多根导线的电气连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)或闪存、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或前述任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是能够包含或存储被或结合指令执行系统、装置或设备使用的程序的任何有形介质。
计算机可读信号介质可以包括具有实施于其上的计算机可读程序代码的传播数据信号,例如,在基带中或作为载波的一部分。这种传播信号可以采用任何各种形式,包括但不限于电磁、光学或其任何合适的组合。计算机可读信号介质可以是不是计算机可读存储介质并且通信、传播或传输程序以供或结合指令执行系统、装置或设备使用的任何计算机可读介质。实现在计算机可读介质上的程序代码可以使用任何合适的介质,包括但不限于无线、有线线路、光纤电缆、无线电频率或上述任何合适的组合来传送。
本发明的实施例也可以作为客户企业、非营利组织、政府机构或内部组织结构预订的服务的一部分。这些实施例的多个方面可以包括将计算机系统配置为执行以及部署实现本说明书描述的一些或全部的方法的计算服务(例如,计算机可读代码、硬件和web服务)。这些实施例的多个方面还可以包括分析客户公司、创建响应于分析的建议、生成执行部分建议的计算机可读代码、将计算机可读代码集成到现有过程、计算机系统和计算基础设施中、计量本说明书描述的方法和系统的使用、分配费用给用户系统以及为用户使用这些方法和系统开账单。此外,下文中描述的各种程序可以基于它们在本发明的特定实施例中被实现成的应用程序来识别。但是,下面使用任何特定的程序术语仅仅是为了方便,因此本发明的实施例不限于只在识别的和/或通过这些术语推知的任何特定的应用程序中使用。示例性的环境并非用来限制本发明。事实上,在不脱离本发明的实施例的范围的情况下,也可以使用其他的替代硬件和/或程序环境。
虽然已经参照其具体方面对本发明进行了描述,但本领域的技术人员可以在不脱离本发明的真实精神和范围的情况下对描述的本发明的多个方面做出各种修改。本说明书中使用的术语和描述的提出仅用于示例的方式,并不意味着用作限制。
本领域的技术人员应该认识到,在以下权利要求及其等同物限定的本发明的精神和范围内,这些和其他的变化都是可能的。
Claims (14)
1.一种分析被布置成布线块网格的集成电路设计的方法,所述方法包括:
对集成电路设计中的一组线网进行标识,每个线网具有时序裕量,并且每个线网穿越至少一个布线块;
基于被穿越的至少一个布线块,为一组线网中的每个线网分配利用率度量;
基于一组稀疏线网中的每个线网的利用率度量,从一组线网确定一组稀疏线网;
基于一个或多个目标线网的时序裕量,选择一组稀疏线网中的一个或多个目标线网;
修改一个或多个目标线网中每一个的导线编码,其中修改的导线编码表示增加一个或多个目标线网的隔离或一个或多个目标线网的超额宽的金属。
2.如权利要求1所述的方法,其中每个布线块具有拥挤度度量,并且其中利用率度量是来自被穿越的至少一个布线块的最大的拥挤度度量。
3.如权利要求1所述的方法,其中一组稀疏线网中的每个线网的利用率度量小于利用率阈值。
4.如权利要求1所述的方法,其中选择的一个或多个目标线网的时序裕量小于时序裕量阈值。
5.如权利要求1所述的方法,其中具有第一时序裕量的第一稀疏线网和具有第二时序裕量的第二稀疏线网穿越第一布线块,其中第一时序裕量小于第二时序裕量,并且其中选择第一稀疏线网为一个或多个目标线网,并且不选择第二稀疏线网为一个或多个目标线网。
6.如权利要求5所述的方法,其中第一稀疏线网具有基于第一布线块的第一利用率度量,并且其中第二稀疏线网具有基于第一布线块的第二利用率度量。
7.如权利要求1所述的方法,进一步包括:
在修改导线编码后,基于被穿越的至少一个布线块,为一组线网中的每个线网分配更新的利用率度量;
基于更新的利用率度量更新一组稀疏线网;
从更新的一组稀疏线网选择一个或多个第二目标线网;以及
修改一个或多个第二目标线网中的每一个的导线编码。
8.如权利要求1所述的方法,进一步包括:
在修改导线编码后,基于被穿越的至少一个布线块,为一组线网中的每个线网分配更新的利用率度量,其中每个线网的更新的利用率度量大于或等于利用率阈值。
9.一种用于分析被布置成布线块网格的集成电路设计的系统,所述系统包括:
网表,适于存储与集成电路设计相关联的一组线网中的每个线网的时序裕量、导线编码以及布线说明,布线说明标识至少一个被穿越的布线块;
利用率度量生成器,适于基于至少一个被穿越的布线块为一组线网中的每个线网分配利用率度量;
稀疏线网列表生成器,适于基于一组稀疏线网中的每个线网的利用率度量,从一组线网中确定一组稀疏线网;
目标线网列表生成器,适于基于一个或多个目标线网的时序裕量,从一组稀疏线网中选择一个或多个目标线网;
导线编码修改器,用于修改一个或多个目标线网中每一个的导线编码,其中修改的导线编码表示增加一个或多个目标线网的隔离或一个或多个目标线网的超额宽的金属。
10.如权利要求9所述的系统,其中每个布线块具有拥挤度度量,并且其中利用率度量是来自被穿越的至少一个布线块的最大的拥挤度度量。
11.如权利要求9所述的系统,其中一组稀疏线网中的每个线网的利用率度量小于利用率阈值。
12.如权利要求9所述的系统,其中选择的一个或多个目标线网的时序裕量小于时序裕量阈值。
13.如权利要求9所述的系统,其中具有第一时序裕量的第一稀疏线网和具有第二时序裕量的第二稀疏线网穿越第一布线块,其中第一时序裕量小于第二时序裕量,并且其中选择第一稀疏线网为一个或多个目标线网,并且不选择第二稀疏线网为一个或多个目标线网。
14.如权利要求13所述的系统,其中第一稀疏线网具有基于第一布线块的第一利用率度量,并且其中第二稀疏线网具有基于第一布线块的第二利用率度量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/887,487 | 2013-05-06 | ||
US13/887,487 US8949755B2 (en) | 2013-05-06 | 2013-05-06 | Analyzing sparse wiring areas of an integrated circuit design |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104143015A CN104143015A (zh) | 2014-11-12 |
CN104143015B true CN104143015B (zh) | 2017-07-21 |
Family
ID=51842213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410188398.6A Active CN104143015B (zh) | 2013-05-06 | 2014-05-06 | 分析集成电路设计的稀疏连线区域的方法及系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8949755B2 (zh) |
CN (1) | CN104143015B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7448012B1 (en) | 2004-04-21 | 2008-11-04 | Qi-De Qian | Methods and system for improving integrated circuit layout |
US20160210577A1 (en) * | 2015-01-21 | 2016-07-21 | International Business Machines Corporation | Analysis of project management |
US9760669B2 (en) | 2015-11-11 | 2017-09-12 | International Business Machines Corporation | Congestion mitigation by wire ordering |
US10353841B2 (en) | 2016-12-08 | 2019-07-16 | International Business Machines Corporation | Optimizing routing of a signal path in a semiconductor device |
US10031996B2 (en) | 2016-12-14 | 2018-07-24 | International Business Machines Corporation | Timing based net constraints tagging with zero wire load validation |
CN111027273B (zh) * | 2019-12-04 | 2023-03-10 | 杭州广立微电子股份有限公司 | 一种基于预绕线的版图自动绕线方法、存储设备及系统 |
US11455455B1 (en) | 2019-12-09 | 2022-09-27 | Dialog Semiconductor (Uk) Limited | 3D coupling control rules for auto-routing |
CN111931445B (zh) * | 2020-10-09 | 2020-12-29 | 芯华章科技股份有限公司 | 用于调试逻辑系统设计的方法、仿真器及存储介质 |
CN113887166A (zh) * | 2021-10-12 | 2022-01-04 | 福州大学 | 一种基于整数线性规划和两阶段划分策略的轨道分配方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467582A (zh) * | 2010-10-29 | 2012-05-23 | 国际商业机器公司 | 一种集成电路设计中优化连线约束的方法和系统 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682107A (en) * | 1994-04-01 | 1997-10-28 | Xilinx, Inc. | FPGA architecture with repeatable tiles including routing matrices and logic matrices |
US5607341A (en) * | 1994-08-08 | 1997-03-04 | Leach; Michael A. | Method and structure for polishing a wafer during manufacture of integrated circuits |
US6272668B1 (en) | 1994-12-14 | 2001-08-07 | Hyundai Electronics America, Inc. | Method for cell swapping to improve pre-layout to post-layout timing |
US6591407B1 (en) | 2000-03-01 | 2003-07-08 | Sequence Design, Inc. | Method and apparatus for interconnect-driven optimization of integrated circuit design |
US6415426B1 (en) | 2000-06-02 | 2002-07-02 | Incentia Design Systems, Inc. | Dynamic weighting and/or target zone analysis in timing driven placement of cells of an integrated circuit design |
US7111268B1 (en) | 2002-08-26 | 2006-09-19 | Xilinx, Inc. | Post-layout optimization in integrated circuit design |
US7062743B2 (en) * | 2002-09-24 | 2006-06-13 | The Regents Of The University Of California | Floorplan evaluation, global routing, and buffer insertion for integrated circuits |
US7594204B1 (en) | 2003-10-06 | 2009-09-22 | Altera Corporation | Method and apparatus for performing layout-driven optimizations on field programmable gate arrays |
US7308664B1 (en) | 2004-02-09 | 2007-12-11 | Altera Corporation | Method and apparatus for utilizing long-path and short-path timing constraints in an electronic-design-automation tool for routing |
US7428721B2 (en) * | 2004-12-01 | 2008-09-23 | Tabula, Inc. | Operational cycle assignment in a configurable IC |
US20060281221A1 (en) * | 2005-06-09 | 2006-12-14 | Sharad Mehrotra | Enhanced routing grid system and method |
US7451416B2 (en) | 2006-03-17 | 2008-11-11 | International Business Machines Corporation | Method and system for designing an electronic circuit |
US7389485B1 (en) | 2006-03-28 | 2008-06-17 | Xilinx, Inc. | Methods of routing low-power designs in programmable logic devices having heterogeneous routing architectures |
US7904861B2 (en) * | 2007-06-13 | 2011-03-08 | International Business Machines Corporation | Method, system, and computer program product for coupled noise timing violation avoidance in detailed routing |
US7902866B1 (en) * | 2007-08-27 | 2011-03-08 | Virginia Tech Intellectual Properties, Inc. | Wires on demand: run-time communication synthesis for reconfigurable computing |
US20090064068A1 (en) * | 2007-08-31 | 2009-03-05 | Ibm Corporation | Method and Apparatus for Evaluating the Timing Effects of Logic Block Location Changes in Integrated Circuit Design |
US8554972B2 (en) * | 2007-09-13 | 2013-10-08 | Friedrich-Alexander-Universitaet-Erlangen-Nuernberg | Logic chip, method and computer program for providing a configuration information for a configurable logic chip |
US8347249B2 (en) | 2009-04-01 | 2013-01-01 | International Business Machines Corporation | Incremental timing optimization and placement |
US8176454B2 (en) * | 2009-08-28 | 2012-05-08 | Empire Technology Development Llc | Non-invasive timing characterization of integrated circuits using sensitizable signal paths and sparse equations |
US8413104B2 (en) * | 2011-05-12 | 2013-04-02 | International Business Machines Corporation | Changing the location of a buffer bay in a netlist |
US8631370B2 (en) * | 2012-04-26 | 2014-01-14 | International Business Machines Corporation | Swapping ports to change the timing window overlap of adjacent nets |
US8578311B1 (en) * | 2012-05-09 | 2013-11-05 | International Business Machines Corporation | Method and system for optimal diameter bounding of designs with complex feed-forward components |
-
2013
- 2013-05-06 US US13/887,487 patent/US8949755B2/en not_active Expired - Fee Related
-
2014
- 2014-05-06 CN CN201410188398.6A patent/CN104143015B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467582A (zh) * | 2010-10-29 | 2012-05-23 | 国际商业机器公司 | 一种集成电路设计中优化连线约束的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104143015A (zh) | 2014-11-12 |
US8949755B2 (en) | 2015-02-03 |
US20140331196A1 (en) | 2014-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104143015B (zh) | 分析集成电路设计的稀疏连线区域的方法及系统 | |
Qi et al. | Accurate prediction of detailed routing congestion using supervised data learning | |
US9767240B2 (en) | Temperature-aware integrated circuit design methods and systems | |
US8555221B2 (en) | Partitioning for hardware-accelerated functional verification | |
CN107918694B (zh) | 用于减少集成电路上的延迟的方法 | |
Liang et al. | Routing-free crosstalk prediction | |
US9304919B2 (en) | Detecting multiple stride sequences for prefetching | |
US9817941B2 (en) | Methods, systems, and articles of manufacture for implementing high current carrying interconnects in electronic designs | |
US20170116367A1 (en) | Electromigration-aware integrated circuit design methods and systems | |
US8793633B1 (en) | In-hierarchy circuit analysis and modification | |
Lou | An exact solution to simultaneous technology mapping and linear placement problem | |
WO2009108607A1 (en) | Automatic bus routing | |
CN112347722A (zh) | 高效评估芯片Feed-through流水级数的方法及装置 | |
Debacker et al. | Vertical M1 routing-aware detailed placement for congestion and wirelength reduction in sub-10nm nodes | |
Dhar et al. | An effective timing-driven detailed placement algorithm for FPGAs | |
US10860761B1 (en) | Systems and methods for enhanced clock tree power estimation at register transfer level | |
Ho et al. | ECO timing optimization using spare cells and technology remapping | |
Szentimrey et al. | Machine learning for congestion management and routability prediction within FPGA placement | |
Chhabria et al. | A machine learning approach to improving timing consistency between global route and detailed route | |
CN105447213B (zh) | 用于对电路设计进行仿真的方法和装置 | |
Bock et al. | Local search algorithms for timing-driven placement under arbitrary delay models | |
Kahng et al. | Requirements for models of achievable routing | |
US8826215B1 (en) | Routing centric design closure | |
US11829698B2 (en) | Guided power grid augmentation system and method | |
US9177090B1 (en) | In-hierarchy circuit analysis and modification for circuit instances |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |