CN108829903A - 判定fpga冗余设计的代码与综合后电路一致性的方法和*** - Google Patents
判定fpga冗余设计的代码与综合后电路一致性的方法和*** Download PDFInfo
- Publication number
- CN108829903A CN108829903A CN201711096856.3A CN201711096856A CN108829903A CN 108829903 A CN108829903 A CN 108829903A CN 201711096856 A CN201711096856 A CN 201711096856A CN 108829903 A CN108829903 A CN 108829903A
- Authority
- CN
- China
- Prior art keywords
- circuit
- synthesis
- code
- file
- fpga
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (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)
Abstract
本发明属于核电控制的技术领域,为了解决现有技术中综合后仿真方法和形式化一致性验证方法分别存在的不足,提供一种判定FPGA冗余设计的代码与综合后电路一致性的方法和***;所述方法包括:S1、分别检索FPGA代码中的第一关键词和综合电路对应网表文件中的第二关键词;S2、判断FPGA代码中第一关键词检索得到的第一信号名集合是否属于网表文件中第二关键词检索得到的第二信号名集合的子集;如果是,则综合后电路的信号一致性检测通过;S3、判断FPGA代码文件中声明的所有信号,在综合后电路对应网表文件中是否分别都有一个或多个有用逻辑单元与相应的信号连接;如果是,则综合后电路的逻辑一致性检测通过。
Description
技术领域
本发明涉及核电控制的技术领域,尤其涉及核电控制***用现场可编程门阵列的技术领域,更具体地,涉及一种判定FPGA冗余设计的代码与综合后电路一致性的方法和***。
背景技术
随着FPGA(现场可编程门阵列)技术在核安全级仪控***中的广泛应用,对FPGA逻辑设计的一致性提出很高的要求,特别是为了保证可靠性而对关键功能进行的冗余设计,在综合后的功能一致性日益成为核行业中重点关注的问题;现有技术中,常用的分析FPGA冗余设计的代码与综合后电路功能一致性方法主要包括综合后仿真方法和形式化一致性验证方法。
综合后仿真方法是把综合生成的延时文件反标到综合仿真模型中,将模拟的测试激励输入被测对象的带有器件延时信息的仿真模型中仿真运行,通过比较仿真输出和预期输出的结果判定综合后的电路在功能上是否正确;但是由于受到激励覆盖率和仿真成本的约束,只能在一定程度上保证代码与综合电路的一致性,不能完全保证,尤其是对于代码中的冗余设计是否被一致转换为电路问题上,通过综合后仿真不容易识别。
形式化一致性验证方法,通过比较代码与综合后电路,识别代码与综合后电路不一致的设计,该方法通过把综合后电路划分为一系列的逻辑锥(logic cone),然后通过比较点把代码和综合后电路的逻辑锥一一对应起来,再通过比较相对应的逻辑锥的功能是否一致来验证代码和综合后电路的功能是否一致,如果所有的逻辑锥的功能都是一致的,那么两个设计就是等价的;但是由于在综合过程中对电路结构进行了改变,使得比较点无法匹配,而导致比较失败,需进行严格的约束参数设置才能比较成功。
发明内容
本发明为了解决现有技术中综合后仿真方法和形式化一致性验证方法分别存在的不足,提供一种判定FPGA冗余设计的代码与综合后电路一致性的方法和***,具有覆盖率高、约束条件少等优点。
为了实现上述效果,本发明提供的技术方案包括:
本发明一方面提供一种判定FPGA冗余设计的代码与综合后电路一致性的方法,其特征在于,包括:
S1、分别检索FPGA代码中的第一关键词和综合电路对应网表文件中的第二关键词;
S2、判断所述FPGA代码中第一关键词检索得到的第一信号名集合是否属于所述网表文件中第二关键词检索得到的第二信号名集合的子集;如果是,则综合后电路的信号一致性检测通过;
S3、判断所述FPGA代码文件中声明的所有信号,在所述综合后电路对应网表文件中是否分别都有一个或多个有用逻辑单元与相应的信号连接;如果是,则综合后电路的逻辑一致性检测通过;
S4、当所述综合后电路的信号一致性检测和所述综合后电路的逻辑一致性检测都通过时,则判定所述FPGA冗余设计的代码与综合后电路一致性通过。
本发明实施例优选地,所述步骤S2还包括:如果所述第一信号名集合不属于所述第二信号名集合的子集,则提示报警信息,并显示丢失的信号名。
本发明实施例优选地,所述步骤S3包括:如果有一个或者多个信号只连接到IO端口单元时,提示报警信息,并显示信号和连接信息;如果有一个或者多个信号没有连接元件库中的任一逻辑单元时,发出错误提醒信息。
本发明实施例优选地,所述步骤S3中判断所述FPGA代码文件中声明的所有信号,在所述综合后电路对应网表文件中是否分别都有一个或多个有用逻辑单元与相应的信号连接包括:判断FPGA代码冗余设计与综合后电路是否一致的比较准则为关联信号在所述综合后电路对应网表文件中是否有空接、关联信号在所述综合后电路对应网表文件中是否丢失、关联信号在所述综合后电路对应网表文件中是否连接到VCC或GND定值上。
本发明实施例优选地,所述方法还包括:分别对所述FPGA代码与综合后电路编译前后基本信息的一致性检查和编译后变量是否被优化的检查。
本发明实施例进一步优选地,所述编译前后基本信息的一致性检查包括:模块名称一致性检查、模块内端口信息检查和模块内局部变量检查。
本发明实施例进一步优选地,所述编译后变量是否被优化的检查包括:对顶层文件的端口进行检查和对其它模块的局部变量进行检查。
本发明实施例优选地,所述第一关键词包括模块节点信息、模块参节点信息、模块端口节点信息、局部变量节点信息。
本发明实施例优选地,所述第二关键词包括单元格信息节点信息、单元格的端口节点信息、单元格的用例节点信息、单元格的网络节点信息。
本发明另一方面还提供一种判定FPGA冗余设计的代码与综合后电路一致性的***,其特征在于,包括:
第一输入模块,设置成输入所述FPGA代码对应的文件;
第二输入模块,设置成输入所述综合后电路对应网表文件;
控制器,设置成用于加载并执行上述任意一种所述的判定FPGA冗余设计的代码与综合后电路一致性的方法。
采用本申请提供的上述技术方案,可以至少获得以下有益效果中的一种:
1、与综合后仿真方法相比,本发明针对整个电路的所有信号进行识别和验证,覆盖率高达100%,能够对冗余设计涉及到的所有信号进行检测;本发明不需要建立复杂的测试平台和设计用例,采用静态文件内容比较的方法,比动态综合后仿真的效率更高;例如,8000行代码,13个输入的设计,从建立仿真平台到仿真执行完成,约需要20天,本申请实施例提供的技术方案,只需1天即可完成一致性验证和确认结果。
2、与形式化一致性验证方法相比,本发明冗余设计一致性判断的准则简单,误判率较低;使用自研工具直接导入.v文件和综合后电路文件一致性判断,不需要置任何参数进行约束,直接进行比较,给出比较结果,使用便利;基于输入文件比较判断的方式进行验证,不需要导入任何库模型,支持不同厂商综合工具综合后的电路文件,扩展本发明的应用范围。
发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书变得显而易见,或者通过实施本发明的技术方案而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构和/或流程来实现和获得。
附图说明
图1为本发明实施例提供的一种判定FPGA冗余设计的代码与综合后电路一致性方法的流程图。
图2为本发明实施例提供的一种判定FPGA冗余设计的代码与综合后电路一致性方法中信号一致性检测的流程图。
图3为本发明实施例提供的一种判定FPGA冗余设计的代码与综合后电路一致性方法中逻辑一致性检测的流程图。
图4为本发明实施例提供的模块名称一致性检查算法对应的流程图。
图5为本发明实施例提供的模块内端口信息检查算法对应的流程图。
图6为本发明实施例提供的模块内局部变量一致性检查对应的流程图。
图7为本发明实施例提供的对顶层文件的端口进行检查算法对应的流程图。
图8为本发明实施例提供的其它模块的局部变量进行检查算法对应的流程图。
图9为本发明实施例提供的一种判定FPGA冗余设计的代码与综合后电路一致性***的示意图。
图10为本发明另一实施例提供的FPGA代码的示意图。
图11为本发明另一实施例提供的综合后电路网表文件的示意图。
图12为本发明另一实施例提供的综合后电路网表文件中综合后的门级网表的示意图。
图13为本发明另一实施例提供的使用一致性验证工具的第一示意图。
图14为本发明另一实施例提供的使用一致性验证工具的第二示意图。
图15为本发明又一实施例提供的FPGA代码的示意图。
图16为本发明又一实施例提供的综合后电路网表文件的示意图。
图17为本发明又一实施例提供的综合后电路网表文件中综合后的门级网表的示意图。
图18为本发明又一实施例提供的使用一致性验证工具的第一示意图。
图19为本发明又一实施例提供的使用一致性验证工具的第二示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,这些具体的说明只是让本领域普通技术人员更加容易、清晰理解本发明,而非对本发明的限定性解释;并且只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组控制器可执行指令的控制***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
下面通过附图和具体实施例,对本发明的技术方案进行详细描述:
实施例
基于FPGA技术的核安全级仪控***,往往在FPGA逻辑上增加冗余设计以提高可靠性和安全性,但在使用工具将FPGA代码综合为电路的过程中,会出现综合工具将冗余设计优化删除,使得代码与综合后电路不一致的问题,本实施例提供的技术方案用于验证FPGA冗余设计的代码与综合后电路文件一致性。本申请实施例提供技术方案的设计思路包括:通过检测FPGA冗余功能代码中涉及的信号在综合后电路的连接状态,判断冗余设计是否在电路综合过程中被删除掉,保证FPGA冗余设计的代码与综合后电路保持一致。
具体地,如图1所示,本实施例提供一种判定FPGA冗余设计的代码与综合后电路一致性的方法,该方法包括:
S1、分别检索FPGA代码中的第一关键词和综合电路对应网表文件中的第二关键词;其中,第一关键词用于表征FPGA代码文件中的所有信号名称,第二关键词用于表征综合后电路对应网标文件中的信号名;本实施例优选地,第一关键词包括模块节点信息、模块参节点信息、模块端口节点信息、局部变量节点信息;本实施例优选地,第二关键词包括单元格信息节点信息、单元格的端口节点信息、单元格的用例节点信息、单元格的网络节点信息。
S2、判断FPGA代码中第一关键词检索得到的第一信号名集合(v_signal)是否属于网表文件中第二关键词检索得到的第二信号名集合的子集;如果是,则综合后电路的信号一致性检测通过(n_signal);如图2所示,信号一致性检测功能,是指代码文件中的信号,在通过开发软件综合后,在综合后网表文件中都有体现,没有被优化,删除,遗失;具体包括:
1、在代码文件中检索关键字“input”、“output”、“inout”、“wire”、“reg”后的信号名(S201),需注意信号宽度,得到的集合称为v_signal集合(S202);
2、在综合后的网表文件中检索(library work)括号内关键字“port”后,或语句“port(array(rename XXX”signal[0:0]”……)”中蓝色的信号名(S211),得到的集合称为n_signal集合(S212);
3、判断v_signal是n_signal的子集(S220),如果是,则信号一致性检测通过,如果信号有丢失,则提示报警,并显示丢失的信号名。
S3、判断FPGA代码文件中声明的所有信号,在综合后电路对应网表文件中是否分别都有一个或多个有用逻辑单元与相应的信号连接;如果是,则综合后电路的逻辑一致性检测通过;具体地,综合后电路对应网表文件中有FPGA元件库的描述,描述了项目中所使用到的元件单元。其中包括:1)、IO端口单元:输入缓冲、输出缓冲、时钟缓冲、电源和接地逻辑;2)、基本逻辑:与门、或门、触发器等有实际逻辑功能的元件单。逻辑一致性检测是对FPGA代码文件中声明的所有信号,在综合后网表文件中都与一个或多个有用逻辑单元所连接;具体包括:
1、在综合后网表文件中,首先找FPGA元件库(library***);
注:[***代表芯片型号,不能是work]。
2、在库文件(library***)内检索关键字“cell”(S310),后面的字符即为元件单元。
3、其中名为“INBUF”、“OUTBUF”、“BIBUF”、“CLKBUF”、“VCC”、“GND”的元件单元作为IO端口单元,其他元件单元作为基本逻辑单元(S308);
4、在(library work)内检索代码中的信号名,(S302)
例如,“H2L_Sig”信号,搜索到结果中以关键字“net”开头的字符段(S303),如:
上述代码表示,以信号H2L_Sig为名的网络连接状态,其中语句“(portRef C(instanceRef i_RNO_0_4))”表示信号H2L_Sig连接到元件单元i_RNO_0_4的C引脚,其他类似语句以此类推;
5、在(library work)中检索飘蓝的所有元件单元名,(S304)
例如搜索“i_RNO_0_4”,找到如下关键字“instance(rename”开头的语句(S305):
(instance(rename i_RNO_0_4"i_RNO_0[4]")(viewRef prim(cellRef NOR3B(libraryRef PA3))))
搜索“H2L_F2_RNIL52J”,找到如下关键字“instance”开头的语句:
(instance H2L_F2_RNIL52J(viewRef prim(cellRef NOR3B(libraryRefPA3))))
搜索结果只会以上述两种情况之一出现。
上述语句表示:元件单元i_RNO_0_4对应(或调用)PA3元件库的NOR3B逻辑单元。元件单元H2L_F2_RNIL52J对应(或调用)PA3元件库的NOR3B逻辑单元。
6、通过上述步骤可以得到信号与H2L_Sig相连的所有元件单元,且能得到对应PA3元件库中所使用的基本逻辑单元,如NOR3B等(S306)。
7、证明代码中的所有信号都和元件库中的基本逻辑单元有链接,当信号只连接到IO端口单元时,提示“warning”,并显示信号和连接信息;当信号没有连接元件库中的任一逻辑单元时,发出报警“Error”。
S4、当综合后电路的信号一致性检测和综合后电路的逻辑一致性检测都通过时,则判定FPGA冗余设计的代码与综合后电路一致性通过。
需要说明的是,上述检索FPGA代码中的第一关键词和综合电路对应网表文件中的第二关键词没有先后顺序,对后续信号一致性、逻辑一致性也不严格要求先后顺序,所有顺序的变化都属于本实施例技术方案保护的范围。
本实施例优选地,步骤S2还包括:如果第一信号名集合不属于第二信号名集合的子集,则提示报警信息,并显示丢失的信号名。
本实施例优选地,步骤S3包括:如果有一个或者多个信号只连接到IO端口单元时,提示报警信息,并显示信号和连接信息;如果有一个或者多个信号没有连接元件库中的任一逻辑单元时,发出错误提醒信息。
本实施例优选地,步骤S3中判断FPGA代码文件中声明的所有信号,在综合后电路对应网表文件中是否分别都有一个或多个有用逻辑单元与相应的信号连接包括:判断FPGA代码冗余设计与综合后电路是否一致的比较准则为关联信号在综合后电路对应网表文件中是否有空接、关联信号在综合后电路对应网表文件中是否丢失、关联信号在综合后电路对应网表文件中是否连接到VCC或GND定值上。
本实施例优选地,方法还包括:分别对FPGA代码与综合后电路编译前后基本信息的一致性检查和编译后变量是否被优化的检查。
本实施例进一步优选地,编译前后基本信息的一致性检查包括:模块(也简称module)名称一致性检查、模块内端口信息检查和模块内局部变量检查。
上述一致性验证的技术方案通过识别关键字和语法规则的算法实现信号的连接关系和状态的验证。
从源文件.v文件中提取以下信息:module节点信息、module形参节点信息、module端口节点信息、局部变量节点信息。
.v文件(FPGA代码文件的一种体现)提取信息存储内容如下:
a)、module(模块)节点信息,包括module名称,module的形参列表,module的端口哈希表,module的局部变量哈希表。将提取的每一个module模块信息,存储一个哈希表(V文件module哈希表)中,该哈希表的每一个键值对中,键为module的名称,值为module模块节点信息。
b)、module(模块)中的形参节点,存储形参的参数名。
c)、module(模块)中的端口节点,存储端口的名称、方向、类型和位宽。
d)、module(模块)中的变量节点,存储局部变量的名称、方向、类型和位宽。
.edn文件(综合后电路网表文件的一种体现)提取信息存储内容如下:
a)、cell(单元格)节点信息,包括cell的名称、cell的端口列表、cell的instance列表、net列表和cell对应的module名称;
b)、cell(单元格)的端口节点信息,包括端口名和端口方向;
c)、cell(单元格)的instance节点信息,包括instance的名称和instanceRef名称;
d)、cell(单元格)的net节点信息,包括net名称和portRef列表;
e)、portRef节点信息,包括portRef名称和instanceRef名称。
从.v文件和.edn文件中提取基本信息,是对编译环节进行形式化检查的前提。此处形式化检查包括两种类型的检查:a、编译前后基本信息的一致性检查;b、编译后变量是否被优化的检查。
编译前后基本信息的一致性检查,包括模块名称一致性检查、模块内端口信息检查和模块内局部变量检查。
如图4所示,模块名称一致性检查算法过程如下:
a)、获取从V文件中提取的module列表内容;(S401、S402)
b)、判断module列表中是否还有未处理元素(S403),如果有则跳转到c)(S404),否则跳转到g)(S411);
c)、从module列表中取出一个module信息节点,并将该元素标记为已处理,读取module的名称;(S404)
d)、获取从edn文件中提取的cell列表;(S405)
e)、判断cell列表是否还有未处理元素(S406),如果有则执行f)(S407),否则标记当前检查的模块名一致性检查不通过(S410),并跳转到b);
f)、从cell列表中取出一个未处理元素,并将该元素标记为已处理,读取该cell节点的module定义名(S407),如果该module定义名与c步读取的module名称相(S408)同,则该标记当前检查的模块名一致性检查通过(S409),并跳转到b),否则跳转e);
g)、结束。(S411)
如图5所示,模块内端口信息检查算法过程如下:
a)、获取从edn文件中提取的cell列表;(S501)
b)、判断cell列表是否还有未处理元素,如果有则执行c),否则跳转到g);(S502)
c)、从cell列表中取出一个未处理元素,判断cell列表是否还有未处理元素,如果有则执行f),读取该cell节点的module定义名;(S503)
d)、利用c)步取出的module定义名,从V文件提取的module列表中取出同名module信息节点;(S504)
e)、在对cell节点的端口列表信息与modul节点的端口列表信息,按端口名进行比较,比较内容包括端口名、位宽、信号方向(S505),如果有任意一个端口的任意特性不一致,则标记该cell的端口检查不通过(S507);如果所有端口的所有特性检查都一致,则标记该cell的端口检查通过(S506);
f)、跳转到b);(S508)
g)、结束。(S509)
如图6所示,模块内局部变量一致性检查过程如下:
a)、获取从V文件中提取的module列表内容和从edn文件中提取Cell列表内容;(S601)
b)、判断module列表中是否还有未处理元素,如果有则跳转到c),否则跳转到f);(S602)
c)、获取从module节点中的变量列表,同时获取cell节点中的net列表;(S603)
d)、判断module节点的变量列表是否还有未处理变量,如果有则转到e)否则跳转到b);(S604)
e)、判断cell节点的net列表中是否存在与取出的变量节点有关联的net节点(S605),如果存在则,标记该变量检查通过(S607),否则标记为该变量检查不通过(S606);然后跳转到d;
f)、结束。(S608)
本实施例进一步优选地,编译后变量是否被优化的检查,主要是针对综合后电路文件(edn文件)进行;编译后变量是否被优化的检查包括:对顶层文件的端口进行检查和对其它模块的局部变量进行检查。
如图7所示,对顶层文件的端口进行检查算法如下:
a)、从library PA3内容中提取所有基本cell信息,获取所有基本cell的名称组成一个集合,并从该集合中去除“VCC、OUTBUF、INBUF、GND、CLKBUF、BIBUF”形成的一个cell名集合,作为有效检查集合(checkSet);(S701)
b)、获取从顶层文件中提取的端口l列表;同时从获取从edn文件提取的顶层cell节点的net列表;(S702)
c)、判断扩展端口列表是否还有未处理元素;(S703)
d)、判断net节点的portRef列表是否还有未处理元素;(S704)
e)、检查cellRef信息的名称是否在checkSet,如果在checkSet中则表示该端口检查通过;(S705)
f)、判断从edn文件中提取的cell节点列表是否还有未处理的cell节点;(S706)
g)、判断“cell节点2”中是否包含ednPortName的net点;(S707)
h)、判断该net节点的portRef列表是否还有未处理元素;(S708)
i)、检查cellRef信息的名称是否在checkSet,如果在checkSet中则表示该端口检查通过;(S709)
j)、标记被检查的portNode检查不通过;跳转到c);(S710)
k)、结束。(S711)
如图8所示,其它module(组件)的局部变量进行检查算法如下:
a)、取出V文件中的某个非顶层的module节点,同时取出在edn文件中存在module定义名与其名称相同的cell节点;(S801)
b)、判断变量列表是否还有未处理元素;(S802)
c)、判断net节点的portRef列表是否还有未处理元素,如果有则执行d),否则标记该变量检查不通过,并跳转到b);(S803)
d)、检查cellRef信息的名称是否在checkSet,如果在checkSet中则表示该端口检查通过,跳转到b),否则跳转到c);(S804)
e)、结束。(S805)
如图9所示,本实施例还提供一种判定FPGA冗余设计的代码与综合后电路一致性的***,该***包括:
第一输入模块100,设置成输入FPGA代码对应的文件;
第二输入模块200,设置成输入综合后电路对应网表文件;
控制器300,设置成用于加载并执行上述任意一种的判定FPGA冗余设计的代码与综合后电路一致性的方法。
采用本申请提供的上述技术方案,可以至少获得以下有益效果中的一种:
1、与综合后仿真方法相比,本发明针对整个电路的所有信号进行识别和验证,覆盖率高达100%,能够对冗余设计涉及到的所有信号进行检测;本发明不需要建立复杂的测试平台和设计用例,采用静态文件内容比较的方法,比动态综合后仿真的效率更高;例如,8000行代码,13个输入的设计,从建立仿真平台到仿真执行完成,约需要20天,本申请实施例提供的技术方案,只需1天即可完成一致性验证和确认结果。
2、与形式化一致性验证方法相比,本发明冗余设计一致性判断的准则简单,误判率较低;使用自研工具直接导入.v文件和综合后电路文件一致性判断,不需要置任何参数进行约束,直接进行比较,给出比较结果,使用便利;基于输入文件比较判断的方式进行验证,不需要导入任何库模型,支持不同厂商综合工具综合后的电路文件,扩展本发明的应用范围。
下面结合图10-图19进一步解释本申请技术方案,本申请实施例中包括为一个有冗余功能的工程,软件工具为Libero 15.0,综合工具为Synplify Pro I-2014.03M-SP1,开发语言为Verilog HDL语言;并且假设FPGA设计为三层模块设计,其中底层模块做加法逻辑,中间层模块调用2个底层模块做冗余,在顶层模块中判断两个底层模块的输出是否一致,并输出判断的结果;在默认状态下,综合器会自动将设计中的逻辑进行分析,将冗余设计的逻辑删除,并根据逻辑功能和芯片内逻辑单元结构进行编译和优化,改变了设计初衷,所以需要在代码中加入综合约束命令,避免综合器删除冗余逻辑;并且本实施例用两个工程作为对比,一个例子是冗余设计在综合后电路中被优化删除(图10-图14),另一个例子冗余设计通过综合约束保留在综合后电路中(图15-图19)。
如图10-图14所述,本申请实施例使用使用的方法验证冗余设计被优化的过程如下:
a)、设计代码如图10所示,代码中需要关注两类元素:顶层模块的端口信号、底层模块的reg型变量。
b)、综合工具Synplify综合后的RTL级网表如图11所示,由图11可知,综合后的RTL级网表示意图正确的反映了代码的功能,体现了RTL级网表文件与代码的一致性。
c)、综合工具Synplify综合后的门级网表检查:
i)、在综合工具综合后的门级网表(edn文件)中查找顶层代码的端口信号,如in1_t,在门级网表文件中可查到in1_t的网表连接信息如下:
综合器将in1_t通过in1_t_pad单元改名为in1_t_c,检查in1_t_c,得到in1_t_c连接到实例out1_2_2,具体如下:
实例out1_2_2引用的是芯片中的基本逻辑单元XOR2,如下:
ii)、在综合工具综合后的门级网表(edn文件)中查找底层模块的reg型变量,如out1,在门级网表文件中可查到out1在网表文件中的实例化信息如下:
其中,实例out1调用的是芯片中的基本寄存器单元DFN1C0。
如图12所示,综合器将设计中的逻辑进行编译优化后,保留了原设计中的逻辑,没有删除任何代码中所体现出来的逻辑,体现了门级网表文件与代码的一致。
使用一致性验证工具检测如图13所示:
a)、导入FPGA代码文件.v,以及综合后电路文件.edn;
b)、点击“执行一致性性检查”按钮,开始运行一致性验证;
c)、查看运行结果(如图14所示),验证结果为“通过”,表示FPGA冗余设计的代码与综合后电路一致。
冗余设计被优化删除的例子如图15-图19所示;具体地:
a)、设计代码如下如图15所示,代码中也需要关注两类元素:顶层模块的端口信号、底层模块的reg型变量。
b)、综合工具Synplify综合后的RTL级网表示意图如图16所示,由图16可知,综合后的RTL级网表示意图正确的反映了代码的功能,体现了RTL级网表文件与代码的一致性。
c)、综合工具Synplify综合后的门级网表检查:
i)在综合工具综合后的门级网表(edn文件)中查找顶层代码的端口信号,如in1_t,在门级网表文件中可查到in1_t的网表连接信息如下:
如上,可以发现in1_t信号未与任何芯片基本单元相连。
ii)、如图17所示,在综合工具综合后的门级网表(edn文件)中查找底层模块的reg型变量,如out1,在门级网表文件中检查out1在网表文件中的实例化信息,未发现out1变量,说明out1变量在综合过程中被综合删除了。
如图17所示,综合器将设计中的逻辑进行编译优化后,删除了原设计中的逻辑,即删除了底层模块中定义的reg型变量,顶层模块中的输入信号未连接任何逻辑单元,输出信号通过OUTBUF将信号置为高电平。由此可知,经过综合器综合后的门级网表文件未能与代码保持一致。
如图18所述,使用一致性验证工具检测包括:
a)、导入FPGA代码文件.v,以及综合后电路文件.edn;
b)、点击“执行一致性性检查”按钮,开始运行一致性验证;
c)、查看运行结果,验证结果为“不通过”(图19),FPGA代码中的冗余设计在综合后电路中被优化删除。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后需要说明的是,上述说明仅是本发明的最佳实施例而已,并非对本发明做任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围内,都可利用上述揭示的做法和技术内容对本发明技术方案做出许多可能的变动和简单的替换等,这些都属于本发明技术方案保护的范围。
Claims (10)
1.一种判定FPGA冗余设计的代码与综合后电路一致性的方法,其特征在于,包括:
S1、分别检索FPGA代码中的第一关键词和综合电路对应网表文件中的第二关键词;
S2、判断所述FPGA代码中第一关键词检索得到的第一信号名集合是否属于所述网表文件中第二关键词检索得到的第二信号名集合的子集;如果是,则综合后电路的信号一致性检测通过;
S3、判断所述FPGA代码文件中声明的所有信号,在所述综合后电路对应网表文件中是否分别都有一个或多个有用逻辑单元与相应的信号连接;如果是,则综合后电路的逻辑一致性检测通过;
S4、当所述综合后电路的信号一致性检测和所述综合后电路的逻辑一致性检测都通过时,则判定所述FPGA冗余设计的代码与综合后电路一致性通过。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2还包括:如果所述第一信号名集合不属于所述第二信号名集合的子集,则提示报警信息,并显示丢失的信号名。
3.根据权利要求1所述的方法,其特征在于,所述步骤S3包括:如果有一个或者多个信号只连接到IO端口单元时,提示报警信息,并显示信号和连接信息;如果有一个或者多个信号没有连接元件库中的任一逻辑单元时,发出错误提醒信息。
4.根据权利要求1所述的方法,其特征在于,所述步骤S3中判断所述FPGA代码文件中声明的所有信号,在所述综合后电路对应网表文件中是否分别都有一个或多个有用逻辑单元与相应的信号连接包括:判断FPGA代码冗余设计与综合后电路是否一致的比较准则为关联信号在所述综合后电路对应网表文件中是否有空接、关联信号在所述综合后电路对应网表文件中是否丢失、关联信号在所述综合后电路对应网表文件中是否连接到VCC或GND定值上。
5.根据权利要求1所述的方法,其特征在于,还包括:分别对所述FPGA代码与综合后电路编译前后基本信息的一致性检查和编译后变量是否被优化的检查。
6.根据权利要求5所述的方法,其特征在于,所述编译前后基本信息的一致性检查包括:模块名称一致性检查、模块内端口信息检查和模块内局部变量检查。
7.根据权利要求5所述的方法,其特征在于,所述编译后变量是否被优化的检查包括:对顶层文件的端口进行检查和对其它模块的局部变量进行检查。
8.根据权利要求1-7中任意一种所述的方法,其特征在于,所述第一关键词包括模块节点信息、模块参节点信息、模块端口节点信息、局部变量节点信息。
9.根据权利要求1-7中任意一种所述的方法,其特征在于,所述第二关键词包括单元格信息节点信息、单元格的端口节点信息、单元格的用例节点信息、单元格的网络节点信息。
10.一种判定FPGA冗余设计的代码与综合后电路一致性的***,其特征在于,包括:
第一输入模块,设置成输入所述FPGA代码对应的文件;
第二输入模块,设置成输入所述综合后电路对应网表文件;
控制器,设置成用于加载并执行如权利要求1-9中任意一种所述的判定FPGA冗余设计的代码与综合后电路一致性的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711096856.3A CN108829903B (zh) | 2017-11-09 | 2017-11-09 | 判定fpga冗余设计的代码与综合后电路一致性的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711096856.3A CN108829903B (zh) | 2017-11-09 | 2017-11-09 | 判定fpga冗余设计的代码与综合后电路一致性的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108829903A true CN108829903A (zh) | 2018-11-16 |
CN108829903B CN108829903B (zh) | 2021-11-05 |
Family
ID=64153946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711096856.3A Active CN108829903B (zh) | 2017-11-09 | 2017-11-09 | 判定fpga冗余设计的代码与综合后电路一致性的方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108829903B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112668259A (zh) * | 2020-12-24 | 2021-04-16 | 北京华大九天科技股份有限公司 | 一种后仿真网表的***验证方法 |
CN113255258A (zh) * | 2021-06-23 | 2021-08-13 | 上海国微思尔芯技术股份有限公司 | 逻辑综合方法、装置、电子设备及存储介质 |
CN113343615A (zh) * | 2021-05-19 | 2021-09-03 | 中天恒星(上海)科技有限公司 | 基于fpga的原型验证方法与编码装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030145304A1 (en) * | 2002-01-22 | 2003-07-31 | Carter Richard J. | Algorithm-to-hardware system and method for creating a digital circuit |
CN102495356A (zh) * | 2011-11-30 | 2012-06-13 | 福州大学 | 扫描链异步复位寄存器复位端口处理方法 |
CN102831273A (zh) * | 2012-08-30 | 2012-12-19 | 锐迪科科技有限公司 | 包含双边沿触发器的数字集成电路设计方法 |
CN102857213A (zh) * | 2011-07-01 | 2013-01-02 | 阿尔特拉公司 | 可重构逻辑块 |
CN105137454A (zh) * | 2015-07-22 | 2015-12-09 | 北京航空航天大学 | 一种基于协方差矩阵特征分解的抗干扰算法的fpga实现方法及实现装置 |
-
2017
- 2017-11-09 CN CN201711096856.3A patent/CN108829903B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030145304A1 (en) * | 2002-01-22 | 2003-07-31 | Carter Richard J. | Algorithm-to-hardware system and method for creating a digital circuit |
CN102857213A (zh) * | 2011-07-01 | 2013-01-02 | 阿尔特拉公司 | 可重构逻辑块 |
CN102495356A (zh) * | 2011-11-30 | 2012-06-13 | 福州大学 | 扫描链异步复位寄存器复位端口处理方法 |
CN102831273A (zh) * | 2012-08-30 | 2012-12-19 | 锐迪科科技有限公司 | 包含双边沿触发器的数字集成电路设计方法 |
CN105137454A (zh) * | 2015-07-22 | 2015-12-09 | 北京航空航天大学 | 一种基于协方差矩阵特征分解的抗干扰算法的fpga实现方法及实现装置 |
Non-Patent Citations (1)
Title |
---|
田素雷等: "RTL到门级网表的等价性验证方法", 《中国集成电路》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112668259A (zh) * | 2020-12-24 | 2021-04-16 | 北京华大九天科技股份有限公司 | 一种后仿真网表的***验证方法 |
CN113343615A (zh) * | 2021-05-19 | 2021-09-03 | 中天恒星(上海)科技有限公司 | 基于fpga的原型验证方法与编码装置 |
CN113343615B (zh) * | 2021-05-19 | 2023-08-01 | 中天恒星(上海)科技有限公司 | 基于fpga的原型验证方法与编码装置 |
CN113255258A (zh) * | 2021-06-23 | 2021-08-13 | 上海国微思尔芯技术股份有限公司 | 逻辑综合方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108829903B (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100435154C (zh) | 支持配置实体的选择性表示的配置说明语言的方法和*** | |
Fallah et al. | Simulation vector generation from HDL descriptions for observability-enhanced statement coverage | |
US6931611B2 (en) | Design verification system for avoiding false failures and method therefor | |
US7222114B1 (en) | Method and apparatus for rule-based operations | |
US7506292B2 (en) | Method for clock synchronization validation in integrated circuit design | |
US7890901B2 (en) | Method and system for verifying the equivalence of digital circuits | |
CN100573537C (zh) | 一种soc芯片***级验证***及方法 | |
EP1093619B1 (en) | System and method for identifying finite state machines and verifying circuit designs | |
US6148436A (en) | System and method for automatic generation of gate-level descriptions from table-based descriptions for electronic design automation | |
CN104346272B (zh) | 芯片自动仿真验证*** | |
US20040148150A1 (en) | Verification of scheduling in the presence of loops using uninterpreted symbolic simulation | |
CN104699613B (zh) | 一种航天器测试需求自动生成***及其方法 | |
CN107797051A (zh) | 自动测试样式生成的电路建模方法以及自动测试样式生成电路 | |
CN108829903A (zh) | 判定fpga冗余设计的代码与综合后电路一致性的方法和*** | |
JP2015524589A (ja) | 相対タイミング特徴付け | |
CN106611084A (zh) | 集成电路的设计方法及装置 | |
US20030221173A1 (en) | Method and apparatus for detecting connectivity conditions in a netlist database | |
US20150242541A1 (en) | Assertion extraction from design and its signal traces | |
US7152216B2 (en) | Method, system, and computer program product for automatic insertion and correctness verification of level shifters in integrated circuits with multiple voltage domains | |
CN103425795A (zh) | 一种基于云计算的雷达数据分析方法 | |
CN103365976B (zh) | 对xdl级网表描述进行面向应用的测试修改方法及测试方法 | |
US9053265B2 (en) | Generating test benches for pre-silicon validation of retimed complex IC designs against a reference design | |
Zengler et al. | Encoding the Linux kernel configuration in propositional logic | |
US7770147B1 (en) | Automatic generators for verilog programming | |
Hekmatpour et al. | Block-based schema-driven assertion generation for functional verification |
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 |