CN107918694A - 用于减少集成电路上的延迟的方法 - Google Patents
用于减少集成电路上的延迟的方法 Download PDFInfo
- Publication number
- CN107918694A CN107918694A CN201710941717.XA CN201710941717A CN107918694A CN 107918694 A CN107918694 A CN 107918694A CN 201710941717 A CN201710941717 A CN 201710941717A CN 107918694 A CN107918694 A CN 107918694A
- Authority
- CN
- China
- Prior art keywords
- functional block
- block
- candidate
- path
- critical path
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013461 design Methods 0.000 claims abstract description 212
- 238000004904 shortening Methods 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 72
- 230000005611 electricity Effects 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 abstract description 15
- 230000008569 process Effects 0.000 abstract description 14
- 230000014509 gene expression Effects 0.000 abstract description 5
- 238000005457 optimization Methods 0.000 description 34
- 238000010586 diagram Methods 0.000 description 15
- 230000006399 behavior Effects 0.000 description 10
- 230000015572 biosynthetic process Effects 0.000 description 10
- 238000003786 synthesis reaction Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000003860 storage Methods 0.000 description 8
- ORQBXQOJMQIAOY-UHFFFAOYSA-N nobelium Chemical compound [No] ORQBXQOJMQIAOY-UHFFFAOYSA-N 0.000 description 7
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 238000004088 simulation Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 239000002609 medium Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012062 charged aerosol detection Methods 0.000 description 1
- 238000001360 collision-induced dissociation Methods 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000012120 mounting media Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/3312—Timing analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or 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/392—Floor-planning or layout, e.g. partitioning or placement
-
- 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)
- Architecture (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
可以使用逻辑设计设备生成用于集成电路的配置数据以实施所述集成电路上的电路设计。实施电路设计可以包括将功能块放置在增大了实施最优电路设计的集成电路的最大操作频率的最优位置。逻辑设计设备可以对包括初始放置的功能块的初始放置的电路设计执行定时分析。定时分析可以识别可以通过将电路设计内的关键功能块移动至候选放置位置来缩短的一个或多个关键路径。可以采用宽度优先搜索来遍历表示可能的候选位置以及在可能的候选位置之间的路径的分级图形,以生成最短的更新的关键路径。关键功能块可以被移动至与所述更新的关键路径对应的候选位置。缩短关键路径的过程可以被迭代地执行。
Description
相关申请的交叉引用
本申请要求于2016年10月11日提交的临时专利申请No.62/406,877的权益,在此通过引用的方式将该临时专利申请的全部内容并入本文。
背景技术
本申请涉及集成电路,并且更具体地,涉及用于设计诸如可编程集成电路之类的集成电路器件上的逻辑电路的系统。
可编程集成电路是能够由用户编程以实现期望的定制逻辑功能的集成电路的类型。在典型情景中,逻辑设计者使用计算机辅助设计工具来设计执行定制逻辑功能的定制逻辑电路。当设计过程完成时,计算机辅助设计工具生成配置数据。配置数据被加载到存储器元件中以将器件配置为执行定制逻辑电路的功能。通常使用随机存取存储器(RAM)单元形成存储器元件。因为在器件编程期间,RAM单元被加载以配置数据,RAM单元有时被称为配置存储器或配置随机存取存储器单元(CRAM)。
诸如可编程集成电路之类的集成电路通常包括数百万个门和百万比特的嵌入式存储器。大型系统的复杂性需要使用电子设计自动化(EDA)工具来创建并优化用于系统到集成电路(目标器件)的逻辑设计。该工具可以执行逻辑合成操作以生成用于在目标可编程逻辑器件上实现的逻辑设计的门级描述。逻辑合成还执行技术映射以将门映射到目标可编程逻辑器件上可用的逻辑元件(资源)。然后将逻辑元件的功能块物理地放置并布线到目标可编程器件上,同时优化定时、面积、接线、布线拥塞和功率。
在实践中,期望的是将逻辑元件的功能块放置在具有低操作延时或高操作频率的目标可编程器件上。在该上下文内,出现了本文的实施例。
发明内容
应当理解的是,本发明可以以许多方式实现,诸如计算机可读介质上的过程、装置、系统、设备、或方法。下面描述了本发明的若干个发明性实施例。
集成电路可以包括以行和列布置的存储器元件。集成电路可以是可以由用户(例如,使用配置数据)编程以实现期望的定制逻辑功能(逻辑设计或系统)的可编程集成电路。可以使用逻辑设计系统(例如,逻辑设计计算设备)生成配置数据。当诸如可编程集成电路之类的目标器件被加载以配置数据时,目标器件可以被编程以实现由配置数据识别的逻辑设计。
逻辑设计设备可以初始地在多个初始放置位置处将多个功能块放置在电路设计中。
通过对初始放置的电路设计执行定时分析,逻辑设计设备可以识别链接多个功能块和用于多个功能块中的每个功能块的候选放置位置的关键路径。可以通过针对电路设计中的每个互连(例如,针对每个两引脚网或功能块对)对延迟松弛的量进行估计来识别关键路径。关键路径可能具有低于预定松弛阈值的延迟松弛的累积量。候选放置位置可能由现有功能块占用或是未占用。作为示例,多个功能块中的特定功能块可以移动到未占用的候选位置。作为另一个示例,多个功能块中的特定功能块可以与占用的候选位置交换位置,而不是移动到占用的候选位置。
附加功能块可以使用侧路径与多个功能块形成连接。换句话说,除了关键路径之外,侧路径(例如,非关键路径)可以连接到多个功能块。逻辑设计设备可以计算侧路径的硬延迟限制,该侧路径的硬延迟限制在侧路径的路径长度上施加约束。可以可选地放松硬延迟限制以增加候选位置的数量,并且在减少关键路径的延迟时增加用于多个功能块的可能放置选项的数量。
可以可选地将给定功能块移动到更靠近多个功能块中的一个功能块或多个功能块中的一个功能块的候选放置位置中的一个候选放置位置,以改进放置优化操作(例如,以增加可用于多个功能块的候选位置的数量)。例如,第一给定功能块可以连接到多个功能块,在该情景中,给定的功能块可以移动到更靠近多个功能块。
作为另一示例,给定功能块可以连接到用于多个功能块中的一个功能块的候选放置位置,在该情景中,给定功能块可以移动到更靠近多个功能块中的一个功能块的候选放置位置。将给定功能块耦合到候选位置的侧路径可以具有计算出的硬延迟限制。如果将多个功能块中的一个功能块移动到候选放置位置违反了计算出的硬延迟限制,则该候选放置位置可以从候选位置被排除。
可以生成分级图形(例如,具有多个级的图形),以表示将用于多个功能块中的第一功能块的候选放置位置链接到用于多个功能块中的第二功能块的候选放置位置的可能路径。分级图形可以具有开始级(例如,关键路径的起点所在的级)和结束级(例如,关键路径的终点所在的级)。分级图形还可以包括两个连续级,相同的候选放置位置位于其中。可以排除在两个连续级中相同的候选放置位置和自身之间的路径。
然后可以分析(例如,通过宽度-优先搜索来遍历)分级图形以通过求解从开始级到结束级的最短路径来识别更新的关键路径(例如,具有较短路径长度的新路径、具有较短延迟的新路径等)。可以根据更新的关键路径来更新功能块的放置(以及受到引入更新的关键路径影响的任何功能块)。
逻辑设计设备可以确定更新的关键路径是否改进了电路设计的性能(例如,最大操作频率)。如果电路设计的性能得到改进,则可以将多个功能块的更新的放置缓存在存储器中(例如,在逻辑设计设备内的存储器电路中)。如果电路设计的性能得到改进,并且特别是如果电路设计的性能的改进超出了改进阈值,则可以在要优化和更新的电路设计中识别新的关键路径。
根据以上布置中的任一个,非暂时性计算机可读存储介质可以包括用于执行本文描述的操作的指令。通过附图和优选实施例的以下详细描述,本发明的进一步的特征及其实质和各种优点将更加显而易见。
附图说明
图1是根据实施例的具有示例性布线拓扑的说明性集成电路的示图。
图2是根据实施例的示出可以如何由逻辑设计系统生成配置数据并将配置数据加载到可编程器件中的说明性示图。
图3是根据实施例的可以用于设计集成电路的电路设计系统的示图。
图4是根据实施例的可以用于电路设计系统中的说明性计算机辅助设计(CAD)工具的示图。
图5是根据实施例的用于设计集成电路的说明性步骤的流程图。
图6是根据实施例的跨越集成电路内的不同组合逻辑的具有延迟的说明性路径的示图。
图7A和7B是根据实施例的集成电路内的源-宿(source-sink)对的说明性表示的示图。
图8是根据实施例的集成电路内的说明性逻辑设计的示图,该集成电路包括功能块和用于功能块的候选位置。
图9A是根据实施例的集成电路内的说明性逻辑设计的示图,该集成电路包括连接多个功能块的关键路径。
图9B和图9C是根据实施例的集成电路内的说明性逻辑设计的示图,该集成电路包括关键路径上的多个功能块和用于多个功能块的候选位置。
图10是根据实施例的表示沿着关键路径的多个功能块之间的候选路径的说明性树结构的示图。
图11是根据实施例的示出可以由逻辑设计系统执行的用于减少集成电路内的关键路径的延时的说明性步骤的流程图。
具体实施方式
本发明的实施例涉及集成电路,并且更具体地,涉及用于改进在生成在集成电路上实现的逻辑设计中的硬件资源的放置的方式。
在图1中示出了具有示例性互连电路的诸如可编程逻辑器件(PLD)100之类的集成电路的说明性实施例。如图1所示,可编程逻辑器件(PLD)可以包括功能块的二维阵列,功能块包括逻辑阵列块(LAB)110和其它功能块,例如,诸如随机存取存储器(RAM)块130和数字信号处理(DSP)块120。诸如LAB 110之类的功能块可以包括接收输入信号并对输入信号执行定制功能以产生输出信号的较小可编程区域(例如,逻辑元件、可配置逻辑块、或自适应逻辑模块)。
可编程逻辑器件100可以包含可编程存储器元件。可以使用输入/输出元件(IOE)102为存储器元件加载配置数据(也称为编程数据)。一旦加载,存储器元件均提供对应的静态控制信号,该静态控制信号控制相关联的功能块(例如,LAB 110、DSP 120、RAM 130、或输入/输出元件102)的操作。
在典型情景中,加载的存储器元件的输出被施加到功能块中的金属氧化物半导体晶体管的栅极,以使某些晶体管接通或关断,并且从而对包括布线路径的功能块中的逻辑进行配置。可以以该方式控制的可编程逻辑电路元件包括多路复用器(例如,用于在互连电路中形成布线路径的多路复用器)的部分、查找表、逻辑阵列、AND、OR、NAND、和NOR逻辑门、传递门等等。
存储器元件可以使用任何适合的易失性和/或非易失性存储器结构,诸如随机存取存储器(RAM)单元、熔断器、抗熔断器、可编程只读存储器存储器单元、掩模编程和激光编程结构、这些结构的组合等等。由于在编程期间存储器元件被加载了配置数据,所以存储器元件有时被称为配置存储器、配置RAM(CRAM)、配置存储器元件、或可编程存储器元件。
此外,可编程逻辑器件可以具有用于驱动信号离开PLD以及用于从其它器件接收信号的输入/输出元件(IOE)102。输入/输出元件102可以包括并行输入/输出电路、串行数据收发器电路、差分接收器和发射器电路、或用于将一个集成电路连接到另一个集成电路的其它电路。如所示,输入/输出元件102可以位于芯片周边的周围。如果需要,可编程逻辑器件可以具有以不同方式布置的输入/输出元件102。例如,输入/输出元件102可以形成可以位于可编程逻辑器件上的任何地方的输入/输出元件的一个或多个列(例如,跨越PLD的宽度均匀分布)。如果需要,输入/输出元件102可以形成输入/输出元件的一个或多个行(例如,跨越PLD的高度分布)。替代地,输入/输出元件102可以形成可以分布在PLD的表面上或聚集在选定区域中的输入/输出元件的岛。
PLD还可以包括采用垂直布线通道140(即,沿着PLD 100的垂直轴形成的互连)和水平布线通道150(即,沿着PLD 100的水平轴形成的互连)的形式的可编程互连电路,每个布线通道包括至少一个轨道以对至少一个导线布线。如果需要,互连电路可以包括双数据速率互连和/或单数据速率互连。当以相同的时钟频率操作时,与单数据速率互连传送的数据量相比,双数据速率互连可以传送两倍的数据量。
如果需要,布线的导线可能比布线通道的整个长度要短。长度L的导线可以跨越L个功能块。例如,长度四的导线可以跨越四个块。水平布线通道中的长度四的导线可以称为“H4”导线,而垂直布线通道中的长度四的导线可以称为“V4”导线。
不同的PLD可以具有连接到不同数量的布线通道的不同功能块。图1中描绘了三侧布线架构,其中输入和输出连接存在于通往布线通道的每个功能块的三侧。其它布线架构也旨在被包括在本发明的范围内。其它布线架构的示例包括1侧、11/2侧、2侧和4侧布线架构。
在直接驱动布线架构中,每个导线在单个逻辑点处由驱动器驱动。驱动器可以与选择要在导线上驱动的信号的多路复用器相关联。在沿其长度具有固定数量的导线的通道的情况下,可以在导线的每个起点放置驱动器。
注意,除了图1所描绘的互连电路的拓扑之外,其它布线拓扑旨在包括在本发明的范围内。例如,布线拓扑可以包括对角方向行进或者沿着它们的范围的不同部分水平和垂直行进的导线,以及在三维集成电路的情况下垂直于器件平面的导线,并且导线的驱动器可以位于与导线的一个端部不同的点处。布线拓扑可以包括全局导线,该全局导线基本上跨越所有PLD100、很少的全局导线(诸如跨越PLD 100的部分的导线)、特定长度的交错导线、较小的局部导线、或任何其它适合的互连资源布置。
此外,应当理解的是,本发明的实施例可以在任何集成电路中实现。如果需要,这种集成电路的功能块可以被布置在更多级或层中,其中多个功能块被互连以形成更大的块。其它器件布置可以使用未被布置成行和列的功能块。
可以使用电路设计系统来设计包括在集成电路中的各种结构和部件。图2中示出了器件100的说明性系统环境。例如,器件100可以安装在系统138中的板136上。通常,可编程逻辑器件100可以从编程设备或从其它适合的设备或器件接收配置数据。在图2的示例中,可编程逻辑器件100是从相关联的集成电路141接收配置数据的可编程逻辑器件的类型。利用该类型的布置,如果需要,电路141可以被安装在与可编程逻辑器件100相同的板136上。电路141可以是可擦除可编程只读存储器(EPROM)芯片、具有内置存储器的可编程逻辑器件配置数据加载芯片(有时称为配置器件)、或其它适合的器件。当系统138启动时(或在另一适当时间),用于配置可编程逻辑器件的配置数据可以从器件141被供应给可编程逻辑器件,如路径142示意性所示。被供应给可编程逻辑器件的配置数据可以存储在其配置随机存取存储器元件中的可编程逻辑器件中。
系统138可以包括与器件100通信的处理电路144、储存器146、和其它系统部件148。系统138的部件可以位于诸如板136的一个或多个板上,或位于其它适合的安装结构或壳体上,并且可以由总线和其它电路径151来互连。如果需要,可编程器件100可以被加载配置数据,而无需将器件100和/或配置器件141安装到板136(例如,使用任何期望的配置数据加载设备)。
配置器件141可以经由诸如路径152的路径被供应用于器件100(在本文中有时称为目标电路或目标器件100)的配置数据。例如,配置器件141可以从配置数据加载设备154或将该数据存储在配置器件141中的其它适合的设备接收配置数据。器件141可以在安装在板136上之前或之后被加载数据。
在可编程逻辑器件中设计并实现期望的(定制的)逻辑电路可以是重大的任务。因此,逻辑设计者通常使用基于计算机辅助设计(CAD)工具的逻辑设计系统来帮助他们设计电路。逻辑设计系统可以帮助逻辑设计者设计并测试系统的复杂电路。当设计完成时,逻辑设计系统可以用于生成用于对适当的可编程逻辑器件进行电气编程的配置数据。
如图2所示,由逻辑设计系统156(在本文中有时称为逻辑设计设备156、逻辑设计计算机156、逻辑设计处理器156、逻辑设计计算设备156、逻辑设计电路156、或数据流生成电路156)产生的配置数据可以经由诸如路径158之类的路径被提供给设备154。设备154向器件141提供配置数据,使得器件141稍后可以经由路径142将该配置数据提供给可编程逻辑器件100。系统156可以基于一个或多个计算机和一个或多个软件程序。通常,软件和数据可以存储在系统156中的任何计算机-可读介质(储存器)上。系统156可以包括采用一个或多个处理器(诸如中央处理单元(CPU))的形式的处理电路。通常,可以在系统156上形成任何期望的处理电路。例如,系统156可以包括求解器电路或求解器引擎。例如,求解器电路可以用于求解受约束的方程组。
在典型情景中,逻辑设计系统156由逻辑设计者用于创建定制电路(逻辑)设计。例如,逻辑设计者可以(例如,通过在屏幕上选择显示在显示屏上的命令,通过使用诸如鼠标和/或键盘之类的用户输入设备输入命令,等等)向逻辑设计系统156提供输入命令。系统156产生被提供给配置器件141的对应配置数据。在上电时,配置器件141和可编程逻辑器件100上的数据加载电路用于将配置数据加载到器件100上的CRAM单元中。器件100然后可以用于系统138的正常操作。图2的示例仅仅是说明性的。通常,可以使用任何期望的系统将逻辑设计系统156所生成的配置数据加载到可编程逻辑器件100上。
图3中示出了根据实施例的说明性电路设计系统300。如果需要,图3的电路设计系统可以用于诸如图2中所示的逻辑设计系统156之类的逻辑设计系统中。电路设计系统300可以实现在集成电路设计计算设备上。例如,系统300可以基于诸如个人计算机、工作站等的一个或多个处理器。可以使用网络(例如,局域网或广域网)来链接(多个)处理器。这些计算机中的存储器或外部存储器和储存设备(诸如内部和/或外部硬盘)可以用于存储指令和数据。
诸如计算机辅助设计工具320和数据库330之类的基于软件的部件驻留在系统300上。在操作期间,诸如计算机辅助设计工具320的软件之类的可执行软件在系统300的(多个)处理器上运行。使用数据库330存储用于系统300的操作的数据。通常,软件和数据可以存储在系统300中的任何计算机可读介质(储存器)上。这种储存器可以包括计算机存储器芯片、可移除和固定介质(诸如硬盘驱动、闪存、光盘(CD)、数字通用盘(DVD)、蓝光光盘(BD)、其它光学介质)、以及软盘、磁带或任何其它适合的存储器或(多个)储存设备。当系统300的软件被安装时,系统300的储存器具有使得系统300中的计算设备执行各种方法(过程)的指令和数据。在执行这些过程时,计算设备被配置为实现电路设计系统的功能。
计算机辅助设计(CAD)工具320可以由单个供应商或由多个供应商提供,其中一些计算机辅助设计(CAD)工具320或者所有计算机辅助设计(CAD)工具320有时被统称为CAD工具、电路设计工具或者电子设计自动化(EDA)工具。工具320可以被提供为一个或多个工具套件(例如,用于执行与实施可编程逻辑器件中的电路设计相关联的任务的编译器套件)和/或被提供为一个或多个单独的软件部件(工具)。(多个)数据库330可以包括仅由一个或多个特定工具访问的一个或多个数据库,并且可以包括一个或多个共享数据库。共享数据库可以由多个工具访问。例如,第一工具可以在共享数据库中存储用于第二工具的数据。第二工具可以访问该共享数据库来提取由第一工具存储的数据。这允许一个工具向另一个工具传递信息。如果需要,工具还可以在彼此之间传递信息,而不将信息存储在共享数据库中。
图4中示出了示例性计算机辅助设计工具420,该示例性计算机辅助设计工具420可用在诸如图3的电路设计系统300之类的电路设计系统中。
设计过程可以开始于制定集成电路设计的功能规范(例如,集成电路设计的功能描述或行为描述)。电路设计者可以使用设计和约束输入工具464来规定期望的电路设计的功能操作。设计和约束输入工具464可以包括诸如设计和约束输入助手466和设计编辑器468之类的工具。诸如助手466之类的设计和约束输入助手可以用于帮助电路设计者从现有的电路设计库中定位期望的设计,并且可以为电路设计者输入(规定)期望的电路设计提供计算机辅助的帮助。
作为示例,设计和约束输入助手466可以用于向用户呈现选项屏幕。用户可以点击屏幕上的选项来选择正在设计的电路是否应该具有特定的特征。设计编辑器468可以用于输入设计(例如,通过输入硬件描述语言代码行),可以用于编辑从库中获得的设计(例如,使用设计和约束输入助手)或者可以辅助用户选择和编辑合适的预包装代码/设计。
设计和约束输入工具464可以用于允许电路设计者使用任何适合的格式提供期望的电路设计。例如,设计和约束输入工具464可以包括允许电路设计者使用真值表来输入电路设计的工具。可以使用文本文件或定时图来规定真值表,并且可以从库中引入真值表。真值表电路设计和约束输入可以用于大电路的一部分或者用于整个电路。
作为另一示例,设计和约束输入工具464可以包括原理图捕获工具。原理图捕获工具可以允许电路设计者利用诸如逻辑门和逻辑门组等组成部分来可视地构造集成电路设计。可以使用预先存在的集成电路设计库,以允许利用原理图捕获工具来引入设计的期望的部分。
如果需要,设计和约束输入工具464可以允许电路设计者使用硬件描述语言(例如,Verilog硬件描述语言(Verilog HDL)、超高速集成电路硬件描述语言(VHDL)、SystemVerilog、或者高级电路描述语言,例如OpenCL或SystemC,这仅给出了若干示例)来将电路设计提供给电路设计系统300。集成电路设计的设计者可以通过利用编辑器468编写硬件描述语言代码来输入电路设计。如果需要,可以从用户维护的库或商业库中引入代码块。
在已经使用设计和约束输入工具464输入设计之后,可以使用行为模拟工具472来模拟电路设计的功能。如果设计的功能不完整或不正确,则电路设计者可以使用设计和约束输入工具464来对电路设计进行改变。可以在已经使用工具474进行合成操作之前使用行为模拟工具472对新电路设计的功能操作进行验证。如果需要,也可以在设计流程中的其它阶段使用诸如行为模拟工具472之类的模拟工具(例如,在逻辑合成之后)。行为模拟工具472的输出可以以任何适合的格式(例如,真值表、定时图等)提供给电路设计者。
一旦已经确定电路设计的功能操作是令人满意的,逻辑合成和优化工具474可以例如使用来自与加工厂(foundry)支持的目标过程相关的特定库中的门来生成电路设计的门级网表,其中该目标过程已经被选择用于产生集成电路。替代地,逻辑合成和优化工具474可以使用目标可编程逻辑器件的门(即,在特定可编程逻辑器件产品或产品系列的逻辑和互连资源中)来生成电路设计的门级网表。
逻辑合成和优化工具474可以通过基于逻辑设计者使用工具464输入的电路设计数据和约束数据对用以实施电路设计中的不同逻辑功能的硬件进行适当选择来优化设计。作为示例,逻辑合成和优化工具474可以基于电路设计中的寄存器之间的组合路径的长度和由逻辑设计者使用工具464输入的对应的定时约束来执行多级逻辑优化和技术映射。
在使用工具474进行逻辑合成和优化之后,电路设计系统可以使用诸如放置、布线和物理合成工具476之类的工具来执行物理设计步骤(布局合成操作)。工具476可以用于确定将由工具474产生的门级网表的每个门放置在哪个位置。例如,如果两个计数器彼此交互,则工具476可以将这些计数器定位在相邻区域中以降低互连延迟或者满足定时要求,其中该定时要求规定了最大容许互连延迟。工具476为任何目标集成电路(例如,为诸如现场可编程门阵列(FPGA)之类的给定可编程集成电路)创建有序且高效的电路设计实现方案。
诸如工具474和476之类的工具可以是编译器套件的一部分(例如,由可编程逻辑器件供应商提供的编译器工具套件的一部分)。在特定实施例中,诸如工具474、476和478之类的工具还可以包括诸如定时估计器之类的定时分析工具。这在实际产生集成电路之前允许工具474和476满足性能要求(例如,定时要求)。
在已经使用工具476生成期望的电路设计的实现方案之后,可以使用分析工具478来分析和测试设计的实现方案。例如,分析工具478可以包括定时分析工具、电源分析工具或形式验证工具,这仅给出了若干示例。
在已经使用工具420并且根据目标集成电路技术完成了令人满意的优化操作之后,工具420可以产生用于对可编程逻辑器件进行编程的配置数据或集成电路的掩模级布局描述。
图5中示出了在使用图4的工具产生集成电路的掩模级布局描述时所涉及的示例性操作。如图5所示,电路设计者可以首先提供设计规范502。总体而言,设计规范502可以是以应用代码(例如,C代码、C++代码、SystemC代码、OpenCL代码等)的形式提供的行为描述。在一些情景中,可以以寄存器传输级(RTL)描述506的形式提供设计规范。
RTL描述可以具有在寄存器传输级描述电路功能的任何形式。例如,可以使用硬件描述语言来提供RTL描述,硬件描述语言例如Verilog硬件描述语言(Verilog HDL或Verilog)、SystemVerilog硬件描述语言(SystemVerilog HDL or SystemVerilog)、或超高速集成电路硬件描述语言(VHDL)。如果需要,RTL描述的一部分或全部可以被提供为原理图表示或者使用OpenCL、MATLAB、Simulink或其它高级合成(HLS)语言的代码的形式。
总体而言,行为设计规范502可以包括非定时的或部分定时的功能代码(即,应用代码不描述逐周期硬件行为),而RTL描述506可以包括完全定时的设计描述,其在寄存器传输级详细描述了电路的逐周期行为。
设计规范502或RTL描述506还可以包括目标准则,诸如面积使用、功耗、延迟最小化、时钟频率优化或其任何组合。优化约束和目标准则可以统称为约束。
可以为个体数据路径、个体数据路径的部分、设计的部分、或为整个设计提供这些约束。例如,可以利用设计规范502、RTL描述506(例如,作为编译指示或作为声明)、采用约束文件、或通过用户输入(例如,使用图4中的设计和约束输入工具464)来提供约束,这仅给出了若干示例。
在步骤504,可以执行行为合成(有时也称为算法合成)以将行为描述转换成RTL描述506。如果已经以RTL描述的形式提供了设计规范,则可以跳过步骤504。
在步骤518,行为模拟工具472可以执行RTL描述的RTL模拟,RTL模拟可以验证RTL描述的功能。如果RTL描述的功能不完整或不正确,电路设计者可以改变HDL代码(作为示例)。在RTL模拟518期间,可以将通过模拟RTL描述的行为获得的实际结果与预期结果进行比较。
在步骤508期间,逻辑合成操作可以使用来自图4的逻辑合成和优化工具474来生成门级描述510。逻辑合成508的输出是设计的门级描述510。
在步骤512期间,使用例如图4的放置工具476的放置操作可以将门级描述510中的不同门放置在目标集成电路上的优选位置中,以满足给定的目标准则(例如,使面积最小化并使布线效率最大化,或使路径延迟最小化并使时钟频率最大化,或使逻辑元件之间的重叠最小化,或其任何组合)。放置512的输出是放置的门级描述513,其满足底层目标器件的合法的放置约束。
在步骤515期间,使用例如图4的布线工具476的布线操作可以连接来自放置的门级描述513的门。布线操作可以尝试满足给定的目标准则(例如,使拥塞最小化,使路径延迟最小化并使时钟频率最大化,满足最小延迟要求,或其任何组合)。布线515的输出是掩模级布局描述516(有时称为经布线的门级描述516)。
当在步骤512和515执行放置和布线时,可以同时执行物理合成操作517以进一步修改和优化电路设计(例如,使用图4的物理合成工具476)。如果需要,可以在物理合成步骤517期间执行寄存器重定时操作。
图6示出了PLD 100可以实施的电路设计的一部分的示例。电路设计的部分600可以包括寄存器602、604和606。组合逻辑610可以耦合在寄存器602与604之间(例如,插入在其间)。换言之,寄存器602可以通过组合逻辑610向寄存器604发送信号。作为示例,从寄存器602通过组合逻辑610到寄存器604的路径上的延迟可以是6纳秒(ns)的延迟。类似地,组合逻辑612可以耦合在寄存器604与606之间。换言之,寄存器604可以通过组合逻辑612向寄存器606发送信号。作为示例,从寄存器604通过组合逻辑610到寄存器604的路径上的延迟可以是4ns的延迟。
PLD 100实施的电路设计可能包括大量路径,例如从寄存器602到寄存器604的路径或从寄存器604到寄存器606的路径。大量的路径可以均具有给定的延迟和对应的延迟目标。从对应的延迟目标减去给定的延迟可以生成延迟松弛值。具有最小延迟松弛值的路径可能是电路设计内的最关键的路径。具有低于给定阈值的松弛延迟值的路径可以被标记为电路设计内的关键路径。例如,不同延迟松弛值低于给定阈值的程度可以映射到零到一的尺度,其中,零是最不关键的路径,并且一是最关键的路径。换言之,可以通过将给定关键路径的延迟松弛与松弛阈值进行比较来识别给定的关键路径。
例如,如果从寄存器602到寄存器604的路径和从寄存器604到606的路径都具有相同的延迟目标,所有其它因素保持不变,则从寄存器602到寄存器604的路径可以具有比与从寄存器604到寄存器606的路径相关联的松弛值更小的松弛值。在该示例中,从寄存器602到寄存器604的路径可以是更关键的路径。
PLD 100的操作频率可能受到最慢路径(例如,具有最高延迟的路径)的限制。换言之,跨给定路径的延迟可能与给定路径的操作频率反相关(例如与之成反比)。例如,部分600可以包括电路设计内的关键路径。因此,最大操作频率Fmax可能受到部分600的关键路径的限制。关键路径(例如,从寄存器602到寄存器604的路径)可以具有6ns的延迟,其可以对应于例如166MHz的操作频率。因此,在PLD 100内实施的逻辑设计的最大操作频率Fmax可以是166MHz。
可能期望减少部分600内的关键路径的延迟。作为示例,通过优化组合逻辑610内的放置,从寄存器602通过组合逻辑610到寄存器604的新路径(例如,改进的路径)可以具有4ns的改进的延迟。4ns的改进的延迟可以因此将部分600内的关键路径的延迟从6ns改进到4ns。4ns的新延迟可以对应于250MHz的操作频率,该操作频率也可以是逻辑设计的新的最大操作频率Fmax(假设改进的路径是最关键的路径)。
这仅仅是说明性的。如果需要,可以改进其它路径以改进如图6中所示的从寄存器602到寄存器606的路径的总体延迟。例如,如果从寄存器604到寄存器606的路径是更关键的路径之一,则与从寄存器604到606的路径相关联的延迟可以改进到3ns。例如,与从寄存器602到604的路径相关联的延迟可以改进到2ns。
作为示例,从寄存器602到寄存器604的路径可以不包括逻辑设计内的最关键的路径。这样,与逻辑设计内的更关键的路径相关联的延迟可以首先被改进或与从寄存器602到寄存器604的路径同时被改进。在图7-图11中更详细地描述了改进关键路径的延迟的细节。
如在图6中所描述的,寄存器602可以发送在寄存器604处所接收的信号。换言之,寄存器602可以是信号的源,并且寄存器604可以是信号的宿。源可以是生成或传播数据(例如,信号)的任何电路。对应的宿可以是接收数据的任何电路。例如,宿可以传输数据或对数据执行进一步的处理。图7A示出了包括多个源-宿对的示例性网络。
源W可以经由路径700耦合到宿X。源W也可以经由路径702耦合到宿Y。源W还可以经由路径704耦合到宿Z。换言之,相连接的源W和宿X可以形成源-宿对或2引脚网(在本文中有时被称为“t网”)。类似地,源W和宿Y以及源W和宿Z又可以形成两个2引脚网。路径700、702和704可以包括中间组合逻辑(例如,如图6所示)、导线或任何其它类型的中间电路。取决于中间电路的数量、类型、复杂度、长度以及其它因素,每条路径可以与对应的传播延迟相关联。例如,沿着路径700的延迟可以比沿着路径702的延迟更短,并且沿着路径702的延迟可以比沿着路径704的延迟更短。这样,如果路径700、702和704具有相同的目标延迟,则最长的路径704可以是最关键的路径,并且最短的路径700可以是最不关键的路径。
图7B示出了如图7A所示的源-宿对的示例性网络的不同表示。具体而言,图7B示出了源-宿对的图形表示或树表示。图形包括节点W、X、Y和Z,其中,节点W可以是源,并且节点X、Y和Z可以是宿。图形可以包括定向弧或定向边缘(例如,单向边缘或双向边缘)。例如,将节点W耦合到节点X的边缘(在本文中被称为边缘WX)可以从节点W(源)指向节点X(宿)。每个边缘可以具有权重,所述权重为由该边缘表示的路径的延迟。例如,边缘WX可以具有权重w1。将节点W耦合到节点X的边缘可以对应于路径700。这样,w1对应于路径700上的延迟。类似地,边缘WY和WZ可以分别表示路径702和704,并且权重w2和w3可以是沿着路径702和704的延迟(例如,传播延迟)。
在该情景中,其中,路径700、702和704各自具有例如2ns、3ns和4ns的延迟。权重w1、w2和w3可以分别等于2ns、3ns和4ns。替代地,权重w1、w2和w3可以与对应的延迟(例如,相对于目标延迟计算的,按照松弛来标准化的,等等)成比例。
图7A和图7B仅仅是说明性的。如果需要,任何数量的源可以被耦合到任何数量的宿。例如,PLD 100可以实施包括大数量的源和宿的电路设计,所述电路设计包括源与宿之间的适合的互连。如果需要,每个源-宿对可以传输与源和宿的功能相对应的不同信号或数据。例如,源W可以经由路径700将第一信号发送到宿X,并且源W可以经由路径702将不同于第一信号的第二信号发送到宿Y。
要在可编程集成电路上实施的电路设计可以在电路设计内包括大量的源-宿对。这样,链接源-宿对的对应的路径可以具有大量的不同延迟。对应的路径可以被链接到另一条路径以生成源-宿路径链。源-宿路径链可以具有关键的延迟量(例如,接近于或高于目标延迟的延迟)。具有关键的延迟量的源-宿路径链可以是关键路径。许多这种源-宿路径链可以存在于电路设计中。因此,电路设计可以被优化以减少一个或多个关键路径的延迟或延时。
优化过程可以在图5中的放置的门级描述513被生成之后进行,所述放置的门级描述513是在已经发生了放置512之后生成的。换言之,图4中的CAD工具420(例如,更具体地,放置工具476)可以使用放置的门级表述513作为输入来执行延迟减少放置操作。CAD工具420可以生成具有改进的延时或操作频率的电路设计的延迟减少放置的输出。所述输出还可以经历图5中的布线操作515。
值得注意的是,设计系统可以通过对硬件做出适当选择以基于由逻辑设计者输入的电路设计数据和约束数据在电路设计中实施不同的逻辑功能,来优化逻辑设计。工具(例如,图4的工具474)可以在确保满足器件约束的同时优化设计。这种器件约束可以包括合法性规则(在本文中有时被称为合法性约束)。合法性规则可以规定在设计中放置什么逻辑元件以及什么互连是合法的或不合法的(例如,哪些放置和互连满足或不满足合法性规则)。
可以施加的合法性约束的示例包括关于特定逻辑元件能够被放置在哪里的规则、指示多个元件不能共享设计上的单个位置的规则、群集规则、指示能够如何连接元件的规则、计时规则(例如,关于如何对设计中的每个逻辑元件进行计时或每个逻辑群集可以接收多少时钟的约束)、打包规则或其它期望的合法性约束。
如先前所描述的,延迟减少放置操作的输入可以是满足合法性约束的放置的门级描述513。类似地,在延迟减少放置操作期间对门级描述513做出的任何改变也可以满足合法性约束。事实上,可以期望核查并加强这样的约束:对门级描述做出的任何改变必须遵循合法性约束。这样,可以仅存在针对电路设计内的功能块的放置改变的限制选项。
图8示出了可以被实施在PLD 100上的示例性电路设计。电路设计可以包括可放置的功能块,所述可放置的功能块中的每个具有指定的(例如,规定的、专用的,等等)功能。可放置块可以在图5中的放置512期间被共同地放置。具体而言,电路设计可以包括功能块A、B和C(例如,图8中的阴影框A、B和C),其沿着将块A链接到块B再链接到块C的关键路径(例如,图8中的加粗路径)。换言之,功能块A、B和C在优化之前被放置在由阴影框A、B和C表示的位置处。
为了优化沿着关键路径的功能块的放置,图4中的CAD工具420可以生成用于沿着关键路径耦合的功能块中的每个功能块的若干候选节点(例如,候选移动位置、候选放置位置、或仅仅是候选位置)。例如,CAD工具420可以在区域800内生成用于阴影功能块A的候选位置。区域800可以被选择作为阴影功能块A的代表性邻域。区域800可以是五乘五功能块区域(例如,可以拟合被布置成五行和五列构造的25个功能块801的块区域)。如果需要,代替功能块801,区域800可以包括功能块810。功能块810可以在电路设计上占据更大的面积(例如,在电路设计上的面积是功能块801的两倍)并且可以是与功能块801不同的类型。例如,功能块810可以是数字信号处理电路。
如图8所示,区域800可以包括20个功能块801,其中的每个功能块可以执行相同功能和/或不同功能。区域800内的20个功能块801例如可以占据大致相同的硬件面积。区域800还可以包括2.5个功能块810,其中的每个功能块也可以执行相同功能和/或不同功能。由于阴影功能块A是与功能块801相同类型(例如,尺寸)的功能块,因此块A的候选位置可以是(例如,可以仅是)其它功能块801的位置。功能块801的位置在本文中可以被称为位置801。位置在本文中可以被一般性地称为表示功能块放置的框。然而,位置可以被功能块占用或是未占用。例如,区域800内的任何位置801可以是用于功能块A的候选位置(包括阴影框A,其是功能块A的当前位置)。然而,区域800内的被功能块810占用的位置(在本文中也被类似地称为位置810)可以不是功能块A的候选位置。
类似地,功能块B当前可以放置在阴影框B处。为了优化沿着关键路径的功能块的放置,CAD工具420还可以生成用于功能块B的候选位置。功能块B的候选位置可以在邻域(例如,如由区域802所限定的)内。类似地,区域802可以是五乘五的功能块区域。区域802可以包括功能块812,功能块812与功能组810类似,因为当与功能块801比较时,功能块812可以占据两倍的硬件面积。由于功能块B与功能块801是相同类型的,所以功能块B的候选位置可以是区域802内的任何位置801。
此外,功能块C当前可以放置在阴影框C处。为了优化沿着关键路径的功能块的放置,CAD工具420还可以生成用于功能块C的候选位置。功能块C的候选位置可以在邻域(例如,如由区域804所限定的)内。类似地,区域804可以是五乘五的功能块区域。区域804可以包括功能块814,功能块814可以与功能组810或812类似,因为当与功能块801比较时,功能块814可以占据两倍的硬件面积。由于功能块B与功能块801是相同类型的,所以功能块B的候选位置可以是区域802内的任何位置801。
功能块A、B和C是与功能块801的类型相同的类型的示例仅仅是说明性的。如果需要,初始放置的功能块(例如,放置在阴影框A处的功能块A)可以是功能块801类型、功能块810类型、或功能块的任何其它适合的类型。然而,可以期望的是,对应的候选位置是与初始放置的功能块相同的类型。使用五乘五区域来表示初始放置的功能块A、B和C的邻域的示例仅仅是说明性的。如果需要,可以使用从其中选择候选位置的任何其它适合的区域。例如,可以使用三乘三区域、五乘五区域、非矩形区域等。作为另一示例,如果需要,初始放置的功能块的邻域可以不以初始放置的功能块的初始放置为中心。换言之,从其中选择候选位置的区域可以包括在偏离中心的位置处的初始放置的位置。
本文中,初始放置指的是在放置512之后的功能块放置,其生成了合法的放置的门级描述。换言之,初始放置的设计先于对缩短关键路径的放置的优化,如本实施例中所描述的。
如图8所示,区域800、802和804可以重叠。这样,用于每个功能块(例如,功能块A、B和C)的候选放置位置也可以重叠。换言之,特定功能块801可以是用于多个初始放置的功能块的候选位置(例如,用于初始放置的功能块A、B和C的候选位置)。如果需要,可以放置约束,以使得任何特定位置801可以至多是用于两个初始放置的功能块的候选位置。然而,重要的是注意到,至多仅初始放置的功能块的其中之一可以最终放置在候选位置处。“位置”(例如,子区域或槽801、810、812和814)通常可以指的是表示用于功能块放置的位置的框。例如,位置可以由功能块占用或是未占用。
标记为A、B和C的无阴影框仅是用于相应的初始放置的功能块(例如,初始放置在其相应的阴影框A、B和C)的候选位置。具有多字母名称的无阴影框(例如,AB、BA、AC、CA、BC、以及CB)可以是用于由字母名称所确定的初始放置的功能块的组合的候选位置。例如,标记为AB或BA的无阴影框可以是用于初始放置的功能块A或B的候选位置。类似地,标记为BC或CB的无阴影框可以是用于初始放置的功能块B或C的候选位置。标记为AC或CA的无阴影框可以是用于初始放置的功能块A或C的候选位置。如果多于两个功能块邻域与特定位置重叠,选择由该特定位置表示哪两个功能块候选位置可以使用任何适合的方法(例如,根据其它约束,使用启发式的、预定的)来确定。
图9A示出了可以在图1中的PLD 100上实现的示例性电路设计。每个位置(例如,每个框或每个矩形区域)可以表示用于电路设计内的功能块放置的可能位置。每个功能块可以被放置在电路设计内作为共有单元。具体而言,电路设计可以包括基于在放置步骤512期间执行的初始放置所计算的(例如,生成的)关键路径900。初始放置可以使功能块A放置在阴影框A处、功能块B放置在阴影框B处、功能块C放置在阴影框C处、功能块D放置在阴影框D处、功能块E放置在阴影框E处、以及功能块F放置在阴影框F处。根据电路设计内的功能块的放置,图4中的CAD工具420可以基于电路设计内的所有可能路径来确定关键路径或多个关键路径,如先前结合图6所描述的。
CAD工具420可以输出关键路径900作为可以被改进(例如,缩短)以增加最大操作频率Fmax的关键路径。关键路径900可以将功能块A、B、C、D和E耦合在一起。这样,通过移动功能块A、B、C、D和E,关键路径的长度可以被改变或者改进。非关键路径(例如,侧路径)也可以存在于电路设计内。具体而言,侧路径可以将附加的功能块连接到关键功能块(例如,功能块A、B、C、D或E)中的一个。例如,侧路径可能不如将被优化的关键路径那么关键。
CAD工具420还可以追踪在块A、B、C、D或E被移动时所实现的相关侧路径。换言之,功能块A、B、C、D或E的移动可以影响耦合到移动的功能块的所有路径(例如,改变其长度)。例如,侧路径902可以将功能块B耦合到功能块F。这样,当CAD工具420执行优化放置以通过移动初始放置在阴影框B处的功能块B来减小关键路径的长度时,侧路径902的长度也可以改变。
侧路径902的关键性(例如,如图6中所描述的)可以与功能块B可以被移动到哪里有关。换言之,侧路径902的关键性可以确定功能块B的可能的候选放置位置。例如,在初始放置之后并且在优化放置之前,路径900可以比902更关键。然而,可能不期望的是,如果通过CAD工具420执行放置优化,则侧路径902的关键性显著增加(例如,在放置优化之后,侧路径902变得比关键路径900更关键)。初始放置的功能块B的邻域内的某些位置可以被去除,不被考虑为可能的候选放置位置。例如,放置在阴影框B处的功能块B的邻域内的显著地远离功能块F的位置可以被去除,不被考虑为功能块B的可能的候选放置位置。
换言之,CAD工具可以在侧路径(例如,侧路径902)的更新的长度(例如,在可能的移动之后的长度)上放置约束,由此限制了用于对应的功能块(例如,功能块B)的候选位置。约束可以在侧路径上提供硬限制(例如,侧路径902的松弛必须至少为0)。然而,可以放松约束以提供用于改进最新的关键路径900的更多选项。由于基于关键路径执行放置优化可以是迭代的过程(例如,在每个迭代步骤处,递增地改进关键路径),所以约束的放松可以为随后的迭代步骤提供益处。
图9B示出了如图9A所示的示例性电路设计并且进一步包括用于关键路径900周围的功能块的可能候选位置。例如,CAD工具420可以生成(例如,分配、指定等)用于初始放置的功能块A(放置在阴影框A处)的候选位置A1。CAD工具420可以生成用于初始放置的功能块B(放置在阴影框B处)的候选位置B1、B2、B3、B4、B5。另外,功能块B可以与初始放置的功能块C(放置在阴影框C处)共享候选位置BC1、BC2和BC3。CAD工具420还可以生成用于功能块C的候选位置C1以及在初始放置的功能块C和功能块D(放置在阴影框D处)之间共享的候选位置CD1。功能块D还可以具有候选位置D1和与初始放置的功能块E(放置在阴影框E处)共享的候选位置DE1和DE2。另外,功能块E可以具有候选位置E1、E2、和E3。
每个初始放置的功能块的候选位置可以在由图4中的CAD工具420指定的邻域内。候选放置位置可以沿着关键路径,例如,因为沿着关键路径的候选位置更可能在更新的放置之后提供缩短的关键路径,其中更新的放置是在候选位置移动之后(例如,放置到对应的候选位置)发生的。
图9C示出了如图9B所示的示例性电路设计并且进一步包括关于功能块(本文中有时被称为功能单元)的占用的细节。本文中,功能块的占用可以指的是电路内的块所映射到的硬件资源当在图1中的PLD 100上被实施时是否已被使用。如图9C所示,由不同大小的框表示的功能块可以是阴影的或无阴影的。阴影框表示在初始放置之后(例如,在图5中的放置512之后)被占用的功能块。例如,功能块G(本文中有时被称为功能块910)是阴影的并且因此可以表示被占用的功能块。作为另一示例,功能块B1是无阴影的并且因此可以表示未占用的功能块。
当图4中的CAD工具420执行放置优化以缩短关键路径时,CAD工具420可以对更新的电路设计执行关键路径和侧路径长度分析以确定改进。作为示例,路径长度可以指的是沿着对应路径的延迟或与沿着对应路径的延迟成比例。由于侧路径的长度也与确定候选移动是否是可接受的或是否有资格作为改进有关,所以当将初始放置的功能块移动到对应的候选位置时,侧路径的长度可以被考虑。
重要的是注意到,如果候选位置是未占用的,当分析对应的功能块被移动到未占用的候选位置的场景时,以前的B1功能块的侧路径中没有侧路径可以被改变,因为候选位置B1先前是未占用的(即,“空的”)。例如,当功能块B被移动到候选位置B1时,不需要再进行进一步移动并且不需要考虑耦合到候选位置B1的侧路径。然而,仍可以考虑在移动之前耦合到功能块B的侧路径以检查耦合到功能块B的侧路径的关键性约束,以评估移动的可能性。
相比之下,当功能块B被移动到候选位置B2时,先前在位置B2处的占用的功能块可以被移动到阴影框B的位置。换言之,CAD工具420可以在位置B和B2处执行功能块之间的调换操作。同样通过移动先前在位置B2处的功能块,侧路径910的长度也可以改变并且可以被计算以确定交换的改进或可行性。作为示例,当CAD工具420将位置B2处的功能块移动到位置B时,侧路径910可以具有不可接受的松弛(由约束设置的)。如果需要,约束可以被放松以进一步考虑调换操作,如先前在图9A中所描述的。
可以在树表示中描绘候选放置位置和相关联的路径长度的考虑。图10示出了表示图9A-图9C所示的电路设计的部分树图。具体而言,树图1000(本文中有时被称为图形1000)可以包括节点,节点表示用于初始放置的功能块的候选放置位置。候选位置节点可以具有不同的级。
例如,第一级节点1002-1可以包括表示用于功能块A的候选位置(包括用于功能块A的初始放置的位置)的节点。第二级节点1002-2可以包括表示用于沿着图9中的关键路径900的在功能块A之后的功能块的候选位置(例如,用于功能块B的候选位置,包括用于功能块B的初始放置的位置)。类似地,第三级节点1002-3、第四级节点1002-4、以及第五级节点1002-5可以包括分别用于功能块C、D和E(以相继顺序)的对应的候选位置。关键路径可以具有位于第一级上的起点(例如,在第一级节点1002-1中的一个处)和位于第五级上的终点(例如,在第五级节点1002-5中的一个处)。以该方式配置的图形1000有时被称为“分级”图形。
边缘(或路径)可以将给定级的节点耦合到下一级的节点。长度值可以与每个边缘相关联。长度值可以表示由相应的边缘连接的两个节点之间的长度或距离。例如,A1-B5边缘的长度值可以相当于从放置在位置A1处的功能块A行进到放置在位置B5处的功能块B的信号的路径长度(例如,时间或延时)。仅当从合法的先前节点到合法的随后节点的路径包括合法的连接时可以存在边缘。例如,在之前在如图9C所示的B2处的功能块在调换操作期间(例如,由于约束或硬限制)不能被移动到图9中的位置B的情景中,节点1110可以表示不合法的节点或不合法的候选位置。不合法的节点以及其所有连接(例如,与节点A和A1的连接)可以从树图1000中被去除。这种对树的修正/修剪可以帮助使放置优化的计算强度最小化。
先前级中的节点与随后级中的同一节点之间的路径可能是不合法的。例如,路径1004可以不存在于树图1000中,因为级1002-2中的节点BC2不能连接到级1002-3中的其本身。如先前所描述的,由多个功能块共享的候选位置可以最终仅仅是用于至多一个功能块的放置位置。因此,使用级1002-2中的节点BC2来遍历树(其表示在位置BC2处放置功能块B),去除了同样在位置BC2处放置功能块C的可能性。出于类似的理由,路径1006和1008可以从树图1000中被省略。
重要的是注意到,部分图形1000省略了在完整图形中可以存在的一些路径以找到最短路径。例如,节点B5可以耦合到级1002-3上的一些节点。这些路径被省略以防止不必要地模糊当前实施例。
为了缩短或最小化图9中的关键路径900,CAD工具420可以遍历树图100以找到从第一级1002-1到第五级1002-5的最短路径。如果需要,CAD工具420可以对树1000执行宽度优先遍历(例如,宽度优先搜索),同时追踪最佳总路径长度(例如,最短路径长度、最低延时路径等)和用于在每个级之后获得最佳总路径长度的先前节点。
例如,在第二级1002-2的宽度优先遍历期间,CAD工具420可以通过访问第二级1002-2的全部节点(例如,通过计算取决于第二级1002-2中的每个节点的长度)来追踪取决于第二级1002-2的最佳总路径长度。CAD工具420还可以追踪生成最佳总路径长度的来自第一级1002-1的先前节点。级1002-3、1002-4、和1002-5可以类似地被遍历。在第五级1002-5处,可以记录总体最佳路径长度。最终遍历可以生成对总体最佳路径长度有贡献的每个先前节点。因此,功能块可以被放置在对应的节点处(例如,在对应的候选放置位置处)以提供具有总体最佳路径长度的缩短的关键路径。
该过程可以迭代地执行以连续地缩短最新的(例如,待审核的)关键路径。例如,在使用图10的树1000来缩短图9C中的路径900之后,图4中的CAD工具420可以识别附加的关键路径或将被缩短的附加的关键路径。
图11是用于使用逻辑设计系统(例如,图4中的CAD工具420)来基于识别的关键路径执行电路设计的放置优化的说明性步骤的流程图。
在步骤1100,CAD工具420(特别是图4中的放置工具476)可以执行用于电路设计的放置(例如,本文中定义为初始放置或图5中的放置步骤512),该放置生成电路设计中的合法的放置的功能块。
在步骤1102,CAD工具420(特别是定时分析工具)可以对初始放置的电路设计(例如,初始放置的电路)执行定时分析。换言之,定时分析工具可以确定任何两个对应的功能块之间或针对两引脚网的延迟或延时。例如,定时分析工具可以生成电路设计内的所有两引脚网的延迟或路径长度。作为另一示例,定时工具可以生成仅用于电路设计内的所有两引脚网或功能块对的适合的子集的延迟或路径长度。
在步骤1104,CAD工具420可以确定在其上执行定时分析的所有两引脚网的关键性。CAD工具420可以使用关键性阈值来确定电路设计内的关键路径。例如,关键性阈值可以是预先选择的或用户选择的。硬延迟限制(或类似的松弛限制、关键限制)还可以被放置在所有非关键路径或侧路径上。
可选地在步骤1106,可以由CAD工具420放松硬延迟限制(例如,硬延迟限制可以被增加至少5%、至少10%或多于20%等),以为步骤1108做准备。通过放松施加在侧路径上的硬延迟限制,更多候选位置选项可以是可用的以缩短关键路径。
在步骤1108,CAD工具420可以优化(例如,缩短或最终缩短)用于关键路径的延迟。优化过程可以包括步骤1114-1122并且可选地包括步骤1110和1112。
在优化过程期间,在步骤1110的识别候选放置位置之前,耦合到沿着关键路径的功能块的功能块或节点(例如,邻近的功能块)可以可选地被移动到更接近关键路径。通过将邻近的功能块移动到更接近关键路径,沿着关键路径的功能块的候选位置的灵活性增加,这是因为邻近的功能块的移动增加了对应的侧路径的松弛(例如,侧路径将邻近的功能块耦合到沿着关键路径的功能块)。
在优化过程期间,第一侧路径可以可选地以与在步骤1112优化关键路径的方式类似的方式被优化。侧路径的优化还帮助增加了经优化的侧路径的松弛,这在随后优化更多关键路径时增大了候选位置的灵活性。
在步骤1114,图4中的CAD工具420可以生成用于关键功能块(例如,沿关键路径耦合的功能块)的候选位置。在优化侧路径的情景中(如在步骤1112中),可以生成用于沿侧路径耦合的功能块的候选位置。例如,可以生成用于如图9B中所描述的关键功能块A、B、C、D和E的候选位置。
在步骤1116,CAD工具420可以排除可以引起延迟限制违反的任何候选位置。例如,因为关键功能块B移动至位置B2并且B2中的功能块移动至B的位置可以引起图9中的路径910上的延迟限制违反,所以可以去除图10中的节点1110以及对应的候选位置B2。
在步骤1118,CAD工具420可以基于候选位置、关键功能块、侧路径限制以及其它限制来生成分级图形(即,具有多个级的图形,例如,图10的图形1000)。分级图形的每个级的节点可以表示用于每个相应的关键功能块的候选位置,如图10中所描述的。
在步骤1120,CAD工具420可以遍历分级图形以求解最短总体路径。例如,可以使用宽度优先搜索来遍历图形1000以求解从第一级1002-1到第五级1002-5的短路径。
在使用宽度优先搜索进行遍历之后,CAD工具420还可以追踪组成最短总体路径的节点。在步骤1122,可以将关键功能块放置在与组成最短总体路径的节点对应的候选位置处。如图9C中所描述的任何调换操作还可以作为更新的放置的结果而发生。
在步骤1124,如果电路设计的最大操作频率Fmax(例如,基于最关键的路径的延迟而确定的)提高,则电路的更新的放置被缓存。
在步骤1126,为了确定随后的迭代是否是必需的,可以将基于更新的放置的最大操作频率Fmax的提高与标准值进行比较。如果提高大于标准值,则对最大操作频率Fmax的提高可能是不可忽略的。因此,在随后的迭代中的提高可以是有可能的。使用路径1128向步骤1102提供更新的放置以用于进行下一个迭代。如果提高小于标准值,则对最大操作频率Fmax的提高可能是可以忽略的。因此,CAD工具420可以进行至步骤1130,在步骤1130期间,选择由电路设计内的功能块实施的最佳的被缓存的放置。
通过以该方法执行放置优化,可以针对逻辑设计内的不同应用(例如,缩短侧路径、缩短关键路径、迭代地缩短任何适合的路径、递增地增加最大操作频率等)来定制放置优化。可以以资源高效且定时优化的方式对逻辑设计做出放置优化,因为该设计在物理上被合成,具有增加的多功能性,以满足整个设计的合法性规范。换言之,系统156可以识别多个功能块并且通过迭代地减小多个功能块之间的延迟来提高电路设计的全局操作频率。
本文中所描述的方法和装置可以被并入任何适合的电子器件或者电子器件的系统中。例如,方法和装置可以被并入许多类型的器件,例如,微处理器或者其它IC。示例性IC包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、专用标准产品(ASSP)、专用集成电路(ASIC)、数字信号处理器(DSP)、图形处理单元(GPU),这仅给出若干示例。
可编程逻辑器件可以用于执行各种不同的逻辑功能。例如,可编程逻辑器件可以被配置作为与系统处理器协同工作的处理器或者控制器。可编程逻辑器件还可以用作用于仲裁对数据处理系统中的共享资源的访问的仲裁器。而在另一个示例中,可编程逻辑器件可以被配置作为处理器与系统中的其它部件之一之间的接口。
本文中所描述的集成电路可以是包括以下部件中的一个或多个的数据处理系统的一部分:处理器、存储器、I/O电路以及外围设备。集成电路可以用于各种各样的应用中,例如,计算机网络连接、数据网络连接、仪器仪表、视频处理、数字信号处理、或者其中期望的是使用提供保持能力的重置值的互连电路的优点的任何适合的其它应用。
虽然以特定的顺序描述了方法操作,但是应该理解的是,可以在所描述的操作之间执行其它操作,可以调整所描述的操作以使它们在稍微不同的时间发生或者可以将所描述的操作分布在允许在与处理相关联的各种间隔发生处理操作的系统中,只要覆盖操作的处理是以期望的方法被执行。
前述仅是对本发明的原理的说明,并且可以由本领域技术人员做出各种修改,而不脱离发明的范围和精神。
Claims (25)
1.一种操作设计工具的方法,所述设计工具在逻辑设计计算设备上运行以实施电路设计,所述方法包括:
将多个功能块放置在所述电路设计中;
识别链接所述多个功能块的关键路径;
识别用于所述关键路径中的所述多个功能块中的每个功能块的候选放置位置;
生成分级图形,所述分级图形表示将用于所述多个功能块中的第一功能块的候选放置位置链接到用于所述多个功能块中的第二功能块的候选放置位置的可能路径;以及
分析所述分级图形以识别更新的关键路径。
2.根据权利要求1所述的方法,还包括:
根据所述更新的关键路径,更新所述多个功能块的放置。
3.根据权利要求2所述的方法,还包括:
判断所述更新的关键路径是否改进了所述电路设计的性能;以及
响应于确定所述更新的关键路径改进了所述电路设计的性能,对所述多个功能块的更新的放置进行缓存。
4.根据权利要求3所述的方法,还包括:
响应于确定所述更新的关键路径改进了所述电路设计的性能,识别所述电路设计中的新的关键路径。
5.根据权利要求1所述的方法,其中,识别链接所述多个功能块的所述关键路径包括针对所述电路设计中的每个互连对延迟松弛的量进行估计,并且其中,链接所述多个功能块的所述关键路径展示了低于预先确定的阈值的延迟松弛的累积量。
6.根据权利要求1-5中任一项所述的方法,还包括:
针对连接至所述多个功能块的侧路径计算硬延迟限制。
7.根据权利要求6所述的方法,还包括:
放松所计算的硬延迟限制以增加所述候选放置位置的数量。
8.一种操作设计工具的方法,所述设计工具在逻辑设计计算设备上运行以实施电路设计,所述方法包括:
将多个功能块放置在所述电路设计中;
识别链接所述多个功能块的关键路径;
识别用于所述关键路径中的所述多个功能块中的每个功能块的候选放置位置;
生成分级图形,所述分级图形表示将用于所述多个功能块中的第一功能块的候选放置位置链接到用于所述多个功能块中的第二功能块的候选放置位置的可能路径;以及
通过求解与所述分级图形相关联的最短路径问题来识别所述分级图形内的缩短的关键路径。
9.根据权利要求8所述的方法,还包括:
将直接连接至所述多个功能块中的给定功能块的额外功能块移动到接近多个功能块中的所述给定功能块,以增加用于所述多个功能块中的所述给定功能块的所述候选放置位置的数量。
10.根据权利要求8所述的方法,其中,第一额外功能块位于用于所述多个功能块中的给定功能块的所述候选放置位置的其中之一处,并且其中,第二额外功能块直接连接至所述第一额外功能块,所述方法还包括:
将所述第二额外功能块移动到接近所述第一额外功能块,以增加用于所述多个功能块中的所述给定功能块的所述候选放置位置的数量。
11.根据权利要求8所述的方法,还包括:
针对连接至位于所述候选放置位置中的给定候选放置位置的额外功能块的侧路径计算硬延迟限制。
12.根据权利要求11所述的方法,还包括:
如果移动所述额外功能块违反所计算的硬延迟限制,则排除所述候选放置位置中的所述给定候选放置位置。
13.根据权利要求8所述的方法,其中,所述分级图形包括多个级,每个级对应于所述多个功能块中的相应的功能块,其中,所述多个级中的第一级包括用于所述多个功能块中的所述第一功能块的所识别的候选放置位置,并且其中,所述多个级中的第二级包括用于所述多个功能块中的所述第二功能块的所识别的候选放置位置,所述方法还包括:
排除所述分级图形中的将所述第一级中的给定候选放置位置连接至所述第二级中的所述给定候选放置位置的路径。
14.根据权利要求8-13中任一项所述的方法,其中:
所述分级图形包括多个级,每个级对应于所述多个功能块中的相应的功能块;
所述多个级中的第一级包括用于所述多个功能块中的所述第一功能块的所识别的候选放置位置;
所述多个级中的第二级包括用于所述多个功能块中的所述第二功能块的所识别的候选放置位置;
所述关键路径具有位于所述第一级中的起点并且具有位于所述第二级中的终点;并且
识别所述分级图形内的所述缩短的关键路径包括求解将所述第一级链接至所述第二级的最短路径。
15.根据权利要求14所述的方法,其中,求解将所述第一级链接至所述第二级的所述最短路径包括执行宽度优先搜索。
16.一种操作设计工具的方法,所述设计工具在逻辑设计计算设备上运行以实施电路设计,所述方法包括:
将多个功能块放置在所述电路设计中;
识别链接所述多个功能块的关键路径;以及
识别用于所述关键路径中的所述多个功能块中的选定功能块的候选放置位置,其中,所识别的放置位置中的第一候选放置位置被另一个功能块占用,并且其中,所识别的放置位置中的第二候选放置位置是未占用的。
17.根据权利要求16所述的方法,还包括:
将所述选定功能块移动至所述第二候选放置位置。
18.根据权利要求16所述的方法,还包括:
将所述选定功能块的位置与所述另一个功能块的位置交换。
19.根据权利要求18所述的方法,还包括:
如果将所述选定功能块的位置与所述另一个功能块的位置交换违反了定时准则,则从所述候选放置位置中去除所述第一候选放置位置。
20.根据权利要求16-19中任一项所述的方法,其中,所述候选放置位置的其中之一充当用于所述多个功能块中的至多两个功能块的候选放置位置。
21.一种集成电路设计工具,在逻辑设计计算设备上运行以实施电路设计,所述集成电路设计工具包括:
用于将多个功能块放置在所述电路设计中的模块;
用于识别链接所述多个功能块的关键路径的模块;
用于识别用于所述关键路径中的所述多个功能块中的每个功能块的候选放置位置的模块;
用于生成分级图形的模块,所述分级图形表示将用于所述多个功能块中的第一功能块的候选放置位置链接到用于所述多个功能块中的第二功能块的候选放置位置的可能路径;以及
用于分析所述分级图形以识别更新的关键路径的模块。
22.根据权利要求21所述的集成电路设计工具,还包括:
用于根据所述更新的关键路径来更新所述多个功能块的放置的模块;
用于判断所述更新的关键路径是否改进了所述电路设计的性能的模块;
用于响应于确定所述更新的关键路径改进了所述电路设计的性能而对所述多个功能块的更新的放置进行缓存的模块;以及
用于响应于确定所述更新的关键路径改进了所述电路设计的性能而识别所述电路设计中的新的关键路径的模块。
23.根据权利要求21所述的集成电路设计工具,其中,用于识别链接所述多个功能块的所述关键路径的模块包括用于针对所述电路设计中的每个互连对延迟松弛的量进行估计的模块,并且其中,链接所述多个功能块的所述关键路径展示了低于预先确定的阈值的延迟松弛的累积量。
24.根据权利要求21-23中任一项所述的集成电路设计工具,还包括:
针对连接至所述多个功能块的侧路径计算硬延迟限制。
25.根据权利要求24所述的集成电路设计工具,还包括:
用于放松所计算的硬延迟限制以增加所述候选放置位置的数量的模块。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662406877P | 2016-10-11 | 2016-10-11 | |
US62/406,877 | 2016-10-11 | ||
US15/391,511 | 2016-12-27 | ||
US15/391,511 US10318686B2 (en) | 2016-10-11 | 2016-12-27 | Methods for reducing delay on integrated circuits by identifying candidate placement locations in a leveled graph |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107918694A true CN107918694A (zh) | 2018-04-17 |
CN107918694B CN107918694B (zh) | 2024-04-16 |
Family
ID=61830392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710941717.XA Active CN107918694B (zh) | 2016-10-11 | 2017-10-11 | 用于减少集成电路上的延迟的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10318686B2 (zh) |
EP (1) | EP3343413A3 (zh) |
CN (1) | CN107918694B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117634383A (zh) * | 2023-12-26 | 2024-03-01 | 苏州异格技术有限公司 | 关键路径延时优化方法、装置、计算机设备及存储介质 |
CN117634383B (zh) * | 2023-12-26 | 2024-06-07 | 苏州异格技术有限公司 | 关键路径延时优化方法、装置、计算机设备及存储介质 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628625B2 (en) * | 2016-04-08 | 2020-04-21 | Synopsys, Inc. | Incrementally distributing logical wires onto physical sockets by reducing critical path delay |
US10339241B1 (en) * | 2016-05-13 | 2019-07-02 | Altera Corporation | Methods for incremental circuit design legalization during physical synthesis |
US10445456B1 (en) * | 2017-06-14 | 2019-10-15 | Xilinx, Inc. | Incremental routing for circuit designs using a SAT router |
US11675948B2 (en) * | 2017-09-29 | 2023-06-13 | Intel Corporation | Methods and apparatus for profile-guided optimization of integrated circuits |
US10558775B2 (en) * | 2017-12-20 | 2020-02-11 | International Business Machines Corporation | Memory element graph-based placement in integrated circuit design |
US10565334B1 (en) * | 2017-12-20 | 2020-02-18 | Xilinx, Inc. | Targeted delay optimization through programmable clock delays |
US11163530B2 (en) * | 2018-01-12 | 2021-11-02 | Intel Corporation | Programmable-logic-directed multiplier mapping |
US11030367B2 (en) | 2019-09-11 | 2021-06-08 | International Business Machines Corporation | Out-of-context feedback hierarchical large block synthesis (HLBS) optimization |
US11301611B2 (en) * | 2019-12-19 | 2022-04-12 | Intel Corporation | Deterministic clustering and packing method for random logic on programmable integrated circuits |
US20200293707A1 (en) * | 2020-06-01 | 2020-09-17 | Intel Corporation | Programmable integrated circuit underlay |
CN115168528B (zh) * | 2022-08-26 | 2023-03-17 | 北京国科恒通科技股份有限公司 | 一种设备线路图的生成方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040025129A1 (en) * | 2002-07-31 | 2004-02-05 | Batchelor Dennis B. | System and methods for pre-artwork signal-timing verification of an integrated circuit design |
US20090132981A1 (en) * | 2007-11-16 | 2009-05-21 | Alpert Charles J | Method for Incremental, Timing-Driven, Physical-Synthesis Using Discrete Optimization |
CN104020756A (zh) * | 2014-05-22 | 2014-09-03 | 国电南瑞科技股份有限公司 | 一种故障诊断系统的逻辑网络拓扑排序和存储方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5508937A (en) | 1993-04-16 | 1996-04-16 | International Business Machines Corporation | Incremental timing analysis |
US6120550A (en) * | 1996-10-28 | 2000-09-19 | Altera Corporation | Design file templates for implementation of logic designs |
US6295517B1 (en) | 1998-04-07 | 2001-09-25 | Synopsis, Inc. | Method and apparatus for adaptively or selectively choosing event-triggered cycle-based simulation or oblivious-triggered cycle-based simulation on a cluster-by-cluster basis |
US6334205B1 (en) | 1999-02-22 | 2001-12-25 | International Business Machines Corporation | Wavefront technology mapping |
AU2002257367A1 (en) * | 2000-12-14 | 2002-08-06 | Yu-Liang Wu | System and method for alternative wiring using pre-analyzed patterns |
US7219048B1 (en) * | 2001-01-02 | 2007-05-15 | Magma Design Automation, Inc. | Methodology and applications of timing-driven logic resynthesis for VLSI circuits |
US20030105617A1 (en) | 2001-12-05 | 2003-06-05 | Nec Usa, Inc. | Hardware acceleration system for logic simulation |
US6721926B2 (en) | 2002-01-25 | 2004-04-13 | Intel Corporation | Method and apparatus for improving digital circuit design |
WO2005119532A2 (en) * | 2004-06-04 | 2005-12-15 | The Regents Of The University Of California | Low-power fpga circuits and methods |
US7861190B1 (en) * | 2005-03-17 | 2010-12-28 | Altera Corporation | Power-driven timing analysis and placement for programmable logic |
US7284228B1 (en) * | 2005-07-19 | 2007-10-16 | Xilinx, Inc. | Methods of using ant colony optimization to pack designs into programmable logic devices |
US7437697B2 (en) | 2005-12-16 | 2008-10-14 | International Business Machines Corporation | System and method of criticality prediction in statistical timing analysis |
US8453083B2 (en) | 2006-07-28 | 2013-05-28 | Synopsys, Inc. | Transformation of IC designs for formal verification |
CA2782142A1 (en) * | 2009-12-01 | 2011-06-09 | Queen's University At Kingston | Method and system for a run-time reconfigurable computer architecture |
US9317641B2 (en) * | 2010-09-13 | 2016-04-19 | Oracle International Corporation | Gate substitution based system and method for integrated circuit power and timing optimization |
US8589846B2 (en) | 2011-12-02 | 2013-11-19 | Synopsys, Inc. | Modeling transition effects for circuit optimization |
EP3333735B1 (en) * | 2016-12-12 | 2021-07-07 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Method and computer program for determining a placement of at least one circuit for a reconfigurable logic device |
-
2016
- 2016-12-27 US US15/391,511 patent/US10318686B2/en active Active
-
2017
- 2017-10-11 CN CN201710941717.XA patent/CN107918694B/zh active Active
- 2017-12-14 EP EP17207534.3A patent/EP3343413A3/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040025129A1 (en) * | 2002-07-31 | 2004-02-05 | Batchelor Dennis B. | System and methods for pre-artwork signal-timing verification of an integrated circuit design |
US20090132981A1 (en) * | 2007-11-16 | 2009-05-21 | Alpert Charles J | Method for Incremental, Timing-Driven, Physical-Synthesis Using Discrete Optimization |
CN104020756A (zh) * | 2014-05-22 | 2014-09-03 | 国电南瑞科技股份有限公司 | 一种故障诊断系统的逻辑网络拓扑排序和存储方法 |
Non-Patent Citations (1)
Title |
---|
潘日华, 童家榕, 唐璞山: "时序功能块的提取", 计算机辅助设计与图形学学报, no. 01 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117634383A (zh) * | 2023-12-26 | 2024-03-01 | 苏州异格技术有限公司 | 关键路径延时优化方法、装置、计算机设备及存储介质 |
CN117634383B (zh) * | 2023-12-26 | 2024-06-07 | 苏州异格技术有限公司 | 关键路径延时优化方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107918694B (zh) | 2024-04-16 |
EP3343413A2 (en) | 2018-07-04 |
US20180101624A1 (en) | 2018-04-12 |
EP3343413A3 (en) | 2018-07-11 |
US10318686B2 (en) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107918694A (zh) | 用于减少集成电路上的延迟的方法 | |
CN104573169B (zh) | 以自动流水线操作能力设计集成电路的方法和工具 | |
US8935642B1 (en) | Methods for single pass parallel hierarchical timing closure of integrated circuit designs | |
US7941776B2 (en) | Method of IC design optimization via creation of design-specific cells from post-layout patterns | |
CN106503282A (zh) | 集成电路设计的增量寄存器重定时 | |
Lakshmanna et al. | Perimeter degree technique for the reduction of routing congestion during placement in physical design of VLSI circuits | |
US20050268258A1 (en) | Rule-based design consultant and method for integrated circuit design | |
US9589090B1 (en) | Method and apparatus for performing multiple stage physical synthesis | |
US7409658B2 (en) | Methods and systems for mixed-mode physical synthesis in electronic design automation | |
US9443050B2 (en) | Low-voltage swing circuit modifications | |
US11030383B2 (en) | Integrated device and method of forming the same | |
Alpert et al. | Placement: Hot or not? | |
CN108073762A (zh) | 用于利用经延迟的初始化来验证经重定时的电路的方法 | |
CN106096070A (zh) | 使用去填充和再填充操作来实现集成电路设计 | |
Chen et al. | Simultaneous timing driven clustering and placement for FPGAs | |
Mitra et al. | System-level routing of mixed-signal ASICs in WREN | |
Coudert | Timing and design closure in physical design flows | |
Pandini et al. | Congestion-aware logic synthesis | |
Modi et al. | ECO-map: Technology remapping for post-mask ECO using simulated annealing | |
Murali et al. | ART-3D: Analytical 3D placement with reinforced parameter tuning for monolithic 3D ICs | |
CN111611762A (zh) | 一种具有层次结构的集成电路的优化方法、系统及存储介质 | |
Vidal Obiols | Algorithmic techniques for physical design: macro placement and under-the-cell routing | |
GC et al. | Physical Design, Power and Area Optimization of High Frequency Block at Smaller Technology Node | |
Lienig et al. | Methodologies for Physical Design: Models, Styles, Tasks, and Flows | |
Prasad et al. | Analysis, Physical Design and Power Optimization of Design Block at Lower Technology Node |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |