CN115358184A - 基于增量编译的fpga原型验证方法及系统 - Google Patents
基于增量编译的fpga原型验证方法及系统 Download PDFInfo
- Publication number
- CN115358184A CN115358184A CN202211005508.1A CN202211005508A CN115358184A CN 115358184 A CN115358184 A CN 115358184A CN 202211005508 A CN202211005508 A CN 202211005508A CN 115358184 A CN115358184 A CN 115358184A
- Authority
- CN
- China
- Prior art keywords
- current
- design
- chip design
- netlist
- previous
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/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/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/394—Routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明提供一种基于增量编译的FPGA原型验证方法和系统,该方法包括:获取当前芯片设计并将其划分为多个分区;将当前芯片设计与前一次芯片设计进行比较,得到当前芯片设计中发生变化的分区和未发生变化的分区;对发生变化的分区进行综合,得到发生变化的分区的当前网表,将发生变化的分区的当前网表与未发生变化的分区的前一次网表进行合并,得到当前芯片设计的网表;将当前芯片设计的网表映射到FPGA芯片上,得到当前布局布线设计;以及,对当前布局布线设计进行检验,若不满足则修改芯片设计并重复上述过程,若满足则根据当前布局布线设计进行下板调试。本发明提高了FPGA原型验证的效率,并且提高了芯片的开发速度。
Description
技术领域
本发明涉及芯片验证技术领域,更具体地,涉及一种基于增量编译的FPGA(FieldProgrammable Gate Array,现场可编程门阵列)原型验证方法及系统。
背景技术
芯片验证贯穿芯片设计的整个流程,通常包括软件验证和基于FPGA的芯片原型验证(简称FPGA原型验证)两大类方法,其中软件验证是指通过逻辑仿真对芯片设计进行验证,而FPGA原型验证是指将RTL(Register Transfer Level,寄存器传输级)移植到FPGA上,通过FPGA拼凑出有效流程来对芯片设计进行验证。FPGA原型验证的执行速度与软件验证相比快了几个数量级,能够极大缩短验证速度。随着芯片设计规模越来越大、芯片验证时间越来越长,FPGA原型验证也得到了越来越多的应用。
目前,FPGA原型验证通常使用完全编译的方式,其编译流程包括以下阶段:读入RTL设计、综合、分割、布局布线、生成下载文件以及下板调试。这种基于完全编译的FPGA原型验证存在以下问题:随着芯片设计规模变大、复杂度提高,FPGA原型验证的编译时间也越长,即使对芯片设计进行微小的改动也需要遍历整个编译流程,无法快速收敛,从而影响了FPGA原型验证的速度,进而影响到芯片的开发速度。
发明内容
为了克服上述现有技术中存在的问题,本发明的一个方面提供一种基于增量编译的FPGA原型验证方法,包括:获取当前芯片设计,将当前芯片设计划分为多个分区;将当前芯片设计与前一次芯片设计进行比较,得到当前芯片设计中与前一次芯片设计相比发生变化的分区和未发生变化的分区;对发生变化的分区进行综合,得到发生变化的分区的当前网表,将发生变化的分区的当前网表与未发生变化的分区的前一次网表进行合并,得到当前芯片设计的网表;将当前芯片设计的网表映射到FPGA芯片上,得到当前布局布线设计;以及,对当前布局布线设计进行检验,若不满足预定需求则修改芯片设计并重复上述过程,若满足预定需求则根据当前布局布线设计进行下板调试。
上述方法中,将当前芯片设计的网表映射到FPGA芯片上以得到当前布局布线设计可以包括:将当前芯片设计的网表与前一次芯片设计的网表进行比较,得到当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分;根据发生变化的部分,修改前一次布局布线设计中的对应部分,将修改后的前一次布局布线设计作为当前布局布线设计。
上述方法中,将当前芯片设计的网表映射到FPGA芯片上以得到当前布局布线设计可以包括:将当前芯片设计的网表与前一次芯片设计的网表进行比较,得到当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分;判断发生变化的部分是否满足增量布局布线的条件,如果满足增量布局布线的条件,则根据发生变化的部分修改前一次布局布线设计中的对应部分,将修改后的前一次布局布线设计作为当前布局布线设计。
上述方法中,所述增量布局布线的条件包括:在当前芯片设计的网表中,发生变化的部分所占的比率小于预定比率;或者发生变化的部分所对应的FPGA小块的数量小于预定数量。
上述方法还可以包括:得到当前芯片设计的网表中与前一次芯片设计的网表相比未发生变化的部分;根据该未发生变化的部分,锁定前一次布局布线设计中的对应部分。
上述方法中,将当前芯片设计划分为多个分区可以包括:得到前一次芯片设计中与当前芯片设计相比发生变化的分区;将前一次芯片设计中发生变化的分区用当前芯片设计中的对应部分进行替换。
上述方法中,将当前芯片设计划分为多个分区可以包括:将当前芯片设计按功能划分为多个分区。
上述方法中,如果当前芯片设计中与前一次芯片设计相比存在多个发生变化的分区,则对多个发生变化的分区进行综合包括:对多个发生变化的分区并行地进行综合。
本发明的另一个方面提供一种基于增量编译的FPGA原型验证系统,该系统包括:
设计输入单元,用于获取当前芯片设计;
分区单元,用于将当前芯片设计划分为多个分区;
综合单元,用于将当前芯片设计与前一次芯片设计进行比较,得到当前芯片设计中与前一次芯片设计相比发生变化的分区和未发生变化的分区;对发生变化的分区进行综合,得到发生变化的分区的当前网表,将发生变化的分区的当前网表与未发生变化的分区的前一次网表进行合并,得到当前芯片设计的网表;
布局布线单元,用于将当前芯片设计的网表映射到FPGA芯片上,得到当前布局布线设计;以及
检验单元,用于对当前布局布线设计进行检验,若满足预定需求则根据当前布局布线设计进行下板调试。
上述系统中,布局布线单元用于将当前芯片设计的网表与前一次芯片设计的网表进行比较,得到当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分;根据发生变化的部分,修改前一次布局布线设计中的对应部分,以及将修改后的前一次布局布线设计作为当前布局布线设计。
本发明的实施例可以实现如下的有益效果:
一方面,在FPGA原型验证的综合阶段引入了分区编译思想,其中将芯片设计划分成多个微小分区,并且引入增量编译的思想仅对有改动的微小分区进行重新综合,从而通过增量综合来缩短综合阶段的编译时间。其中,多个微小分区可以并行地综合,从而进一步缩短了综合阶段的编译时间。
另一方面,在FPGA原型验证的布局布线阶段同样引入了增量编译的思想,参考前一次布局布线设计进行增量布局布线,从而缩短了布局布线阶段的编译时间。
本发明实施例提供的基于增量编译的FPGA原型验证方法及系统通过缩短编译时间提高了FPGA原型验证的效率,并且提高了芯片的开发速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示意性和解释性的,并不用于限制本发明。
附图说明
此处的附图被并入说明书中并构成说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理,其中:
图1示意性地示出了根据本发明一个实施例的基于增量编译的FPGA原型验证方法的流程图;
图2示意性地示出了根据本发明一个实施例的对当前芯片设计进行综合的方法的流程图;
图3示意性地示出了根据本发明一个实施例的根据当前芯片设计的网表进行布局布线的方法的流程图;
图4示意性地示出了根据本发明一个实施例的基于增量编译的FPGA原型验证系统的框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
目前的FPGA原型验证通常采用完全编译的方式,导致随着芯片设计的规模越大,编译时间也越长;另外,芯片设计的每次微小改动都会导致遍历整个编译流程,从而极大地影响了FPGA原型验证的速度。针对这些问题,本发明提供基于增量编译的FPGA原型验证方法及系统,其中在综合阶段和布局布线阶段引入增量编译的思想,以缩短综合阶段和布局布线阶段的编译时间。
本发明的一个方面提供一种基于增量编译的FPGA原型验证方法,以解决目前的FPGA原型验证效率低、芯片开发速度慢的问题,该方法适于对SOC芯片(特别是SOC超大芯片)进行FPGA原型验证。概括而言,该方法包括:获取当前芯片设计,将当前芯片设计划分为多个分区;将当前芯片设计与前一次芯片设计进行比较,得到当前芯片设计中与前一次芯片设计相比发生变化的分区和未发生变化的分区;对发生变化的分区进行增量综合,得到发生变化的分区的当前网表,将发生变化的分区的当前网表与未发生变化的分区的前一次网表进行合并,得到当前芯片设计的网表;将当前芯片设计的网表与前一次芯片设计的网表进行比较,得到当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分;根据发生变化的部分,修改前一次布局布线设计中的对应部分,将修改后的前一次布局布线设计作为当前布局布线设计;以及,对当前布局布线设计进行检验,若不满足预定需求则修改芯片设计并重复上述过程,若满足预定需求则根据当前布局布线设计进行下板调试。
图1示意性地示出了根据本发明一个实施例的基于增量编译的FPGA原型验证方法的流程图,下文将参考图1描述该方法的各个步骤。
步骤S11.获取当前芯片设计。
在获取芯片设计之前需要完成最初版本的芯片设计,芯片设计人员可以通过执行RTL建模来描述所设计的芯片电路,包括时钟域的描述、时序逻辑的描述和组合逻辑的描述。RTL建模包括采用Verilog、VHDL、SystemVerilog等HDL(Hardware DescriptionLanguage,硬件描述语言)来描述寄存器到寄存器之间的逻辑功能、芯片电路的HDL层次,RTL建模最终得到RTL代码形式的芯片设计文件(即芯片设计)。在完成最初版本的芯片设计之后,芯片设计人员还可以对最初版本的芯片设计进行修改并且可以在修改版本的基础上进行进一步的修改,当前芯片设计指的就是最新版本的芯片设计。为获取当前芯片设计,可以先确定每个版本的芯片设计的建立时间,从中读取具有最新建立时间的芯片设计作为当前编译的芯片设计,即当前芯片设计。在获取当前芯片设计后,可以在本地存储当前芯片设计,以便在后续程序中快速查找到该芯片设计。
应理解,获取芯片设计也称为设计输入,上述设计输入属于HDL输入方式。除了上述HDL输入方式之外,设计输入还可以采用原理图输入、IP核输入、门级网表文件输入等方式,或者可以采用这些输入方式的混合方式。
步骤S12.将当前芯片设计划分为多个分区。
在获取到当前芯片设计之后,将当前芯片设计按功能划分为多个不同的功能模块,每个功能模块对应一个分区。在实践中,可以将获取的RTL代码形式的芯片设计文件按功能进行划分,得到多段RTL代码,使得每段RTL代码对应一个功能模块。
通过划分当前芯片设计,可以使分区内部的设计相关性较高而分区之间的设计相关性较低,从而达到高内聚低耦合的目的。举例而言,可以将当前芯片设计按功能划分为10个不同的分区,分别为PCIE分区、DDR分区、总线分区、DMA分区、CPU分区、加速核分区1、加速核分区2、加速核分区3、加速核分区4和其余分区。其中,划分4个加速核分区是因为在芯片设计中加速核模块的设计规模往往较大,而对加速核模块的修改可能仅涉及到该模块中的一小部分,分区越精细,后续程序对芯片设计中增量综合部分的定位就越精准,从而可以提高编译效率。应理解,这里的4个加速核分区仅用于示例,本领域技术人员可以根据实际需要划分1-3个加速核分区,或者5个以上加速核分区;除了加速核分区之外,也可以根据相应功能模块的设计规模大小来进一步细分其他的分区。
步骤S13.对当前芯片设计进行增量综合,得到当前芯片设计的网表。
如果存在前一次编译并且当前综合约束与前一次编译的综合约束(后文简称为前一次综合约束)相比没有发生变化,但当前芯片设计与前一次编译的芯片设计(后文简称为前一次芯片设计)相比有部分分区发生了变化,则可以对发生变化的分区进行综合,而对未发生变化的分区不进行综合,即增量综合。对发生变化的分区进行综合将会得到发生变化的分区的当前网表,将发生变化的分区的当前网表与未发生变化的分区在前一次编译得到的网表(后文简称为前一次网表)进行合并,即得到当前芯片设计的网表。
图2示意性地示出了步骤S13的各个子步骤,如下所示:
S131.获取当前综合约束。其中,综合约束包括但不限于速度、功耗、成本以及电路类型约束。
在芯片设计人员完成最初版本的芯片设计时,通常会同时设置针对最初版本的芯片设计的最初版本的综合约束。在此之后,芯片设计人员还可以对最初版本的综合约束进行修改并且可以在修改版本的基础上进行进一步的修改,当前综合约束指的就是最新版本的综合约束。
在获取了当前综合约束之后,可以在本地存储当前综合约束,以便在后续程序中快速查找到该综合约束。
S132.确定是否存在前一次编译,如果存在则执行步骤S133,否则,将当前芯片设计中的所有分区作为增量综合分区然后执行步骤S135。
S133.比较当前综合约束与前一次综合约束,如果当前综合约束与前一次综合约束相比没有发生变化则执行步骤S134,否则将当前芯片设计中的所有分区作为增量综合分区然后执行步骤S135。
应理解,如果不存在前一次编译,则当前芯片设计的所有分区均没有进行过综合,因此需要将所有分区作为增量综合分区在后续步骤中进行综合;另外,如果存在前一次编译,但当前综合约束与前一次综合约束相比发生了变化,则也需要将所有分区作为增量综合分区在当前综合约束下重新进行综合。
S134.比较当前芯片设计与前一次芯片设计,得到当前芯片设计中与前一次芯片设计相比发生变化的分区和未发生变化的分区,将发生变化的分区作为增量综合分区。
在实践中,可以将RTL代码形式的当前芯片设计文件与前一次芯片设计文件进行文档比对,得到当前芯片设计文件中发生变化的RTL代码段,确定发生变化的RTL代码段在当前芯片设计中对应的功能模块,从而根据该功能模块在当前芯片设计中对应的分区得到增量综合分区。
S135.在当前综合约束下对增量综合分区进行综合,得到增量综合分区的当前网表。
在进行增量综合时,可以采用综合工具(例如,Synplicity公司的Synplify/Synplify Pro软件)来对当前芯片设计中的增量综合分区进行综合。具体地,对于每个增量综合分区,将其对应的芯片设计文件中的RTL代码段翻译为由与、或、非门等基本逻辑单元组成的逻辑连接网表(Netlist),根据当前综合约束来优化翻译得到的逻辑连接,并且输出该增量综合分区的当前网表。
在当前芯片设计中存在多个增量综合分区的情况下,可以对这些增量综合分区并行地进行综合,以缩短综合时间、提高编译效率。
S136.合并增量综合分区的当前网表与当前芯片设计中其他分区的前一次网表,得到当前芯片设计的网表。
其他分区指的是当前芯片设计中与前一次芯片设计相比未变化的分区,在当前综合约束与前一次综合约束相比没有发生变化的情况下,对这些分区进行综合得到的网表将与其前一次网表没有区别,因此无需再对这些分区进行综合,其前一次网表可以直接用作当前网表。
在获取当前芯片设计的网表后,可以在本地存储当前芯片设计的网表,以便在后续程序中快速查找到该网表。
应注意,在当前芯片设计中的所有分区作为增量综合分区的情况下(例如,不存在前一次编译,当前综合约束与前一次综合约束相比发生了变化,或者当前芯片设计与前一次芯片设计相比所有分区都发生了变化),由于除了增量综合分区之外不存在其他分区,因此是合并所有增量综合分区的当前网表来得到当前芯片设计的网表;另外,在当前芯片设计中没有分区作为增量综合分区的情况下(例如,存在前一次编译,但当前芯片设计与前一次芯片设计相比没有发生变化,并且当前综合约束与前一次综合约束相比也没有发生变化,而仅是当前布局布线约束与前一次编译的布局布线约束相比发生了变化),合并所有其他分区的前一次网表,或者获取在前一次编译得到的前一次芯片设计的网表(后文简称为前一次芯片设计的网表),作为当前芯片设计的网表。
从上述增量综合的过程可知,仅综合当前芯片设计中发生变化的分区,并且在存在多个发生变化的分区时并行地执行综合,使得综合时间可以大幅度缩短,编译效率由此可以得到提高。
步骤S14.根据当前芯片设计的网表进行增量布局布线,得到当前布局布线设计。
如果存在前一次编译并且当前布局布线约束与前一次编译的布局布线约束(后文简称为前一次布局布线约束)相比没有发生变化,而当前芯片设计的网表与前一次芯片设计的网表相比发生了变化并且满足增量布局布线的条件,则可以根据发生变化的部分进行增量布局布线。具体地,在当前布局布线约束下,根据当前芯片设计的网表中发生变化的部分,在前一次编译得到的布局布线设计(后文简称为前一次布局布线设计)上进行增量布局布线,得到当前布局布线设计。
图3示意性地示出了步骤S14的各个子步骤,如下所示:
S141.获取当前布局布线约束,布局布线约束包括但不限于位置约束、时序约束等。其中,位置约束指的是布局的策略,包括I/O约束、物理界定等,根据物理界定可以将FPGA划分为多个小块,并且约定每个小块所对应的模块,便于进行增量布局布线;时序约束包括周期约束、输入偏移约束和输出偏移约束等。
在芯片设计人员完成最初版本的芯片设计时,同时还会设置最初版本的布局布线约束。之后,芯片设计人员还可以对最初版本的布局布线约束进行修改并且可以在修改版本的基础上进行进一步的修改,当前布局布线约束指的就是最新版本的布局布线约束。
在获取了当前布局布线约束之后,可以在本地存储当前布局布线约束,以便在后续程序中快速查找到该布局布线约束。
S142.确定是否存在前一次编译,如果存在则执行步骤S143,否则执行步骤S147。
S143.比较当前布局布线约束与前一次布局布线约束,如果当前布局布线约束与前一次布局布线约束相比没有发生变化则执行步骤S144,否则执行步骤S147。
应理解,如果不存在前一次编译,则当前芯片设计没有进行过布局布线,因此需要进行全局布局布线(参见步骤S147)而不是增量布局布线;另外,如果存在前一次编译,但当前布局布线约束与前一次布局布线约束相比发生了变化,则也需要进行全局布局布线。
S144.比较当前芯片设计的网表与前一次芯片设计的网表,得到当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分。
S145.判断当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分是否满足增量布局布线的条件,如果满足则执行步骤S146,否则执行步骤S147。
其中,增量布局布线的条件可以包括:在当前芯片设计的网表中,与前一次芯片设计的网表相比发生变化的部分占整体(即当前芯片设计的网表整体)的比率小于预定比率(例如,20%);或者,当前芯片设计的网表中发生变化的部分所对应的FPGA小块的数量小于预定数量等。
S146.增量布局布线,即,在当前布局布线约束下,根据当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分,在前一次布局布线设计中进行增量布局布线,从而得到当前布局布线设计。
具体地,增量布局布线的过程可以包括:根据当前芯片设计的网表中与前一次芯片设计的网表相比未发生变化的部分,确定前一次布局布线设计中的对应的不变部分,在前一次布局布线设计中锁定该不变部分;另外,在当前布局布线约束下,根据当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分,修改前一次布局布线设计中的对应的变化部分。其中,增量布局布线方法可以参考Vivado锁定增量编译技术。
S147.全局布局布线,即,在当前布局布线约束下,进行从当前芯片设计的网表到FPGA芯片的全局布局布线,得到当前布局布线设计。
如上文所述,在出现至少一种以下情况下需要进行全局布局布线:不存在前一次编译,当前布局布线约束与前一次布局布线约束相比发生了变化,或者当前芯片设计的网表与前一次芯片设计的网表相比虽然发生了变化但不满足增量布局布线的条件。全局布局布线指的是在布局布线约束下将芯片设计的网表整体映射到FPGA芯片上,从而产生布局布线设计文件。其中,布局是指将网表中的硬件原语和底层单元合理地配置到FPGA芯片内部的固有硬件结构上;布线是根据布局的拓扑结构,利用FPGA芯片内部的各种连线资源,合理地连接各个元件。布局布线可以使用FPGA芯片生产商提供的软件工具来进行,在布局布线结束后,软件工具可以自动生成布局布线设计文件(即布局布线设计),包括布局布线信息、延时文件、布局布线报告等。
在得到当前布局布线设计后,可以在本地存储当前布局布线设计,以便在后续程序中快速查找到该布局布线设计。
从上述增量布局布线的过程可知,利用前一次布局布线设计,仅对网表中发生变化的部分进行增量布局布线,使得布局布线时间可以大幅度缩短,从而进一步提高编译效率。
步骤S15.对当前布局布线设计进行检验,判断是否满足预定需求,若不满足预定需求则执行步骤S16,否则执行步骤S17。
其中,对当前布局布线设计进行检验包括进行布局布线后时序分析与时序仿真,判断时序关系是否满足芯片设计的预定需求等,例如判断建立时间和保持时间是否满足预定需求。
步骤S16.判断芯片设计、综合约束、和/或布局布线约束是否已被进一步修改(例如,对当前芯片设计、当前综合约束、和/或当前布局布线约束的进一步修改),如果查询到芯片设计、综合约束、和/或布局布线约束已被芯片设计人员更新,则返回步骤S11重新进行编译,否则进行等待,直到查询到芯片设计、综合约束、和/或布局布线约束已被芯片设计人员更新。
在不满足预定需求的情况下,芯片设计人员可以进一步修改芯片设计、综合约束、和/或布局布线约束。在确定芯片设计人员已经修改了芯片设计、综合约束、和/或布局布线约束之后,返回步骤S11。
S17.下板调试。
下板调试即是将当前布局布线设计下载到FPGA原型验证平台,进行功能调试。
上述实施例提供了一种基于增量编译的FPGA原型验证方法,通过缩短编译时间提高了FPGA原型验证的效率,并且提高了芯片的开发速度。一方面,在FPGA原型验证的综合阶段引入了分区编译思想,其中将芯片设计划分成多个微小分区,并且引入增量编译的思想仅对有改动的微小分区进行重新综合,从而通过增量综合来缩短综合阶段的编译时间。其中,多个微小分区可以并行地进行综合,从而进一步缩短了综合阶段的编译时间。另一方面,在FPGA原型验证的布局布线阶段同样引入了增量编译的思想,参考前一次布局布线设计进行增量布局布线,从而缩短了布局布线阶段的编译时间。
发明人对上述实施例提供的基于增量编译的FPGA原型验证方法与现有的基于完全编译的FPGA原型验证方法进行了对比实验,实验结果表明,本发明提供的基于增量编译的FPGA原型验证方法与现有技术相比可以节约70%的编译时间,从而极大地提高了FPGA原型验证的效率并且加快了芯片的开发速度。
在上述实施例中,在获取到当前芯片设计后,均需要在步骤S12对当前芯片设计进行划分,然而,如果存在前一次编译,则可以无需在比较当前芯片设计与前一次芯片设计之前先对当前芯片设计进行划分。在一个优选的实施例中,可以仅对最初版本的芯片设计按功能划分为多个不同的分区;在获取到当前芯片设计(及当前综合约束)之后,确定是否存在前一次编译;如果存在前一次编译,则比较当前综合约束与前一次综合约束;如果当前综合约束与前一次综合约束相比没有发生变化,则比较前一次芯片设计与当前芯片设计,得到前一次芯片设计中与当前芯片设计相比发生变化的分区;将前一次芯片设计中发生变化的分区用当前芯片设计中的对应部分进行替换,从而实现对当前芯片设计的分区划分。在该优选实施例中,无需在每次获取当前芯片设计后都进行分区划分,而是在前一次芯片设计的多个分区的基础上进行分区的替换,由此可以进一步提高编译效率。
应注意,一些示例性方法被描绘为流程图。虽然流程图将操作表述为顺序执行,但可以理解的是,其中的许多操作可以并行、同时或者同步地执行,另外,还可以重新排列操作的顺序。处理可以在操作完成时终止,也可以具有未包括在附图中或者实施例中的附加步骤。
本发明的另一个方面提供一种基于增量编译的FPGA原型验证系统,图4示意性地示出了该系统的框图。
如图4所示,基于增量编译的FPGA原型验证系统包括:设计输入单元、分区单元、综合单元、布局布线单元和检验单元。其中,设计输入单元用于获取当前芯片设计,具体操作请参见上文的步骤S11;分区单元用于将当前芯片设计划分为多个分区,具体操作请参见上文的步骤S12;综合单元用于对当前芯片设计进行增量综合,得到当前芯片设计的网表,具体操作请参见上文的步骤S13;布局布线单元用于根据当前芯片设计的网表进行增量布局布线,得到当前布局布线设计,具体操作请参见上文的步骤S14;检验单元用于对当前布局布线设计进行检验,若满足预定需求则根据当前布局布线设计进行下板调试,具体操作请参见上文的步骤S15-S17。
应理解,尽管在上文中描述了系统的若干模块或者单元,但是模块和单元的划分方式不限于此。事实上,上文描述的两个或更多模块或单元的特征和功能也可以在一个模块或单元中实现,反过来,上文描述的一个模块或单元的特征和功能也可以进一步划分为由多个模块或者单元来实现。
本发明的另一个方面提供一种用于实现本发明实施例的电子设备的计算机系统,该计算机系统可以包括总线,以及耦合到总线的处理器、存储器、输入装置(诸如键盘、鼠标、传感器等)、输出装置(诸如显示器、打印机、扬声器等)、通信接口(诸如并行端口、串行端口、调制解调器、网卡等)以及其他装置(诸如可拆卸装置、驱动装置等)。
其中,存储器(诸如ROM、PROM、EEPROM、RAM、SRAM等)用于存储数据以及计算机指令或程序,包括用于实现上文描述的基于增量编译的FPGA原型验证方法的计算机指令或程序。处理器用于执行计算机指令或程序所指定的一系列动作,例如执行存储器中存储的计算机指令或程序,当处理器执行存储器中存储的计算机指令或程序时,使得计算机系统能够实现上文描述的基于增量编译的FPGA原型验证方法的实施例,包括图1-3中所示的步骤。
本发明的另一个方面提供一种计算机可读介质,该计算机可读介质包括但不限于:软盘、硬盘、磁带、其它磁介质、CDROM、CDRW、DVD、其它光介质、穿孔卡片、其它物理介质、ROM、PROM、EEPROM、RAM、SRAM、或计算机可读取的其它介质,以及传输介质(诸如同轴电缆、光纤电缆、载波等)。计算机可读介质可以包括在上述计算机系统中,也可以是未安装的单独的介质。计算机可读介质用于承载计算机指令或程序,包括用于实现上文描述的基于增量编译的FPGA原型验证方法的计算机指令或程序,当计算机可读介质中的计算机指令或程序被处理器(例如,上述计算机系统中的处理器)读取并执行时,可以实现(例如,使得上述计算机系统实现)上文描述的方法实施例,包括图1-3中所示的步骤。
尽管本发明已经通过优选实施例进行了描述,但应理解的是,本发明并不局限于上文描述的并且在附图中示出的实施例,本领域技术人员可以在不脱离本发明范围的情况下进行各种更改和变型。
Claims (10)
1.一种基于增量编译的FPGA原型验证方法,其特征在于,所述方法包括:
获取当前芯片设计,将所述当前芯片设计划分为多个分区;
将所述当前芯片设计与前一次芯片设计进行比较,得到所述当前芯片设计中与前一次芯片设计相比发生变化的分区和未发生变化的分区;
对所述发生变化的分区进行综合,得到所述发生变化的分区的当前网表,将所述发生变化的分区的当前网表与未发生变化的分区的前一次网表进行合并,得到所述当前芯片设计的网表;
将所述当前芯片设计的网表映射到FPGA芯片上,得到当前布局布线设计;
对所述当前布局布线设计进行检验,若不满足预定需求则修改芯片设计并重复上述过程,若满足预定需求则根据所述当前布局布线设计进行下板调试。
2.根据权利要求1所述的方法,其特征在于,将所述当前芯片设计的网表映射到FPGA芯片上,得到当前布局布线设计包括:
将所述当前芯片设计的网表与前一次芯片设计的网表进行比较,得到所述当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分;
根据所述发生变化的部分,修改前一次布局布线设计中的对应部分,将修改后的前一次布局布线设计作为所述当前布局布线设计。
3.根据权利要求1所述的方法,其特征在于,将所述当前芯片设计的网表映射到FPGA芯片上,得到当前布局布线设计包括:
将所述当前芯片设计的网表与前一次芯片设计的网表进行比较,得到所述当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分;
判断所述发生变化的部分是否满足增量布局布线的条件,如果满足所述增量布局布线的条件,则根据所述发生变化的部分修改前一次布局布线设计中的对应部分,将修改后的前一次布局布线设计作为所述当前布局布线设计。
4.根据权利要求3所述的方法,其特征在于,所述增量布局布线的条件包括:
在所述当前芯片设计的网表中,所述发生变化的部分所占的比率小于预定比率;或者
所述发生变化的部分所对应的FPGA小块的数量小于预定数量。
5.根据权利要求2-4中任一项所述的方法,其特征在于,所述方法还包括:
得到所述当前芯片设计的网表中与前一次芯片设计的网表相比未发生变化的部分;
根据所述未发生变化的部分,锁定前一次布局布线设计中的对应部分。
6.根据权利要求1-4中任一项所述的方法,其特征在于,将所述当前芯片设计划分为多个分区包括:
得到前一次芯片设计中与所述当前芯片设计相比发生变化的分区;
将前一次芯片设计中发生变化的分区用所述当前芯片设计中的对应部分进行替换。
7.根据权利要求1-4中任一项所述的方法,其特征在于,将所述当前芯片设计划分为多个分区包括:
将所述当前芯片设计按功能划分为多个分区。
8.根据权利要求1-4中任一项所述的方法,其特征在于,所述当前芯片设计中与前一次芯片设计相比存在多个发生变化的分区;以及
对所述多个发生变化的分区进行综合包括:对所述多个发生变化的分区并行地进行综合。
9.一种基于增量编译的FPGA原型验证系统,其特征在于,所述系统包括:
设计输入单元,用于获取当前芯片设计;
分区单元,用于将所述当前芯片设计划分为多个分区;
综合单元,用于将所述当前芯片设计与前一次芯片设计进行比较,得到所述当前芯片设计中与前一次芯片设计相比发生变化的分区和未发生变化的分区;对所述发生变化的分区进行综合,得到所述发生变化的分区的当前网表,将所述发生变化的分区的当前网表与未发生变化的分区的前一次网表进行合并,得到所述当前芯片设计的网表;
布局布线单元,用于将所述当前芯片设计的网表映射到FPGA芯片上,得到当前布局布线设计;
检验单元,用于对所述当前布局布线设计进行检验,若满足预定需求则根据所述当前布局布线设计进行下板调试。
10.根据权利要求9所述的系统,其特征在于,所述布局布线单元用于将所述当前芯片设计的网表与前一次芯片设计的网表进行比较,得到所述当前芯片设计的网表中与前一次芯片设计的网表相比发生变化的部分;根据所述发生变化的部分,修改前一次布局布线设计中的对应部分,将修改后的前一次布局布线设计作为所述当前布局布线设计。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2022104634693 | 2022-04-28 | ||
CN202210463469 | 2022-04-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115358184A true CN115358184A (zh) | 2022-11-18 |
Family
ID=84002476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211005508.1A Pending CN115358184A (zh) | 2022-04-28 | 2022-08-22 | 基于增量编译的fpga原型验证方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115358184A (zh) |
-
2022
- 2022-08-22 CN CN202211005508.1A patent/CN115358184A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8839171B1 (en) | Method of global design closure at top level and driving of downstream implementation flow | |
US6378123B1 (en) | Method of handling macro components in circuit design synthesis | |
CN106503282B (zh) | 集成电路设计的增量寄存器重定时 | |
US6292931B1 (en) | RTL analysis tool | |
US6173435B1 (en) | Internal clock handling in synthesis script | |
US6295636B1 (en) | RTL analysis for improved logic synthesis | |
US6421818B1 (en) | Efficient top-down characterization method | |
US6289498B1 (en) | VDHL/Verilog expertise and gate synthesis automation system | |
US8875071B2 (en) | Deployment of custom shift array macro cells in automated application specific integrated circuit design flow | |
US20130179142A1 (en) | Distributed parallel simulation method and recording medium for storing the method | |
CN113361219B (zh) | 用于优化集成电路设计的系统和方法 | |
US11922106B2 (en) | Memory efficient scalable distributed static timing analysis using structure based self-aligned parallel partitioning | |
GB2380818A (en) | ASIC design technique | |
CN108140067B (zh) | 用于电路设计优化的方法和系统 | |
EP1958103A1 (en) | Timing constraint merging in hierarchical soc designs | |
US7711534B2 (en) | Method and system of design verification | |
Lavagno et al. | Design of embedded systems | |
US20020184602A1 (en) | Database for designing integrated circuit device, and method for designing integrated circuit device | |
US9633159B1 (en) | Method and system for performing distributed timing signoff and optimization | |
US8245163B1 (en) | Partial compilation of circuit design with new software version to obtain a complete compiled design | |
JP5447547B2 (ja) | マクロ遅延解析装置、マクロ境界パスの遅延解析方法、マクロ境界パスの遅延解析プログラム | |
CN115358184A (zh) | 基于增量编译的fpga原型验证方法及系统 | |
Dai et al. | Verifying High-Level Latency-Insensitive Designs with Formal Model Checking | |
US20230205969A1 (en) | Techniques for modeling and verification of convergence for hierarchical domain crossings | |
US20240111660A1 (en) | Managing high performance simulation representation of an emulation system |
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 |