CN110192192B - 用于电路设计的基于神经网络的物理综合 - Google Patents
用于电路设计的基于神经网络的物理综合 Download PDFInfo
- Publication number
- CN110192192B CN110192192B CN201780083720.0A CN201780083720A CN110192192B CN 110192192 B CN110192192 B CN 110192192B CN 201780083720 A CN201780083720 A CN 201780083720A CN 110192192 B CN110192192 B CN 110192192B
- Authority
- CN
- China
- Prior art keywords
- neural network
- signal path
- optimization
- physical synthesis
- network models
- 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
- 238000013461 design Methods 0.000 title claims abstract description 123
- 230000015572 biosynthetic process Effects 0.000 title claims abstract description 87
- 238000003786 synthesis reaction Methods 0.000 title claims abstract description 87
- 238000013528 artificial neural network Methods 0.000 title description 34
- 238000005457 optimization Methods 0.000 claims abstract description 186
- 238000003062 neural network model Methods 0.000 claims abstract description 135
- 238000012545 processing Methods 0.000 claims abstract description 30
- 238000000034 method Methods 0.000 claims description 69
- 238000003860 storage Methods 0.000 claims description 24
- 238000012549 training Methods 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 21
- 230000006872 improvement Effects 0.000 claims description 15
- 230000015654 memory Effects 0.000 description 32
- 230000008569 process Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 210000004027 cell Anatomy 0.000 description 6
- 238000003491 array Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000001364 causal effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/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/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
- 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/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/39—Circuit design at the physical level
-
- 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)
- Design And Manufacture Of Integrated Circuits (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
- Prostheses (AREA)
- Tone Control, Compression And Expansion, Limiting Amplitude (AREA)
Abstract
用于电路设计的物理综合可以包括:使用处理器确定(320)与不满足时序要求的电路设计的信号路径有关的特征,使用处理器通过第一神经网络模型处理(330)所述特征,所述第一神经网络模型被训练成指示第一物理综合优化的有效性,以及使用处理器,基于来自所述第一神经网络模型的结果,选择性地执行(335,340)所述信号路径的第一物理综合优化。
Description
技术领域
本发明涉及集成电路(IC),更具体地,涉及用于适配于在IC内实施的电路设计的物理综合。
背景技术
集成电路(IC)可以被实现为执行各种功能。可以对某些IC进行编程以执行指定的功能。可编程的IC的一个示例是现场可编程门阵列(FPGA)。FPGA通常包括可编程单元阵列。这些可编程贴片可包括例如输入/输出模块(IOB),可配置逻辑模块(CLB),专用随机存取存储器模块模模块(BRAM),乘法器,数字信号处理模块模模块(DSP),处理器,时钟管理器,延迟锁相环(DLL),等等。
每个可编程单元通常包括可编程互连电路和可编程逻辑电路。可编程互连电路通常包括由可编程互连点(PIP)互连的大量不同长度的互连线。可编程逻辑电路使用可编程元件实现用户设计的逻辑,该可编程元件可包括例如函数发生器,寄存器,算术逻辑等。
可编程互连和可编程逻辑电路通常通过将配置数据流加载到内部配置存储器单元中来编程,所述内部配置存储器单元限定如何配置可编程元件。可以从存储器(例如,从外部PROM)读取配置数据,或者通过外部设备将配置数据写入FPGA。然后,各个存储器单元的集体状态确定FPGA的功能。
另一种类型的可编程IC是复杂可编程逻辑器件或简称为CPLD。CPLD包括通过互连开关矩阵连接在一起的两个或更多个“功能模块”以及输入/输出(I/O)资源。CPLD的每个功能模块包括两级AND/OR结构,类似于可编程逻辑阵列(PLA)和可编程阵列逻辑(PAL)器件中使用的结构。在CPLD中,配置数据通常被存储在非易失性存储器中。在某些CPLD中,配置数据被存储在片内非易失性存储器中,然后作为初始配置(编程)序列的一部分下载到易失性存储器中。
对于所有这些可编程IC,器件的功能由数据比特(databits)控制,称为配置比特流,为此目的提供给器件。所述数据比特可以被存储在易失性存储器(例如,静态存储器单元,如在FPGA和一些CPLD中的那些)、非易失性存储器(例如,FLASH存储器,如在一些CPLD中的那些)、或任何其他类型的存储器单元中。
其他可编程IC可以通过应用诸如金属层的处理层来编程,该处理层可编程地互连器件上的各种元件。这些可编程IC称为掩膜可编程器件。可编程IC也可以以其他方式实现,例如,使用熔丝或反熔丝技术。短语“可编程IC”可以包括但不限于这些器件,并且还可以包括仅部分可编程的器件。例如,一种类型的可编程IC包括硬编码晶体管逻辑和可编程交换结构的组合,其可编程地互连硬编码的晶体管逻辑。
创建用于在诸如FPGA之类的可编程IC中实现的电路设计是一个复杂的过程。这种复杂性的一个原因是通常为电路设计提出的激进的时序要求,称为“时序约束(timingconstraint)”。设计人员花费了大量时间来尝试创建满足这些激进时序约束的电路设计。
通常,电路设计的时序可被表示为基于每个信号路径(路径)的裕量测量。关于电路设计,“裕量(slack)”,对于电路设计来说,是指对于路径中,信号到达电路元件处所需要的时间(例如,从驱动器到达网络的负载的信号)和对于该路径的信号到达电路元件处的估计时间之间的差异。正裕量表示路径满足对于路径的时序要求。所述信号被估计为可在由时序要求指定的所需到达时间之前到达目的地。负裕量表示路径不满足对于路径的时序要求。所述信号被估计为在时序要求指定的所需到达时间之后到达目的地。
发明内容
一个或多个实施例涉及用于电路设计的物理综合的方法。在一个方面,一种方法可以包括使用处理器确定与电路设计的信号路径不满足时序要求有关的特征,使用处理器通过第一神经网络模型处理特征,所述第一神经网络模型被训练成指示第一物理综合优化的有效性,并且使用处理器,基于来自第一神经网络模型的结果,选择性地执行所述信号路径的第一物理综合优化。
可选地,该方法还可以包括通过训练的第二神经网络模型处理特征以指示第二物理综合优化的有效性,并且基于来自所述第二神经网络模型的结果选择性地将第二物理综合优化应用于所述信号路径。
可选地,响应于确定来自第一神经网络模型的结果超过阈值,可以对信号路径执行第一物理综合优化。
可选地,该方法还可以包括至少部分地基于通过应用所述第一物理综合优化而对多个训练电路设计的时序关键信号路径的裕量的改善,训练所述第一神经网络模型。
可选地,可以对所述信号路径的特征进行归一化,并将其作为输入提供给第一神经网络模型。
可选地,信号路径的特征可以包括信号路径的多个负载引脚。
可选地,信号路径的特征可以包括信号路径的驱动器的多个引脚。
可选地,信号路径的特征可以包括信号路径的驱动器的电路元件类型。
可选地,该方法还可以包括在将第一物理综合优化应用于信号路径之前执行多个神经网络模型,其中每个神经网络模型可以对应于特定的物理综合优化并且基于执行多个神经网络模型的结果选择第一物理综合优化。
可选地,可以从执行多个神经网络模型来确定将至少两个物理综合优化应用于信号路径的顺序。
一个或多个实施例涉及用于电路设计的物理综合的系统。在一个方面,一种系统包括被配置成启动可执行操作的处理器。可执行操作包括确定与电路设计的信号路径不满足时序要求有关的特征,通过第一神经网络模型处理特征,其中训练第一神经网络模型以指示第一物理综合优化的有效性,以及基于来自第一神经网络模型的结果,选择性地执行信号路径的第一物理综合优化。
可选地,响应于确定来自第一神经网络模型的结果超过阈值,可以针对信号路径执行第一物理综合优化。
可选地,信号路径的特征可以被归一化并且作为输入提供给第一神经网络模型。
可选地,信号路径的特征可以包括信号路径的多个负载引脚。
可选地,信号路径的特征可以包括信号路径的驱动器的多个引脚。
可选地,信号路径的特征可以包括信号路径的驱动器的电路元件类型。
可选地,处理器可以被配置为发起可执行操作,还包括在将第一物理综合优化应用到所述信号路径之前执行多个神经网络模型,其中每个神经网络模型对应于特定的物理综合优化,以及基于执行多个神经网络模型的结果选择第一物理综合优化。
可选地,可以通过执行多个神经网络模型来确定应用至少两个物理综合优化到所述信号路径的顺序。
一个或多个实施例涉及用于电路设计的物理综合的计算机程序产品。在一个方面,一种计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质上存储有程序代码,所述程序代码可由处理器执行以执行操作,所述操作包括使用处理器确定与电路设计的信号路径不满足时序要求有关的特征,使用处理器通过第一神经网络模型处理所述特征,其中第一训练神经网络模型被训练成指示第一物理综合优化的有效性,并且使用处理器基于来自第一神经网络模型的结果选择性地执行所述信号路径的第一物理综合优化。
可选地,响应于确定来自第一神经网络模型的结果超过阈值,可以针对信号路径执行第一物理综合优化。
提供本发明内容部分,仅仅是为了介绍某些概念而不是确定所要求保护的主题的任何关键或必要特征。根据附图和以下详细描述,本发明装置的其他特征将是显而易见的。
附图说明
在附图中以示例的方式示出了本发明性布置。然而,附图不应被解释为将本发明的布置限定于所示的特定实施方式。通过阅读以下详细描述并参考附图,各个方面和优点将变得显而易见。
图1示出了用于执行物理综合的示例性系统。
图2示出了生成神经网络模型的示例性方法。
图3示出了执行物理综合的示例性方法。
具体实施方式
虽然本公开内容以限定新颖特征的权利要求作为结论,但是相信通过结合附图考虑说明书将更好地理解本公开内容中描述的各种特征。本文描述的过程,机器,产品及其任何变型是出于说明的目的而提供的。本公开内容中描述的具体结构和功能细节不应被解释为限制,而仅仅作为权利要求的基础,并且作为教导本领域技术人员以各种方式利用在任何适当地详细阐述的结构中描述的特征的代表性基础。此外,本公开内容中使用的术语和短语不打算作为限制,而是提供对所描述的特征的可理解的说明。
本公开内容涉及集成电路(IC),并且更具体地,涉及用于电路设计的物理综合。一个或多个实施例涉及使用人工神经网络来对于电路设计执行物理综合过程。电路设计适用于IC内的实施方案。例如,电路设计可以在可编程IC,专用IC(ASIC)等IC中实现。可编程IC的示例可以包括但不限于现场可编程门阵列(FPGA),复杂可编程逻辑器件(CPLD),片上系统,其特征在于包括适合于执行程序代码的处理器和可编程电路等。
人工神经网络,或简称为“神经网络”,是指根据生物脑建模的计算体系结构。在神经网络内,被称为神经元的节点可以互连并共同操作以处理输入数据。不同类型的神经网络的示例包括但不限于卷积神经网络,递归神经网络,深信念网络,受限玻尔兹曼机等。神经网络可用于从复杂输入数据中提取“特征”。神经网络可包括多个层。每个层可以接收输入数据并通过处理加到所述层的输入数据来生成输出数据。
当在IC内实现电路设计时,电子设计自动化(EDA)系统通过设计流程处理电路设计。术语“设计流程(design flow)”意味着在电路设计上执行诸如综合,映射,布局和布线的操作。EDA系统还可以执行配置比特流生成作为设计流程的一部分,以便将配置比特流加载到各种类型的IC中。在设计流程结束时或接近结束时,例如,在放置之后,EDA系统,或另一设计工具,可以对于不满足建立的时序约束的电路设计的信号路径执行一个或多个物理综合优化。物理综合优化(下文称为“优化技术”)是在布局后或在布线后在电路设计上执行的。虽然以下描述了优化技术的特定示例,但是优化技术通常指的是布局、布线、或二者一起的改变。
传统的EDA系统能够将多种不同的优化技术应用于电路设计,以改善不满足时序约束的信号路径(称为“关键(critical)”或“时序关键”信号路径)的时序。如本文所使用的,改善信号路径指的是改善实例的方面或特征(例如,如下所述的结果质量(QOR)),例如(诸如驱动器的电路元件、或网络的负载和/或的电路元件类型)信号路径的引脚或网络。
在实际对信号路径执行优化技术并随即测量结果之前,尚不知道可以实际改善信号路径的时序或电路设计的QOR的特定优化技术或优化技术的组合。然而,在大多数情况下,优化技术应用于电路设计会导致电路设计的性能下降,而不是改善性能。在执行由于不成功而被拒绝的优化技术之后,EDA系统放弃这些改变并恢复到应用优化技术之前的电路设计的状态。因此,任何花费在执行不成功的优化技术的时间实际上浪费了。
在QOR至关重要的情况下,传统的EDA系统可以在电路设计上尝试每种可用类型的优化技术。然而,这种方法可能导致不可接受的长运行时间。传统的EDA系统可以尝试减少用于执行优化技术的运行时间。这通常以QOR为代价发生,例如,导致较低的QOR。
因此,在本公开内容中描述的一个或多个实施例涉及使用神经网络来确定是否将优化技术应用于电路设计。系统可以评估从执行神经网络模型获得的结果,并基于使用神经网络模型生成的结果选择性地将优化技术应用于信号路径。
这里描述的实施例不依赖于所考虑的特定类型的优化技术。而是,实施例可用于确定何时对电路设计的信号路径执行任何的各种不同优化技术。系统可以仅应用那些被认为可能产生更高QOR的优化技术。类似地,该系统能够跳过或省略那些被认为不太可能产生更高QOR的优化技术。因此,该系统能够通过跳过被认为多半生成较低的QOR的所选择的优化技术而使得运行时间最小化和/或能够通过执行被认为多半生成更高的QOR的那些优化技术而使得QOR最大化。
一个或多个实施例涉及一种使用神经网络模型来实现电路设计和/或在电路设计上执行物理综合(如由数据处理系统执行的那样)的方法。一个或多个实施例涉及一种适合于使用神经网络模型来实现电路设计和/或在电路设计上执行物理综合的系统。一个或多个实施例涉及一种计算机程序产品,包括计算机可读存储介质,其上存储有用于使用神经网络模型来实现电路设计和/或在电路设计上执行物理综合的程序代码。
下面参考附图更详细地描述本发明装置的其他方面。出于简化和清晰的目的,图中所示的元件不一定按比例绘制。例如,为了清晰起见,一些元件的尺寸相对于其他元件可能是被夸大的。此外,在认为合适的情况下,在附图中标号被重复,以表示对应的、类似的、或相同的特征。
图1示出了用于执行物理综合的示例数据处理系统(系统)100。系统100是适于执行本公开内容中描述的各种操作的EDA系统的示例性实施方案。系统100包括通过接口电路115被耦接到存储器110的至少一个处理器105。接口电路115可以被实现为例如输入/输出(I/O)子系统,I/O接口,总线系统,存储器接口或其他合适的电路。系统100将计算机可读指令(也称为“程序代码”)存储在存储器110中。存储器110可以被认为是计算机可读存储介质的示例。处理器105执行经由接口电路115从存储器110接入的程序代码。
存储器110可以包括一个或多个物理存储器器件,例如本地存储器和一个或多个大容量存储器件。本地存储器指的是在程序代码的实际执行期间通常使用的随机存取存储器(RAM)或其他非持久存储器设备。大容量存储设备可以实现为硬盘驱动器(HDD),固态驱动器(SSD)或其他持久数据存储设备。系统100还可以包括一个或多个高速缓冲存储器(未示出),其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储设备检索程序代码的次数。
系统100可以耦接到一个或多个I/O装置120。I/O装置120的示例可以包括但不限于键盘,显示设备,指示设备,一个或多个网络适配器等等。网络适配器使系统100能够耦接到其他系统,计算机系统,远程打印机和/或远程存储设备。网络适配器的示例可以包括但不限于调制解调器,以太网卡,总线适配器,无线收发器和/或无线电等。系统100可以包括除所提供的示例之外的一个或多个附加I/O装置。这里描述的I/O装置可以直接或通过中间I/O控制器耦接到系统100。
如图所示,存储器110可以存储操作系统125、一个或多个应用程序130、和各种不同类型的数据135。例如,应用程序130可以是EDA应用程序。在一个或多个实施例中,应用程序130适于执行物理综合,包括如本公开内容中描述的优化技术。在一个或多个实施例中,应用程序130适于执行包括物理综合的设计流程的一个或多个或所有阶段。在一个方面,以可执行程序代码的形式实现的操作系统125和应用程序130由系统100执行,更具体地,由处理器105执行,以执行本公开内容中描述的各种操作。这样,操作系统125和应用程序130可以被认为是系统100的集成部分。
操作系统125、应用程序130以及由系统100使用、生成和/或操作的任何数据(例如,数据135)是功能数据结构,其在被用作系统100的一部分时被赋予功能或被提供给IC用于在其中的实施。“数据结构”是指数据在物理存储器内的数据模型的组织的物理实现。这样,数据结构由存储器中的特定电或磁结构单元形成。数据结构对被存储在存储器中的数据施加(impose)物理组织以供处理器使用。
系统100可包括比所示组件更少的组件或图1中未示出的附加组件,这取决于所实现的特定设备类型。另外,所包括的特定操作系统和/或应用程序可以根据设备类型而变化,如所包括的网络适配器的类型。此外,一个或多个说明性部件可以合并到另一个部件中,或者以其他方式形成另一个部件的一部分。例如,处理器可以包括至少一些存储器。
图1的例子显示两个不同阶段。在一个阶段期间,系统100或类似于系统100的另一系统能够执行机器学习140。系统100能够使用训练数据145执行机器学习140。在一个方面,训练数据145包括在应用任何物理综合优化之前的多个训练电路设计和训练电路设计的特征,以及在应用一种或多种不同的优化技术之后的训练电路设计的特征。
处理器105能够使用训练数据145执行机器学习140,例如神经网络训练,以生成神经网络模型150。在一个或多个实施例中,处理器105能够为每种不同的优化技术生成神经网络模型150,不同的优化技术可以在物理综合期间执行。参考图2更详细地描述机器学习140。
在第二或不同阶段,系统100能够执行物理综合155。在图1的示例中,处理器105能够从存储器110读取电路设计160并通过执行设计流程的一个或多个阶段在电路设计160上操作。电路设计160(以及下面描述的电路设计165)可以通过使用硬件描述语言而被指定作为寄存器传送级(RTL)表示,作为网络列表等。
处理器105还能够如本文所述的使用一个或多个神经网络模型150在电路设计160上执行一个或多个优化技术。处理器105在操作电路设计160时生成不同版本的电路设计160,它被输出和被显示为电路设计165。电路设计165在功能上等同于电路设计160,但不同之处在于系统100在电路设计160上执行了一种或多种优化技术,从而生成电路设计165。
出于说明的目的,考虑其中电路设计160已经经历综合、可选地逻辑优化,和作为设计流程的一部分布局的示例。电路设计160尚未布线。电路设计160包括一个或多个不被认为是时序关键的信号路径。如这里定义的术语“信号路径”是指具有同步驱动器电路元件和一个或多个同步负载电路元件的电路设计的一部分。信号路径还可以包括在驱动器(例如,或源)与负载之间的一个或多个异步电路元件。
系统100能够从不满足时序要求的电路设计160内选择信号路径。系统100还能够确定是否将一种或多种优化技术应用于信号路径以努力实现改进的QOR。系统100能够确定电路设计的一个或多个特征,提供特征作为加到神经网络模型150的输入,并执行神经网络模型150。基于从执行神经网络模型150获得的结果,系统确定是否将所述优化技术应用于信号路径。
QOR可以通过多种方式进行测量。在一个或多个实施例中,改进的QOR是改善信号路径的时序。改善的时序意味着信号路径的裕量是较小负值(less negative),因此信号路径的时序关键较低或不再是时序关键的。在另一个示例中,改进的QOR可以意味着不能满足电路设计和/或IC中的时序的信号路径的数量减少。
另一个示例的QOR是电路设计和/或IC的功耗是否改进(例如,降低)。当使用功耗作为QOR的度量时,功耗的评估可以作为整体应用到电路设计或IC,或应用到特定模块,或应用到消耗超过阈值量的功率的其他热点等。另一个示例QOR是电路设计和/或IC的面积使用量,其中面积使用量的减少是QOR的改进。应当理解,QOR可以是任何前述实例或一个或多个或所有前述实例的组合。例如,可以通过将权重应用于所描述的一个或多个或所有单个QOR量并对加权量求和来确定QOR。在一个或多个实施例中,基于所获得的QOR来确定是保持还是拒绝给定优化技术的结果。
如本文所定义的,术语“神经网络模型”表示可由数据处理系统和/或专用神经网络处理器执行的训练后的人工神经网络的实现。在一个或多个实施例中,神经网络模型被实现为处理器可执行程序代码,例如,目标代码,并作为数据结构被存储。在一个示例中,神经网络模型可以实现前馈神经网络。在前馈神经网络中,神经网络的神经元与其他神经元有链接。链接仅沿一个方向,即向前方向,延伸通过神经网络。
在一个或多个实施例中,系统100能够执行多种不同的优化技术。示例性优化技术包括但不限于对电路设计160的网表(netlist)的改变、对电路设计160的时序约束的改变、电路设计160的布局改变和/或在电路设计160被布线的情况下,到电路设计160的布线改变。对于所提供的一个或多个或每个示例,系统100可以被配置为执行多个更具体的优化技术,例如,系统100可以执行两个或更多个不同类型的网表变化、两个或更多个布局变化等。在这方面,优化技术的其他示例包括但不限于重新映射、重构、重新布线、推送和/或拉取(push and/or pull)技术、复制、信号重新排序、重新定时、实例(例如,查找表)插入等。
系统100可以为系统100能够执行的每种不同类型的优化技术生成并存储神经网络模型150。系统100可以向一个或多个神经网络模型150提供信号路径的特征以用于优化技术,并且响应于确定执行神经网络模型150的结果至少指示QOR改善的最小可能性,在信号路径上执行那些优化技术。例如,每个神经网络模型150适于指示特定优化技术的可能有效性。因此,基于来自执行神经网络模型150的结果,在物理综合期间可以跳过或省略那些不太可能导致改进的QOR的优化技术。
在一个或多个实施例中,系统100能够使用神经网络模型150来确定要处理哪些信号路径和/或处理信号路径的顺序以获得改进的QOR。例如,在神经网络模型150指示改善的QOR的低可能性的情况下,系统100可以选择不在信号路径上执行优化技术。在其他情况下,系统100可以选择先在被指示具有改进的QOR的高可能性的那些信号路径上运行,然后在指示具有改进的QOR的低可能性的那些信号路径上运行。
在一个或多个实施例中,系统100能够确定对给定信号路径应用优化技术的顺序,以便改善QOR。例如,系统100可以使用神经网络模型150评估多个优化技术,并且在那些可能导致较低QOR改善的物理综合技术之前,先将可能导致改善的QOR的优化技术应用于特定信号路径。
图2示出了生成神经网络模型的示例方法200。图2示出了如结合图1描述的执行机器学习以训练神经网络并生成神经网络模型的示例方法。方法200可以通过使用具有与图1的系统100相同或类似的架构的数据处理系统而被执行。
可以由系统执行方法200以创建用于确定特定的优化技术应用于信号路径将导致改善的QOR的可能性的神经网络模型。由于方法200涉及生成对应于特定优化技术的一个神经网络模型,因此应当理解,方法200可以根据需要重复进行,以便为其他特定优化技术和/或为给定的EDA系统能够执行的每种优化技术生成进一步神经网络模型。
在一个或多个实施例中,可以使用神经网络库(1ibrary)来生成神经网络模型。可以使用的神经网络库的一个例子是可从哥本哈根大学计算机科学系获得的“快速人工神经网络”或“FANN”。本文提供的实施例是出于说明而非限制的目的。应当看到,也可以使用其他神经网络库来生成神经网络模型。
在方块205,确定与来自多个训练电路设计的时序关键信号路径有关的特征(例如,训练数据145)。例如,从电路设计库中,可以识别时序关键信号路径。对于每个识别的信号路径,可以在应用所选择的优化技术之前确定多个特征。在应用优化技术之后,确定一个或多个附加特征,包括是接受还是拒绝优化技术。在一个实施例中,出于训练的目的,优化是被接受还是被拒绝可以是由设计者(例如,用户)做出的确定。在另一个实施例中,出于训练的目的,可以根据如本文所述的QOR来确定是接受还是拒绝优化。QOR可以由系统自动确定。
在方块205中确定的、作为训练数据的一部分的特征的示例可以包括但不限于:
优化技术的名称(扇出优化,布局优化,重新定时,重新排线,DSP优化,BRAM优化等);
驱动器实例的类型(例如,驱动器的电路元件的类型或信号路径的源(例如查找表,触发器等));
驱动器的引脚数(较大数量的输入引脚通常与改善QOR的可能性的减小相关);
用于驱动器的独特类型载荷的数目(用于驱动器的较大数目的载荷通常与改善QOR的可能性的减小相关);
负载引脚数量;
用于信号路径的网络扇出(net fanout);
优化前的局部网络裕量(例如,优化前网络的裕量);
优化后的局部网络裕量(例如,优化后网络的裕量);
优化前的全局设计裕量(例如,优化前具有电路设计最大负裕量的信号路径);
优化后的全局设计裕量(例如,优化后具有电路设计最大负裕量的信号路径);
网络曼哈顿距离(Net Manhattan distance)的驱动器/负载引脚;
1-跳(1-hop)相邻引脚的网络边界框大小(例如,矩形形状的大小包括当前实例/网络和每个连接引脚到当前实例/网络的位置);
控制组数量。控制组是指两个或更多个不同电路部件的两个或更多个控制引脚,所述不同电路部件具有相同的控制引脚类型并且由相同的控制信号或驱动电路部件的相同实例驱动。控制组可以是用于诸如触发器,锁存器,切片(slice)RAM等的时序电路部件的独特控制和/或时钟网络组。当两个电路组件中的每一个均具有由相同信号和/或相同驱动器电路部件(例如,相同电路元件的不同实例)驱动的相同控制引脚类型(例如,置位,复位,时钟使能,清除)时,两个电路组件在同一控制组中。控制组的数量是指电路设计和/或IC内这些引脚的独特组合的数量。并非所有触发器都具有每种类型的控制信号;
需优化的网络周围的布局密度。布局密度是指网络周围的拥塞(congestion)。作为说明性示例,如果网络周围有100个位置并且80个位置被某些逻辑元件占据,则放置密度将为80%或0.8;
需优化的网络周围的控制组密度。控制组密度是指网络周围的控制组拥塞。作为说明性示例,IC可以包括围绕当前网络的切片(例如,逻辑块的一部分)的10个切片。如果10个切片可以容纳总共40个控制网络并且所述设计使用10个切片中的20个控制组,则控制组密度为50%或0.5;以及优化举措被接受还是被拒绝?
如上所述,特定的一些特征一般涉及电路设计或涉及被评估的信号路径当中及周围的区域,而其他特征涉及被评估的特定信号路径。可以使用一个或多个或所有上述特征来训练神经网络。
在一个实施例中,上面的每个示例输入可以被归一化为-1到1(包括端值)的连续标度(scale)。每个示例输入都对尝试的优化技术的成功或失败产生影响。此外,虽然上述特征与所选择的优化技术的成功率具有相关性,但是这些特征可能彼此之间几乎没有相关性。
出于说明的目的,考虑系统具有大约200,000个数据点的情况。每个数据点可以是时序关键信号路径,并且具有每个上述特征的值(例如,15个输入和一个输出)。系统执行机器学习过程以构建神经网络模型。机器学习使得多个特征的组合能够创建更强的统一模型,只要每个特征与彼此特征几乎没有相关性。对于输出值,成功的优化技术(例如,被接受的优化技术)由+1表示,而失败的尝试(例如,被拒绝的优化技术)由-1表示。
如上所述,神经网络对于每种可用的优化技术进行单独训练。如上所示,可以将训练神经网络的特定优化技术指定为列出的第一个特征。例如,在方法200的第一次迭代期间,每个数据点用于扇出优化技术以生成用于扇出优化技术的神经网络模型,例如训练的神经网络。在方法200的第二次迭代期间,每个数据点用于布局优化技术以生成用于布局优化技术的神经网络模型等。
在方块210中,系统训练用于所选择的优化技术的神经网络。在训练阶段,系统通过确定不同层和/或节点的系数来构建神经网络模型。神经网络模型包括输入层、输出层和一个或多个隐藏层。在一个或多个实施例中,神经网络模型包括两个隐藏层。然而,所使用的隐藏层的特定数量并不旨在限制本文描述的实施例。这些层可以被实现为全连接层。
在一个方面,系统可以将神经网络训练到神经网络的权重已经收敛或基本收敛的点。例如,方块210的训练过程可以确定一组权重,其为神经网络提供期望的输入-输出关系。作为说明性示例,学习过程可以重复调整神经网络的权重以改变输入-输出关系,从而优化输入-输出精度成本函数(accuracy cost function)。这样,训练过程的目标是改变神经网络的输入-输出关系。
在方块215,系统生成神经网络模型。例如,该系统能够输出可以由系统执行以确定在信号路径上执行所选择的物理合成技术将导致QOR改善的可能性的程序代码。通过使用经过大量训练电路设计的试验的训练过程,生成神经网络模型。一旦生成,就可以执行神经网络模型以生成用来预测接受或拒绝特定优化尝试的概率的浮点值。
在构建和测试之后,可以将神经网络模型合并到EDA系统中以便在用户电路设计上操作。EDA系统能够基于对所选择的优化技术执行神经网络模型获得的结果来确定是否对给定信号路径在电路设计上执行所选择的优化技术。
图2的提供是出于说明的目的,因此,这并不旨在将本文描述的布置限制于所提供的特定示例。在一个或多个实施例中,可以通过使用电路设计的功耗和/或功率管理特征来训练神经网络,使得神经网络模型的执行可提供预测电路设计的功耗或其部分从特定优化技术的应用中减少的可能性的值。在一个或多个其他实施例中,可以训练神经网络模型同时考虑功耗和如本文中对于QOR所描述的时序,以提供预测电路设计(或其部分)改善功耗和时序的可能性的值。
图3示出了执行物理合成的示例方法300。方法300可以由参考图1描述的系统执行。方法300可以从在系统存储多个神经网络模型的状态下开始,其中每个神经网络模型适于通过应用特定优化技术来估计QOR改善的可能性。
在方块305,系统确定是否接收到对物理合成优化的请求。如果是,则方法300进到方块310。如果不是,则方法300可以继续循环,如图所示。例如,设计者可能正在创建或编辑电路设计。在一个或多个实施例中,可以布局(place)电路设计。在一个或多个实施例中,可以布局和布线电路设计。在任何情况下,电路设计可以包括一个或多个时序关键的信号路径。在执行设计流程的一个或多个阶段之后,设计者可以请求EDA系统执行优化技术。
在方块310,系统确定是否存在需要处理的任何信号路径。具体地,该系统能够确定是否存在不满足时序并且尚未被优化或考虑优化的任何信号路径。如果是,则方法300进到方块315。如果不是,则方法300可以结束。
在方块315,系统能够选择用于分析的信号路径。例如,该系统能够选择时序关键信号路径。在一个或多个实施例中,系统可以选择具有最大的负裕量的信号路径。在方法300的后续迭代中,系统可以继续按照关键性降序顺序(从最大负裕量到最小负裕量)来选择时序关键信号。
在方块320,系统确定与在方块315中选择的信号路径有关的电路设计的多个特征。在一个或多个实施例中,系统能够评估所选择的信号路径并确定下面的特征中的一个或多个或全部:
驱动器实例的类型;
驱动器的引脚数量;
驱动器的独特负载类型的数量;
负载引脚数量;
网络扇出;
优化前的局部网络裕量;
优化前的全局设计裕量;
驱动器/负载引脚的网络曼哈顿距离;
1-跳邻居引脚(neighborpins)的网络边界框大小;
控制组数量;
需优化的网络周围的布局密度;和
需优化的络网周围的控制组密度。
以上列出的示例特征包括参考图2描述的那些特征,但仅仅在应用优化技术后确定的特征除外。例如,不使用诸如在应用物理合成优化之后生成的时序/裕量那样的特征。此外,由于每个神经网络模型适用于特定的物理综合优化,因此不需要物理合成优化的类型作为输入。在一个或多个实施例中,针对优化技术的后期应用的那些特征可以用于确定QOR以及是否接受优化(如果被执行)。
在方块325,系统选择要考虑的优化技术。在方块330,系统对于所选择的优化技术执行神经网络模型。例如,系统选择用于所选择的优化技术的神经网络模型。该系统能够通过将在方块320中确定的特征提供给神经网络模型作为输入并通过神经网络模型处理特征来执行神经网络模型。在执行神经网络模型时,系统能够返回浮点值,该浮点值指示在信号路径上执行所选择的优化技术将导致改善的QOR的可能性。
在一个或多个实施例中,作为被提供到神经网络模型的输入的各种特征中的每一个可以被归一化为在-1和+1之间(包括-1和+1)的值,。在这方面,从执行神经网络模型获得的结果也可以具有-1和+1之间(包括-1和+1)的值。接近-1的结果表明执行所选择的优化技术非常不可能改善电路设计的QOR。接近+1的结果表明执行所选择的优化技术很可能改善电路设计的QOR。
在方块335,系统能够确定在方块330中获得的结果是否高于阈值。如果是,则方法300可以进到方块340,在方块340中在电路设计的所选信号路径上执行所选择的优化技术。如果不是,则方法300可以进到方块355。在那种情况下,系统不在信号路径上执行所选择的优化技术。
在一个或多个实施例中,系统能够在方块335中使用滑动阈值。阈值可以作为系统参数或偏好由用户调整或设置。阈值越高,执行优化技术的运行时间就越少。较高的阈值通常导致执行较少的优化。阈值越低,电路设计的QOR改进越大,代价是执行优化技术的运行时间越长。
在方块345,系统确定是否保持在方块340中执行的优化。系统能够基于如本文所述的计算QOR的度量来确定是否保持优化。可以基于如本文所讨论的时序改进、功耗改进或两者的组合来确定QOR。
在另一方面,如所指出的,该系统能够测量在方块320的任何特征中的改进作为所选优化技术的QOR。该特征的改进表明QOR得到改善。这些特征的改进可以与本文描述的任何其他量组合使用,并作为QOR量,例如时序相关的QOR量和/或功耗QOR量(例如,使用加权和/或求和)以生成最终QOR。系统基于QOR(或视情况的最终QOR)是否改善来确定是否保持优化。响应于确定QOR得到改善,方法300进到方块355。响应于确定QOR没有改善,方法300前进到方块350。
在方块350,响应于确定QOR没有改善,系统拒绝在方块340中所执行的物理合成优化。例如,系统将电路设计返回到在方块340的最新迭代之前存在的状态。
在方块355,系统确定是否继续对所选信号路径执行物理综合优化。响应于继续进行的确定,方法300循环回到方块325以选择要在所选的信号路径上执行的下一个优化技术。响应于不继续进行的确定,方法300循环回到方块310以选择下一个信号用于处理。
在一个或多个实施例中,响应于确定系统能够执行的每种优化技术已经相对于所选择的信号路径进行了评估,系统能够返回到方块310以处理不同的信号路径。在另一示例中,响应于确定信号路径现在满足时序约束(例如,不再是时序关键),系统可以前进到方块310以来处理不同的信号路径。在一个方面,在确定信号路径满足时序,而不管是否已经对于每个优化技术应用于所选择的信号路径进行评估,系统可以前进到方块310。
在一个或多个实施例中,该系统能够在所选择的信号路径上执行最大数量的优化技术。可以将最大数量的优化技术设置为优化技术的总数或者小于可用优化技术总数的数量。因此,在对所选路径执行最大数量的优化技术后,方法300从方块355进到方块310。
为了便于说明起见,考虑将优化技术的最大数量设置为一的示例。在那种情况下,在对所选信号路径执行方块340一次之后,方法300离开方块355,并前进到方块310。在这种设置中,没有计及由于来自神经网络模型的结果低于阈值而未应用的优化技术。应当看到,可以将优化技术的最大数量作为系统设置调整。例如,可以将优化技术的最大数量设置为1,2,3,4等。
在一个或多个实施例中,系统能够使用神经网络模型来确定要处理哪些信号路径和/或处理信号路径的顺序以获得改进的QOR。例如,所述系统能够通过一个或多个或所有针对不同优化技术的神经网络模型来处理每个信号路径的特征,从而评估多个信号路径。所述系统能够基于执行神经网络模型的结果在具有最高可能性的改进的QOR的信号路径上操作。然后,系统可以在具有第二高可能性的改进的QOR的信号路径上操作,以此类推。
在一个或多个实施例中,系统能够确定将优化技术应用于给定信号路径的顺序,以便改善QOR。例如,系统可确定所选信号路径的特征,并为所选信号路径执行多个神经网络模型或每个神经网络模型。系统可以首先执行具有最高可能性产生改进的QOR的优化技术。如果需要(例如,信号路径仍然是时序关键的)则系统可以执行具有第二高可能性产生改进的QOR的优化技术,等等。系统可以继续应用优化技术,直到信号路径不再是时序关键为止;或应用前“N”名的优化技术,其中“N”是小于优化技术总数的整数值;或应用每个具有从执行相关神经网络模型后具有高于阈值的结果的优化技术;等等。
如本文所述处理的电路设计可以在IC内实现。在一个或多个实施例中,电路设计可以由系统处理以生成配置比特流,该配置比特流可以被加载到IC中以物理地实现由IC内的处理的电路设计所描述的电路。
出于解释的目的,阐述了具体的术语以提供对本文公开的各种发明构思的透彻理解。然而,这里使用的术语仅用于描述本发明装置的特定方面,而不是限制性的。
如本文所定义的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。如本文所定义的,术语“另一个”意指至少第二个或更多个。如本文所定义的,术语“至少一个”,“一个或多个”,以及“和/或”是开放式表达,除非另有明确说明,否则它们在操作中既是连接的又是分离的(conjunctive and disjunctive)。例如,每个表达“A,B和C中的至少一个”,“A,B或C中的至少一个”,“一个或多个A,B和C”,“一个或多个A,B或C”以及“A,B和/或C”表示单独的A,单独的B,单独的C,A和B在一起,A和C在一起,B和C在一起,或A,B和C一起。如本文所定义的,术语“自动地”表示没有用户干预。
如本文所定义的,术语“计算机可读存储介质”表示包含或存储程序代码以供指令执行系统、装置或设备使用或与之结合使用的存储介质。如本文所定义的,“计算机可读存储介质”本身不是暂时的传播信号。计算机可读存储介质可以是但不限于电子存储设备,磁存储设备,光存储设备,电磁存储设备,半导体存储设备或前述的任何合适组合。如本文所述,存储器元件是计算机可读存储介质的示例。计算机可读存储介质的更具体示例的非详尽列表可包括:便携式计算机磁盘,硬盘,随机存取存储器(RAM),只读存储器(ROM),可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM),便携式光盘只读存储器(CD-ROM),数字通用光盘(DVD),记忆棒,软盘,机械编码装置,例如在其上记录有指令的凹槽中的穿孔卡或凸起结构,以及前述的任何合适的组合。
如本文所定义的,术语“输出”意味着存储在物理存储器元件(例如,设备)中,写入显示器或其他外围输出设备,发送或发送到另一系统,输出等。
如本文所定义的,术语“如果”表示“当”或“在”或“响应于”或“响应于”,取决于上下文。因此,短语“如果确定”或“如果检测到[陈述的条件或事件]”可以被解释为表示“在确定”或“响应于确定”或“在检测到[所述条件或事件]时”或“响应于检测到[所述条件或事件]”或“响应于检测到[所述条件或事件]”,取决于上下文。如本文所定义,术语“响应于”意味着容易对动作或事件作出反应或响应。因此,如果第二动作是“响应于”第一动作而被执行的,则在第一动作的发生与第二动作的发生之间存在因果关系。术语“响应于”表示因果关系。
如本文所定义的,术语“一个实施例”,“实施例”或类似语言意味着结合该实施例描述的特定特征,结构或特性被包括在本公开内容中描述的至少一个实施例中。因此,贯穿本公开内容的短语“在一个实施例中”,“在实施例中”和类似语言的出现可以但不是必须全部涉及相同的实施例。
如本文中所定义的,术语“处理器”表示至少一个硬件电路,其被配置为执行被包含在程序代码中的指令。硬件电路可以是集成电路。处理器的示例包括但不限于中央处理单元(CPU),阵列处理器,矢量处理器,数字信号处理器(DSP),现场可编程门阵列(FPGA),可编程逻辑阵列(PLA),专用集成电路(ASIC),可编程逻辑电路,图形处理单元(GPU),控制器等。
如本文中所定义的,术语“用户”是指人。术语第一、第二等在本文中被使用来描述各种单元。这些单元不应受这些术语的限制,因为这些术语仅用于将一个单元与另一个单元区分开,除非另有说明或除非上下文另有明确说明。
计算机程序产品可包括计算机可读存储介质(或介质),其上具有计算机可读程序指令,用于使处理器执行本文所述的发明性布置的各方面。在本公开内容中,术语“程序代码”可与术语“计算机可读程序指令”互换使用。这里描述的计算机可读程序指令可以经由网络(例如,互联网,LAN,WAN和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆,光传输光纤,无线传输,路由器,防火墙,交换机,网关计算机和/或包括边缘服务器的边缘设备。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本文描述的发明性布置的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令,机器指令,机器相关指令,微代码,固件指令,或者用于以一种或多种编程语言的任何组合,包括面向对象的编程语言和/或过程编程语言,编写的源代码或目标代码。计算机可读程序指令可以包括状态设置数据。计算机可读程序指令可以完全在用户的计算机上、作为独立的软件包部分在用户的计算机上、部分在用户的计算机上和部分在远程计算机上,或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括LAN或WAN)连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些情况下,包括例如可编程逻辑电路,FPGA或PLA的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使得电子电路个性化,以便执行本文描述的发明性布置的方面。
这里参考方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明装置的某些方面。将会看到,流程图和/或框图的每个方块以及流程图和/或框图中的方块的组合可以由计算机可读程序指令(例如,程序代码)实现。
这些计算机可读程序指令可以被提供给通用计算机,专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现流程图和/或框图块中指定的功能/动作的装置。这些计算机可读程序指令还可以被存储在计算机可读存储介质中,该计算机可读存储介质可以指示计算机,可编程数据处理装置和/或其他设备以特定方式起作用,使得具有被存储在其中的指令的计算机可读存储介质包括一种制品,其包括实现在流程图和/或框图块中指定的操作的各方面的指令。
计算机可读程序指令也可以加载到计算机、其他可编程数据处理装置、或其他设备,使得在计算机、其他可编程数据处理装置、或其他设备上执行一系列操作以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图块中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的布置的各个方面的系统、方法和计算机程序产品的可能实现方案的架构、功能和操作。在这方面,流程图或框图中的每个方块可以表示模块、段或指令的一部分,其包括用于实现指定操作的一个或多个可执行指令。
在一些替代实施方案中,方块中提到的操作可以不按图中所示的顺序发生。例如,连续示出的两个方块可以基本上同时执行,或者这些方块时可以以相反的顺序执行,这取决于所涉及的功能。在其他示例中,可以通常以递增的数字顺序执行方块,而在其他示例中,可以以变化的顺序执行一个或多个方块,其中结果被存储并且在后续或其他不紧随其后的方块中使用。还应指出,框图和/或流程图说明中的每个方块以及框图和/或流程图说明中的方块的组合可以由执行特定功能或动作或实现专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
可以在以下权利要求中找到的所有装置或步骤加功能单元的相应结构、材料、动作、和等同物旨在包括用于结合具体要求保护的其他要求保护的单元执行功能的任何结构,材料或动作。
一个或多个实施例涉及用于电路设计的物理综合的方法。在一个方面,一种方法可以包括使用处理器确定与电路设计的信号路径不满足定时要求有关的特征,使用处理器通过第一神经网络模型处理所述特征,其中所述第一神经网络模型被训练成指示第一物理综合优化的有效性,以及基于来自第一神经网络模型的结果,使用处理器选择性地执行所述信号路径的第一物理综合优化。
在一个方面,该方法包括通过训练的第二神经网络模型处理特征以指示第二物理综合优化的有效性,并且基于来自所述第二神经网络模型的结果选择性地将第二物理综合优化应用于所述信号路径。
在另一方面,响应于确定来自第一神经网络模型的结果超过阈值,对信号路径执行第一物理综合优化。
在另一方面,该方法包括至少部分地基于通过应用所述第一物理综合优化而对多个训练电路设计的时序关键信号路径的裕量的改善,训练所述第一神经网络模型。
在另一方面,对所述信号路径的特征进行归一化,并将其作为输入提供给第一神经网络模型。
在另一方面,信号路径的特征包括信号路径的多个负载引脚。
在另一方面,信号路径的特征包括信号路径的驱动器的多个引脚。
在另一方面,信号路径的特征包括信号路径的驱动器的电路元件类型。
在另一方面,该方法包括在将第一物理综合优化应用于信号路径之前执行多个神经网络模型,其中每个神经网络模型对应于特定的物理综合优化并且基于执行多个神经网络模型的结果选择第一物理综合优化。
在另一方面,从执行多个神经网络模型来确定将至少两个物理综合优化应用于信号路径的顺序。
一个或多个实施例涉及用于电路设计的物理综合的系统。在一个方面,一种系统包括被配置成启动可执行操作的处理器。可执行操作包括确定与电路设计的信号路径不满足时序要求有关的特征,通过第一神经网络模型处理特征,其中训练第一神经网络模型以指示第一物理综合优化的有效性,以及基于来自第一神经网络模型的结果,选择性地对信号路径执行第一物理综合优化。
在一个方面,响应于确定来自第一神经网络模型的结果超过阈值,针对信号路径执行第一物理综合优化。
在另一方面,信号路径的特征可以被归一化并且作为输入提供给第一神经网络模型。
在另一方面,信号路径的特征包括信号路径的多个负载引脚。
在另一方面,信号路径的特征包括信号路径的驱动器的多个引脚。
在另一方面,信号路径的特征包括信号路径的驱动器的电路元件类型。
在另一方面,处理器被配置为发起可执行操作,还包括在将第一物理综合优化应用到所述信号路径之前执行多个神经网络模型,其中每个神经网络模型对应于特定的物理综合优化,以及基于执行多个神经网络模型的结果选择第一物理综合优化。
在另一方面,通过执行多个神经网络模型来确定应用至少两个物理综合优化到所述信号路径的顺序。
一个或多个实施例涉及用于电路设计的物理综合的计算机程序产品。在一个方面,一种计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质上存储有程序代码,所述程序代码可由处理器执行以执行操作,所述操作包括使用处理器确定与电路设计的信号路径不满足时序要求有关的特征,使用处理器通过第一神经网络模型处理所述特征,其中第一训练神经网络模型被训练成指示第一物理综合优化的有效性,并且使用处理器基于来自第一神经网络模型的结果选择性地执行所述信号路径的第一物理综合优化。
在一个方面,响应于确定来自第一神经网络模型的结果超过阈值,针对信号路径执行第一物理综合优化。
本文提供的发明性布置的描述是出于说明的目的,并非旨在穷举或限于所公开的形式和实例。选择这里使用的术语来解释本发明的布置的原理,对市场中发现的技术的实际应用或技术改进,和/或使本领域的其他普通技术人员能够理解本文公开的发明布置。在不脱离所描述的发明布置的范围和精神的情况下,修改和变化对于本领域普通技术人员来说是显而易见的。因此,应当参考以下权利要求而不是前述公开内容,以指示这些特征和实现方案的范围。
Claims (13)
1.一种用于电路设计的物理综合方法,其特征在于,所述方法包括:
使用处理器确定与电路设计的信号路径不满足时序要求有关的特征;
使用处理器通过多个神经网络模型中的每个神经网络模型处理所述特征,所述多个神经网络模型包括两个或更多个不同的神经网络模型,所述多个神经网络模型中的每个神经网络模型被训练成指示多个物理综合优化中不同的物理综合优化的有效性;以及
基于来自所述多个神经网络模型的结果,使用处理器对所述信号路径执行所述多个物理综合优化中的第一物理综合优化。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于来自所述多个神经网络模型的结果,将第二物理综合优化应用于所述信号路径。
3.根据权利要求1所述的方法,其特征在于,响应于确定来自第一神经网络模型的结果超过阈值,对所述信号路径执行所述第一物理综合优化。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
至少部分地基于通过应用所述第一物理综合优化而对多个训练电路设计的时序关键信号路径的裕量的改善,训练第一神经网络模型。
5.根据权利要求1所述的方法,其特征在于,将所述信号路径的特征针对连续标度归一化,并将其作为输入提供给第一神经网络模型。
6.根据权利要求1所述的方法,其特征在于,所述信号路径的特征包括所述信号路径的多个负载引脚、所述信号路径的驱动器的多个引脚、或所述信号路径的驱动器的电路元件类型。
7.根据权利要求1所述的方法,其特征在于,通过执行所述多个神经网络模型而确定所述多个物理综合优化中的至少两个应用到所述信号路径的顺序。
8.一种用于电路设计的物理综合系统,其特征在于,所述系统包括:
处理器,所述处理器被配置为启动可执行操作,所述可执行操作包括:
确定与不满足时序要求的电路设计的信号路径有关的特征;
通过多个神经网络模型中的每个神经网络模型处理所述特征,所述多个神经网络模型包括两个或更多个不同的神经网络模型,所述多个神经网络模型中的每个神经网络模型被训练成指示多个物理综合优化中不同的物理综合优化的有效性;以及
基于来自所述多个神经网络模型的结果,对所述信号路径执行所述多个物理综合优化中的第一物理综合优化。
9.根据权利要求8所述的系统,其特征在于,响应于确定来自第一神经网络模型的结果超过阈值,对所述信号路径执行所述第一物理综合优化。
10.根据权利要求8所述的系统,其特征在于,将所述信号路径的特征针对连续标度归一化,并将其作为输入提供给第一神经网络模型。
11.根据权利要求8所述的系统,其特征在于,所述信号路径的特征包括所述信号路径的多个负载引脚、所述信号路径的驱动器的多个引脚、或所述信号路径的驱动器的电路元件类型。
12.根据权利要求8所述的系统,其特征在于,通过执行所述多个神经网络模型而确定所述多个物理综合优化中的至少两个应用到所述信号路径的顺序。
13.一种非暂时性计算机可读存储介质,所述计算机可读存储介质上存储有程序代码,所述程序代码可由处理器执行,用来执行操作,所述操作包括:
使用处理器确定与不满足时序要求的电路设计的信号路径有关的特征;
使用处理器通过多个神经网络模型中的每个神经网络模型处理所述特征,所述多个神经网络模型包括两个或更多个不同的神经网络模型,所述多个神经网络模型中的每个神经网络模型被训练成指示多个物理综合优化中不同的物理综合优化的有效性;以及
基于来自所述多个神经网络模型的结果,使用处理器对所述信号路径执行所述多个物理综合优化中的第一物理综合优化。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/407,875 US10192016B2 (en) | 2017-01-17 | 2017-01-17 | Neural network based physical synthesis for circuit designs |
US15/407,875 | 2017-01-17 | ||
PCT/US2017/064026 WO2018136156A1 (en) | 2017-01-17 | 2017-11-30 | Neural network based physical synthesis for circuit designs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110192192A CN110192192A (zh) | 2019-08-30 |
CN110192192B true CN110192192B (zh) | 2023-03-17 |
Family
ID=60997522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780083720.0A Active CN110192192B (zh) | 2017-01-17 | 2017-11-30 | 用于电路设计的基于神经网络的物理综合 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10192016B2 (zh) |
EP (1) | EP3571609A1 (zh) |
JP (1) | JP6971320B2 (zh) |
KR (1) | KR102442271B1 (zh) |
CN (1) | CN110192192B (zh) |
WO (1) | WO2018136156A1 (zh) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3545472A1 (en) * | 2017-01-30 | 2019-10-02 | Google LLC | Multi-task neural networks with task-specific paths |
WO2018176000A1 (en) | 2017-03-23 | 2018-09-27 | DeepScale, Inc. | Data synthesis for autonomous control systems |
US10568203B2 (en) * | 2017-06-07 | 2020-02-18 | International Business Machines Corporation | Modifying a circuit design |
US11157441B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system using non-consecutive data formatting |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US11409692B2 (en) | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
JP2019036199A (ja) * | 2017-08-18 | 2019-03-07 | 富士通株式会社 | 情報処理装置、タイミングエラー解析プログラム及びタイミングエラー解析方法 |
US10699053B1 (en) * | 2018-01-17 | 2020-06-30 | Xilinx, Inc. | Timing optimization of memory blocks in a programmable IC |
US10817634B2 (en) * | 2018-01-19 | 2020-10-27 | Synopsys, Inc. | Machine-learning circuit optimization using quantized prediction functions |
US11561791B2 (en) | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
US10970441B1 (en) * | 2018-02-26 | 2021-04-06 | Washington University | System and method using neural networks for analog-to-information processors |
US11215999B2 (en) | 2018-06-20 | 2022-01-04 | Tesla, Inc. | Data pipeline and deep learning system for autonomous driving |
US11615208B2 (en) * | 2018-07-06 | 2023-03-28 | Capital One Services, Llc | Systems and methods for synthetic data generation |
US11361457B2 (en) | 2018-07-20 | 2022-06-14 | Tesla, Inc. | Annotation cross-labeling for autonomous control systems |
US11636333B2 (en) | 2018-07-26 | 2023-04-25 | Tesla, Inc. | Optimizing neural network structures for embedded systems |
US10867091B1 (en) | 2018-08-17 | 2020-12-15 | Synopsys, Inc. | Machine learning based power optimization using parallel training and localized data generation |
US11562231B2 (en) | 2018-09-03 | 2023-01-24 | Tesla, Inc. | Neural networks for embedded devices |
CN113039556B (zh) | 2018-10-11 | 2022-10-21 | 特斯拉公司 | 用于使用增广数据训练机器模型的系统和方法 |
US11196678B2 (en) | 2018-10-25 | 2021-12-07 | Tesla, Inc. | QOS manager for system on a chip communications |
WO2020112025A1 (en) * | 2018-11-26 | 2020-06-04 | Agency For Science, Technology And Research | Method and system for generating training data for a machine learning model for predicting performance in electronic design |
US11816585B2 (en) | 2018-12-03 | 2023-11-14 | Tesla, Inc. | Machine learning models operating at different frequencies for autonomous vehicles |
US11537811B2 (en) | 2018-12-04 | 2022-12-27 | Tesla, Inc. | Enhanced object detection for autonomous vehicles based on field view |
US11610117B2 (en) | 2018-12-27 | 2023-03-21 | Tesla, Inc. | System and method for adapting a neural network model on a hardware platform |
US10997461B2 (en) | 2019-02-01 | 2021-05-04 | Tesla, Inc. | Generating ground truth for machine learning from time series elements |
US11567514B2 (en) | 2019-02-11 | 2023-01-31 | Tesla, Inc. | Autonomous and user controlled vehicle summon to a target |
US10956755B2 (en) | 2019-02-19 | 2021-03-23 | Tesla, Inc. | Estimating object properties using visual image data |
US11531869B1 (en) | 2019-03-28 | 2022-12-20 | Xilinx, Inc. | Neural-network pooling |
US11429858B2 (en) | 2019-04-04 | 2022-08-30 | International Business Machines Corporation | Deep learning experiment content generation based on single design |
US10789402B1 (en) | 2019-05-01 | 2020-09-29 | Xilinx, Inc. | Compiler and hardware abstraction layer architecture for a neural network accelerator |
US11188705B2 (en) * | 2019-05-17 | 2021-11-30 | Synopsys, Inc. | Pin accessibility prediction engine |
US11704535B1 (en) | 2019-05-17 | 2023-07-18 | Xilinx, Inc. | Hardware architecture for a neural network accelerator |
WO2021050434A1 (en) * | 2019-09-10 | 2021-03-18 | Synopsys, Inc. | Machine-learning driven prediction in integrated circuit design |
DE112020004464T5 (de) * | 2019-09-17 | 2022-06-30 | Tektronix, Inc. | Simulationskorrektur durch messungen und deep learning priorität |
US11621808B1 (en) | 2019-10-16 | 2023-04-04 | Xilinx, Inc. | Machine learning based methodology for signal waveform, eye diagram, and bit error rate (BER) bathtub prediction |
US10922463B1 (en) | 2019-10-20 | 2021-02-16 | Xilinx, Inc. | User dialog-based automated system design for programmable integrated circuits |
US10831955B1 (en) * | 2019-11-19 | 2020-11-10 | International Business Machines Corporation | Prediction of closure feasibility in microprocessor design |
US11423303B1 (en) | 2019-11-21 | 2022-08-23 | Xilinx, Inc. | Machine learning based methodology for adaptative equalization |
CN113761979B (zh) * | 2020-06-04 | 2023-11-14 | 富士通株式会社 | 用于优化模型的方法、设备和存储介质 |
US11941337B1 (en) * | 2020-09-30 | 2024-03-26 | Keysight Technologies, Inc. | System and method for modeling nonlinear component for use in circuit design |
US20220138496A1 (en) * | 2020-11-05 | 2022-05-05 | Synopsys, Inc. | Power estimation using input vectors and deep recurrent neural networks |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5465204A (en) * | 1991-11-08 | 1995-11-07 | Kabushiki Kaisha Toshiba | Heuristic control system employing expert system, neural network and training pattern generating and controlling system |
CN101093518A (zh) * | 2006-06-22 | 2007-12-26 | 国际商业机器公司 | 优化电路设计中的流水线结构布置的方法和系统 |
CN105138741A (zh) * | 2015-08-03 | 2015-12-09 | 重庆大学 | 基于神经网络的igbt模型参数校准系统及方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5046020A (en) * | 1988-12-16 | 1991-09-03 | E. I. Du Pont De Nemours And Company | Distributed parallel processing network wherein the connection weights are generated using stiff differential equations |
US5140530A (en) * | 1989-03-28 | 1992-08-18 | Honeywell Inc. | Genetic algorithm synthesis of neural networks |
JP2863550B2 (ja) * | 1989-06-08 | 1999-03-03 | 株式会社日立製作所 | 配置最適化方法及び配置最適化装置と回路設計装置 |
US5121467A (en) * | 1990-08-03 | 1992-06-09 | E.I. Du Pont De Nemours & Co., Inc. | Neural network/expert system process control system and method |
US5228113A (en) * | 1991-06-17 | 1993-07-13 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Accelerated training apparatus for back propagation networks |
US5278945A (en) * | 1992-01-10 | 1994-01-11 | American Neuralogical, Inc. | Neural processor apparatus |
US20070256046A1 (en) | 2006-04-30 | 2007-11-01 | Mentor Graphics Corp. | Analysis and optimization of manufacturing yield improvements |
US9058456B2 (en) | 2012-09-25 | 2015-06-16 | International Business Machines Corporation | Method and system to fix early mode slacks in a circuit design |
US9026964B2 (en) * | 2013-03-13 | 2015-05-05 | University Of North Texas | Intelligent metamodel integrated Verilog-AMS for fast and accurate analog block design exploration |
-
2017
- 2017-01-17 US US15/407,875 patent/US10192016B2/en active Active
- 2017-11-30 CN CN201780083720.0A patent/CN110192192B/zh active Active
- 2017-11-30 EP EP17830034.9A patent/EP3571609A1/en active Pending
- 2017-11-30 JP JP2019538355A patent/JP6971320B2/ja active Active
- 2017-11-30 WO PCT/US2017/064026 patent/WO2018136156A1/en unknown
- 2017-11-30 KR KR1020197024049A patent/KR102442271B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5465204A (en) * | 1991-11-08 | 1995-11-07 | Kabushiki Kaisha Toshiba | Heuristic control system employing expert system, neural network and training pattern generating and controlling system |
CN101093518A (zh) * | 2006-06-22 | 2007-12-26 | 国际商业机器公司 | 优化电路设计中的流水线结构布置的方法和系统 |
CN105138741A (zh) * | 2015-08-03 | 2015-12-09 | 重庆大学 | 基于神经网络的igbt模型参数校准系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20190104217A (ko) | 2019-09-06 |
US10192016B2 (en) | 2019-01-29 |
KR102442271B1 (ko) | 2022-09-08 |
US20180203956A1 (en) | 2018-07-19 |
WO2018136156A1 (en) | 2018-07-26 |
CN110192192A (zh) | 2019-08-30 |
JP2020504403A (ja) | 2020-02-06 |
JP6971320B2 (ja) | 2021-11-24 |
EP3571609A1 (en) | 2019-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110192192B (zh) | 用于电路设计的基于神经网络的物理综合 | |
US10331836B1 (en) | Loop optimization for implementing circuit designs in hardware | |
US8984462B1 (en) | Physical optimization for timing closure for an integrated circuit | |
US9298872B2 (en) | Apportioning synthesis effort for better timing closure | |
US9836568B1 (en) | Programmable integrated circuit design flow using timing-driven pipeline analysis | |
US9646126B1 (en) | Post-routing structural netlist optimization for circuit designs | |
US10437946B1 (en) | Using implemented core sources for simulation | |
JPWO2010092825A1 (ja) | 回路解析方法 | |
US8146041B1 (en) | Latch based optimization during implementation of circuit designs for programmable logic devices | |
US8893068B1 (en) | Techniques to generate a more accurate simulation model | |
US20170371983A1 (en) | Optimizing the layout of circuits based on multiple design constraints | |
US8776003B2 (en) | System and method for employing side transition times from signoff-quality timing analysis information to reduce leakage power in an electronic circuit and an electronic design automation tool incorporating the same | |
CN115204076B (zh) | 集成电路的逻辑优化方法、装置、电子设备及可读介质 | |
US9965581B1 (en) | Fanout optimization to facilitate timing improvement in circuit designs | |
US10678983B1 (en) | Local retiming optimization for circuit designs | |
US10372851B2 (en) | Independently projecting a canonical clock | |
US20180349544A1 (en) | Methods for performing register retiming with hybrid initial states | |
US7412677B1 (en) | Detecting reducible registers | |
US9489480B1 (en) | Techniques for compiling and generating a performance analysis for an integrated circuit design | |
US10430540B1 (en) | Processing a block diagram circuit design into an efficient high-level language representation | |
US20160364518A1 (en) | Addressing early mode slack fails by book decomposition | |
US9881112B1 (en) | Vectorless dynamic power estimation for sequential circuits | |
US10289786B1 (en) | Circuit design transformation for automatic latency reduction | |
Minkovich et al. | Mapping for better than worst-case delays in LUT-based FPGA designs | |
US10242150B1 (en) | Circuit design implementation using control-set based merging and module-based replication |
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 |