CN108140067B - 用于电路设计优化的方法和系统 - Google Patents
用于电路设计优化的方法和系统 Download PDFInfo
- Publication number
- CN108140067B CN108140067B CN201680057930.8A CN201680057930A CN108140067B CN 108140067 B CN108140067 B CN 108140067B CN 201680057930 A CN201680057930 A CN 201680057930A CN 108140067 B CN108140067 B CN 108140067B
- Authority
- CN
- China
- Prior art keywords
- optimization
- netlist
- optimizations
- placement
- design
- 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
- 238000005457 optimization Methods 0.000 title claims abstract description 251
- 238000013461 design Methods 0.000 title claims abstract description 110
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000015572 biosynthetic process Effects 0.000 claims description 24
- 238000003786 synthesis reaction Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 14
- 230000010076 replication Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 239000004744 fabric Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 101000879673 Streptomyces coelicolor Subtilisin inhibitor-like protein 3 Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000032258 transport Effects 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/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
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- 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
- 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
Abstract
在本发明的一个实施例中,提供了用于对电路设计(102)进行布局和布线的处理器实施方法。为电路设计生成第一个网表。为目标IC上的第一网表(106)执行布局(108)以产生第一布局设计(110)。对第一布局设计执行(112)一组优化。该组优化被记录(114)在优化历史文件(116)中。对第一网表执行(118/202)优化历史文件中指定的一个或多个优化,以产生不同于第一网表的第二网表。对目标IC上的第二网表执行(206)布局以产生不同于第一布局设计的第二布局设计(208)。第二布局设计的网络被布线(210)以产生布局和布线电路设计。
Description
技术领域
本公开总体涉及可编程集成电路中资源的布局、布线和时序收敛。
背景技术
可编程逻辑器件(PLD)是用于根据用户可配置输入来实现数字逻辑操作的集成电路(IC)。示例PLD包括复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。CPLD通常包含多个功能块,这些功能块基于具有积和逻辑(sum-of-products logic)的可编程逻辑阵列(PLA)架构。可配置的互连矩阵在功能块之间传输信号。
示例FPGA包括可配置逻辑块(CLB)阵列和可编程输入/输出块(IOB)的环或纵列。CLB和IOB通过可编程互连结构(布线资源)相互连接。通常通过将配置数据流(比特流)加载到定义如何配置CLB、IOB和互连结构的内部配置存储器单元来对CLB、IOB和互连结构进行编程。虽然配置比特流可以从外部存储器读取,通常是外部集成电路存储器EEPROM、EPROM、PROM等,但是可以使用其他类型的存储器。各个存储器单元的集体状态决定了FPGA的功能。特定类型的FPGA使用基于查找表(LUT)的CLB。配置存储器为由CLB的输入所控制的多个多路复用器提供输入值。
集成电路(如ASIC或FPGA)的传统设计过程始于电路设计的创建。电路设计的功能可以使用各种可编程语言(例如,VHDL、ABEL或Verilog)或原理图攫取程序来表示。该设计在逻辑上被合成以产生由目标集成电路设备支持的逻辑网络列表(“网表(netlist)”)。网表被映射到目标设备(例如,目标可编程IC)内可用的原始元件。
逻辑合成之后,网表的元件在目标设备中被布局以用于实施。布局过程中,设计的每个映射元件都被分配到芯片上可以找到相应原始元件实例的物理位置。布局器的目的是将连接的设计对象布置得物理上彼此靠近。这节省了芯片的空间并增加了布线器成功完成元件之间所需互连的可能性。将连接的元件彼此靠近地布置通常也会提高电路的性能,因为长的互连路径与过量的电容和电阻有关,将导致更长的延迟。
对于被布局的元件,在目标设备中对设计的元件之间的指定连接进行布线。布线指定用于在设计的布局元件的引脚之间传导信号的物理接线资源。对于设计中指定的每个连接,布线必须分配完成连接所需的接线。如本文所使用的,在将一个元件的输出引脚连接到另一个元件的输入引脚时选择和分配接线资源被称为对信号布线。当信号已经使用给定区域中的大部分或全部接线资源进行布线时,该区域通常被称为拥塞区域,这会造成对区域内其余接线资源的竞争,或使区域内的其他信号难以或不可能布线。布局和布线过程有时涉及设计的时序、功耗、利用的布线资源及其任何组合的优化。在某些情况下,还提供对设计的基于时序的评估。
发明内容
各种示例实施方式涉及用于电路设计的逻辑合成、布局、优化和布线的有效方法。在本发明的一个实施例中,为电路设计生成第一网表。确定第一网表的布局以便在目标IC上进行实施,以产生第一布局设计。在第一布局设计上执行一组优化。对于每组优化,优化被记录在优化历史文件中。对第一网表执行优化历史文件中指定的一个或多个优化,以产生不同于第一网表的第二网表。确定第二网表的布局,以便在目标IC上进行实施,以产生不同于第一布局设计的第二布局设计。第二布局设计的网络被布线,以产生布局和布线电路设计。
可选地,在确定所述第二网表的布局之前执行所述一个或多个优化,从而相对于在所述第一布局设计中执行所述第一网表的布局和网络的布线所需的处理资源,可以减少在所述第二布局设计中执行所述第二网表的布局和网络的布线所需的处理资源。
可选地,对所述第一网表执行所述优化历史文件中指定的优化包括:确定所述优化历史文件中的一组较高优先级优化和所述优化历史文件中的一组较低优先级优化,并且仅执行包含在所述一组较高优先级优化中的优化。
可选地,该方法还可进一步包括:在所述第二网表的布局后,对布局的所述第二网表执行所述一组较低优先级优化。
可选地,所述优化历史文件进一步识别一个或多个时序关键电路模块,并且确定所述目标IC上所述第二网表的布局的操作在布局所述第二网表的其他电路模块之前先布局一个或多个时序关键电路模块。
可选地,该方法可以进一步包括:为记录在所述优化历史文件中的优化识别所述第二网表中的电路模块,并且对所识别的模块实例执行优化。
可选地,优化历史文件中指定的一个或多个优化可以包括数字信号处理器(DSP)寄存器优化、BRAM寄存器优化、移位寄存器优化,或上述的组合。
可选地,在所述优化历史文件中指定的一个或多个优化可包括将所述电路设计的电路模块分解成多个子模块,并且确定所述第二网表的布局的操作分别确定所述多个子模块中每一个的布局。
可选地,在所述优化历史文件中指定的一个或多个优化可以包括强制网络复制、扇出优化、替换优化,或上述的组合。
可选地,在所述优化历史文件中指定的一个或多个优化可以包括重新布线/查找表优化、重新定时优化、关键引脚优化和/或保持时间固定优化,或上述的组合。
可选地,该方法可以进一步包括:生成一组配置数据,所述一组配置数据被配置为对所述目标IC的可编程资源进行编程以实施所述布局和布线电路设计,并将所述一组配置数据存储在连接到所述目标IC的非易失性存储器中,其中所述目标IC被配置为在通电时用所述非易失性存储器中的所述一组配置数据对所述目标IC的所述可编程资源进行编程。
可选地,所述优化历史文件在工具命令语言脚本中指定所述一组优化。
还公开了用于电路设计的逻辑合成、布局、优化和布线的系统。在示例的实施方式中,系统包括处理器和连接到处理器的存储器装置。存储器装置配置有指令,所述指令在由处理器执行时使处理器为存储在存储器中的电路设计生成第一网表,并确定第一网表的布局,以用于在目标IC上进行实施,以产生第一布局设计。这些指令进一步使处理器对第一布局设计执行一组优化。处理器还将每个优化记录在优化历史文件中。指令进一步使处理器确定第二网表的布局,以用于在目标IC上进行实施,以产生第二布局设计。第二布局设计与第一布局设计不同。第二布局设计的网络被布线以产生布局和布线电路设计。
可选地,在确定所述第二网表的布局之前执行所述一个或多个优化,从而相对于在所述第一布局设计中执行所述第一网表的布局和网络的布线所需的处理资源,可减少在所述第二布局设计中执行所述第二网表的布局和网络的布线所需的处理资源。
可选地,在对所述第一网表执行所述优化历史文件中指定的优化时,处理器可以确定所述优化历史文件中的一组较高优先级优化和所述优化历史文件中的一组较低优先级优化。处理器也可以仅执行包含在所述一组较高优先级优化中的优化,并且该指令还可以在所述第二网表的布局后,对布局的所述第二网表执行所述一组较低优先级优化。
可选地,所述优化历史文件可进一步识别一个或多个时序关键电路模块。在确定第二网表在目标IC上的布局时,处理器可在布局所述第二网表的其他电路模块之前先布局一个或多个时序关键电路模块。
可选地,所述指令还可以使处理器为记录在所述优化历史文件中的优化识别所述第二网表中的电路模块,并且对所识别的模块实例执行优化。
可选地,由处理器执行的一个或多个优化可以包括扇出优化、关键单元优化、强制网络复制、替换优化、DSP寄存器优化、BRAM寄存器优化、移位寄存器优化、重新布线/查找表优化、重新定时优化、关键引脚优化、保持时间固定优化,或上述组合。
可选地,所述优化历史文件在工具命令语言脚本中指定所述一组优化。
可选地,该系统还包括目标IC。所述指令可进一步致使所述处理器产生一组配置数据,所述一组配置数据被配置为对所述目标IC的可编程资源进行编程,从而实施所述布局和布线电路设计。
应该理解的是,在下面的具体实施方式和权利要求书中阐述了各种其他实施例。
附图说明
在阅读以下详细描述并参考附图后,本发明的各个方面和优点将变得明显,其中:
图1示出了根据一个或多个实施方式的用于电路设计的初始布局和物理合成优化的示例过程的流程图;
图2示出了根据一个或多个实施方式的用于电路设计的优化意识布局和布线的示例过程的流程图;
图3示出了根据一个或多个实施方式的用于电路设计的优化意识布局和布线的另一示例过程的流程图;
图4示出了根据本发明的若干实施例的可以被配置成执行逻辑合成、物理合成优化、布局和布线的计算装置的框图;和
图5示出了可编程集成电路的框图,其可用作根据本发明各种实施例的用于布局和布线的目标装置。
具体实施方式
布线电路设计时,可以在找到满足设计的时序要求的布线解决方案之前测试大量不同的布线。布线时间可能由于非最佳布局而延长。在现有的布局和布线技术中,在布局之后执行物理合成优化,然后对优化设计进行布线。例如,可以执行物理合成优化以改进时序、噪声容限、裸片面积和/或功率使用。物理合成优化将电路设计的物理元件转换为符合设计要求的不同(但逻辑上相同的)物理元件。
由于在物理合成优化期间对电路设计所做的更改,布局对于修改后的电路设计而言可能不再是最佳的。由于物理合成优化是在布局后执行的,因此布局不会考虑优化产生的更改。结果,布线软件可能浪费大量的计算资源(例如,处理时间和/或处理器电路)来布线和重新布线信号,以试图通过对信号的布线来满足时序要求而不修改电路模块的布局。
此外,由于拥塞,如果执行某些优化,可能无法确定有效的布线解决方案。例如,某些流程可能执行优化并评估更改,以估计布线解决方案是否可行。如果估计布线解决方案是不可行的,则更改将被撤消。否则,更改被提交,并且该过程可能会继续进行其他优化。由于无法执行一些优化,布局和布线电路设计的效率/性能(例如,裸片面积、功耗或工作频率)可能受到限制。
公开了通过在布局之前执行物理合成优化来克服上述限制的方法和系统。在示例的实施方式中,为电路设计生成第一网表。为电路设计的第一网表确定初始临时布局。利用初始布局,对布局的网表执行物理合成优化,并且物理合成优化被记录在优化历史记录文件中。由于初始布局只是暂时的,因此不需要评估优化来估计布线的可行性。随后在未布局的第一网表上执行记录的物理合成优化来产生第二网表,而不是试图为初始布局来进行信号的布线。随后布局第二网表以提供改进的、将优化考虑在内的布局。为了便于参考,在优化之后执行的布局可被称为优化意识布局(optimization-aware placement)。在优化意识布局之后,设计的网络被布线以形成布局和布线电路设计。
由于改进的布局,相比于在布局之后实施优化更改的前述方法,可以在更少的布线尝试中确定满足时序要求的信号布线。因此,可以使用更少的计算资源(例如,处理时间、存储器和/或处理器电路的数量)来确定布线解决方案。
在布局之前实施优化还允许执行使用传统的布局后优化不可能实现的优化。例如,如前所述,如果评估后估计布线解决方案可能是不可行的,则前述的方法会撤消优化更改。但是,如果在优化之后执行布局,则可以对元件进行布局以便带着布局中的优化更改来促进布线。以这种方式,可以执行的可能的优化的数量得到增加。结果,与布局后优化的方法相比,可以改进各种性能参数(例如,裸片面积、功耗和/或工作频率)。执行的设计中实现的改进的类型将取决于所执行的优化类型。例如,如果优化技术专注于与功耗相关的增强,则可以实现低功耗的布局和布线设计。相反,如果优化技术专注于时序和工作频率,则可以实现以更高时钟频率工作的布局和布线设计。
现参见附图,图1示出了用于电路设计的初始布局和物理合成优化的示例过程的流程图。框104中,执行逻辑合成以生成电路设计102的第一网表106(网表1.0)。网表106将电路设计的元件映射到目标可编程IC上可用的原始元件。框108中,第一网表106被布局以用于在可编程IC上进行实施,以产生第一布局设计110。框112中,对第一布局设计执行物理合成优化。
物理合成优化可以包括各种优化技术,包括例如扇出优化、关键单元优化、强制网络复制、替换优化、DSP寄存器优化、BRAM寄存器优化、移位寄存器优化、重新布线/查找表优化、重新定时优化、关键引脚优化和/或保持时间固定优化。扇出优化复制用于驱动大量负载的大型扇出网络的驱动器。在一些实施方式中,扇出网络的优化可以基于邻近度将由网络驱动的负载聚集。网络驱动电路被复制并插入以驱动每个负载集群。类似的优化(称为关键单元优化)将驱动电路添加到不满足时序要求的信号路径中的(一个或多个)负载附近。例如,如果特定单元上的负载被布局成相距很远,则可以使用靠近负载集群的新驱动器来复制该单元。产生这种优化并不要求高扇出。强制网络复制强制时序约束路径中的网络驱动器被复制,而与时序裕量无关。
寄存器优化可以移动寄存器来改善关键路径的时序。例如,如果移动将改善关键路径上的延迟,则DSP寄存器优化可以在DSP单元和目标可编程IC上的另一物理元件(例如,另一个DSP单元)之间移动寄存器。例如,第一DSP包括的寄存器可以具有耦合到第二DSP的输入的输出。如果寄存器和第二DSP之间的路径的时序是关键的,那么可以移动寄存器使其更靠近第二DSP,或者甚至在第二DSP内部(如果有未使用的寄存器可用)。被称为BRAM寄存器优化的类似优化可以在BRAM单元和目标可编程IC上的其他元件之间移动寄存器。移位寄存器优化将寄存器从移位寄存器的开始或结束位置重定位到另一个位置(例如,更靠近连接到移位寄存器的输入的源或连接到移位寄存器的输出的负载)。
另一种称为重新定时的优化通过跨越组合逻辑移动寄存器来改善关键路径上的延迟。替换优化可以用配置成优化特定参数的逻辑等效单元来替换关键单元。例如,电路设计中的默认快速傅立叶变换(FFT)可以被优化的FFT取代,例如用于更高的处理速度、更小的覆盖区(footprint)或降低的功耗。重新布线优化交换LUT上的连接以减少用于关键信号的逻辑电平的数量。LUT方程被修改以保持设计功能。保持固定优化试图通过增加保持关键路径上的延迟来改善高保持违例的裕量。
框114处,将物理合成优化记录在优化历史文件116中。一些实施方式中,可以在优化历史文件中将优化指定为工具命令语言(TCL)脚本,当被执行时,该TCL脚本实施优化。如前所述,由于作为物理合成优化的结果而执行的更改,第一布局可能不是最佳的。框118处,使用优化历史文件116来执行优化意识布局和布线。在一些实施方式中,通过时序分析获取的数据(例如,每个信号的最短路径时序)也可以存储在优化历史文件中。数据可用于识别模块实例,对于第一布局来说,时序至关重要。当执行优化意识布局时,在框118处,可以布局所识别的模块实例以缩短时序关键路径的布线距离。
图2示出了根据一个或多个实施方式的用于电路设计的优化意识布局和布线的示例过程的流程图。框202处,在未布局的第一网表106上执行优化历史文件116中指示的物理合成优化,以产生第二网表204。
框206处,将第二网表204布局用于在目标可编程IC上进行实施,以产生第二布局设计208。由于在框208的布局之前执行优化,所以布局能够考虑优化更改,并相比于第一布局设计110提供改进的布局(例如,对于空间、时序或工作速度)。一些实施方式中,框208处执行的布局可以利用在物理优化过程期间确定的性能评估。例如,物理合成过程可以将时序关键电路识别为用于优化的目标。时序关键电路是具有低或负时序裕量的电路。框208处执行的布局首先布局时序关键电路,使得时序关键电路可以布局得更靠近在一起,而不与非关键电路竞争可编程资源。
框210处,在布局设计的元件之间对电路设计的网络进行布线。信号可以使用许多不同的布线算法来布线,这些布线算法试图优化布线以达到不同的特性。一种布线算法中,信号被布线以最小化每个信号的时延特性。这被称为延迟模式布线。另一种布线算法中,信号被布线以最小化所使用的布线资源的数量。这被称为资源模式布线。通常,延迟模式优化比资源模式优化需要更长的运行时间。延迟模式优化中,分析或模拟不同的可能路径以确定传送延迟参数。布线算法搜索具有小于或等于原始时序延迟的时序延迟的解决方案。然而,一旦找到解决方案,布线算法不会浪费处理来试图进一步优化信号的时序。一些实施方式中,可以使用延迟模式布线来布线关键信号,并且可以使用资源模式布线来布线非关键信号。框212处,存储布局和布线后的电路设计。
整个开发过程中,电路设计可能会被多次修改。由于执行整个设计的布局和布线需要大量时间,因此当只有一小部分设计发生变化时,期望能避免重复物理合成优化、布局和布线的整个过程。一些实施方式中,可以重新使用记录在先前电路设计的布局和布线中的优化历史文件来指导针对电路设计的在后版本的预布局优化,从而允许该处理省去在图1中执行的初始布局和优化。
一些实施方式中,优化历史文件中的每个优化可以指定优化的类型和通过优化修改的模块实例的名称。在一些情况下,框202处执行的优化过程可以基于在优化历史文件中指示的模块实例名称来识别要被修改的第二网表204中的模块。然而,在一些情况下,第二网表204中的模块实例名称可能不同于模块历史文件中指示的模块实例名称。例如,当优化历史文件被重新用于指导用于电路设计的在后版本的网表的预布局优化时,网表中的模块实例的名称可能与优化历史文件中的模块实例的名称不匹配。例如,如果设计人员更新了模块,设计软件可能会稍微更改模块实例的名称。如果不能基于名称识别记录优化的模块实例,则可以使用更复杂的基于签名的方式,例如基于实例的名称、实例的类型(LUT5、FDRE、DSP48E2等)以及已连接网络的名称。
一些实施方式中,该过程可以在重复布局之前仅执行优化历史文件中的优化的子集。
图3示出了根据一个或多个实施方式的用于电路设计的优化意识布局和布线的另一示例过程的流程图。在这个示例中,物理合成优化的性能拆分为预布局阶段和布局后阶段。将物理合成优化拆分成预布局阶段和布局后阶段,可以执行网表的布局以优先考虑最重要的特定参数(例如,时序/时钟速度、裸片空间或功耗)。例如,如果处理速度是最重要的,则可以在优化历史文件中将时序优化指示为更高的优先级。其他非时序优化可以在优化历史文件中被指示为较低优先级。
框302处,在第一网表106上执行优化历史文件116中指示的一组较高优先级物理合成优化,以产生第二网表304。框306处,第二网表304被布局以在目标可编程IC上进行实施,以产生第二布局设计308。布局之后,框310处,执行在优化历史文件中指示的一组较低优先级物理合成优化。一些实施方式中,可以在框312处执行优化历史文件116中未指示的新物理优化。将所执行的任何新的优化添加到优化历史文件中,以产生更新的优化历史文件314。框316处,为第二布局设计进行信号网络布线。框318处,存储布局和布线后的电路设计。
图4示出了被配置成执行在此描述的逻辑合成、物理合成优化、布局和布线过程的计算装置的框图。本领域技术人员应认识到,包括配置有程序代码的一个或多个处理器和存储器装置的各种替代计算装置可适于管理进程和数据结构并实施本发明不同实施例的算法。包括以处理器可执行格式编码的本发明的过程的计算机代码可以经由各种非暂时性计算机可读存储介质或传送通道(诸如磁盘或光盘或磁带、电子存储设备、或作为网络上的应用服务)储存和提供。
处理器计算装置400包括耦合到主机总线412的一个或多个处理器402、时钟信号发生器404、存储单元406、储存单元408和输入/输出控制单元410。装置400可以利用电路板上分离的元件或者可以在集成电路内部来实施。当在集成电路内部实施时,处理器计算装置则被称为微控制器。
计算装置的体系结构取决于本领域技术人员所认识到的实施要求。处理器402可以是一个或多个通用处理器,或一个或多个通用处理器与合适的协同处理器的组合,或一个或多个专用处理器(例如,RISC、CISC、流水线等)。
存储器装置406通常包括多级的高速缓冲存储器和主存储器。储存装置408可以包括诸如由磁盘(未示出)、闪存、EPROM或其他非易失性数据储存器提供的本地和/或远程的永久性储存器。储存单元可以是可读取的或可读取/写入的。此外,存储器406和储存器408可以被组合在单个装置中。
处理器装置402执行储存器408和/或存储器406装置中的软件,从储存器408和/或存储器406装置读取数据并将数据存储到储存器408和/或存储器406装置,并且通过输入/输出控制装置410与外部设备通信。这些功能由时钟信号发生器404同步。计算装置的资源可以由操作系统(未示出)或硬件控制单元(未示出)来管理。本领域技术人员应认识到,包括一个或多个处理器以及配置有程序代码的存储装置的各种替代计算装置适于管理本发明不同实施例的过程和数据结构。
图5示出了可编程集成电路的框图,其可用作根据本发明各种实施例的用于布局和布线的目标装置。可编程IC也可以被称为片上系统(SOC),其包括处理器子系统510和可编程逻辑子系统530。处理器子系统510可以被编程为通过执行用户程序来实施用户设计的软件部分。该程序可以被指定为配置数据流的一部分,或者可以从片上或片外数据储存设备中检索获得。处理器子系统510可以包括用于执行一个或多个软件程序的各种电路512、514、516和518。电路512、514、516和518可以包括例如一个或多个处理器核、浮点单元(FPU)、中断处理单元、片上存储器、高速缓冲存储器和/或高速缓存一致互连。
可编程IC 502的可编程逻辑子系统530可以被编程为实施用户设计的硬件部分。例如,可编程逻辑子系统可以包括多个可编程资源532,其可以被编程为实施在配置数据流中指定的一组电路。可编程资源532包括可编程互连电路、可编程逻辑电路和配置存储器单元。可编程逻辑使用可编程元件来实施用户设计的逻辑,所述可编程元件可以包括例如函数发生器、寄存器、算术逻辑等等。可编程互连电路可以包括通过可编程互连点(PIP)互连的大量不同长度的互连线。
可以通过将配置数据流加载到配置存储器单元中以编程可编程资源532,配置存储器单元定义如何配置可编程互连电路和可编程逻辑电路。于是各个存储器单元的集体状态确定可编程资源532的功能。可以从存储器(例如,从外部PROM)读取配置数据或者通过外部设备将配置数据写入到可编程IC 502中。一些实施方式中,配置数据可以通过包括在可编程逻辑子系统530中的配置控制器534被加载到配置存储器单元中。一些其他的实施方式中,配置数据可以通过由处理器子系统510执行的启动过程被加载到配置存储器单元中。
可编程IC 502可以包括用于将处理器子系统510与可编程逻辑子系统530内实施的电路互连的各种电路。在该实施例中,可编程IC 502包括核心交换机526,其可以在处理器子系统510和可编程逻辑子系统530的各种数据端口之间布线数据信号。核心交换机526还可以在可编程逻辑或处理子系统510和530中的任一个与可编程IC的各种其他电路(例如内部数据总线)之间布线数据信号。替代地或另外地,处理器子系统510可以包括直接与可编程逻辑子系统连接的接口,即绕过核心交换机526。例如,可以使用由ARM公布的AMBA AXI协议规范(AXI)来实现这样的接口。
一些实施方式中,处理器子系统510和可编程逻辑子系统530还可以经由存储器控制器521读取或写入片上存储器522或片外存储器(未示出)的存储位置。存储器控制器521可以被实施以与一种或多种不同类型的存储器电路通信,所述存储器电路包括但不限于双数据速率(DDR)2、DDR3、低功率(LP)DDR2类型的存储器,不管是16位、32位、带有ECC的16位等。能够与存储器控制器521通信的不同存储器类型的列表仅出于说明的目的而提供,其不旨在作为限制或是穷尽的。如图5所示,可编程IC 502可包括存储器管理单元520和转换后备缓冲器524,以将由子系统510和530使用的虚拟存储器地址转换为由存储器控制器521使用以访问特定存储器位置的物理存储器地址。
可编程IC可以包括用于与外部电路进行数据通信的输入/输出(I/O)子系统550。I/O子系统550可以包括各种类型的I/O设备或接口,包括例如闪存型I/O设备、更高性能的I/O设备、更低性能的接口、调试I/O设备和/或RAM I/O设备。
I/O子系统550可以包括560A和560B表示的一个或多个闪存接口560。例如,一个或多个闪存接口560可以被实施为配置用于4位通信的四串行外设接口(QSPI)。一个或多个闪存接口560可以被实施为并行8位NOR/SRAM型接口。一个或多个闪存接口560可以被实施为配置用于8位和/或16位通信的NAND接口。应该理解,所描述的具体接口是为了说明而不是限制的目的而提供的。也可以使用具有不同位宽度的其他接口。
I/O子系统550可以包括一个或多个接口562,其提供比闪存接口560更高级别的性能。接口562A-562C中的每一个可以分别连接到DMA控制器564A-564C。例如,一个或多个接口562可以被实施为通用串行总线(USB)类型的接口。一个或多个接口562可以实现为千兆位以太网类型的接口。一个或多个接口562可以被实现为安全数字(SD)类型的接口。
I/O子系统550还可以包括一个或多个接口566,诸如接口566A-566D,其提供比接口562更低级别的性能。例如,一个或多个接口566可以实施为通用I/O(GPIO)类型的接口。一个或多个接口566可以被实施为通用异步接收器/发送器(UART)类型的接口。一个或多个接口566可以被实施为串行外设接口(SPI)总线类型的接口。一个或多个接口566可以被实施为控制器区域网络(CAN)类型的接口和/或I2C类型的接口。一个或多个接口566也可以实施为时序器类型的接口。
I/O子系统550可以包括一个或多个调试接口568,诸如处理器JTAG(PJTAG)接口568A和跟踪接口568B。PJTAG接口568A可以为可编程IC 502提供外部调试接口。跟踪接口568B可以提供端口以从处理器子系统510或可编程逻辑子系统530接收调试信息,例如跟踪信息。
如图所示,接口560、562、566和568中的每一个可以连接到多路复用器570。多路复用器570提供可以直接布线或连接到可编程IC 502的外部引脚的多个输出,例如,内部设置有可编程IC 502的封装的球。例如,可编程IC 502的I/O引脚可以在接口560、562、566和568之间共享。用户可以通过配置数据流配置多路复用器570以选择要使用哪个接口560-568,并因此经由多路复用器570连接到可编程IC 502的I/O引脚。I/O子系统550还可以包括用于将接口562-568连接到可编程逻辑子系统的可编程逻辑电路的结构多路复用器I/O(FMIO)接口(未示出)。另外地或替代地,可编程逻辑子系统530可以被配置为实现可编程逻辑内的一个或多个I/O电路。在一些实施方式中,可编程IC 502还可以包括具有用于电源和/或安全管理的各种电路的子系统540。例如,子系统540可以包括电源管理单元546,电源管理单元546被配置为监控和维持用于为可编程IC 502的各个子系统供电的一个或多个电压域。在一些实施方式中,电源管理单元546可以使不工作的各个子系统断电从而降低功耗,而不会禁用正在使用的子系统的电源。
子系统540还可以包括监视子系统的状态的安全电路,以确保正确操作。例如,子系统540可以包括一个或多个实时处理器542,其被配置为监视各种子系统的状态(例如,如状态寄存器544中所示)。实时处理器542可以被配置为响应于检测到的错误而执行多个任务。例如,对于一些错误,实时处理器542可以响应于检测到的错误而生成警报。作为另一个示例,实时处理器542可以重置子系统以尝试使子系统恢复到正确操作。子系统540包括可用于互连各种子系统的交换网络548。例如,交换网络548可以被配置为将各种子系统510、530和540连接到I/O子系统550的各种接口。在一些应用中,交换网络548还可以用于将实时处理器542与要被监视的子系统隔离。某些应用标准(例如,IEC-61508 SIL3或ISO-26262标准)可能需要这种隔离,以确保实时处理器542不受其他子系统中发生的错误的影响。
本领域技术人员应认识到,包括配置有程序代码的一个或多个处理器和存储器装置的各种替代计算装置可适合于管理在此公开的过程和数据结构。另外,可以经由各种计算机可读存储介质或诸如磁盘或光盘或磁带、电子存储设备或作为网络上的应用服务的输出通道来提供这些过程。
本发明可应用于用于电路设计的布局和布线的各种系统。此外,尽管将FPGA和其他PLD描述为可以应用本发明的系统和方法的合适的目标可编程IC,但是本发明不限于此。考虑到本文公开的本发明的说明书和实施方式,本发明的其它方面和实施例对于本领域技术人员而言是显而易见的。说明书和示出的实施例仅意在作为示例,本发明的实际范围和精神实质由所附权利要求及其等同物所指示。
Claims (14)
1.一种用于电路设计优化的方法,包括:
在处理器上执行操作,所述操作包括:
为存储在连接到处理器的存储器中的电路设计生成第一网表;
确定所述第一网表在目标IC上的布局以产生第一布局设计;
对所述第一布局设计执行一组优化;
通过为所述一组优化中的每个优化指定由该优化执行的物理合成优化的类型以及由该优化修改的模块实例的名称,将所述一组优化记录在优化历史文件中;
通过根据所指定的物理合成优化的类型修改所指定的模块实例来对所述第一网表执行所述优化历史文件中指定的一个或多个优化,以产生不同于所述第一网表的第二网表;
确定所述第二网表在所述目标IC上的布局,以产生不同于所述第一布局设计的第二布局设计;和
对所述第二布局设计的网络进行布线,以产生布局和布线电路设计。
2.根据权利要求1所述的方法,其特征在于,在确定所述第二网表的布局之前执行所述一个或多个优化,从而相对于在所述第一布局设计中执行所述第一网表的布局和网络的布线所需的处理资源,减少在所述第二布局设计中执行所述第二网表的布局和网络的布线所需的处理资源。
3.根据权利要求1所述的方法,其特征在于,对所述第一网表执行所述优化历史文件中指定的优化包括:
确定所述优化历史文件中的一组较高优先级优化和所述优化历史文件中的一组较低优先级优化;
仅执行包含在所述一组较高优先级优化中的优化;和
在所述第二网表的布局后,对布局的所述第二网表执行所述一组较低优先级优化。
4.根据权利要求2或3所述的方法,其特征在于,
所述优化历史文件进一步识别一个或多个时序关键电路模块,并且
确定所述目标IC上所述第二网表的布局的操作在布局所述第二网表的其他电路模块之前先布局所述一个或多个时序关键电路模块。
5.根据权利要求1所述的方法,其特征在于,
所述优化历史文件进一步识别一个或多个时序关键电路模块,并且
确定所述目标IC上所述第二网表的布局的操作在布局所述第二网表的其他电路模块之前先布局所述一个或多个时序关键电路模块。
6.根据权利要求1所述的方法,其特征在于,在所述优化历史文件中指定的所述一个或多个优化包括:数字信号处理器(DSP)寄存器优化、BRAM寄存器优化、移位寄存器优化、强制网络复制,扇出优化、替换优化、重新布线/查找表优化、重新定时优化、关键引脚优化、和/或保持时间固定优化,或上述的组合。
7.根据权利要求1所述的方法,其特征在于,
在所述优化历史文件中指定的一个或多个优化包括将所述电路设计的电路模块分解成多个子模块;和
确定所述第二网表的布局的操作分别确定所述多个子模块中每一个的布局。
8.据权利要求1所述的方法,其特征在于,所述方法还包括:
生成一组配置数据,所述一组配置数据被配置为对所述目标IC的可编程资源进行编程以实施所述布局和布线电路设计;和
将所述一组配置数据存储在连接到所述目标IC的非易失性存储器中,其中所述目标IC被配置为在通电时用所述非易失性存储器中的所述一组配置数据对所述目标IC的所述可编程资源进行编程;
其中所述优化历史文件在工具命令语言脚本中指定所述一组优化。
9.一种用于电路设计优化的系统,包括:
处理器;和
连接到所述处理器的存储器装置,其中所述存储器装置配置有指令,所述指令在由所述处理器执行时致使所述处理器执行操作,所述操作包括:
为存储在所述存储器装置中的电路设计生成第一网表;
确定所述第一网表在目标IC上的布局以产生第一布局设计;
对所述第一布局设计执行一组优化;
通过为所述一组优化中的每个优化指定由该优化执行的物理合成优化的类型以及由该优化修改的模块实例的名称,将所述一组优化记录在优化历史文件中;
通过根据所指定的物理合成优化的类型修改所指定的模块实例来对所述第一网表执行所述优化历史文件中指定的优化,以产生不同于所述第一网表的第二网表;
确定所述第二网表在所述目标IC上的布局,以产生不同于所述第一布局设计的第二布局设计;和
对所述第二布局设计的网络进行布线,以产生布局和布线电路设计。
10.根据权利要求9所述的系统,其特征在于,在确定所述第二网表的布局之前执行一个或多个所述优化,从而相对于在所述第一布局设计中执行所述第一网表的布局和网络的布线所需的处理资源,减少在所述第二布局设计中执行所述第二网表的布局和网络的布线所需的处理资源。
11.根据权利要求9所述的系统,其特征在于,所述指令还使得所述处理器:
生成一组配置数据,所述一组配置数据被配置为对所述目标IC的可编程资源进行编程以实施所述布局和布线电路设计;和
将所述一组配置数据存储在连接到所述目标IC的非易失性存储器中,其中所述目标IC被配置为在通电时用所述非易失性存储器中的所述一组配置数据对所述目标IC的所述可编程资源进行编程。
12.根据权利要求9所述的系统,其特征在于,
所述优化历史文件进一步识别一个或多个时序关键电路模块,并且
在确定所述目标IC上所述第二网表的布局时,所述处理器在布局所述第二网表的其他电路模块之前先布局所述一个或多个时序关键电路模块。
13.根据权利要求9所述的系统,其特征在于,由所述处理器执行的一个或多个所述优化包括:扇出优化、关键单元优化、强制网络复制、替换优化、DSP寄存器优化、BRAM寄存器优化、移位寄存器优化、重新布线/查找表优化、重新定时优化、关键引脚优化、保持时间固定优化,或上述的组合。
14.根据权利要求9所述的系统,其特征在于,所述系统还包括:
所述目标IC;和
其中所述指令进一步致使所述处理器产生一组配置数据,所述一组配置数据被配置为对所述目标IC的可编程资源进行编程,从而实施所述布局和布线电路设计;
其中所述优化历史文件在工具命令语言脚本中指定所述一组优化。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/873,072 | 2015-10-01 | ||
US14/873,072 US9613173B1 (en) | 2015-10-01 | 2015-10-01 | Interactive multi-step physical synthesis |
PCT/US2016/049990 WO2017058457A1 (en) | 2015-10-01 | 2016-09-01 | Interactive multi-step physical synthesis |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108140067A CN108140067A (zh) | 2018-06-08 |
CN108140067B true CN108140067B (zh) | 2021-08-31 |
Family
ID=56896847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680057930.8A Active CN108140067B (zh) | 2015-10-01 | 2016-09-01 | 用于电路设计优化的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9613173B1 (zh) |
EP (1) | EP3356966B1 (zh) |
JP (1) | JP6728345B2 (zh) |
KR (1) | KR102596637B1 (zh) |
CN (1) | CN108140067B (zh) |
WO (1) | WO2017058457A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503861B1 (en) * | 2018-05-21 | 2019-12-10 | Xilinx, Inc. | Placing and routing an interface portion and a main portion of a circuit design |
US10614191B1 (en) | 2018-05-29 | 2020-04-07 | Xilinx, Inc. | Performing placement and routing concurrently |
US10776543B2 (en) | 2018-06-25 | 2020-09-15 | International Business Machines Corporation | Automated region based optimization of chip manufacture |
US10608641B2 (en) | 2018-07-20 | 2020-03-31 | Xilinx, Inc. | Hierarchical partial reconfiguration for programmable integrated circuits |
EP3667523A1 (en) | 2018-12-10 | 2020-06-17 | ABB Schweiz AG | Method of determining a three-dimensional layout of electrical connections of an electric component |
CN111400995B (zh) * | 2018-12-25 | 2021-01-08 | 上海安路信息科技有限公司 | 布局优化方法及布局优化系统 |
US20200410153A1 (en) | 2019-05-30 | 2020-12-31 | Celera, Inc. | Automated circuit generation |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103366028A (zh) * | 2012-03-31 | 2013-10-23 | 中国科学院微电子研究所 | 一种现场可编程门阵列芯片布局方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5726902A (en) * | 1995-06-07 | 1998-03-10 | Vlsi Technology, Inc. | Method and apparatus for characterizing timing behavior of datapaths for integrated circuit design and fabrication |
JP2877083B2 (ja) * | 1996-06-27 | 1999-03-31 | 日本電気株式会社 | 回路設計の最適化装置 |
US6785873B1 (en) * | 1997-05-02 | 2004-08-31 | Axis Systems, Inc. | Emulation system with multiple asynchronous clocks |
US6651225B1 (en) * | 1997-05-02 | 2003-11-18 | Axis Systems, Inc. | Dynamic evaluation logic system and method |
US6754763B2 (en) * | 2001-07-30 | 2004-06-22 | Axis Systems, Inc. | Multi-board connection system for use in electronic design automation |
US6799309B2 (en) * | 2002-12-04 | 2004-09-28 | International Business Machines Corporation | Method for optimizing a VLSI floor planner using a path based hyper-edge representation |
US8819608B2 (en) * | 2007-07-23 | 2014-08-26 | Synopsys, Inc. | Architectural physical synthesis |
CN100478966C (zh) * | 2007-09-28 | 2009-04-15 | 中国电子科技集团公司第五十四研究所 | 对芯片中的海量模块进行阵列布局的方法 |
US8099702B2 (en) * | 2008-07-30 | 2012-01-17 | Synopsys, Inc. | Method and apparatus for proximate placement of sequential cells |
US8196081B1 (en) | 2010-03-31 | 2012-06-05 | Xilinx, Inc. | Incremental placement and routing |
US9015023B2 (en) * | 2010-05-05 | 2015-04-21 | Xilinx, Inc. | Device specific configuration of operating voltage |
US8250513B1 (en) | 2010-11-04 | 2012-08-21 | Xilinx, Inc. | Parallel process optimized signal routing |
US8201130B1 (en) | 2010-11-04 | 2012-06-12 | Xilinx, Inc. | Parallel signal routing |
US8196083B1 (en) | 2010-12-09 | 2012-06-05 | Xilinx, Inc. | Incremental placement and routing |
US9524363B2 (en) * | 2012-05-31 | 2016-12-20 | Globalfoundries Inc. | Element placement in circuit design based on preferred location |
US8732641B1 (en) * | 2012-11-15 | 2014-05-20 | Taiwan Semiconductor Manufacturing Co., Ltd. | Pattern matching based parasitic extraction with pattern reuse |
-
2015
- 2015-10-01 US US14/873,072 patent/US9613173B1/en active Active
-
2016
- 2016-09-01 KR KR1020187012204A patent/KR102596637B1/ko active IP Right Grant
- 2016-09-01 CN CN201680057930.8A patent/CN108140067B/zh active Active
- 2016-09-01 EP EP16763703.2A patent/EP3356966B1/en active Active
- 2016-09-01 JP JP2018516677A patent/JP6728345B2/ja active Active
- 2016-09-01 WO PCT/US2016/049990 patent/WO2017058457A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103366028A (zh) * | 2012-03-31 | 2013-10-23 | 中国科学院微电子研究所 | 一种现场可编程门阵列芯片布局方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017058457A1 (en) | 2017-04-06 |
EP3356966A1 (en) | 2018-08-08 |
US20170098024A1 (en) | 2017-04-06 |
JP2018531457A (ja) | 2018-10-25 |
KR20180058821A (ko) | 2018-06-01 |
US9613173B1 (en) | 2017-04-04 |
CN108140067A (zh) | 2018-06-08 |
EP3356966B1 (en) | 2019-11-27 |
KR102596637B1 (ko) | 2023-10-31 |
JP6728345B2 (ja) | 2020-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108140067B (zh) | 用于电路设计优化的方法和系统 | |
US8775986B1 (en) | Software debugging of synthesized hardware | |
JP2018531457A6 (ja) | 対話型マルチステップ物理合成 | |
US9298865B1 (en) | Debugging an optimized design implemented in a device with a pre-optimized design simulation | |
US11726545B2 (en) | Methods and apparatus for selectively extracting and loading register states | |
US8719752B1 (en) | Hierarchical crosstalk noise analysis model generation | |
US9298866B1 (en) | Method and system for modeling a flip-flop of a user design | |
US11500674B2 (en) | Circuitry with adaptive memory assistance capabilities | |
US8522185B1 (en) | Method for placement and routing of a circuit design | |
US9824172B1 (en) | Performance of circuitry generated using high-level synthesis | |
US9710584B1 (en) | Performance of circuitry generated using high-level synthesis | |
US6526561B2 (en) | Database for designing integrated circuit device, and method for designing integrated circuit device | |
US8196081B1 (en) | Incremental placement and routing | |
US10437946B1 (en) | Using implemented core sources for simulation | |
US10796058B1 (en) | Partial reconfiguration of integrated circuits using shell representation of platform design | |
US9646126B1 (en) | Post-routing structural netlist optimization for circuit designs | |
US9378027B2 (en) | Field-programmable module for interface bridging and input/output expansion | |
US9824173B1 (en) | Software development-based compilation flow for hardware implementation | |
US8196083B1 (en) | Incremental placement and routing | |
US9805152B1 (en) | Compilation of system designs | |
US20040230934A1 (en) | System and method for emulating systems with multiple field programmable gate arrays | |
US9864830B1 (en) | Method and apparatus for placement and routing of circuit designs | |
US10152566B1 (en) | Constraint based bit-stream compression in hardware for programmable devices | |
US10296686B1 (en) | Switching-activity-based selection of low-power sequential circuitry | |
CN106650047B (zh) | 可编程逻辑器件布局方法及装置 |
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 |