CN112100971A - 构建用于集成电路的分层时钟树的方法 - Google Patents
构建用于集成电路的分层时钟树的方法 Download PDFInfo
- Publication number
- CN112100971A CN112100971A CN202010534261.7A CN202010534261A CN112100971A CN 112100971 A CN112100971 A CN 112100971A CN 202010534261 A CN202010534261 A CN 202010534261A CN 112100971 A CN112100971 A CN 112100971A
- Authority
- CN
- China
- Prior art keywords
- clock
- distribution network
- layer
- timing
- level
- 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.)
- Pending
Links
Images
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/396—Clock trees
-
- 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
-
- 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/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2117/00—Details relating to the type or aim of the circuit design
- G06F2117/12—Sizing, e.g. of transistors or gates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/06—Power analysis or power optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
公开了一种构建用于集成电路的分层时钟树的方法。构建用于集成电路的分层时钟树的方法可包括:在第一层上构建时钟分配网络;将时钟分配网络推到第二层;在第二层上的分区中实现分区时钟树;以及计算时钟分配网络和第二层上的分区时钟树的组合时序。实现分区时钟树的步骤可包括:在第二层上的分区中构建分区时钟树;计算分区时钟树的测试时序;基于时钟分配网络的时序和分区时钟树的测试时序来计算分区时钟树的目标时序约束;以及基于目标约束来调整分区时钟树中的一个或多个的时序。
Description
本申请要求于2019年6月18日提交的标题为“用于针对邻接设计(AbuttedDesign)的分层时钟实现的方法和设备”的第62/863,259号美国临时专利申请以及于2019年10月28日提交的第16/666,389号美国专利申请的优先权和权益,所述申请通过引用被包含。
技术领域
本公开总体上涉及用于集成电路的时钟树,更具体地,涉及分层时钟树实现。
背景技术
分层设计在超大规模集成(very large scale integration,VLSI)中被广泛用于设计高度复杂的集成电路(IC)。分层设计总体上涉及将复杂设计分解成可更容易单独设计的更小的物理块,然后将块组合成更大的总体设计。分层设计中的块通常以基于通道的设计或邻接设计(abutted design)来布置。在基于通道的设计中,块由通道分开,时钟和其他信号通过所述通道分配到块。在邻接或无通道设计中,块彼此相邻放置,块之间没有空间。
时钟树用于在整个集成电路中分配时钟信号。时钟树通过寻求使延时和偏差最小化的处理来设计,所述延时是从根时钟到使用点的延迟,所述偏差是在集成电路上的不同点处的时钟转换的到达时间之间的差。在设计处理期间,时钟树的许多参数通常通过多次迭代进行调整以满足时钟树的时序要求和约束。当针对时序要求和约束的目标已经满足时,该设计被称为实现了时序收敛(timing closure)。VLSI设计在工业标准电子设计自动化(EDA)工具上执行,该工业标准EDA工具通常具有用于由设计者执行的许多常规任务的自动化工作流。然而,工业标准EDA工具不具有用于高效分层时钟实现(特别是用于邻接设计)的方法或工作流。
发明内容
本公开的目的是提供节省设计时间和/或资源并且减少功耗和/或设计面积的分层时钟实现。
一种构建用于集成电路的分层时钟树的方法可包括:在第一层上构建时钟分配网络;将时钟分配网络推到第二层;在第二层上的分区中实现分区时钟树;以及计算时钟分配网络和第二层上的分区时钟树的组合时序。实现分区时钟树的步骤可包括:在第二层上的分区中构建分区时钟树;计算分区时钟树的测试时序;基于时钟分配网络的时序和分区时钟树的测试时序来计算分区时钟树的目标时序约束;以及基于目标约束来调整分区时钟树中的一个或多个的时序。计算时钟分配网络和第二层上的分区时钟树的组合时序的步骤可包括合并分区时钟树。所述方法还可包括:调整第二层上的分区时钟树中的一个或多个的时序。第二层上的分区时钟树中的一个或多个的时序可通过工程变更命令(ECO)来调整。分区时钟树中的一个或多个的时序可通过调整第二层上的分区时钟树中的一个或多个的一个或多个目标约束来调整。所述方法还可包括:确定通过调整分区时钟树中的一个或多个的时序和/或调整时钟树分配网络而不满足时序目标。所述方法还可包括:并行地平衡时钟分配网络和平衡所述一个或多个分区时钟树。所述方法还可包括:将时钟分配网络推到第三层;以及在第三层上的分区中实现分区时钟树。时钟分配网络可被推到第二层上的分区中的一个或多个中。第二层可包括块层。第二层可比第一层低。
一种构建用于集成电路的分层时钟树的方法可包括:在第一层构建时钟分配网络;将时钟分配网络推到第二层处的分区;计算第二层处的分区的测试时序;计算时钟分配网络和第二层的分区的测试时序的组合时序;基于时钟分配网络和第二层处的分区的测试时序的组合时序来计算分区层目标约束;以及基于目标约束计算分区层处的修改时序。所述方法还可包括:合并分区层处的分区;计算时钟分配网络和第二层处的分区的修改时序的修改组合时序;以及检查修改组合时序是否满足设计目标。所述方法还可包括:通过调整第二层处的分区的修改时序来平衡分层时钟树。第二层处的时序可通过工程变更命令(ECO)来调整。第二层的时序可通过调整第二层处的目标约束来调整。时序可包括延时。时序可包括偏差。分区可包括邻接块。第二层可包括基于通道的块。分区可包括多实例化模块(MIM)。时钟分配网络与第二层上的分区之间的依赖可被解耦。所述方法还可包括:并行地平衡时钟分配网络和第二层处的分区。
一种构建用于集成电路的时钟树的方法可包括:构建顶层时钟分配网络;计算到时钟分配网络的端点的分配延迟;将顶层时钟分配网络下推到块层;在端点处的块中构建时钟树;计算端点处的块中的时钟树的块层***延迟;将分配延迟与块层***延迟进行组合以计算来自顶层时钟分配网络的根的时钟树***延迟;基于来自顶层时钟分配网络的根的时钟树***延迟来计算块的延迟目标约束;基于延迟目标约束来重新计算块层***延迟;合并块层处的时钟树;以及重新计算来自顶层时钟分配网络的根的时钟树***延迟。所述方法还可包括:检查重新计算的来自顶层时钟分配网络的根的时钟树***延迟是否满足设计目标。
所述方法还可包括:确定来自顶层时钟分配网络的根的***延迟不满足设计目标;以及使用工程变更命令(ECO)来变更时钟树上的时钟单元。所述方法还可包括:确定来自顶层时钟分配网络的根的***延迟不满足设计目标;以及重新计算块的延迟目标约束。将顶层时钟分配网络下推到块层的步骤可包括为子块创建ECO文件。将顶层时钟分配网络下推到块层的步骤可包括为子块创建配置文件。所述方法还可包括:确定将子块版面规划变更为将顶层时钟分配网络下推到块层;以及在块层修改顶层时钟分配网络结构以保存到时钟分配网络的端点的分配延迟。
根据公开,提供了一种用于实现分层时钟分配网络的方法。该网络支持更快的时序收敛、不同层处的并行平衡、更严格的时钟时序控制等。因此,提供了一种节省设计时间和/或资源并且减少功耗和/或设计面积的实现。
附图说明
贯穿附图,出于说明性目的,附图不必按比例绘制,并且相似结构或功能的元件通常由相同的参考标号来表示。附图仅意在便于在此描述的各种实施例的描述。附图不描述在此公开的教导的每个方面,并且不限制权利要求的范围。附图与说明书一起示出本公开的示例实施例,并且与描述一起用于解释本公开的原理。
图1是示出根据本公开的用于构建用于集成电路的分层时钟树的方法的实施例的流程图。
图2是示出根据本公开的与用于构建用于集成电路的分层时钟树的方法的实施例一起使用的布置在集成电路上的块的平面图。
图3是示出根据本公开的根据用于构建用于集成电路的分层时钟树的方法的实施例构建的时钟分配网络的实施例的平面图。
图4是示出根据本公开的根据用于构建用于集成电路的分层时钟树的方法的实施例构建的推到另一层的时钟分配网络和分区时钟树的实施例的平面图。
图5A和图5B一起形成示出根据本公开的用于构建用于集成电路的分层时钟树的方法的示例实施例的流程图。
图6是示出根据本公开的根据用于构建用于集成电路的分层时钟树的方法构建的时钟分配网络的实施例的平面图。
图7是示出根据本公开的根据用于构建用于集成电路的分层时钟树的方法而添加到图6的时钟分配网络以计算时钟时序的虚拟负载的平面图。
图8是示出根据本公开的根据用于构建用于集成电路的分层时钟树的方法而添加到图6的时钟分配网络的邻接时钟端子的平面图。
图9是示出根据本公开的根据用于构建用于集成电路的分层时钟树的方法的图6的放大部分中的下推时钟单元和时钟脊段(clock spine segment)的平面图。
图10示出根据本公开的计算***的实施例。
具体实施方式
在分层设计中,时钟树可被划分成顶层(top-level)或全局部分以及块层或局部部分,顶层或全局部分将时钟信号发送到集成电路的不同块或部分,块层(block-level)或局部部分将时钟信号传播到使用时钟信号的各个顺序单元。为了设计基于通道设计的时钟分层,通常可使用时钟树合成(CTS)为每个块设计块层时钟树。一旦块层时钟树就绪,设计者可基于每个块和/或子块的时钟树***延迟来通常在块之间的通道中创建顶层时钟分配网络。因为顶层时钟树布局、布线和平衡工作可能必须等到所有块和/或子块的时钟树完成,所以这个过程可导致较慢的时序收敛。此外,与邻接设计相比,基于通道的版面规划(floorplan)在空间(芯片面积)和功耗方面通常效率较低。
虽然邻接分层设计通常比基于通道的设计更有效,但是为邻接设计对时钟分配网络进行设计可能非常具有挑战性。例如,可需要在块层对顶层时钟分配网络进行规划和/或设计,这可需要将时钟分配网络与可不提供整体时钟分配网络的良好视图的单独块拼接在一起。此外,由于不同的块和/或子块的大小、和/或时钟叶单元的数量的差异,块或子块中的时钟树的***延迟可变化。此外,即使对于相同的块,由于不同的时钟叶单元布局,设计者也可针对不同的运行而看到不同的时钟树***延迟。这可导致需要许多设计迭代以平衡时钟分配网络和块层树,从而增加实现时序收敛所需的时间。因此,对于顶层时钟树,CTS对于邻接设计可能不起作用。此外,工业标准工具不具有分层向下推时钟树以促进更快的时序收敛的能力。因此,仅可使用工业标准工具来创建基于通道的设计,这可能导致增加的芯片面积和更大的功耗。
大多高频邻接设计通常使用可被实现为由许多时钟驱动器驱动的金属迹线的网格的时钟网格结构。时钟网格结构通常可实现更好的偏差和延时,但是它们通常也可消耗更多的功率和/或芯片面积。时钟网格设计中的功耗可由网格结构的额外电容以及被推向叶单元的可导致较低效的时钟门控的时钟门来驱动。此外,时钟网格设计和工作流可比时钟树合成更复杂和耗时。例如,时钟网格设计可涉及大量的SPICE仿真、时序反标和翻转时间。
图1示出根据本公开的用于构建用于集成电路的分层时钟树的方法的实施例。该方法开始于具有如图2中所示的分区层版面规划的步骤100,图2示出可布置在集成电路(IC)113或IC 113的部分上的各种物理分区。在图2的实施例中,分区112A、112B、112C和112D以邻接设计进行布置,而分区112E、112F、112G和112H以基于通道的设计进行布置。分区可被实现为例如块、子块、模块、区块等。
在图1的步骤102,如图3中所示,时钟分配网络116可被构建在例如可在分区层以上的另一层上。时钟分配网络116可将时钟信号从时钟源或根118分配到端点120A、120B、120C、120D、120E、120F、120G和120H(可被统称为120)。为了简化说明,仅示出时钟分配网络116的布线,但是它也可包括位于网络中的适当点处的缓冲器、门和任何其他时钟单元。
在图1的步骤104,在这种情况下,时钟分配网络116然后可被下推到分区层。在具有邻接分区112A、112B、112C和112D的版面规划的部分中,时钟分配网络116可被推到邻接分区中。在具有基于通道的分区112E、112F、112G和112H的版面规划的部分中,时钟分配网络116主要被推到分区之间的通道中,其中,时钟分配网络116具有位于分区的边缘处的端点。然而,在一些情况下,例如针对分区112F和112H,时钟分配网络116的一些端点和段可被下推到分区中。
在图1的步骤106,如图4中所示,分区时钟树122A-122H可在分区112A-112H内实现。然而,本发明不限于此,可在一个或多个分区中的每个内实现一个或多个分区时钟树。时钟分配网络116的端点120可用作分区时钟树122A-122H(可被统称为122)的根。在一些实施例中,分区时钟树122可通过构建分区时钟树并且计算分区时钟树的时钟时序来实现。在其他实施例中,分区时钟树122可通过在分区层计算测试时序和约束并且通过根据如下面更详细地描述的本公开的原理的各种附加技术来实现。为了简化说明,仅示出分区时钟树122的布线,但是它们也可包括位于树中的适当点处的缓冲器、门和任何其他时钟单元。
因此,可从时钟根118开始并且贯穿时钟分配网络116、端点120和分区时钟树122来构建分层时钟树。
在图1的步骤108,在已经如上所述构建了分层时钟树之后,时钟分配网络116的时序可与分区时钟树122的时序进行组合,以计算在时钟根118处开始的整体分层时钟树时序。在本文中,时序可指代任何时钟相关的时序参数(诸如,以延时(或***延迟)和偏差为例)。此外,任何时序参数可在包括任何或所有相关的工艺、电压和温度(PVT)角的一个或多个角处被评估。在图1的步骤110,整体分层时钟树时序随后可被检查以查看是否满足设计目标。如果不满足,则可通过返回到步骤102、104和106中的任一步骤来对时钟分配层和/或分区层进行调整。如果整体分层时钟树时序满足设计目标,则该方法可在步骤111结束。包括布线、缓冲器和/或时钟单元的整体分层时钟树的全部或任何部分随后可例如通过将它们锁定而被保存以防止EDA工具在分区的实现期间修改整体分层时钟树的全部或任何部分。
根据本公开的原理,以上针对图1至图4描述的方法和结构可实现广泛的益处、应用以及附加特征和技术。例如,时钟树设计者可被提供有可在时钟分配和实现中允许更严格的控制和/或提升的灵活性的时钟树规划的全芯片和/或多层视图。作为另一示例,可在邻接设计中实现非网格分层时钟树。上述方法和结构也可使得设计者能够独立于所使用的EDA工具而以可导致更快的时序收敛的方式手动地实现时钟分配网络。它们也可与邻接设计和基于通道的设计一起工作,并且适应多实例分区(诸如,多实例化模块(MIM)和多实例化块(MIB))。上述方法和结构也可对时钟分配网络与分区时钟树之间的依赖进行解耦,从而实现附加的新技术。例如,根据实现细节和具体情况,在层之间被解耦的依赖情况下,时钟分配网络可不需要平衡,并且平衡可通过经由分区层处的约束的调整和/或预算来实现。这进而可导致最小化或降低时钟分配网络处的延时。作为另一示例,例如,一旦完成延时预算,对时钟分配网络与分区层时钟树之间的依赖进行解耦可使得平衡工作能够在时钟分配网络和分区层时钟树上并行执行。以上描述的益处、应用、特征和技术中的任何或全部可导致个体组件和/或整体分层时钟树的更快时序收敛以及较低功耗和较小设计面积。
本专利公开的发明原理不限于图1至图4中示出的细节。例如,时钟分配网络116和分区时钟树122被示出具有如可利用时钟树合成(CTS)和利用单个时钟根来实现的简单树结构。然而,可使用多个时钟根和树以及其他拓扑和布置(诸如,多源CTS(MSCTS)、网格结构或它们的任何混合组合)。针对图1至图4示出的实施例可被实现为整个集成电路(IC)、或者仅IC的部分。它也可被实现为更大的分层时钟树的部分。此外,可实现其中时钟分配网络116的全部或部分可被推超过一个层的其他实施例。
图5A、图5B至图9示出根据本公开的用于构建用于集成电路的分层时钟树的方法的更详细的示例实施例。出于说明的目的,在全芯片设计的上下文中描述此实施例,其中,时钟分配网络可设计在顶层并且分区层可具有邻接块。然而,本公开的原理不限于这些或任何其他示例实施细节。
作为介绍性概述,并且如以下更详细描述的那样,设计者可以以具有在物理设计期间已经布局的邻接块的版面规划开始。时钟设计者可规划和构建顶层时钟分配网络以将时钟信号从顶层根时钟分配到各个块。可计算或测量从根时钟到时钟分配网络在每个块处的端点的***延迟。一旦顶层时钟分配网络满足诸如延时和/或偏差的顶层时钟时序目标,顶层时钟分配网络就可被下推到块层处的块和/或子块中。由于用于不同块和/或子块的块层时钟时序可不同,因此可使用例如时钟树合成(CTS)针对每个块和/或子块计算诸如延时和/或偏差的测试时钟时序。使用***延迟作为示例,每个块或子块的测试***延迟可被添加到顶层时钟分配网络到该块处的端点的***延迟,从而确定在顶层时钟根处开始的每个块或子块的总测试延时。这可对任何或所有块重复,以确定具有最长总测试延时的块或子块。可从最长总测试延时减去每个其他块或子块的总测试延时,以计算可用作每个其他块或子块的目标延时约束的结果。可使用目标延时约束针对每个块或子块再次运行CTS,以计算每个其他块或子块的新的或修改的延时。然后可合并块和/或子块以创建整个分层时钟树。然后可将每个块或子块的重新计算的延时添加到顶层时钟分配网络到该块处的端点的***延迟,从而确定每个块或子块的新的或修改的总延时。如果新的或修改的总延时满足设计目标,则分层时钟树被认为是平衡的。如果不满足,则可通过工程变更命令(ECO)和重新合并块,或者通过调整用于块或子块中的一个或多个的约束并且重新运行CTS来调整块层时钟时序。如果通过ECO或调整约束没有平衡分层时钟树,则可重新规划和/或重新构建顶层时钟分配网络,并且可重复测试时序处理。
参照图5A和5B,该方法可在步骤123开始,其中,设计者可从具有在物理设计处理的布局阶段期间已经布局的块的版面规划开始。在步骤124,设计者可规划顶层时钟分配网络,该顶层时钟分配网络可包括将源时钟信号分配到所有块所需的所有结构。图6示出示例性块布局。在这个示例中,块Z0和Y0是单实例块,而块A0和A1、C0和C1以及B0-B3是多实例化块(MIB)的集合。作为示例,所有MIB可具有利用在每个块中的可被称为CTS根缓冲器的单端点缓冲器处开始的CTS来实现的块层时钟树。同样作为示例,块Z0和Y0可使用多源CTS(MSCTS),其中,每个块中的四个端点缓冲器中的每个端点缓冲器可以是用于所述块中的MSCTS的多个末梢点中的一个末梢点。位于块和/或子块的***周围的精细结构164可以是可被布局在每个块或子块的剩余区域中的任何标准单元之前的宏单元。宏单元可被首先布局,因为它们可具有比标准单元更高的规范。
虽然该步骤可自动化,但是在本实施例中,设计者可手动地规划和构建顶层时钟分配网络,这可独立于用于设计的EDA工具来完成并且这可向设计者提供分层时钟树的全芯片视图。这可减少设计迭代的次数并且导致更快的时序收敛。
在步骤126,设计者可例如基于可指明时钟分配网络的拓扑的配置文件来构建顶层时钟分配网络。在设计处理中的这个点上,因为布线可仅是拓扑的并且到缓冲器端子的布线可能未完成,所以时钟缓冲器可被布局在非法位置。
字端子可用于表示包括物理连接的物理位置和/或形状的物理连接。字端口可用于表示逻辑连接。根据上下文,字引脚可用于可互换地表示端子或端口。
图6示出了时钟分配网络160的布局,该时钟分配网络160可在时钟根162处开始,并且可具有分支到由不是设计的一部分的圆圈168A至168R指示的端点的脊。为了简化说明,仅示出时钟分配网络160的布线,但是它还可包括位于网络中的适当点处的缓冲器、门和任何其他时钟单元。
在步骤128,如图7中所示,可在每个端点处添加单个虚设触发器或其他顺序逻辑负载170A、170B等(可统称为170),以使一个或多个EDA工具能够计算从时钟根162到每个端点的***延迟。可针对所有相关的工艺、电压和温度(PVT)角计算***延迟,以在每个PVT角处寻找到每个端点的最大***延迟。可保存针对每个子块的这些计算的延时值以便在步骤140中使用,针对每个子块的这些计算的延时值可在步骤140中用于计算每个子块的总延时。为了简单起见,已经从图7省略了精细结构164。
在步骤130,包括布线和时钟缓冲器的顶层时钟分配网络可被下推到包括可被正确处理的多实例化块的块和子块。可根据需要修改顶层和块层连接,并且如图8中所示,可在时钟分配网络的布线在邻接块之间经过的每个位置创建包括馈通(feedthrough)的成对的邻接块端子172A、172B等(可被统称为172)。为了简单起见,已经从图8省略了精细结构164。在下推期间,可为每个子块创建子块配置文件。也可为每个子块创建工程变更命令(ECO)文件。对于多实例化块,可仅为可例如由顶层版面规划设计者确定的主实例创建配置文件和/或ECO文件。这可捕获缓冲器被布局的位置以及布线的拓扑。可生成布局和布线阻塞以阻塞布局缓冲器的合法位置。ECO文件和配置文件可提供两种单独或互补的方法来实现下推。此外,顶层和/或块层配置文件可为设计者提供用于构建时钟分配网络和/或分层时钟树的独特方式。
在步骤132,如果下推已经导致针对可需要变更下推时钟分配网络的任何块或子块的版面规划变更,则该方法可进行到步骤134。此外,如果任何子块可需要变更下推时钟分配网络以满足新的顶层和/或块层延时和/或偏差目标,则该方法可进行到步骤134。否则,该方法可进行到步骤136。
在步骤134,可修改包括布线和/或单元的下推时钟分配网络,以满足新的延时和/或偏差目标。
在步骤136,可基于由下推生成的组合配置文件来开始构建整个分层时钟树。对于每个块,在重新创建所述块中的顶层时钟分配网络的部分的布线拓扑和缓冲器布局的情况下,可在块层构建顶层时钟分配网络的所述部分。根据实现细节,重新创建可大体上准确。在这个步骤,也可完成到顶层时钟分配网络中的缓冲器的端子的布线。时钟门和触发器可利用诸如时钟门合并和拆分的技术使用每个分配端点来重新排序。图9示出针对块Y0的下推时钟单元和时钟脊段160A至160G可看起来像什么的示例实施例。作为示例,时钟缓冲器单元中的一些被指示为161A和161B。
在步骤138,可构建每个块或子块的时钟树,并且可从时钟分配网络的端点开始计算每个块或子块的***延迟。这可被描述为计算块层测试时序。在这个示例实施例中,可使用时钟树合成(CTS),但是也可使用任何其他合适的技术计算或测量每个块或子块的***延迟。作为示例,时钟网格结构和伴随的时序分析可用于块层时钟树中的一些或全部。
在步骤140,可针对每个块或子块计算从顶层时钟根开始的总延时或组合延时。这可通过将在步骤128中计算的从时钟根162到每个端点的***延迟与在步骤138中计算的对应块或子块的***延迟进行求和来实现。然后可识别所有块或子块中的具有最长的总***延迟的块或子块。对于所有其他块,可从最长的总***延迟减去每个块或子块的***延迟,并且相减的结果可用作该块的时钟延时目标。因此,可从顶层时钟分配网络和块层CTS测试结果得到块层CTS目标约束。每个块的时钟延时目标可用作步骤142的时钟***延迟约束。
在步骤142,可使用在步骤140中计算的***延迟约束来重新计算每个块或子块的***延迟。
在一些实施例中,例如,如图1的步骤106中所公开的那样,步骤138至步骤142可统称为实现分区时钟树的示例。
在图5B的步骤144,块和/或子块可被合并以形成完整的自上而下的分层时钟树结构以及具有每个块或子块的***延迟的合并的数据库,其中,每个块或子块的***延迟已经在步骤142中使用来自步骤140的***延迟约束被重新计算。然后可使用来自合并的数据库的延时数据针对每个块或子块重新计算从顶层时钟根开始的总延时。可在包括任何或所有相关工艺、电压和温度(PVT)角的一个或多个角处评估延时。
在步骤146,可针对偏差和/或延时的设计目标来检查每个块或子块的重新计算的延时。如果满足目标,则该方法可在步骤148终止。包括布线、缓冲器和/或时钟单元的整体分层时钟树的全部或任何部分随后可例如通过将它们锁定而被保存以防止EDA工具在分区的实现期间修改整体分层时钟树的全部或任何部分。
如果在步骤146未满足设计目标,则该方法可进行到步骤150,其中,在步骤150中,可使用一个或多个ECO来对一个或多个块或子块进行微小变更。然后可在步骤144重新合并块和/或子块,并且在步骤146重新检查块和/或子块。该方法可通过步骤150、144和146的循环进行一次或多次尝试以实现时钟时序目标。
在步骤150,如果确定利用ECO而不能满足偏差和/或延时目标,则该方法可进行到步骤152,其中,在步骤152中,可调整块和/或子块中的一个或多个的***延迟约束中的一个或多个。然后,该方法可返回到步骤142,其中,在步骤142中,可使用来自步骤152的一个或多个调整的***延迟约束来重新计算一个或多个块或子块的***延迟。该方法可通过步骤152、142、144、146和150的循环进行一次或多次尝试以实现时钟时序目标。该方法也可在步骤150的内部块层循环和步骤152的外部块层循环之间来回进行。
在步骤152,如果确定通过调整块和/或子块中的一个或多个的***延迟约束不能满足偏差和/或延时目标,则该方法可进行到步骤126,其中,在步骤126中,贯穿本公开还可在一些实施例中包括自动化处理的设计者可重新规划和/或重新构建顶层时钟分配树,但是这次受益于通过图5A和图5B的方法的主要流程获得的知识。
当该方法通过图5A和图5B的步骤进行时,设计者可获得对整个分层时钟树的逐渐更好的芯片层或多层视图和理解,这利用常规EDA工具是无法得到的。在该方法到达步骤146时,设计者不仅可具有对整个分层时钟树的时序行为的深刻理解,而且设计者也可具有ECO和基于约束的调整处理的益处,这可使设计者能够在块层快速调整时钟时序,并且可导致更快的时序收敛以及更低的总功耗和更小的设计面积。即使设计者返回到步骤126以重新规划和/或重新构建顶层时钟分配树,设计者通常也可以能够快速对时钟分配树进行调整,这导致在块层处需要很少或不需要调整的情况下满足时序设计目标。此外,顶层时钟分配树与块层时钟树之间的依赖的解耦可使得顶层和块层平衡工作能够并行地进行。此外,因为设计者可以能够在块层处使用ECO和/或预算/调整来平衡整个分层时钟树,所以在一些实施例和/或情况中,顶层时钟分配树可不需要任何平衡,这可减少或最小化顶层延时。
不管通过图5A和图5B的方法所采取的路径如何,一旦在步骤146满足时钟时序目标,则该方法可在步骤148终止。包括布线、缓冲器和/或时钟单元的整体分层时钟树的全部或任何部分随后可例如通过将它们锁定而被保存以防止EDA工具在分区的实现期间修改整体分层时钟树的全部或任何部分。
参照图6,位于块和/或子块的***周围的精细结构164可以是可被布局在每个块或子块的剩余区域中的任何标准单元之前的宏单元。宏单元可被首先布局,因为它们可比标准单元具有更高的规范。在一些实施例中,避免将用于时钟分配网络的时钟单元(诸如,缓冲器、门等)布局在由存储器单元占据的位置中可能是有益的或必要的。然而,即使时钟单元内的组件和布线可被布局和布线在集成电路的较低层中,也可通过集成电路的较高层来布线用于时钟分配网络的单元之间的布线的大部分。因为在较高层处的布线可具有较厚的导线和导线之间的较大间隔,所以这可降低布线的电阻、电容和/或其他潜在的不利特性。
在一些附加实施例中,可从下向上构建分层时钟树。利用这个方法,顶层时钟设计者可将包括所有时钟单元位置和布线的整个分层时钟树结构转换成每个块层。时钟端口可被对齐,并且时钟延时可通过将来自每个块或子块的***延迟进行相加来计算。这可例如通过手动计算和/或脚本来实现。在其他附加实施例中,缓冲器可基于可例如由查找表或其他源提供的例如关于每单位长度的时序的信息、金属信息等自动地布局和/或调整大小。
除了以上提到的那些之外,并且根据实现细节和情况,本公开的原理可提供下面的益处和/或特征中的任何或全部:整个设计的更快的时序收敛,特别是在MIM和非MIM块之间的接口处;针对整个分层时钟树设计的简易延迟和偏差控制;为了更低的功率、低延时和偏差的整体更好的时钟树;对集成电路技术的独立性;支持任何数量的块和/或子块;支持包括直线版面规划形状和邻接子块的任何版面规划;支持用于时钟网的任何用户指定的非默认布线规则;支持任何常规标准单元时钟驱动器或定制时钟单元;支持多个时钟;支持包括一次下推一个或多个层的多层的层次结构;支持邻接设计,与顶层平衡工作可必须等到所有子块完成的非邻接设计相比,邻接设计可节省项目执行时间和设计面积;支持用于子块的CTS,与时钟网格相比,CTS可节省设计时间和/或资源并且减少功耗和/或设计面积;减少下线结束时间;和/或时钟时序的更严格控制以及时钟分配和实现的灵活性。在一些实施例中,本公开的一些原理可提供自上而下的分层时钟平衡和自下而上的时钟网络调整。
图10示出根据本公开的计算***的实施例。图10的***300可用于实现本公开中描述的方法和/或设备中的任何或全部。***300可包括中央处理器(CPU)302、存储器304、存储装置306、用户接口308、网络接口310和电源312。时钟树构建逻辑307可包括用于实现本公开中描述的特征中的任何的逻辑,特征包括构建时钟分配网络、将网络推到不同层、实现分区时钟树、制作ECO、计算时序等。在不同的实施例中,***可省略这些组件中的任何组件,或者可包括任何组件以及用于实现本公开中描述的任何方法和/或设备的任何其他类型组件的重复品或任何附加数量的任何组件以及用于实现本公开中描述的任何方法和/或设备的任何其他类型组件。
CPU 302可包括任何数量的核、高速缓存、总线和/或互连接口和/或控制器。存储器304可包括动态RAM和/或静态RAM、非易失性存储器(例如,闪存)等的任何布置。存储装置306可包括硬盘驱动器(HDD)、固态驱动器(SSD)和/或任何其他类型的数据存储装置或它们的任何组合。用户接口308可包括任何类型的人机接口装置(诸如,键盘、鼠标、监视器、视频捕获或传输装置、麦克风、扬声器、触摸屏等)以及此类装置的任何虚拟或远程版本。网络接口310可包括一个或多个适配器或其他设备,以通过以太网、Wi-Fi、蓝牙或任何其他计算机网络布置进行通信,以使组件能够通过物理和/或逻辑网络(诸如,内部网、互联网、局域网、广域网等)进行通信。电源312可包括电池和/或能够从AC或DC电源接收电力并将它转换成适合于***300的组件使用的任何形式的电源。
***300的任何或所有组件可通过***总线301互连,这可统称为包括以下项的各种接口:电源总线、地址和数据总线、诸如串行AT附件(SATA)的高速互连、***组件互连(PCI)、***组件快速互连(PCI-e)、***管理总线(SMB)、以及本地位于一个位置处和/或分布在不同位置之间的可使组件能够一起工作的任何其他类型的接口。
***300也可包括被布置为使得***300的各种组件能够一起工作以实现本公开中描述的所有方法和/或设备中的任何一种的各种芯片组、接口、适配器、胶连逻辑、嵌入式控制器(诸如,可编程或不可编程逻辑装置或阵列)、专用集成电路(ASIC)、嵌入式计算机、智能卡等。***300的任何组件可以以硬件、软件、固件或它们的任何组合来实现。在一些实施例中,任何或所有组件可以以虚拟化形式和/或以具有例如数据中心内或分布在多个数据中心中的灵活资源配置的基于云的实施方式来实现。
结合在此公开的实施例描述的方法或算法和功能的块或步骤可直接以包括在***300中的硬件、由处理器执行的软件模块、或两者的组合来实施。如果以软件实现,则功能可作为一个或多个指令或代码存储在有形的、非暂时性计算机可读介质上或在有形的、非暂时性计算机可读介质上传输。软件模块可存在于随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD ROM或任何其他形式的存储介质中。
除非从上下文另外清楚,否则在本公开和权利要求中使用术语(诸如,“第一”和“第二”)可仅用于区分它们所修饰的事物的目的,并且可不指示任何空间或时间顺序。
上述各种细节和实施例可组合以产生根据本专利公开的发明原理的附加实施例。由于在不脱离发明构思的情况下,本专利公开的发明原理可在布置和细节上进行修改,这样的改变和修改被认为落入权利要求的范围内。
Claims (32)
1.一种构建用于集成电路的分层时钟树的方法,所述方法包括:
在第一层上构建时钟分配网络;
将时钟分配网络推到第二层;
在第二层上的分区中实现分区时钟树;以及
计算时钟分配网络和第二层上的分区时钟树的组合时序。
2.根据权利要求1所述的方法,其中,实现分区时钟树的步骤包括:
在第二层上的分区中构建分区时钟树;
计算分区时钟树的测试时序;
基于时钟分配网络的时序和分区时钟树的测试时序来计算分区时钟树的目标时序约束;以及
基于目标时序约束来调整分区时钟树中的一个或多个的时序。
3.根据权利要求1所述的方法,其中,计算时钟分配网络和第二层上的分区时钟树的组合时序的步骤包括合并分区时钟树。
4.根据权利要求1至权利要求3中的任一项所述的方法,还包括:调整第二层上的分区时钟树中的一个或多个的时序。
5.根据权利要求4所述的方法,其中,第二层上的分区时钟树中的一个或多个的时序通过工程变更命令来调整。
6.根据权利要求4所述的方法,其中,分区时钟树中的一个或多个的时序通过调整第二层上的分区时钟树中的一个或多个的一个或多个目标约束来调整。
7.根据权利要求4所述的方法,还包括:
确定通过调整分区时钟树中的一个或多个的时序而不满足时序目标;以及
调整时钟分配网络。
8.根据权利要求1至权利要求3中的任一项所述的方法,还包括:与平衡分区时钟树中的一个或多个并行地平衡时钟分配网络。
9.根据权利要求1至权利要求3中的任一项所述的方法,还包括:
将时钟分配网络推到第三层;以及
在第三层上的分区中实现分区时钟树。
10.根据权利要求1所述的方法,其中,时钟分配网络被推到第二层上的分区中的一个或多个中。
11.根据权利要求1所述的方法,其中,第二层包括块层。
12.根据权利要求1所述的方法,其中,第二层比第一层低。
13.一种构建用于集成电路的分层时钟树的方法,所述方法包括:
在第一层构建时钟分配网络;
将时钟分配网络推到第二层处的分区;
计算第二层处的分区的测试时序;
计算时钟分配网络的时序和第二层处的分区的测试时序的组合时序;
基于时钟分配网络和第二层处的分区的测试时序的组合时序来计算分区层目标约束;以及
基于分区层目标约束计算分区层处的修改时序。
14.根据权利要求13所述的方法,还包括:
合并分区层处的分区;
计算时钟分配网络的时序和第二层处的分区的修改时序的修改组合时序;以及
检查修改组合时序是否满足设计目标。
15.根据权利要求14所述的方法,还包括:通过调整第二层处的分区的修改时序来平衡分层时钟树。
16.根据权利要求15所述的方法,其中,第二层处的分区的修改时序通过工程变更命令来调整。
17.根据权利要求15所述的方法,其中,第二层处的分区的修改时序通过调整第二层处的目标约束来调整。
18.根据权利要求13所述的方法,其中,时序包括延时。
19.根据权利要求13所述的方法,其中,时序包括偏差。
20.根据权利要求13所述的方法,其中,分区包括邻接块。
21.根据权利要求13所述的方法,其中,第二层包括基于通道的块。
22.根据权利要求13所述的方法,其中,分区包括多实例化模块。
23.根据权利要求13所述的方法,其中,时钟分配网络与第二层处的分区之间的依赖被解耦。
24.根据权利要求23所述的方法,还包括:并行地平衡时钟分配网络和第二层处的分区。
25.一种构建用于集成电路的分层时钟树的方法,所述方法包括:
构建顶层时钟分配网络;
计算到顶层时钟分配网络的端点的分配延迟;
将顶层时钟分配网络下推到块层;
在端点处的块中构建时钟树;
计算端点处的块中的时钟树的块层***延迟;
将分配延迟与块层***延迟进行组合以计算来自顶层时钟分配网络的根的时钟树***延迟;
基于来自顶层时钟分配网络的根的时钟树***延迟来计算块的延迟目标约束;
基于延迟目标约束来重新计算块层***延迟;
合并块层处的时钟树;以及
重新计算来自顶层时钟分配网络的根的时钟树***延迟。
26.根据权利要求25所述的方法,还包括:检查重新计算的来自顶层时钟分配网络的根的时钟树***延迟是否满足设计目标。
27.根据权利要求25或权利要求26所述的方法,还包括:
确定来自顶层时钟分配网络的根的***延迟不满足设计目标;以及
使用工程变更命令来变更时钟树上的时钟单元。
28.根据权利要求25或权利要求26所述的方法,还包括:
确定来自顶层时钟分配网络的根的***延迟不满足设计目标;以及
重新计算块的延迟目标约束。
29.根据权利要求25所述的方法,其中,将顶层时钟分配网络下推到块层的步骤包括为子块创建工程变更命令文件。
30.根据权利要求25所述的方法,其中,将顶层时钟分配网络下推到块层的步骤包括为子块创建配置文件。
31.根据权利要求25或权利要求26所述的方法,还包括:
确定将子块版面规划变更为将顶层时钟分配网络下推到块层;以及
在块层修改顶层时钟分配网络结构以保存到顶层时钟分配网络的端点的分配延迟。
32.根据权利要求25或权利要求26所述的方法,还包括:保存分层时钟树的至少一部分以防止在块层实现期间的修改。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962863259P | 2019-06-18 | 2019-06-18 | |
US62/863,259 | 2019-06-18 | ||
US16/666,389 | 2019-10-28 | ||
US16/666,389 US11263379B2 (en) | 2019-06-18 | 2019-10-28 | Hierarchical clock tree implementation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112100971A true CN112100971A (zh) | 2020-12-18 |
Family
ID=73750404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010534261.7A Pending CN112100971A (zh) | 2019-06-18 | 2020-06-11 | 构建用于集成电路的分层时钟树的方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11263379B2 (zh) |
CN (1) | CN112100971A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113723046A (zh) * | 2021-08-10 | 2021-11-30 | 广芯微电子(广州)股份有限公司 | 一种鱼骨状时钟树及实现方法 |
CN114896941A (zh) * | 2022-07-15 | 2022-08-12 | 飞腾信息技术有限公司 | 一种时钟树的布局优化方法、优化装置和相关设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11263379B2 (en) * | 2019-06-18 | 2022-03-01 | Samsung Electronics Co., Ltd. | Hierarchical clock tree implementation |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6751786B2 (en) | 2002-01-09 | 2004-06-15 | Cadence Design Systems, Inc. | Clock tree synthesis for a hierarchically partitioned IC layout |
US7017132B2 (en) * | 2003-11-12 | 2006-03-21 | Taiwan Semiconductor Manufacturing Company | Methodology to optimize hierarchical clock skew by clock delay compensation |
JP4530883B2 (ja) * | 2004-09-30 | 2010-08-25 | 富士通セミコンダクター株式会社 | シミュレーションモデル生成方法 |
WO2007002799A1 (en) | 2005-06-29 | 2007-01-04 | Lightspeed Logic, Inc. | Methods and systems for placement |
US7467367B1 (en) | 2005-10-27 | 2008-12-16 | Cadence Design Systems, Inc. | Method and system for clock tree synthesis of an integrated circuit |
US20090217225A1 (en) * | 2008-02-22 | 2009-08-27 | Mentor Graphics, Corp. | Multi-mode multi-corner clocktree synthesis |
US8356264B2 (en) | 2010-10-28 | 2013-01-15 | International Business Machines Corporation | Implementing enhanced clock tree distributions to decouple across N-level hierarchical entities |
US8719743B1 (en) | 2011-04-29 | 2014-05-06 | Cadence Design Systems, Inc. | Method and system for implementing clock tree prototyping |
US8635579B1 (en) * | 2012-12-31 | 2014-01-21 | Synopsys, Inc. | Local clock skew optimization |
US9058451B2 (en) | 2013-03-05 | 2015-06-16 | Synopsys, Inc. | Automatic synthesis of complex clock systems |
US11263379B2 (en) * | 2019-06-18 | 2022-03-01 | Samsung Electronics Co., Ltd. | Hierarchical clock tree implementation |
-
2019
- 2019-10-28 US US16/666,389 patent/US11263379B2/en active Active
-
2020
- 2020-06-11 CN CN202010534261.7A patent/CN112100971A/zh active Pending
-
2022
- 2022-01-11 US US17/573,632 patent/US11748548B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113723046A (zh) * | 2021-08-10 | 2021-11-30 | 广芯微电子(广州)股份有限公司 | 一种鱼骨状时钟树及实现方法 |
CN114896941A (zh) * | 2022-07-15 | 2022-08-12 | 飞腾信息技术有限公司 | 一种时钟树的布局优化方法、优化装置和相关设备 |
CN114896941B (zh) * | 2022-07-15 | 2022-10-25 | 飞腾信息技术有限公司 | 一种时钟树的布局优化方法、优化装置和相关设备 |
Also Published As
Publication number | Publication date |
---|---|
US20220138395A1 (en) | 2022-05-05 |
US20200401673A1 (en) | 2020-12-24 |
US11263379B2 (en) | 2022-03-01 |
US11748548B2 (en) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11480993B2 (en) | Methods for optimizing circuit performance via configurable clock skews | |
JP4719265B2 (ja) | 確率的相互接続構造設計のためのシステムおよび方法 | |
US10318686B2 (en) | Methods for reducing delay on integrated circuits by identifying candidate placement locations in a leveled graph | |
US11748548B2 (en) | Hierarchical clock tree implementation | |
US9275176B2 (en) | Register clustering for clock network topology generation | |
US9367660B2 (en) | Electromigration-aware layout generation | |
US8954912B2 (en) | Structured placement of latches/flip-flops to minimize clock power in high-performance designs | |
Papa et al. | Physical synthesis with clock-network optimization for large systems on chips | |
US10068048B1 (en) | Generating clock trees for a circuit design | |
US9298872B2 (en) | Apportioning synthesis effort for better timing closure | |
US11042678B2 (en) | Clock gate latency modeling based on analytical frameworks | |
Guthaus et al. | High-performance clock mesh optimization | |
US10860761B1 (en) | Systems and methods for enhanced clock tree power estimation at register transfer level | |
US9047434B2 (en) | Clustering for processing of circuit design data | |
US9692688B2 (en) | Delay specific routings for programmable logic devices | |
US8196083B1 (en) | Incremental placement and routing | |
TWI797453B (zh) | 為積體電路構建階層式時脈樹的方法 | |
US20230101972A1 (en) | SYSTEM AND METHOD FOR AREA AND TIMING ASSESSMENT OF A NETWORK-ON-CHIP (NoC) IMPLEMENTATION | |
US11023646B2 (en) | Hierarchical clock tree construction based on constraints | |
US9177090B1 (en) | In-hierarchy circuit analysis and modification for circuit instances | |
US10503861B1 (en) | Placing and routing an interface portion and a main portion of a circuit design | |
US8769461B1 (en) | Replicating a driver of a net in a circuit design | |
US10289784B1 (en) | Determination of clock path delays and implementation of a circuit design | |
US8843866B2 (en) | Support apparatus, design support method, and computer-readable recording medium | |
US8819607B1 (en) | Method and apparatus to minimize clock tree skew in ICs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |