具有冗余的路径保持设计分区的制作方法

文档序号:6351877阅读:263来源:国知局
专利名称:具有冗余的路径保持设计分区的制作方法
具有冗余的路径保持设计分区发明背景发明领域本发明涉及静态定时分析,尤其涉及集成电路设计的分区以确保快速、并行且准确的分析。值得注意的是,该分区允许冗余,即在各分区之间共享对象,由此确保设计的对象的完全定时路径并改进后续分析。相关技术静态定时分析(STA)是ー种在不执行仿真(往往是缓慢且复杂的)的情况下估算电路的预期定时的方法。在STA中,定时分析能够以与输入无关的方式(之后用术语“静态”)执行以确定在所有可能的输入组合的情况下设计中的电路的最坏情况延迟。为了提供快速、相当准确的电路定时估算,STA依靠简化的延迟模型并最小化对信号交互效果的考虑。
值得注意的是,集成电路设计的大小、功能和物理复杂性由于系统集成、设计技术和制造技术的进步而继续迅速增长。结果,执行全芯片STA花费越来越长的运行时间且需要具有越来越大的容量的越来越強大的计算硬件。因此,STA工具可能逐渐变成集成电路设计流程中的主要瓶颈。因此,出现了对提高STA的速度并减少STA的单片机存储器需求同时仍旧确保准确的定时估算的技术的需求。发明概述描述了ー种对集成电路设计进行分区以便进行静态定时分析的方法。该方法基于分层结构驱动的拓扑群集。在该方法中,可访问列出设计中的对象的至少ー个文件。示例性文件可包括VHDL文件和/或Verilog文件。使用该至少ー个文件,可获得描述电路设计及其分层结构的ー组对象。设计的端点可基于其分层结构关系来进行群集。端点集群中的各个端点可使用分区分配表示来预设。一个这样的表示使用逐位编码(位码)。在预设后,该分区分配表示可以从端点反向传播通过设计以确定这些端点的扇入中的电路对象。该传播填充分区。可以对每一端点集群重复预设和传播的步骤。经填充的分区可变成缩减电路并输出以便用作静态定时分析的输入。值得注意的是,至少ー组经填充的分区包括冗余对象,这暗示分区之间的重复对象。在一个实施例中,经填充的分区可以在输出之前进行优化。例如,ー组分区可基于与每ー经填充的分区相关联的成本度量来合井。在另ー实施例中,端点群集包括过度群集(over-clustering),即创建比本来需要和/或指定的集群更多的端点集群。该过度群集允许合并期间的更大的灵活性。还描述了对集成电路设计进行分区以便进行静态定时分析的另ー实施例。该方法基于细粒度拓扑群集。在该方法中,在使用文件(例如,VHDL或Verilog)来构建电路设计之后,能够非常快地估算全局成本并且可确定每一分区的目标成本。细粒度群集的种子端点可使用分区分配表示来预设。在一个实施例中,分区分配表示可以是位码。此时,来自种子端点的信号可以反向传播通过设计以确定种子端点的扇入中的电路对象。该传播填充分区。传播在不具有反向扇入对象的设计对象处并且当与该经填充的分区相关联的成本达到或超过目标成本时停止。在一个实施例中,在传播期间,可收集群集偏好。这些群集偏好能够有利地方便基于与经填充的分区中的对象相关联的约束来向细粒度集群添加至少ー个种子端点。可以对每ー细粒度集群重复预设和传播的步骤。经填充的分区可变成用于静态定时分析的缩减的电路输入。值得注意的是,至少ー组经填充的分区包括冗余对象,这暗示分区之间的重复对象。还描述了其中存储用于对集成电路进行分区以便进行静态定时分析的计算机可执行指令的计算机可读介质。在被计算机执行时,这些指令执行上述与分层结构驱动的拓扑群集或细粒度拓扑群集相关联的步骤,或所描述的方法的组合。附图简述图I示出了设计静态度量和工具运行时间度量之间的示例性统计关联。、
图2示出了使用分层结构驱动的拓扑群集的示例性分区技木。图3示出了使用细粒度拓扑群集的示例性分区技木。图4A-4F示出了使用图3的技术的简单电路分区。图5示出了示例性数字ASIC设计流程的简化表示。图6示出了示例性分叉点以及细粒度拓扑群集如何在分区期间处理该分叉点。附图的详细描述根据本发明的一方面,静态定时分析(STA)可包括具有冗余的分区。分区允许在多个较少需求且更可用的硬件资源上并行地执行针对性定时分析。可任选地,分区还允许在具有足够资源的单个硬件上并行地执行针对性分析。因此,能够显著地缩短STA的运行时间。在另ー实施例中,当机器存储器资源是最具约束性的因素吋,因为分区导致大小缩减的子电路,因此可以对ー个分区或按某ー顺序次序对这些分区的子集执行针对性分析,以减少该分析的峰值存储器需求。在不损失普遍性的情况下,在并行分析中使用分区技术允许运行时间加速。注意,设计分区是开销功能,因为它在STA流程中引入附加步骤。因此,设计分区通常不存在于传统分析流程中。因此,设计分区的性能对于总体并行解决方案的有效性而H是关键的。值得注意的是,本文描述的分区还包括冗余。即,分区被允许共享对象以使得ー些对象被允许在必要时在许多和/或所有分区之间重复或共享,以保持定时路径完全性和设计结构完整性。对象可包括例如逻辑门、导线连接、存储器件(例如,触发器或锁存器)等。由于该冗余,这些分区可考虑STA专门施加的许多约束。一旦这些分区被填充,就可并行地对这些分区执行分析以生成相同的定时结果,就像该设计完全作为单个单元进行分析那样。因此,能够在不损害结果准确性和结果质量(QoR)的情况下优化STA的性能。注意,该分区冗余在功能上不同于数据依赖,该数据依赖有利地使用文本描述的分区技术来消除。不像冗余,数据依赖需要昂贵的进程间通信来解决以便正确地执行分析。因此,允许保持数据依赖会另外极大地损害分区的目的。根据改进的分区的一方面,静态成本度量可被应用于每ー设计。这些静态成本度量可以从STA工具的实际性能和容量測量中导出。例如,图I示出了从示例性エ业设计导出的各种度量关联。图I是通过以下操作生成的访问设计,确定该设计中的単元(例如,逻辑门或存储器件)、连线(即,単元之间的导线)、引脚、电弧(其中电弧在単元的输入引脚和该单元的输出引脚之间)和时钟的数量,测量执行对设计的针对性分析的运行时间,以及测量该运行时间所需的存储器。然后确定针对各度量(即,単元、连线、引脚、电弧和时钟)测得的运行时间和测得的存储器之间的关联。对覆盖各种各样的设计样式和技术的数百个エ业设计重复该过程。这些关联的规范化的结果在图I中示出。单元度量101指示O. 699关联几何均值;连线度量102指示O. 680关联几何均值;引脚度量103指示O. 761关联几何均值;电弧度量104指示O. 873关联几何均值;而时钟度量105指示O. 264关联几何均值。每ー关联几何均值都指示使用该度量来确定运行时间和存储器的预期准确度。例如,通过知晓任何设计中的电弧数量,能够以87. 3%的准确度估算出该设计的运行时间和存储器需求。注意,每ー度量都具有对应西格玛,即平均误差,被示为具有填充图案的条柱。例如,展示最高关联几何均值的电弧度量104具有平均误差O. 031 (S卩,3. 1%)。有利的是,在成本函数中可使用这些静态设计度量的集合来改进分区,如将在下文中更详细地解释的。注意,成本函数可基于图I所示的ー个度量、度量的组合或所有度 量。具有冗余的分区可使用分层结构驱动的拓扑群集和/或细粒度拓扑群集来执行。一般而言,分层结构驱动的拓扑群集在分层结构层次是明显且合式的时候是特别有效的,而细粒度拓扑群集在分层结构层次不明显或不合式的时候是特别有效的。取决于结构和样式,一些设计(或设计的各部分)可从分层结构驱动的拓扑群集获益,而其他设计(或设计的各部分)可以从细粒度拓扑群集获益。此外,尽管在图2和3中被描述为单独的技术,但这些技术在一些实施例中能够容易地组合使用。图2示出了示例性电路分层结构驱动的拓扑群集技术200。如上所述,当设计包括许多分层结构对象(例如,存储器阵列或结构规则的其他大規模単元)吋,技术200可以是特别有效的。具体而言,分层结构对象能够有利地指示強烈的固有设计意图以供进行可由技术200利用的自然分组。步骤201可基于设计的端点的分层结构来对这些端点进行群集。如此处所使用的,术语“端点”可以指存储器件的数据(D)引脚或者指设计的任何主要输出端ロ。在ー个实施例中,该群集可使用列出设计中的对象的ー个或多个文件来执行。示例性文件可包括设计的Verilog文件和/或VHDL (超高速集成电路硬件描述语言)文件,这些文件在其硬件描述中是固有地分层的。在另ー实施例中,该群集可基于命名约定来执行。例如,对象集可被命名为“mem_…”或“cpu_…”,这可指示分组在一起以形成分层元件(例如,存储器或中央处理单元(CPU))的偏好。換言之,设计文件的命名约定还可指示设计的固有分区。由此,在步骤201中可利用设计的物理和/或逻辑分层结构。在步骤201中,选择分层端点集群的初始目标数量。在一个实施例中,目标数量可被选为容易地对应于一组位码(在下文中更详细地描述)的数字(例如,8、16、32、48等)。端点集群然后通过检查设计的分层结构来导出。在该初始群集阶段期间,定义集群以使得·所有集群都具有近乎相同数量的端点,·同一集群中的所有端点都来自相同的层次,并且·集群的最終数量近似于集群的目标数量。
如果发现顶层分层结构具有太多端点以至于无法导出适当大小的集群,则可以为该分层结构导出多个端点集群。在这种情况下,可以递归地检查子分层结构直到导出适当大小的集群。一些端点不属于分层结构(例如,输出端ロ)。从这些输出端ロ端点中的每ー个执行反向跟踪。如果在针对给定输出端ロ端点的反向跟踪期间发现一分层结构,则该输出端ロ端点被放置到对应于该分层结构的端点集群中。如果未发现分层结构,则该输出端ロ端点被放置在默认集群中。在步骤202中,按照端点数量来对端点集群进行排名。N个最大集群中的每ー个被分配唯一的位码(其中N=来自步骤201的目标数量)。给定集群的所有端点都用该集群的唯一位码来预设。此时,步骤203可使位码从步骤202中预设的所有端点沿着信号路径进行反向传播(注意,该传播參考图4B-4F更详细地描述)。注意,在位码传播时,该位码传播通过的对象被添加到分区,并且每一个这样的对象都可以用位码来标记以便将该对象标识为该分区的一部分。由此,该传播有效地确定对该端点集群的传递扇入。在一个实施例中,步骤203 还可以在形成每ー个分区时评估它们的成本以确定分区的大小,以及该分区与其他分区的重叠和冗余。步骤204可确定是否剰余任何其余端点集群。如果是,则该过程可返回至步骤202以便通过将唯一的位码分配给其相关联的端点来预设另一端点集群。在一个实施例中,步骤204可检查来自先前传播的结果以便将端点集群分配给先前使用的位码。步骤202 —204可以重复直到所有端点集群都分配到位码并被传播到其整个传递扇入电路。此时,可任选的步骤205可优化从步骤203中执行的传播中产生的这些初始分区分配。该优化的目标是通过最小化重叠和实现良好平衡来最小化分区的最大成本。例如,某些分区可以合并以形成新的更大的分区。例如,假设已经通过步骤202 — 204形成四个初始分区A、B、C、D,并且目标分区是两个,则步骤205可确定分区A中的对象驱动分区B中的对象,而分区C中的对象驱动分区D中的对象。由此,分区A是与分区B高度相关的,而分区C是与分区D高度相关的。因此,步骤205可将分区A和B合并成新分区A’,以及将分区C和D合并成新分区B’。该合并能够有利地減少分区之间的重叠,由此优化全局设计分区。在一个实施例中,分区之间的拓扑距离还可被认为是优化的一部分,即,取决于每一分区的成本,可以考虑在更远离的分区之前将更靠近在一起(因此具有更高的相关可能性)的分区进行合井。该合并还可考虑平衡。例如,在合并相关分区后,某些非相关分区可能显著地小于合并的分区。因此,为了为所有分区提供类似的运行时间/存储器需求,步骤205可以在必要时合并某些非相关分区。步骤206可输出这些经优化的分区作为缩减的电路输入以供在STA工具中使用。在一个实施例中,该分区输出还可变成可见的并被提供给用户。在一个实施例中,步骤201能够“过度群集”,即创建比原本指定或要求的集群更多的端点集群,由此允许步骤205在确定分区间关联以执行分区优化时更灵活。例如,虽然步骤201最初可要求通常将产生至少32个分区(基于信号传播)的32端点集群,但步骤205可合并各分区以产生仅仅4、8或12个分区。图3示出了示例性细粒度拓扑群集技术300,该技术聚焦于在固有地最小化冗余的同时平衡各分区。在步骤301中,能够快速估算全局成本并且能够设置目标成本。回头參考

