CN113435149A - 一种优化fpga综合效果的测试例自动生成方法 - Google Patents
一种优化fpga综合效果的测试例自动生成方法 Download PDFInfo
- Publication number
- CN113435149A CN113435149A CN202110714274.7A CN202110714274A CN113435149A CN 113435149 A CN113435149 A CN 113435149A CN 202110714274 A CN202110714274 A CN 202110714274A CN 113435149 A CN113435149 A CN 113435149A
- Authority
- CN
- China
- Prior art keywords
- logic
- cnt
- logical
- layer
- variables
- 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
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/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- 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/337—Design optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Tests Of Electronic Circuits (AREA)
Abstract
本发明公开了一种优化FPGA综合效果的测试例自动生成方法,涉及FPGA技术领域,该方法由输入变量和之前各层生成的逻辑表达式构成当前层的可选变量列表,并从中选择包含前一层生成的逻辑表达式的候选变量按照预定规则基于布尔逻辑生成当前层的逻辑表达式,依次循环直至生成所有逻辑层级的逻辑表达式形成组合逻辑块后构建得到测试例,该方法通过控制输入信号的个数、输出信号的个数以及逻辑层级数可以提供不同面积大小和复杂程度的测试例,生成的测试例可以用来测试FPGA综合中逻辑优化使用的各种策略是否得到预期的结果,依此选择最优策略优化电路面积,以协助FPGA综合工具的开发并辅助优化FPGA综合效果。
Description
技术领域
本发明涉及FPGA技术领域,尤其是一种优化FPGA综合效果的测试例自动生成方法。
背景技术
FPGA设计流程包括综合、装箱、布局、布线、码流生成等等,全流程重要的指标:延时,面积,功耗,布通率以及运行时间,在这其中,FPGA综合是FPGA设计流程中的重要一环,FPGA综合的主要功能是将用HDL语言描述的电路设计转换成逻辑网表并进行优化,它是FPGA流程中的重要一环,实现了对通用逻辑网表进行针对FPGA为目标实现的电路转换。FPGA综合主要包括对硬件描述语言如Verilog进行解析,RTL转换,逻辑优化和目标映射四个部分。FPGA综合的最重要部分就是逻辑优化,逻辑优化的主要作用是将电路进行分解,让电路满足FPGA内部k-输入的要求,包含删除冗余节点,删除无效节点,节点分解等步骤,其目标是在保持电路功能不变的前提下,按照实际需要平衡面积、时序以及功耗。
任意门级网表都可以用基于与/或/非的传统布尔逻辑(traditional Boolean,TB)来实现,现有的EDA工具大部分是基于TB逻辑实现逻辑优化,通过多层次逻辑优化实现对于TB逻辑实现的门级网表的处理,获得符合目标的最优电路。在FPGA设计平台的开发过程中进行有效的测试可以有效的驱动软件的开发,提高软件的质量,优化软件的效果。因此对于逻辑优化过程,若能够生成相应的测试例以测试FPGA综合中逻辑优化使用的各种策略是否达到预期的目标而也是很有必要的,有利于辅助优化FPGA综合效果,但是目前并没有很好的实现方式,而且FPGA工具有很多自身的特点,比如输入数据大而且复杂,因此人工生成逻辑优化过程所需的测试例将耗费大量的时间、人力和物力,这给测试带来了很多难度。
发明内容
本发明人针对上述问题及技术需求,提出了一种优化FPGA综合效果的测试例自动生成方法,本发明的技术方案如下:
一种优化FPGA综合效果的测试例自动生成方法,该方法包括:
生成PI_cnt个输入变量以及PO_cnt个输出变量,PI_cnt为输入信号的个数,PO_cnt为输出信号的个数;
从第m层的可选变量列表中选择第m层的Nm个候选变量,m为参数且起始值为1,当m≥2时,第m层的Nm个候选变量至少包括一个第m-1层生成的逻辑表达式,第一层的可选变量列表由PI_cnt个输入变量形成;
基于选择的第m层的Nm个候选变量按照预定规则基于布尔逻辑生成第m层的Rm个逻辑表达式,当m=LgLv_cnt时有RLgLv_cnt=PO_cnt,LgLv_cnt为逻辑层级数;
若m<LgLv_cnt,则将第m层的Rm个逻辑表达式增加到第m层的可选变量列表中更新得到第m+1层的可选变量列表,并令m=m+1并再次执行从第m层的可选变量列表中选择第m层的Nm个候选变量的步骤;
若m=LgLv_cnt,则将Rm个逻辑表达式对应输出给PO_cnt个输出变量,生成包含LgLv_cnt级逻辑层级的逻辑表达式的组合逻辑块;
基于生成的组合逻辑块构建得到测试例。
本发明的有益技术效果是:
本申请公开了一种优化FPGA综合效果的测试例自动生成方法,该方法通过控制输入信号的个数、输出信号的个数以及逻辑层级数,按照预定规则可以提供不同面积大小和复杂程度的测试例,生成的测试例可以用来测试FPGA综合中逻辑优化使用的各种策略是否得到预期的结果,依此选择最优策略优化电路面积,以协助FPGA综合工具的开发,从而辅助优化FPGA综合效果。
利用本申请提供的方法生成的测试例既可以是纯组合逻辑测试例,也可以通过注入可被优化的布尔空间构成的可控制规模的无关项和冗余项提供具有不同规模可被优化的布尔空间的测试例,达到测试布尔型优化的目的。
附图说明
图1是本申请一个实施例的测试例自动生成方法的流程图。
图2是本申请一个实施例中生成第m层的逻辑表达式的逻辑示意图。
图3是本申请另一个实施例的测试例自动生成方法的流程图。
图4是本申请一个实施例中测试例的构成示意图。
图5是在一个测试实验中测试例在代数型优化策略下综合后的LUT数目的对比结果。
图6是在另一个测试实验中同一测试例注入不同规模布尔空间在不同策略下综合后的LUT数目的对比结果。
图7是另一个测试实例中较大面积组合逻辑测试例在不同策略下综合后的LUT数目的对比结果。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
本申请公开了一种优化FPGA综合效果的测试例自动生成方法,该方法可以自动生成测试FPGA综合中逻辑优化使用的各种策略是否达到预期的目标的测试例,从而辅助优化FPGA综合效果。而在生成测试例过程中,较为核心的部分就是要生成组合逻辑块,本申请的方法包括如下步骤,如图1所示:
步骤1,生成PI_cnt个输入变量以及PO_cnt个输出变量,PI_cnt为输入信号的个数,PO_cnt为输出信号的个数,PI_cnt和PO_cnt均为可以自定义配置的参数。
步骤2,从第m层的可选变量列表VarList(m)中选择第m层的Nm个候选变量,m为参数且起始值为1,通常是随机选择。其中当m=1时,第一层的可选变量列表由PI_cnt个输入变量形成,也即在第一个循环中,将PI_cnt个输入变量全部放入第一层的可选变量列表VarList(1),然后从中选出第一层的N1个候选变量,因此第一层的N1个候选变量均为输入变量。
当m≥2时,第m层的可选变量列表VarList(m)中除了包括PI_cnt个输入变量、还包括之前m-1层生成的逻辑表达式,然后从中选择Nm个候选变量,且第m层的Nm个候选变量至少包括一个第m-1层生成的逻辑表达式,因此第m层的Nm个候选变量至少包含前面的一级或多级逻辑层级生成的逻辑表达式,还可能包含输入变量,具体内容本申请后续会介绍,在此不做赘述。
对于任意第m层,其选择的候选变量的个数Nm可以自定义配置,各个逻辑层级所选择的候选变量的个数Nm可以相等也可以不等。但最基本的,任意第m层的候选变量的个数Nm不超过对应的可选变量列表VarList(m)中变量的总个数,比如对于m=1的情况,N1≤PI_cnt,对于m≥2的情况,则根据实际VarList(m)的总个数确定。
在另一个实施例中,还可以为第m层自定义配置参数ExprV_max(m),该参数ExprV_max(m)定义第m层生成的逻辑表达式中进行逻辑与运算的最大变量的个数,则第m层的候选变量的个数Nm不超过对应的ExprV_max(m),也即Nm≤ExprV_max(m)。不同逻辑层级的ExprV_max(m)可以相同也可以不同。
在另一个实施例中,还可以自定义配置变量的最高扇出个数Fanout_max,这里所称的变量包括输入变量以及各个逻辑层级生成的逻辑表达式,每个变量的最高扇出个数Fanout_max可以相同也可以不同。一个变量的扇出个数表示一个变量被用来生成逻辑表达式的次数,该次数是实际使用的次数,也即若一个变量在一个逻辑层级中/在一个逻辑表达式中被重复多次使用,则该变量的扇出个数也逐次增加,在从第m层的可选变量列表中选择第m层的Nm个候选变量时,任意一个候选变量均未达到对应的最高扇出个数。
步骤3,基于选择的第m层的Nm个候选变量按照预定规则基于布尔逻辑生成第m层的Rm个逻辑表达式。可选的,所使用到的布尔逻辑至少包括逻辑或运算以及逻辑与运算,可选的还包括逻辑非运算。
任意第m层的逻辑表达式的个数Rm可以自定义配置或者随机生成,特别的,当m=LgLv_cnt时有RLgLv_cnt=PO_cnt,LgLv_cnt为逻辑层级数且为可以自定义配置的参数,也即最后一层的逻辑表达式的个数与输出信号的个数相等,其余各层的逻辑表达式的个数不做限定,其余各层的逻辑表达式的数量均相等,或者,存在至少两层的逻辑表达式的数量不相等。
步骤4,若m<LgLv_cnt,则将第m层的Rm个逻辑表达式增加到第m层的可选变量列表VarList(m)中更新得到第m+1层的可选变量列表VarList(m+1),并令m=m+1并再次执行所述从第m层的可选变量列表中选择第m层的Nm个候选变量的步骤,也即回到步骤2进入下一个循环,因此在下一个循环中,第m+1层的Nm+1个候选变量包含第m层生成的Rm个逻辑表达式中的至少一个。
步骤5,若m=LgLv_cnt,则将Rm个逻辑表达式对应输出给PO_cnt个输出变量,生成包含LgLv_cnt级逻辑层级的逻辑表达式的组合逻辑块。
步骤6,基于生成的组合逻辑块构建得到测试例。
为了更清楚的说明本申请循环生成LgLv_cnt级逻辑层级的逻辑表达式的方法,本申请采用如下一个实施例对循环过程展开介绍:
(1)、生成PI_cnt个输入变量以及PO_cnt个输出变量,并初始化逻辑层级的参数m=1,将PI_cnt个输入变量全部放入第一层的可选变量列表VarList(1)。
(2)、从VarList(m)中选出第m层的Nm个候选变量。
(3)、基于选择的第m层的Nm个候选变量按照预定规则基于布尔逻辑生成第m层的Rm个逻辑表达式,也即m=1的逻辑表达式。
(4)、当m<LgLv_cnt时将Rm个逻辑表达式增加到第m层的可选变量列表VarList(m)更新得到第m+1层的可选变量列表VarList(m+1)并在m<LgLv_cnt-1时执行步骤(5)、m=LgLv_cnt-1时执行步骤(6)。当m=LgLv_cnt时结束循环。
(5)、令m=m+1,增加选择条件“在选择候选变量时包含第m层生成的Rm个逻辑表达式中的至少一个”,然后重新执行(2)~(4),循环生成m=2~m=LgLv_cnt-1的各个逻辑层级的逻辑表达式。
(6)、令m=m+1,增加选择条件“在选择候选变量时包含第m层生成的Rm个逻辑表达式中的至少一个”以及“生成的逻辑表达式的数量为PO_cnt”,然后重新执行(2)~(4),循环生成m=LgLv_cnt的逻辑表达式。
一、逻辑表达式的生成方法。
在上述生成包含LgLv_cnt级逻辑层级的逻辑表达式的组合逻辑块的过程中,对于任意第m层都需要生成对应的Rm个逻辑表达式,生成第m层的每个逻辑表达式所采用的方式可以相同也可以不同,实际也有多种对候选变量进行布尔逻辑综合的方式,由此形成的逻辑表达式的形式也不同,在本申请的一个实施例中,每个逻辑表达式为一个SOP形式(Sumof product form,布尔和的形式)的逻辑函数,该SOP形式的逻辑函数由若干个逻辑与项(称为cube,也可以称为product term)通过Boolean sum来表达,每个逻辑与项由若干个literal进行逻辑与运算得到。一个literal是一个候选变量variable的正相或反相。
在一个实施例中,按照相同的预定规则生成任意第m层的第r个逻辑表达式,1≤r≤Rm,生成方式包括,请结合图2:
在生成个逻辑与项时,可以使用到全部的Nm个候选变量,也可以只使用其中的部分候选变量。每个逻辑表达式中存在至少两个逻辑与项由不同的若干个候选变量进行逻辑与运算得到,或者,K个逻辑与项均由相同的若干个候选变量进行逻辑与运算得到,其中不同的候选变量包括候选变量的数量和/或类型不同。一种具体的做法是:
比如一个实例中,Nm个候选变量中包括a、b、c、d,为3。k=1时,从a、b、c、d中选择个候选变量为a、b并形成第一个逻辑与项为ab。k=2时,从a、b、c、d中选择个候选变量为a、b并形成第二个逻辑与项为ab′,b′表示变量b的反相。k=3时,从a、b、c、d中选择个候选变量为a、b、c并形成第三个逻辑与项为abc。由此可见,在该实施例中,候选变量d并未被使用于生成逻辑与项,生成的第一个逻辑与项和第二个逻辑与项使用相同数量和相同类型的两个候选变量,但变量的相位不同,生成的第三个逻辑与项与其余两个逻辑与项使用不同数量和不同类型的候选变量。
第m层的第r个逻辑表达式所包含的逻辑与项的个数可以自定义配置或随机生成,在一个实施例中,还可以自定义配置参数ExpTerm_max(m,r),该参数ExpTerm_max(m,r)定义第m层的第r个逻辑表达式中进行逻辑或运算的最大变量个数,则第m层的第r个逻辑表达式中的逻辑与项的个数不超过对应的ExpTerm_max(m,r),也即m,r中至少一个参数不同时,对应的ExpTerm_max(m,r)可以相同也可以不同。
然后可以按照上述同样的方法,生成第m层的其他各个逻辑表达式。可选的,第m层存在至少两个逻辑表达式包含不同数量的逻辑与项,或者,所有Rm个逻辑表达式均包含相同数量的逻辑与项。比如在上述举例中,一个逻辑表达式中包含三个逻辑与项,另一个逻辑表达式可以与其不同、包含四个逻辑与项,不同逻辑表达式中使用到的逻辑变量的个数和类型也都可以相同或不同。
在一个实施例中,当m=LgLv_cnt时,还检测是否存在未使用输入变量,未使用输入变量是在生成LgLv_cnt级逻辑层级的逻辑表达式时未被使用的输入变量。若不存在未使用输入变量,则将Rm个逻辑表达式对应输出给PO_cnt个输出变量。若存在未使用输入变量,则将未使用输入变量添加到第LgLv_cnt层的逻辑表达式中,从而保证所有输入变量都使用,如图3所示。添加的方式可以有多种,在一个实施例中,由所有未使用输入变量生成若干个逻辑与项,每个逻辑与项由若干个未使用输入变量进行逻辑与运算得到,每个未使用输入变量取正相或反相。将由所有未使用输入变量生成的逻辑与项添加到第L层的任意一个或多个逻辑表达式中。
二、注入可被布尔型优化的布尔空间实现布尔型优化。
多层次逻辑优化存在三种基本方法,即algebraic logic optimization(代数逻辑优化)、Boolean logic optimization(布尔逻辑优化)和decomposition of Booleanfunctions(布尔函数分解),代数逻辑优化指对逻辑表达式执行代数操作,包括分解,提取,因式分解,置换和消去,布尔逻辑优化和布尔函数分解是指处理由布尔空间构成的相关输出无关项,达到简化逻辑表达式的目的。有学者提出关于多层次逻辑优化的四个方面的算法,分别是:factoring logic function(分解逻辑函数)、simplification of logicfunctions(简化逻辑函数)、global phase assignment(全局相位分配)和timingoptimization(时序优化),也有一些基于这几种基本方法提出的衍生的各种方法,如网络重构,节点最小化方法等。上述各种方法都是逻辑优化的重要方式,并且各种方式可以同时存在或者存在于优化过程中的各个阶段,有时可以达到更好的效果。
利用本申请提供的上述方法可以通过控制输入信号的个数PI_cnt、输出信号的个数PO_cnt以及逻辑层级数LgLv_cnt来达到预估测试例规模的目的,可较明显的比较代数型优化的效果,可以较好地驱动对于代数型优化策略的优化效果。而同样关于面积优化的还有布尔型优化,即处理由布尔空间构成的输出“无关项”或“冗余项”,达到优化面积的效果,因此在另一个实施例提供的方法中,还可以注入可控规模的可被布尔型优化的布尔空间,达到测试布尔型优化的目的,该实施例中首先对布尔空间的相关内容介绍如下:
一个最小项(minterm)是一个逻辑与项,其中包含了所有的组成相应逻辑表达式的候选变量,每个候选变量在逻辑与项中以正相或反相形式存在。比如对于一个拥有三个候选变量a、b、c组成的如下逻辑表达式:
F=abc+abc′+ab′c+ab′c′+a′bc+a′bc′+a′b′c+a′b′c′
上述逻辑表达式中包含8个逻辑与项,均为最小项。假设上述逻辑表达式为F=ab+ab′c+ab′c′+a′bc+a′bc′+a′b′c+a′b′c′,则其中逻辑与项ab并不是一个最小项,因为它包含了abc、abc′这两个最小项。N个Boolean变量定义一个N维的布尔空间(Boolean Space)。N维的布尔空间有2N个最小项。若一个逻辑表达式包含了2N个最小项,则这个逻辑函数包含了100%的N维布尔空间。例如F=abc+abc′+ab′c+ab′c′+a′bc+a′bc′+a′b′c+a′b′c′包含了三维布尔空间中所有的8个最小项,就是一个包含了100%的三维布尔空间的逻辑表达式。该实施例可以基于这一原理,注入可控规模的可被布尔型优化的布尔空间,达到测试布尔型优化的目的。
测试布尔型优化的组合逻辑块的方法与测试代数型优化方式,可以看作是在测试代数型优化方式的方法中额外增加注入可布尔优化的逻辑部分实现。如图3所示,则在上述生成任意第m层的第r个逻辑表达式的执行方法的实施例中,若第m层的第r个逻辑表达式不包含冗余项,则生成Km r个逻辑与项后,直接对Km r个逻辑与项进行逻辑或运算生成第m层的第r个逻辑表达式,也即形成了测试代数型优化的逻辑表达式。若第m层的第r个逻辑表达式包含冗余项,则基于生成的Km r个逻辑与项构建至少一组可布尔空间优化的逻辑与项,并将所有逻辑与项进行逻辑或运算生成第m层的第r个逻辑表达式,此时参与逻辑或运算的逻辑与项既包含构建的可布尔空间优化的逻辑与项、也包含最初生成而未参数构建冗余项的逻辑与项,也即有目的性的创建由布尔空间构成的输出“无关项”或“冗余项”的组合逻辑表达式。也即,是否要注入可布尔空间优化的冗余项是可以自行配置的,一个逻辑层级中可以有一个或多个逻辑表达式中注入有可布尔空间优化的冗余项,整个组合逻辑块中可以有一个或多个逻辑层级中注入有可布尔空间优化的冗余项。
具体的,为至少一个逻辑与项选取T个输入变量,将选取的T个输入变量按照若干种不同的正相、反相组合方式与对应的一个逻辑与项分别进行逻辑与运算,构建形成一组可布尔空间优化的逻辑与项,在形成的一组可布尔空间优化的逻辑与项中至少有一个输入变量既存在正相形式也存在反相形式。其中,选取的T个输入变量可以与逻辑与项中包含的输入变量存在重合或完全不同。可选的,可以自定义配置参数Dim_max,Dim_max表示注入布尔空间的最大维数,则在注入布尔空间时,布尔空间变量总数也即每次选取的T的总和不超过Dim_max。
可选的,可以按照上述方法注入一个布尔空间,或者,重新执行为至少一个逻辑与项选取T个输入变量的步骤继续循环生成多个布尔空间,直至构建形成B_cnt组可布尔空间优化的逻辑与项,B_cnt为自定义配置的参数。
比如,按照第一部分实施例提供的方法生成的第三层的第一个逻辑表达式中包含的逻辑与项包括abc、adF1 2、其中a、b、c、d为输入变量,F1 2表示第一级逻辑层级生成的第二个逻辑表达式,表示第二级逻辑层级生成的第一个逻辑表达式。若不包含冗余项,则直接生成第三层的第一个逻辑表达式可以记为当要包含冗余项时,做法比如:
为其中一个逻辑与项选取对应的T=2个输入变量分别为e、f,由这两个输入变量e、f按照若干种不同的正相、反相组合方式与进行逻辑与运算构建形成一组可布尔空间优化的逻辑与项。比如一种做法是,构建形成的一组可布尔空间优化的逻辑与项包括此时所有逻辑与项包括abc、adF1 2、若只需要生成一个布尔空间,则生成第三层的第一个逻辑表达式可以记为再比如一种做法是,构建形成的一组可布尔空间优化的逻辑与项包括此时若只需要生成一个布尔空间,则生成第三层的第一个逻辑表达式可以记为然后可以继续循环生成B_cnt个布尔空间。由此可以生成一个注入B_cnt个可被优化的布尔空间,且注入的布尔空间最大维数不超过Dim_max的测试例,可较明显的比较布尔型优化的效果,可以较好地驱动对于布尔型优化策略的优化效果。
三、添加其他功能。
如图4所示,形成的一个测试例包含必选模块和可选模块两部分,其中必选模块后包括module申明模块、变量例化模块和module结束模块。其中,module申明模块主要用来申明module名字,格式如下:“module moduleName”。变量例化模块主要用来申明输入输出变量,格式如下:“input A,B,C;output F1,F2;”,该处具体格式取决于Verilog版本,1995版本和2001版本存在些许差别。module结束模块则只有“endmodule”。
可选模块包括变量申明模块和语句执行块,变量申明模块顾名思义即用来申明中间变量。语句执行块是整个生成方法的主体,在本申请中,主要包括通过上述方法形成的组合逻辑块。因此在基于生成的组合逻辑块构建得到测试例时,首先基于组合逻辑块形成语句执行块,然后与变量申明模块一起构成可选模块,最后与必选模块结合形成完成的测试例。
纯组合逻辑块主要用来测试布尔型化效果及代数型优化的效果,即面积优化的效果,当然仅使用纯面积优化可能会影响性能,这时需要在面积和性能之间取得一个平衡,而该平衡由时序驱动的优化来决断,影响时序的因素包括逻辑层次和扇出的数目,太高的逻辑层次和太多的扇出数目都会极大地影响时序的效果。需要测试时序驱动的效果时,需要有寄存器存在,因此可选的在一个实施例的方法中,在生成的所述组合逻辑块的输入之前以及输出之后分别添加寄存器,如此可以将组合逻辑块置于寄存器之间,可以通过时序去驱动面积优化,寻找平衡,或者,在生成的组合逻辑块内添加寄存器,以寄存器的输出作为边界划分,再行优化,使测试例可以跟贴近实际情况,如此可以构建得到添加有时序逻辑的测试例,供时序驱动优化策略的测试。
除了添加时序逻辑之外,可选的,在基于组合逻辑块形成语句执行块时,由生成的组合逻辑块以及其他执行块构成语句执行块,由语句执行块形成构建得到测试例,其他执行块包括预定语句块和其他功能模块中的至少一种。其中,预定语句块根据Verilog语法确定,比如常见的if/case语句块、always语句块。其他功能模块可以为测试例添加其他的附加功能。可选的,其他功能模块包括算数运算单元,则相应的还需要在变量申明模块和变量例化模块中添加数据总线结构,从而可以供算数单元的综合、优化策略的测试。
为了说明本申请提供的方法的有效性,通过如下实例数据进行对比:
为测试不同代数型优化策略的效果,利用第一部分的方法生成未注入可优化布尔空间的纯组合逻辑块的测试例,然后用这些测试例在不同的策略下进行综合,将得到综合后的LUT数目进行比较,依此来抉择代数型优化策略,依此创建测试集1,简称集1。测试结果如表1和图5所示。
表1测试例在代数型优化策略下综合后的LUT数目
测试例 | PI_cnt | PO_cnt | LgLv_cnt | 策略1 | 策略2 | 策略3 |
集1测试例1 | 10 | 10 | 5 | 131 | 87 | 109 |
集1测试例2 | 10 | 10 | 7 | 280 | 277 | 250 |
集1测试例3 | 15 | 10 | 7 | 2627 | 1541 | 1575 |
集1测试例4 | 15 | 15 | 7 | 2861 | 2185 | 1713 |
集1测试例5 | 20 | 5 | 5 | 1338 | 566 | 548 |
集1测试例6 | 20 | 10 | 5 | 2486 | 1339 | 1408 |
集1测试例7 | 20 | 10 | 7 | 5527 | 3794 | 3678 |
集1测试例8 | 20 | 15 | 5 | 1723 | 1608 | 1688 |
集1测试例9 | 20 | 20 | 5 | 4579 | 2362 | 2597 |
集1测试例10 | 20 | 20 | 7 | 6358 | 6152 | 6189 |
由表1可以看到,集1中测试例随着PI_cnt、PO_cnt、LgLv_cnt的增加,测试例综合所得的LUT数目也随之增加,也即表明本申请提供方法可以通过可控制的PI_cnt、PO_cnt、LgLv_cnt来提供不同面积大小和复杂程度的纯组合逻辑测试例。表1中策略1是直接将逻辑表达式映射成6-LUT的结果,策略2采用了代数型优化策略,即应用代数型的逻辑网表的分解(decomposition)和公共表达式的提取(factorization)。策略3在策略2的基础上,添加了代数型的网络重构(re-decomposition)和重新提取公共表达式(re-factorization)。与表1对应的是图5,由图5可以看出,相对于策略1而言,策略2和策略3较明显的降低了综合后的LUT数目。
为测试布尔型优化策略的效果,选择一个组合逻辑的测试例,注入不同个数的可被优化的布尔空间,且这些布尔空间由不同数量的变量构成不同的规模,最后生成一组新的测试例集2,简称集2。例如表2中的测试例3是在测试例中注入1个由9个变量构成的布尔空间,测试例12则是在测试例中注入6个布尔空间,这些布尔空间总共用到41个变量。将这组测试例在不同策略下的综合,所选策略除了代数型优化外,还添加了布尔型逻辑优化,最后利用综合后的LUT数目比较找到更优的优化策略。测试结果如表2和图6所示。
表2同一测试例注入不同规模布尔空间在不同策略下综合后的LUT数目
测试例 | B_cnt | 布尔空间变量总数 | 策略1 | 策略2 | 策略3 | 策略4 |
集2测试例1 | 0 | 0 | 1021 | 823 | 595 | 474 |
集2测试例2 | 1 | 3 | 1271 | 1291 | 637 | 615 |
集2测试例3 | 1 | 9 | 1381 | 1314 | 695 | 603 |
集2测试例4 | 2 | 7 | 1557 | 2083 | 621 | 648 |
集2测试例5 | 2 | 12 | 1886 | 1992 | 728 | 703 |
集2测试例6 | 3 | 13 | 6170 | 2595 | 1184 | 698 |
集2测试例7 | 3 | 17 | 6900 | 2872 | 1054 | 673 |
集2测试例8 | 4 | 10 | 7978 | 5856 | 1285 | 819 |
集2测试例9 | 4 | 17 | 7986 | 5778 | 1442 | 664 |
集2测试例10 | 5 | 17 | 10828 | 8375 | 2382 | 994 |
集2测试例11 | 5 | 22 | 10848 | 8132 | 2462 | 924 |
集2测试例12 | 6 | 41 | 15504 | 12135 | 3837 | 773 |
表2中策略1和策略2与表1中所用策略相同。策略3和策略4除了代数型优化外,还添加了布尔型逻辑优化的策略。策略4和策略3的不同点在于策略4加强了对布尔空间的搜索与识别,使之能更有效的发现可被优化的布尔空间并对其进行优化。与表2对应的是图6,由图6可以看出,策略3优化效果要明显好于策略1和策略2,策略4可以较好地识别布尔型优化和代数型优化,因而优化效果优于策略3。并且由图6可以看到,随着注入的布尔空间个数B_cnt增多,构成布尔空间的变量增多,产生冗余项也会越来越多,具体体现就是随着注入的布尔空间个数的增多和构成布尔空间变量的增多,策略1、策略2、策略3的综合后LUT数目也越来越多,图中曲线呈上升趋势,而与之相对应的是,在策略4下综合后的LUT数目基本趋于稳定。在这种情况下,如果没有布尔型优化或者布尔型优化不佳的情况下,将对综合结果产生极大影响。
基于FPGA大容量的特点,对大容量测试例的测试是有必要的,同时代数型优化和布尔型优化应该是同时存在才符合更优的目标。依照前文的方法,生成一组较大容量的测试例,使用的PI_cnt为30,PO_cnt为15,LgLv_cnt为7,在此基础上随机生成不同逻辑的具有较大面积的纯组合逻辑,并添加各种规模的可被优化的布尔空间,将这组测试例在代数型优化和布尔型优化的组合优化策略下进行综合,比较综合后的LUT数目,可以选择更优的组合优化策略,依此创建测试集3,简称集3。测试结果如表3和图7所示。
表3较大面积组合逻辑测试例在不同策略下综合后的LUT数目
测试例 | B_cnt | 布尔空间变量总数 | 策略1 | 策略2 | 策略3 | 策略4 |
集3测试例1 | 1 | 3 | 18107 | 12355 | 3106 | 1387 |
集3测试例2 | 1 | 9 | 17574 | 9486 | 4372 | 213 |
集3测试例3 | 2 | 13 | 17905 | 12125 | 5483 | 1331 |
集3测试例4 | 3 | 28 | 19507 | 9914 | 2918 | 396 |
集3测试例5 | 5 | 24 | 13393 | 9622 | 1410 | 784 |
集3测试例6 | 5 | 33 | 19631 | 9701 | 5057 | 720 |
集3测试例7 | 6 | 40 | 15504 | 12135 | 3837 | 773 |
表3中策略与表2中所用策略相同。由图7中可以看出,四种策略测试集3的测试例的综合结果的变化趋势也与图6相似,也即策略3优化效果要明显好于策略1和策略2,策略4优化效果优于策略3,即生成的大容量测试例可满足验证优化策略效果的目的,可以依此判断优化策略的好坏。
通过上述表格及图所示可以看出,在不停调整优化策略的过程中,优化效果在不断提升,这说明利用本申请提供的方法可以有效的测试和判断在FPGA综合工具开发过程中优化策略的优劣,可以对于综合工具的逻辑优化效果的开发提供有效驱动,辅助提高FPGA设计工具的质量。
Claims (13)
1.一种优化FPGA综合效果的测试例自动生成方法,其特征在于,所述方法包括:
生成PI_cnt个输入变量以及PO_cnt个输出变量,PI_cnt为输入信号的个数,PO_cnt为输出信号的个数;
从第m层的可选变量列表中选择第m层的Nm个候选变量,m为参数且起始值为1,当m≥2时,第m层的Nm个候选变量至少包括一个第m-1层生成的逻辑表达式,第一层的可选变量列表由PI_cnt个输入变量形成;
基于选择的第m层的Nm个候选变量按照预定规则基于布尔逻辑生成第m层的Rm个逻辑表达式,当m=LgLv_cnt时有RLgLv_cnt=PO_cnt,LgLv_cnt为逻辑层级数;
若m<LgLv_cnt,则将第m层的Rm个逻辑表达式增加到第m层的可选变量列表中更新得到第m+1层的可选变量列表,并令m=m+1并再次执行所述从第m层的可选变量列表中选择第m层的Nm个候选变量的步骤;
若m=LgLv_cnt,则将Rm个逻辑表达式对应输出给PO_cnt个输出变量,生成包含LgLv_cnt级逻辑层级的逻辑表达式的组合逻辑块;
基于生成的所述组合逻辑块构建得到测试例。
3.根据权利要求2所述的方法,其特征在于,第m层存在至少两个逻辑表达式包含不同数量的逻辑与项,或者,所有Rm个逻辑表达式均包含相同数量的逻辑与项;每个逻辑表达式中存在至少两个逻辑与项由不同的若干个候选变量进行逻辑与运算得到,或者,K个逻辑与项均由相同的若干个候选变量进行逻辑与运算得到。
4.根据权利要求1所述的方法,其特征在于,除了第LgLv_cnt层生成RLgLv_cnt=PO_cnt个逻辑表达式之外,其余各层的逻辑表达式的数量均相等,或者,存在至少两层的逻辑表达式的数量不相等。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
重新执行所述为至少一个逻辑与项选取T个输入变量的步骤,直至构建形成B_cnt组可布尔空间优化的逻辑与项。
8.根据权利要求1-7任一所述的方法,其特征在于,所述方法还包括:
当m=LgLv_cnt时,检测是否存在未使用输入变量,所述未使用输入变量是在生成LgLv_cnt级逻辑层级的逻辑表达式时未被使用的输入变量;
若不存在未使用输入变量,则将Rm个逻辑表达式对应输出给PO_cnt个输出变量;
若存在未使用输入变量,则将未使用输入变量添加到第LgLv_cnt层的逻辑表达式中。
9.根据权利要求8所述的方法,其特征在于,将未使用输入变量添加到第L层的逻辑表达式中,包括:
由所有未使用输入变量生成若干个逻辑与项,每个逻辑与项由若干个未使用输入变量进行逻辑与运算得到,每个未使用输入变量取正相或反相;
将由所有未使用输入变量生成的逻辑与项添加到第L层的任意一个或多个逻辑表达式中。
10.根据权利要求1-7任一所述的方法,其特征在于,
从第m层的可选变量列表中选择第m层的Nm个候选变量均未达到对应的最高扇出个数。
11.根据权利要求1-7任一所述的方法,其特征在于,所述方法还包括:
在生成的所述组合逻辑块的输入之前以及输出之后分别添加寄存器,或者,在生成的所述组合逻辑块内添加寄存器,并构建得到添加有时序逻辑的测试例。
12.根据权利要求1-7任一所述的方法,其特征在于,所述基于生成的所述组合逻辑块构建得到测试例,包括:
由生成的所述组合逻辑块以及其他执行块构成语句执行块,由所述语句执行块形成构建得到测试例,所述其他执行块包括预定语句块和其他功能模块中的至少一种。
13.根据权利要求12所述的方法,其特征在于,
所述其他功能模块包括算数运算单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110714274.7A CN113435149B (zh) | 2021-06-25 | 2021-06-25 | 一种优化fpga综合效果的测试例自动生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110714274.7A CN113435149B (zh) | 2021-06-25 | 2021-06-25 | 一种优化fpga综合效果的测试例自动生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113435149A true CN113435149A (zh) | 2021-09-24 |
CN113435149B CN113435149B (zh) | 2023-08-18 |
Family
ID=77754767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110714274.7A Active CN113435149B (zh) | 2021-06-25 | 2021-06-25 | 一种优化fpga综合效果的测试例自动生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113435149B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101413990A (zh) * | 2008-12-03 | 2009-04-22 | 北京大学 | 一种现场可编程门阵列的测试方法及*** |
CN105187051A (zh) * | 2015-07-14 | 2015-12-23 | 北京航空航天大学 | 一种基于NSGA-II用于不完全确定Reed-Muller电路功耗与面积优化方法 |
CN105868114A (zh) * | 2016-03-31 | 2016-08-17 | 复旦大学 | Fpga软件***及其各模块测试***和方法 |
US20170074932A1 (en) * | 2014-05-29 | 2017-03-16 | Universiteit Gent | Integrated circuit verification using parameterized configuration |
-
2021
- 2021-06-25 CN CN202110714274.7A patent/CN113435149B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101413990A (zh) * | 2008-12-03 | 2009-04-22 | 北京大学 | 一种现场可编程门阵列的测试方法及*** |
US20170074932A1 (en) * | 2014-05-29 | 2017-03-16 | Universiteit Gent | Integrated circuit verification using parameterized configuration |
CN105187051A (zh) * | 2015-07-14 | 2015-12-23 | 北京航空航天大学 | 一种基于NSGA-II用于不完全确定Reed-Muller电路功耗与面积优化方法 |
CN105868114A (zh) * | 2016-03-31 | 2016-08-17 | 复旦大学 | Fpga软件***及其各模块测试***和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113435149B (zh) | 2023-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6721926B2 (en) | Method and apparatus for improving digital circuit design | |
US8131659B2 (en) | Field-programmable gate array based accelerator system | |
US20060075375A1 (en) | Technology dependent transformations for CMOS in digital design synthesis | |
US8336007B1 (en) | Verifiable multimode multipliers | |
Sun et al. | A high-performance accelerator for large-scale convolutional neural networks | |
US7305650B1 (en) | Data path synthesis apparatus and method for optimizing a behavioral design description being processed by a behavioral synthesis tool | |
Alqudah et al. | Parallel implementation of genetic algorithm on FPGA using Vivado high level synthesis | |
US10867090B2 (en) | Method and apparatus for implementing an application aware system on a programmable logic device | |
Kommu et al. | GAFPGA: Genetic algorithm for FPGA technology mapping | |
Barkalov et al. | Logic synthesis for finite state Machines Based on Linear Chains of States | |
CN113435149A (zh) | 一种优化fpga综合效果的测试例自动生成方法 | |
CN116976249A (zh) | 用于增量映射优化的基于可满足性的再替换 | |
US6842750B2 (en) | Symbolic simulation driven netlist simplification | |
US8225245B2 (en) | Method of implementing physically realizable and power-efficient clock gating in microprocessor circuits | |
Wu et al. | Qutesat: a robust circuit-based sat solver for complex circuit structure | |
CN116187243A (zh) | 一种基于逻辑门分解的fpga工艺映射算法 | |
Huang et al. | An evolutionary algorithm based on novel hybrid repair strategy for combinational logic circuits | |
Mishchenko et al. | A Boolean Paradigm in Multi-Valued Logic Synthesis. | |
da Rosa et al. | A comparative study of CMOS gates with minimum transistor stacks | |
Wang et al. | A synthesis method for Verilog case statement using mux-and-inverter graph | |
Tămas et al. | Hardware implementation of a neuro-fuzzy controller using high level synthesis tool | |
Martin | Genetic programming in hardware | |
Figueiro et al. | Constructive AIG optimization considering input weights | |
Navaneethan et al. | Hardware reduction of DSP kernel data path using carry save arithmetic operation in fused add multiply add unit | |
US11934327B2 (en) | Systems and methods for hardware acceleration of data masking using a field programmable gate array |
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 |