图1,可通过首先对设计中的那些所选类型的对象的数量进行计数来估算全局成本函数。例如,出于简明且不损失普遍性的原因而仅仅聚焦于电弧,假设单位成本I被分配给每一电弧并且设计具有一共100个电弧,则全局成本是100。进ー步假设分区的目标数量是4,则目标成本因此被计算成25,这意味着平均每个分区25个电弧并给出每个分区的理想目标成本。在技术300的传播步骤(下文讨论)期间,访问设计中的对象并将其添加到第一分区直到达到或超出目标成本,此时创建第二分区。该过程继续直到创建和填充所有分区,并且所有端点都被分配给各分区。步骤302确定细粒度集群。注意,术语“细粒度”是与设计中的端点总数相対的。例如,在一设计中提供6个端点的情况下(即,极度简单的设计),每ー细粒度集群都可具有单个端点。相反,在一设计中有50000个端点可用的情况下,细粒度集群可具有500个端点。“细粒度”的关键点意味着每ー个端点集合的大小都显著地小于最终将被分配给每一分区的端点的平均数量。在步骤303中,用作为标记的预定位码来预设ー个端点集群。步骤304从细粒度集群中的每ー种子端点反向传播信号。如此处所使用的,术语“种子”端点可以指设计中的 任何所选主要输出端ロ以及存储器件的任何所选数据(D)引脚。更具体而言,步骤304从种子端点向上游传播信号以确定其扇入锥形。在一个实施例中,当在该传播期间遇到具有预先分配的成本的每ー对象时,触发成本函数被估算并且计数器增加所得成本单位,由此保持对分区成本的跟踪,同时使分区增长该对象。注意,在该传播期间,可能发现某些群集偏好并将其传递至收集这些群集偏好的步骤308。群集偏好能够有利地标识相关对象(例如,拓扑关联)、扇入锥形的物理邻近度、或者使得期望将这些对象包括在相同的分区中的重叠扇入锥形。在一个实施例中是可任选的步骤305可使用导线交叉耦合标识和/或其他信号完整性(SI)度量来扩充群集偏好(在步骤308中收集的)。步骤306可确定到分区中的端点的当前传播是否产生等于或大于目标成本的分区成本。例如,如果设计的全局成本是50且分区数量是2,则目标成本是25。如果与当前分区相关联的成本小于目标成本,则附加对象可被添加到分区(其中每ー个对象都具有相关联的成本)。因此,该过程可返回到步骤302以确定用于信号传播的另一端点。注意,步骤302可基于由步骤308收集的冗余反馈311来确定下一个种子端点。步骤303和304然后可基于该新种子端点来执行。如果分区成本变成等于或大于目标成本,则附加对象优选地不被添加到当前分区。因此,步骤307可输出分区,该分区可以在STA期间使用。如果并未在经填充的分区中分配设计中的所有对象,如在步骤309中确定的,则然后可使用步骤302-309来创建并填充附加分区。或者,预先填充的分区可通过其总成本来进行排序,并且可扩充具有最低实际成本的分区以包括附加“细粒度”端点集。该过程动态重复直到设计中的所有对象都在经填充的分区中,此时分区结束。注意,能够从设计中的所选类型的对象(这些类型中的一些在图I中示出)的数量中计算出或估算出全局成本和目标成本两者。在一个实施例中,这些成本可通过对对象类型进行快速计数来估算,每ー个对象都被分配一単位成本。在另ー实施例中,某些对象可被赋予比其他对象更大的权重。例如,时钟网络上的电弧在分析期间往往是成本较高的。因此,在一个实施例中,这些时钟电弧可被赋予比存在于数据路径中的其他电弧更大的权重。在另ー实施例中,成本可通过使用对象类型的组合来更准确地估算,每ー对象类型都具有根据经验測量或基于关键算法复杂性分析来通过分析分配的权重系数。图4A示出了将使用细粒度群集来分区的示例性电路400。在该实施例中,电路400 包括输入端 ロ 401 和 402、缓冲器 403、404、406、407、410、414、415、417、418、420、421 和423、触发器405、409、416、419和422、AND门408以及输出端ロ 411和424。注意,触发器405、409、416和422中的每ー个都被示为具有两个内部箭头将时钟(CLK)引脚连接到Q引脚的实线箭头以及将CLK引脚连接到D引脚的虚线箭头。实线箭头指示出于信号传播目的的定时路径。虚线箭头指示約束,即,尽管最初存储器件的D和Q引脚能够单独标记,但存储器件必须最終被分配在ー个分区中或由两个分区共享。如将在下文中更详细地描述的,在传播期间发生的对Q引脚的标记也自动标记CLK引脚(反之亦然)。

注意,分区的目标数量可基于各种因素,诸如直接用户指定或计算资源可用性,或者定时端点之间的拓扑关系(以下讨论)。在具有数百万个对象和大量可能的分区的复杂设计中,分区的目标数量基于应用一个或多个规则和/或一些现有硬件、软件(例如许可)约束和/或最优和所期望的分区数量等来生成,该ー个或多个规则包括用户指定的通过实现分区的软件程序提供的特定用户界面(UI)指示分区的固定数量的參数。对于图4B,假设目标为两个分区。根据改进的分区的一方面,电路400的每ー个对象都可以用位码来标记。因为对于电路400目标仅仅是两个分区,所以ニ进制码可包括标识对象被分配给第一分区、第二分区、共享分区还是不分配给分区的两个位。示例性位码在图4B的图例中示出。为了开始分区,可首先标识设计的定时端点。在电路400中,定时端点是输出端ロ411和424以及触发器405、409、416、419和422的D引脚。任何对象到两个分区中的指定可基于将定时端点用作种子,如上所述。在一个实施例中,与输出端ロ 411相关联的端点可用作创建第一分区的初始种子并被相应地标记(即0,I)。向上游传播信号将导致将缓冲器410、触发器409的Q引脚、缓冲器407和404以及输入端ロ 402标记为第一分区的一部分。注意,出于分区的目的,主要感兴趣的是存储器件的定时,而非其数据传播路径。即,时钟信号触发触发器将其D引脚上的值传送至其Q引脚(如实现箭头所示)。因此,在反向传播时,信号从Q引脚遍历到CLK引脚(而非D引脚)。注意,因为只标记触发器409的Q引脚(及其对应的CLK引脚),所以该标记可被认为是以对其D引脚的标记为条件的(由图4B中的虚线框指示)。为了出于普遍性的目的来阐明,即使未在附图中示出,也存在通常被称为电平灵敏透明锁存器的另ー常见种类的存储器件,不同于在时钟边沿触发的触发器。对于这些透明锁存器器件,在其D引脚和Q引脚之间存在电弧,因此存在从D到Q的直接信号路径,以使得反向传播应跨越式遍历以便将D引脚的扇入内的对象包括在与Q引脚相同的分区中。实际上,对于这些透明锁存器器件,它们的D引脚可被认为根本不是分区端点或強迫成为分区端点。在一个实施例中,它们将被包括和填充到一分区中,同时从触发器数据引脚和/或输出端口上的一些真实分区端点通过Q反向传播至D。在该实施例中,出于分区目的,对透明锁存器器件的处理因此与任何其他组合的非存储单元相同。在另ー实施例中,这些透明锁存器D引脚可被指定为端点以使得通过Q反向传播至D被阻塞,并且锁存器的D引脚的扇入内的对象将由D引脚的分区分配来确定,而不是由从其他端点反向传播的Q引脚分区分配来确定。因此,在本说明书中出于简明的原因可以假设存储器件是触发器,因为将透明锁存器视作组合単元或触发器不损失本说明书中的任何普遍性。注意,触发器中的虚线箭头指示約束。即,尽管对于初始分区主要关心定时传播路径,但对所得分区的优化能够有利地确保一旦被有条件地标记,存储器件将最终被标记为有条件地标记的分区的一部分或在分区之间共享。对存储器件的标记的这ー约束确保存储器件在传播和分区填充期间被正确地标记,以使得导向该存储器件的所有定时路径分段都被保持在给定分区中。现在參考图4C,缓冲器404的输出处的节点也连接到触发器405的CLK引脚。因此,信号也可正向传播至触发器405的Q引脚、缓冲器406、AND门408和触发器409的D引脚。注意,因为触发器409的D引脚和触发器409的Q引脚两者都被标记为第一分区,所以触发器409可被指定为无条件地作为第一分区的一部分。相反,仅标记了触发器405的Q 引脚。因此,触发器405被有条件地标记为第一分区的一部分。如图4C所示,因为AND门408被标记为在第一分区中,所以到AND门408中的任何扇入应当也变成第一分区的一部分。因此,缓冲器418、触发器416的Q引脚、缓冲器415和输入端ロ 415也被标记为第一分区的一部分。即,传播继续直到它到达不具有进ー步的反向扇入对象的对象。值得注意的是,如上所述,在传播期间,可以对第一分区中的累积对象的数量进行计数。假设设计400中的电弧总数是18(在不损失普遍性的情况下为了简明而只考虑电弧)并且目标分区数量是2,则可使用9个电弧的计数来发起第二分区的创建。因为当前电弧数量已经是10,所以第一分区被认为是“满”的。图4D示出了第二分区的创建,开始于从与输出端ロ 424相关联的端点的传播。如图所示,缓冲器423、触发器422的Q引脚(有条件)、缓冲器421、触发器419的Q引脚(有条件)、缓冲器417和415、输入端ロ 413、触发器416的Q引脚(有条件)和缓冲器417可被标记为第二分区的一部分。注意,缓冲器415和输入端ロ 413已经被分配给第一分区,但鉴于缓冲器417,也应被分配给第二分区。因此,缓冲器415和输入端ロ 413可被指定为共享第一和第二分区。结果,触发器416的Q引脚也应被重新指定为共享第一和第二分区。因为对于设计400目标仅为两个分区,所以所有剩下的当前未分配的単元都可被分配给当前较小的分区,即第二分区,如图4E所示。具体而言,输入端ロ 401、缓冲器403、触发器405的D引脚、输入端ロ 412、缓冲器414、触发器416的D引脚、缓冲器420、触发器422的D引脚以及触发器419的D引脚全都可被分配给第二分区。注意,如果留有多个分区要填充,则上述传播可以从每ー个端点执行(例如,以便确定到第二、第三等分区的分配)直到满足预定成本函数。在其D和Q引脚上具有相同分区分配的任何存储器件都可被标记为无条件地分配给该分区。例如,触发器419和422具有被分配给第二分区的D和Q引脚。因此,触发器419和422可以被无条件地分配给第二分区,如图4F所示。给定存储器件无法在分区之间划分,但可以共享。例如,触发器405具有被标记为第二分区的一部分的D引脚以及被标记为第一分区的一部分的Q引脚。因此,触发器405可以被标记为在第一和第二分区之间共享,如图4F所示。注意,触发器416的D引脚被标记为第二分区的一部分,而Q引脚被标记为在第一和第二分区之间共享。因此,触发器416可被无条件地标记为在第一和第二分区之间共享。在一个实施例中,连接到存储器件的CLK引脚的对象必须具有与该存储器件相同的标记。因此,例如,输入端ロ 402和缓冲器404可被指定为共享第一和第二分区,这将与触发器405的标记一致。注意,当在STA期间分析一分区时,将存在所有共享对象以及对该分区唯一的对象。然而,并非与共享对象相关联的所有引脚都将具有连接。例如,在分析第一分区期间,触发器405将存在且其CLK引脚连接到缓冲器404和输入端ロ 402,且其Q引脚连接到缓冲器406、AND门408等。然而,其D引脚将不连接。相反,在分析第二分区期间,触发器405将存在且其D引脚连接到缓冲器403和输入端ロ 401。然而,其Q引脚及其CLK引脚将不连接。 注意,可以在STA域中施加两个功能约束。在第一功能约束中,导向给定存储器件的定时路径需要被保持在相同分区中以确保自给自足的分析。如此处所定义的,定时路径可包括启动时钟路径(或路径分段)、数据传播路径(或路径分段)以及捕捉时钟路径(或路径分段)。例如,考虑触发器。在这种情况下,启动时钟路径将会是连接在端点和触发器的CLK引脚之间的时钟信号路径。数据传播路径将会是触发器的Q引脚至另ー触发器的下一端点之间的数据信号路径。捕捉时钟路径将会是时钟源至下一触发器的D引脚之间的时钟信号路径。由此,在两个触发器使用相同的时钟且第一触发器Q引脚传播到第二触发器D引脚的情况下,第一触发器的启动时钟路径也是其前驱站的捕捉时钟路径,并且第二触发器的捕捉时钟路径是第二触发器的导向下ー级的启动时钟路径。例如,时钟缓冲器单元415是第二分区中的触发器416的捕捉路径,同时它也是最终导向属于第一分区的触发器409的数据路径的启动路径。因此,単元415和时钟路径单元415以及时钟端ロ 413被分配给这两个分区并且变成是跨分区冗余的。在第二功能约束中,导向特定存储器件的所有定时路径都需要在该存储器件被分配到的分区中保持完全。该约束可解决数据路径部分。有了该约束,导向未被分配给相同分区的多个端点的数据路径中的分叉点对于该分叉点的扇入中的区域也产生跨分区冗余。为了确保分区之间的平衡的运行时间和存储器分布,可最小化分区之间的重叠。该平衡能够有利地最小化冗余的和/或浪费的分析,由此方便实现性能和容量目标。对STA的经优化的分区应当I)保证定时路径完全性,2)最大化分区平衡,以及3)最小化分区间重叠。值得注意的是,这些目标在确定经优化的分区解决方案时可能是竞争约束。例如,分层结构驱动的拓扑群集技术(图2)和细粒度拓扑群集技术(图3)两者都能够保证定时完全性。然而,当比较这两种技术时,细粒度拓扑群集技术可能能够以ー些分区间重叠为代价提供更多的分区平衡。相反,分层结构驱动的拓扑群集技术可能能够以ー些分区平衡为代价提供更少的分区间重叠。值得注意的是,这两种技术都能够为范围从〈100000个对象到数千万或更多单元且覆盖各种各样的设计样式的集成电路设计生成非常高质量的分区。该经优化的分区有利地方便整个STA流程的良好性能和良好容量改进。而且,这两种技术都允许高效的分布式并行分析,消除分区间STA数据依赖,并最小化和/或避免昂贵的分区间通信。更进一歩,为了在每一分区中准确地且自给自足地完成STA,可以分割任何设计约束以伴随适当的分区。STA的示例性设计约束包括诸如时钟和所生成的时钟定义等的构造、诸如多循环路径和假路径等的异常、诸如逻辑常量、案例值和模式等的场景。这些约束对于定时分析是关键的,并且是在生成分区之前为整个设计指定的。分析每ー个约束声明以基于针对这些约束的锚设计对象来进行索引和归类。对于涉及诸如由其他约束定义的时钟等全局对象的约束,递归地执行针对相关约束的锚对象的进ー步分类。例如,全局对象的主要类型是在设计约束中定义的时钟。在图4F中,在单元419处定义的所生成的时钟可以指在端ロ 413处定义的主时钟源,由此导致这两个时钟被分配给相同的第二分区以使得从主时钟导出的所生成的时钟是完全的。图5示出了示例性数字ASIC设计流程的简化表示。在高层,该过程开始于产品构思(步骤500)并且在EDA软件设计过程中实现(步骤510)。当完成设计时,该设计可下线(tape out)(事件540)。在下线后,发生制造过程(步骤550)以及封装和组装过程(步骤560),从而最终产生完成的芯片(结果570)。EDA软件设计过程(步骤510)实际上包括多个步骤512-530,为了简明以线性方式示出。在实际ASIC设计过程中,特定设计可能必须回退各步骤直到通过某些测试。类似地, 在任何实际设计过程中,这些步骤可以按不同的次序和组合出现。本说明书因此通过上下文和一般解释来提供,而不是作为用于特定ASIC的特定或推荐的设计流程。现在将提供对EDA软件设计过程(步骤410)的构成步骤的简要描述系统设计(步骤512):设计者描述他们想要实现的功能,他们可执行假设分析规划以限定功能,检查成本等。硬件ー软件体系结构分区可以在该阶段进行。可以在该步骤使用的来自Synopsys公司的不例性EDA软件产品包括Model Architect、Saber、System Studio 和Design Ware 产品。逻辑设计和功能验证(步骤514)。在该阶段,编写用于系统中的模块的VHDL或Verilog代码并且检查该设计的功能准确性。更具体而言,进行所检查的设计以确保产生正确的输出。可以在该步骤使用的来自Synopsys公司的示例性EDA软件产品包括VCS、VERA、DesignWare 、Magellan、Formality> ESP 和 LEDA 产品。合成和设计以供测试(步骤516):此处,将VHDL/Verilog转换成连线表。该连线表可针对目标技术来优化。另外,进行对用于准许检查已完成的芯片的测试的设计和实现。可以在该步骤使用的来自Synopsys公司的示例性EDA软件产品包括Design Compiler 、Power Compiler、Tetramax和Design Ware 产品。上述分区技术可被包括在用于计算或向步骤516提供定时信息的工具或程序中。连线表验证(步骤518):在该步骤,检查连线表符合定时约束并与VHDL/Verilog源代码一致。可以在该步骤使用的来自Synopsys公司的示例性EDA软件产品包括Formality、PrimeTime和VCS产品。上述具有冗余的分区技术可被包括在步骤518中。设计规划(步骤520):此处,构造用于芯片的总平面布置图并对其进行分析以便进行定时和顶层路由。可以在该步骤使用的来自Synopsys公司的示例性EDA软件产品包括Astro和IC Compiler产品。上述分区技术可被包括在计算或向步骤520提供定时信息的工具或程序中。物理实现(步骤522):在该步骤进行放置(电路元件的定位)和路由(电路元件的连接)。可以在该步骤使用的来自Synopsys公司的示例性EDA软件产品包括Astro和ICCompiler产品。上述分区技术可被包括在计算或向步骤520提供定时信息的工具或程序中。分析和提取(步骤524):在该步骤,在晶体管层面验证电路功能,这进而准许进行假设分析限定。可以在该步骤使用的来自Synopsys公司的示例性EDA软件产品包括AstroRaiI、PrimeRaiI、Primetime和Star RC/XT产品。上述具有冗余的分区技术还可以步骤524中使用。物理验证(步骤526):在该步骤,执行各种检查功能以确保以下各项的正确性制造、电气问题、光刻问题和电路。可以在该步骤使用的来自Synopsys公司的示例性EDA软件产品包括Hercules产品。分辨率增强(步骤528):该步骤涉及对布局的几何操纵以提高设计的可制造型。可 以在该步骤使用的来自Synopsys公司的示例性EDA软件产品包括Proteus、ProteusAF和PSMGen 产品。掩模数据准备(步骤530):该步骤提供“下线”数据以产生供光刻使用的掩模,以便生产出完成的芯片。可以在该步骤使用的来自Synopsys公司的示例性EDA软件产品包括CATS(R)系列产品。上述具有冗余的分区技术可以有利地在一个或多个计算机程序中实现,该ー个或多个计算机程序在包括耦合的至少ー个可编程处理器的可编程系统上执行,该至少ー个可编程处理器用于从和向数据存储系统、至少ー个输入设备和至少ー个输出设备接收和发送数据和指令。每ー种计算机程序都可以用高级过程或面向对象编程语言,或者在需要时用汇编或机器语言来实现;并且在任何情况下,该语言都可以是经编译或经解释的语言。合适的处理器包括例如通用和专用微处理器以及其它类型的微控制器。一般地,处理器将接收来自只读存储器和/或随机存取存储器的指令和数据。一般地,计算机将包括用于存储数据文件的ー个或多个大容量存储设备;这些设备包括诸如内置硬盘和可移动盘等磁盘、磁光盘和光盘。适于有形地实现计算机程序指令和数据的存储设备包括所有形式的非易失存储器,包括,作为示例,半导体存储设备,诸如EPROM、EEPROM和闪存设备;磁盘,诸如内置硬盘或可移动盘;磁光盘;以及⑶ROM盘。上述各项中的任ー个可由专用集成电路(ASIC)补充或被结合在ASIC中。尽管本文已经參考附图详细描述了本发明的各说明性实施例,但可以理解,本发明不限于这些精确实施例。它们并不是要穷举本发明或将本发明限于所公开的精确形式。由此,许多修改和变体将会是明显的。例如,在执行传播时,可标记任何分叉点。这些分叉点有效地指示扇入锥形的交集。这些分叉点可被认为是现有分区的“邻居”并因此被包括在相同分区中是更有益的。另ー示例是不同的算法实施例或分区分配机制也可产生保持定时路径的分区或允许分区之间的冗余。注意,尽管本文讨论了用于沿着信号路径传播的位码,但可以在其他实施例种使用其他类型的分区分配表示。图6示出了包括从缓冲器622分叉出到缓冲器621和620的分叉点的示例性电路630。注意,如果输出端ロ 600被分配给第一分区(即,0,I ),则缓冲器601、触发器602的Q引脚、缓冲器603、缓冲器604和输入端ロ 605最初可被标记为第一分区的一部分。由于触发器602的Q引脚的分配,D引脚也被优选地选为第一分区。从触发器602的D引脚、缓冲器620、622和623、触发器614的Q引脚(及其时钟引脚)以及缓冲器612和613的反向跟踪可被包括在第一分区中。在该过程期间,分叉点622被记录为第一分区偏好,这导致缓冲器621和触发器610的D引脚也被顺利地添加到第一分区。有利的是,在分叉点处的对拓扑关联的这一考虑能够避免缓冲器622和623在两个分区中冗余地出现,由此最小化重叠。注意,触发器602现在被无条件地分配给第一分区,而触发器614和610可以被分配给第一分区(取决于与该第一分区相关联的当前成本)或第一分区和第二分区两者(未示出)。设计 630中的其他对象(例如,触发器606、缓冲器607和609和AND门608)可被分配给第一分区、第二分区或在第一和第二分区之间共享,这取决于与第一分区相关联的当前成本。因此,本发明的范围旨在由所附权利要求书及其等效物来定义。
权利要求
1.ー种对集成电路设计进行分区以便进行静态定时分析的方法,所述方法包括 访问列出所述设计的对象的至少ー个文件; 使用所述至少ー个文件,确定指示分层结构的所述对象的集合; 群集对应于每一分层结构的端点; 使用分区分配表示来预设端点集群的端点; 从所述端点沿着信号路径使所述分区分配表示反向传播通过所述设计,以确定所述端点的扇入中的对象,所述传播填充分区,所述分区分配表示确保所述分区中的定时路径是完全的; 对每一端点集群重复预设和传播;以及 输出经填充的分区以便进行静态定时分析,其中经填充的分区的至少ー个集合包括冗余对象。
2.如权利要求I所述的方法,其特征在于,所述文件是VHDL文件。
3.如权利要求I所述的方法,其特征在于,所述文件是Verilog文件。
4.如权利要求I所述的方法,其特征在于,还包括 优化所述经填充的分区,所述优化包括基于与每一经填充的分区相关联的成本度量来合并ー组分区。
5.如权利要求4所述的方法,其特征在干,与每ー经填充的分区相关联的所述成本度量确定是否进行合井。
6.如权利要求I所述的方法,其特征在于,群集端点包括过度群集。
7.ー种对集成电路设计进行分区以便进行静态定时分析的方法,所述方法包括 访问列出所述设计的对象的至少ー个文件; 使用所述至少ー个文件,估算全局成本并设置目标成本; 使用分区分配表示来预设细粒度集群的种子端点; 从所述种子端点沿着信号路径使所述分区分配表示反向传播通过所述设计以确定对所述种子端点的扇入,所述传播填充分区,其中传播在与该经填充的分区相关联的成本等于或大于所述目标成本时停止; 对每ー细粒度集群重复预设和传播;以及 输出经填充的分区以便进行静态定时分析,其中经填充的分区的至少ー个集合包括冗余对象。
8.如权利要求7所述的方法,其特征在于,还包括 收集群集偏好,所述群集偏好方便基干与所述经填充的分区中的对象相关联的约束来向所述细粒度集群添加至少ー个种子端点。
9.如权利要求7所述的方法,其特征在于,所述文件是VHDL文件。
10.如权利要求7所述的方法,其特征在于,所述文件是Verilog文件。
11.如权利要求8所述的方法,其特征在于,所述群集偏好包括逻辑分叉点的指示符,在所述逻辑分叉点处引脚具有导向不止一个端点的多个扇出。
12.如权利要求8所述的方法,其特征在于,所述群集偏好包括导线之间的物理耦合的指示符,在所述导线处不同単元之间的两个或更多导线连接导向不止ー个端点。
13.如权利要求7所述的方法,其特征在于,所述成本使用静态设计度量来确定。
14.如权利要求13所述的方法,其特征在于,所述静态设计度量包括単元、引脚、连线、电弧和时钟中的至少ー个。
15.如权利要求7所述的方法,其特征在于,所述成本通过使用至少ー个预定静态度量来估算。
16.如权利要求15所述的方法,其特征在于,使用多个预定静态度量。
17.如权利要求16所述的方法,其特征在于,所述预定静态度量是加权的。
18.—种其上存储计算机可执行指令的计算机可读介质,所述计算机可执行指令用于对集成电路设计进行分区以便进行静态定时分析,所述计算机可执行指令在由计算机执行时执行以下步骤 访问列出所述设计的对象的至少ー个文件; 使用所述至少ー个文件,确定指示分层结构的所述对象的集合; 群集对应于每一分层结构的端点; 使用分区分配表示来预设端点集群的端点; 从所述端点沿着信号路径使所述分区分配表示反向传播通过所述设计,以确定所述端点的扇入中的对象,所述传播填充分区,所述分区分配表示确保所述分区中的定时路径是完全的; 对每一端点集群重复预设和传播;以及 输出经填充的分区以便进行静态定时分析,其中经填充的分区的至少ー个集合包括冗余对象。
19.如权利要求18所述的计算机可读介质,其特征在于,所述文件是VHDL文件。
20.如权利要求18所述的计算机可读介质,其特征在于,所述文件是Verilog文件。
21.如权利要求18所述的计算机可读介质,其特征在于,还包括 优化所述经填充的分区,所述优化包括基于与每一经填充的分区相关联的成本度量来合并ー组分区。
22.如权利要求21所述的计算机可读介质,其特征在于,与每ー经填充的分区相关联的所述成本度量确定是否进行合井。
23.如权利要求18所述的计算机可读介质,其特征在于,群集端点包括过度群集。
24.ー种其上存储计算机可执行指令的计算机可读介质,所述计算机可执行指令用于对集成电路设计进行分区以便进行静态定时分析,所述计算机可执行指令在由计算机执行时执行以下步骤 访问列出所述设计的对象的至少ー个文件; 使用所述至少ー个文件,估算全局成本并设置目标成本; 使用分区分配表示来预设细粒度集群的种子端点; 从所述种子端点沿着信号路径使所述分区分配表示反向传播通过所述设计以确定对所述种子端点的扇入,所述传播填充分区,其中传播在与该经填充的分区相关联的成本等于或大于所述目标成本时停止; 对每ー细粒度集群重复预设和传播;以及 输出经填充的分区以便进行静态定时分析,其中经填充的分区的至少ー个集合包括冗余对象。
25.如权利要求24所述的计算机可读介质,其特征在于,还包括 收集群集偏好,所述群集偏好方便基干与所述经填充的分区中的对象相关联的约束来向所述细粒度集群添加至少ー个种子端点。
26.如权利要求24所述的计算机可读介质,其特征在于,所述文件是VHDL文件。
27.如权利要求24所述的计算机可读介质,其特征在于,所述文件是Verilog文件。
28.如权利要求25所述的计算机可读介质,其特征在于,所述群集偏好包括逻辑分叉点的指示符,在所述逻辑分叉点处引脚具有导向不止一个端点的多个扇出。
29.如权利要求25所述的计算机可读介质,其特征在于,所述群集偏好包括导线之间的物理耦合的指示符,在所述导线处不同単元之间的两个或更多导线连接导向不止ー个端点。
30.如权利要求24所述的计算机可读介质,其特征在于,所述成本使用静态设计度量来确定。
31.如权利要求30所述的计算机可读介质,其特征在于,所述静态设计度量包括単元、弓丨脚、连线、电弧和时钟中的至少ー个。
32.如权利要求24所述的计算机可读介质,其特征在干,所述成本通过使用至少ー个预定静态度量来估算。
33.如权利要求32所述的计算机可读介质,其特征在于,使用多个预定静态度量。
34.如权利要求33所述的计算机可读介质,其特征在于,所述预定静态度量是加权的。
全文摘要
对设计进行分区允许在多个较少需求且更可用的硬件资源上并行地执行STA。因此,能够显著地缩短STA的运行时间。值得注意的是,分区可包括冗余。即,各个分区被允许共享对象以保持定时路径完全性和设计结构完整性。由于该冗余,这些分区可考虑STA专门施加的许多约束。一旦这些分区被填充,就可并行地对这些分区执行分析以生成相同的定时结果,就像该设计完全作为单个单元进行分析那样。因此,能够在不损害结果的准确性和质量的情况下优化STA的性能。
文档编号G06F17/50GK102725761SQ201080062634
公开日2012年10月10日 申请日期2010年11月29日 优先权日2009年11月30日
发明者B·克勒金, Q·吴 申请人:辛奥普希斯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1