CN115098400A - 一种基于sva形式化验证的fpga软件仿真测试环境建立方法 - Google Patents
一种基于sva形式化验证的fpga软件仿真测试环境建立方法 Download PDFInfo
- Publication number
- CN115098400A CN115098400A CN202210845602.1A CN202210845602A CN115098400A CN 115098400 A CN115098400 A CN 115098400A CN 202210845602 A CN202210845602 A CN 202210845602A CN 115098400 A CN115098400 A CN 115098400A
- Authority
- CN
- China
- Prior art keywords
- bind
- assertion
- template
- formal verification
- file
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,该方法包括:依据被测对象FPGA软件的测试需求,结合SVA并发断言模板和DUT信号分析工具,产生适用于对被测对象开展形式化验证的Bind模板;导入Bind库中;在所述Bind库中选取要执行的Bind,生成实例化模板并将实例化模板插入并发断言监控的代码文件module之外;调用形式化验证工具读入源代码并调用Bind库,实现基于SVA的形式化验证。该方法将断言与设计代码实现分离,不会对断言编写及验证产生限制,在采用形式化验证提升验证效率的同时,增强代码与并发断言的可管理性,既满足验证目标,又使得验证问题可追溯。
Description
技术领域
本发明属于可编程逻辑器件软件仿真测试技术领域,特别涉及一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法。
背景技术
近年来,可编程逻辑器件软件在航空、航天、船舶、武器装备等产品中的应用与日俱增,可编程逻辑器件软件产品的功能复杂度越来越高,可编程逻辑器件软件验证工作时间超过可编程逻辑器件软件开发周期一半。可编程逻辑器件软件产品升级周期也日益缩短,传统的基于testbench模拟电路输入的测试方式需要编写大量测试代码,用于模拟电路运行状态,这种方式需要消耗大量的人力成本和时间成本,且难以达到百分百测试覆盖。因此,近年来形式化验证在可编程逻辑器件软件测试领域逐渐得到重视。同时传统的基于断言的验证方法需要在被测逻辑的代码文件中植入大量断言语句,验证过程将产生大量冗余代码。断言也并没有进行分类保存,不利于断言管理。当验证工作结束,删除冗余代码后,又不利于问题追溯和技术沉淀。
因此,针对传统基于断言的验证方法中存在大量冗余代码、且不利于管理的问题,本领域技术人员亟需解决。
发明内容
本发明的主要目的在于提供一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,该方法可解决传统基于断言的验证方法中存在大量冗余代码、且不利于管理的问题,可实现可编程逻辑器件软件验证时将被测逻辑代码与SystemVerilog并发断言分离到不同文件,进而实现基于SVA的形式化验证仿真。
为实现上述目的,本发明采取的技术方案为:
本发明实施例提供一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,包括以下步骤:
S1、依据被测对象FPGA软件的测试需求,结合SVA并发断言模板和DUT信号分析工具,产生适用于对被测对象开展形式化验证的Bind模板;
S2、将所述Bind模板文件导入Bind库中;所述Bind库依据模板标识按照测试类型对Bind模板进行分组;
S3、在所述Bind库中选取要执行的Bind,生成实例化模板并将实例化模板插入并发断言监控的代码文件module之外;
S4、调用形式化验证工具读入源代码并调用Bind库,实现基于SVA的形式化验证。
进一步地,所述S1步骤还包括:
根据测试需求,将Bind模板的测试类型分为功能测试、性能测试、边界测试、时序测试、接口测试以及安全性测试;
对不同类型的Bind模板插入不同类型的Bind标识,并通过DUT信号分析工具扫描出Verilog/VHDL源码文件中的管脚、寄存器或线网信号,选取需要使用并发断言监控的信号,以input类型端口定义在Bind模板中。
进一步地,所述S2步骤中所述Bind库还预留断言违例组和回归测试组;每一个Bind组包含若干Bind文件和Bind组日志文件,Bind文件通过实例化与被测对象连接,封装在其中的并发断言在形式化验证工具中生效并执行验证工作;其中,Bind组日志文件记录本组信息,包含Bind文件数量、Bind标识以及各Bind中的并发断言数量。
进一步地,该方法还包括:
S5、将被测对象和Bind库联合执行形式化验证之后,产生形式化验证结
果;若发现违例断言,则将违例断言所在的Bind文件移到Bind库下断言违例组;当执行回归测试后,则存放于Bind库下的回归测试组。
进一步地,所述S1步骤中并发断言模板构建方式如下:
1)从并发断言属性模板库中选择合适的属性框架模板;所述属性框架模板类型包括:时序型、条件型、约束型、脉宽型和自定义属性;
2)基于属性框架模板,设置其敏感信号、触发时钟以及参数指标;
3)设置完成后封装于Bind模板中。
进一步地,所述S1步骤中DUT信号分析工具需要具备如下功能:
1)读取Verilog、VHDL以及SystemVerilog文件;
2)自动识别RTL代码中的输入输出端口、寄存器变量、线网变量;
3)将识别到的端口、信号以及变量输出成文本。
进一步地,所述步骤S4中形式化验证工具,具备如下功能:
1)兼容IEEE SystemVerilog标准;
2)支持硬件描述语言Verilog、VHDL编译;
3)支持基于给定的属性,静态地分析设计的行为;
4)支持探索电路所有可能的输入序列;
5)发现电路行为与属性不一致时,产生错误分析报告,并生成违例案例。
进一步地,所述S2步骤中的Bind组日志文件生成步骤如下:
1)生成组内Bind文件列表;
2)识别Bind文件内的属性关键词,计算每个Bind文件中属性数量;
3)识别Bind文件内断言声明关键词,将断言分类,分别计算断言、约束、覆盖率并发断言的数量;
4)将文件Bind文件列表、各Bind属性数量以及各种类断言数量汇总打印到日志文件中。
进一步地,所述S3步骤中生成实例化模板的步骤如下:
1)自写入Bind例化关键字;
2)抓取被检测代码文件module名;
3)自动有序地生成程序实例化名;
4)抓取Bind中引入的源程序信号并生成敏感变量列表;
5)组合上述1)-4)步骤产生的部件,组成实例化模板。
进一步地,所述S5步骤中断言违例组的具有日志文件;在所述断言违例组的日志文件中,产生违例Bind断言列表,记录各条断言;
所述断言违例组的日志文件生成步骤如下:
1)生成组内Bind文件列表;
2)识别Bind文件内的属性关键词,计算每个Bind文件中属性数量;
3)识别Bind文件内断言声明关键词,将断言分类,分别计算断言、约束、覆盖率并发断言的数量;
4)将Bind文件列表、各Bind属性数量以及各种类断言数量汇总打印到日志文件中;
5)抓取形式化验证工具结果分析报告中,违例断言名称,与日志中的断言列表对比,将出现违例子的断言标注出来;
6)输出形式化验证工具违例结果波形图文件到违例日志同目录下。
与现有技术相比,本发明具有如下有益效果:
1)摒弃了传统断言插入源代码的形式,实现了断言于源代码完全分离,有效减少了被测对象中的冗余代码。以Bind封装断言,又建立Bind库管理Bind文件,实现断言分类管理,同时Bind库中的日志文件可有效帮助验证人员查看库中的断言情况,极大地方便了断言的管理。
2)Bind库中设立违例断言组和回归断言组,符合可编程逻辑器件通用验证流程,方便验证人员查看测试执行情况,问题分析以及问题追溯。有效解决了传统SVA验证过程中断言管理难,冗余代码多的问题。提升测试效率的同时,提升测试质量,在基于SVA的形式化验证方法领域具有广阔的应用前景。
附图说明
图1为本发明实施例提供的基于SVA形式化验证的FPGA软件仿真测试环境建立方法的流程图;
图1为本发明实施例提供的基于SVA形式化验证的FPGA软件仿真测试环境的原理示意图;
图2为本发明实施例提供的基于Bind机制的SVA形式化验证结构图;
图3为本发明实施例提供的分层级例化示意图;
图4为本发明实施例提供的Bind实例化与文件关系图;
图5为本发明实施例提供的测试环境建立流程图;
图6为基于本发明的SVA形式化验证的流程图。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“前端”、“后端”、“两端”、“一端”、“另一端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
基于SVA的形式化验证由于其支持详尽地探索电路所有可能的输入序列,能够很大程度地缩减验证人员的工作量,缩短可编程逻辑器件软件产品验证周期,提升测试覆盖程度和测试质量,进而得到广大验证人员的关注;在验证非算法类可编程逻辑器件时其效率优势尤为明显。
验证人员采用基于SVA的形式化验证不可避免地需要向源代码植入大量代码,通过断言来构建电路模型。开发人员采用这种验证方式可以在设计达到理想状态后删除断言,保证设计没有无用的冗余代码。但专业的测试人员开展工作时就会手足无措,一方面需要保证被测对象状态不被更改,一方面又需要测试内容得到保存,在项目的任意阶段可以追溯之前的测试执行情况和测试问题。因此就迫切需要一种方式可以开展基于SVA的形式化验证,同时又可以分离并发断言,让断言在独立的文件中还可以发挥监视被测对象的功能。
本发明提供的一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,可以实现被测设计与断言分离,解决传统断言插入被测设计形成大量冗余代码的问题。利用Bind机制,可以将并发断言和被测逻辑的代码文件完全隔离开,极大地提升了代码和断言管理的便利性,方便问题追溯,同时可以根据测试目的的不同,将断言分类封装与不同的Bind中。此外,Bind机制不光可以引入被测逻辑的顶层输入输出,中间变量、寄存器、线网,甚至子模块中的各类信号,都可以引入。因此采用Bind机制管理断言,不会对验证工作产生限制。
基于此,本发明提供了一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,包括:
S1、依据被测对象需求规格说明,结合SVA(SystemVerilog Assertion)并发断言模板和DUT信号分析工具,半自动地产生适用于对被测对象开展形式化验证的Bind模板。验证人员根据验证目的,可将Bind模板的测试类型分为功能测试、性能测试、边界测试、时序测试、接口测试以及安全性测试等。对不同类型的Bind模板插入不同类型的Bind标识,然后通过DUT信号分析工具扫描出Verilog/VHDL源码文件中的管脚、寄存器或线网信号,选取需要使用并发断言监控的信号,自动以input类型端口定义在Bind模板中;
S2、首先将步骤S1中产生的Bind模板文件导入Bind库中,Bind库依据模板标识按照测试类型对Bind模板进行分组,分组除了按照测试类型划分的组别,还预留断言违例组和回归测试组。每一个Bind组包含若干Bind文件和Bind组日志文件,Bind文件可通过实例化与被测对象连接,封装在其中的并发断言可在形式化验证工具中生效并执行验证工作。Bind组日志文件记录本组信息,包含Bind文件数量、Bind标识以及各Bind中的并发断言数量等。
S3、在步骤S2建立的Bind库中选取要执行的Bind,生成实例化模板并将实例化模板插入并发断言监控的代码文件(*.v、*.vhd、*.sv)中。不调用的Bind则不产生实例化模板,在执行形式化验证时可最大化提升运算效率,节约运算资源。
S4、调用形式化验证工具读入源代码并调用Bind库,实现基于SVA的形式化验证。
S5、将被测对象和Bind库联合执行形式化验证之后,产生形式化验证结果,若发现违例断言,则将违例断言所在的Bind文件移到Bind库下违例Bind组。在违例组的日志文件中,产生违例Bind断言列表,记录各条断言通过情况并将违例断言的违例案例存储在日志的同一目录下。验证人员分析违例原因后需要执行回归测试,无论按照步骤S1产生新的Bind模板或复用Bind,都将被存放于Bind库下回归Bind组,先前的违例日志始终保存。
本实施例中,基于SVA的形式化验证方法下FPGA软件仿真测试环境建立方法,验证人员依据测试需求总结出被测逻辑所具备的特性,结合SVA并发断言模板和DUT信号分析工具,半自动地产生适用于对被测对象开展形式化验证的Bind模板。可依据测试类型建立不同的Bind模板,并通过Bind模板标识区分它们,在不同的Bind模板中封装不同的断言以实现对断言的分类管理。将源代码读入DUT信号分析工具,识别出源代码中的输入输出管脚、寄存器、线网等变量,选取需要使用并发断言监控的信号,自动以input类型端口定义在Bind模板中,实现将被测对象的信号引入Bind中。这些被引入Bind中的信号参数时刻与被测逻辑中的参数保持一致且没有延时,断言监控被引入信号的逻辑,等价于验证被测对象的逻辑特性。
将生成的Bind模板导入Bind库中,基于模板生成时的Bind序号,分别将Bind模板放置于按测试类型划分的组别当中。测试类型划分包括功能测试、性能测试、边界测试、接口测试、时序测试以及安全性测试。Bind库的每一个Bind组除了Bind组外,还存有日志文件。通过扫描Bind文件中的关键词,将属性和断言打印成表并计算数量。
要实现基于SVA的形式化验证就需要断言与被测对象成功连接,但使用Bind机制分离断言后,断言是不可以直接监控被测对象逻辑的。因此则需要用到Bind的实例化机制。对Bind库中需要执行的断言集合,即Bind文件生成实例化模板,包括如下步骤:
1)写入Bind例化关键词;
2)写入抓取的代码文件(*.v、*.vhd、*.sv)module名;
3)写入带有序号的程序实例化名;
4)抓取并写入Bind中引入的源程序信号并生成敏感变量列表。
产生Bind实例化模板后,将该实例化模板插入并发断言监控的代码文件(*.v、*.vhd、*.sv)中,此处与传统的实例化逻辑不同,Bind实例化插入代码文件末尾且置于module之外。Bind库中不执行的Bind则屏蔽Bind实例化,形式化验证执行时的表现就是被屏蔽实例化的Bind内置的并发断言不会生效。采用这样的形式,可有效降低运算资源浪费,提升验证效率。
在形式化验证执行中,若产生违例断言,则将违例断言所在的Bind文件移到Bind库下违例组。违例组的日志文件相比于其他组的日志,新增了违例断言标识,方便随时查看违例断言内容。此外,将形式化验证工具的仿真结果输出到违例组日志同目录下,以供验证人员便捷地查询违例案例。在违例断言分析结束后,若需要设计回归断言开展回归测试,则采用生成新的Bind模板并导入Bind库下的回归组。如此,验证环境结构清晰,在测试的任意阶段都可在Bind库中查看测试执行情况和问题追溯。
分解实现过程如下:
一、产生Bind模板
1)依据需求规格说明,整理被测对象所具备的特性;
2)并发断言属性模板库中选择合适的属性框架模板,与断言声明模板组合生成并发断言。这个过程为半自动化,需要人工设置敏感信号列表、触发时钟及边沿以及参数指标等;
3)Bind分类并贴上标识。
二、建立Bind库
1)依据Bind标识,将Bind放置于合适的组别中;
2)各组别依据组内的Bind文件,生成Bind列表。自动识别并填入各Bind文件的属性数量、断言数量、断言种类;
三、生成Bind实例化模板
1)选择需要执行的Bind,自动生成实例化模板;
2)将实例化模板插入并发断言监控的代码文件(*.v、*.vhd、*.sv)中;
3)屏蔽不执行Bind的实例化;
四、更新Bind库
1)在形式化验证报出断言违例时,将存在违例断言的Bind转存于Bind库下的违例组;
2)违例组日志文件在生成Bind列表的同时,标记各Bind中的违例断言;
3)将形式化验证工具产生的违例案例及报告输出到违例日志同目录下。
该方法可实现可编程逻辑器件软件验证时将被测逻辑代码与SystemVerilogAssertion并发断言分离到不同文件,进而实现基于SVA的形式化验证仿真。在代码分离之后,不会对断言编写及验证产生限制,在采用形式化验证提升验证效率的同时,增强代码与并发断言的可管理性,既满足验证目标,又使得验证问题可追溯,验证文件版本可管理,验证类型可区分。
如图1所示,首先从并发断言属性模板库导出所需的属性模板,验证人员设置敏感信号列表、触发时钟以及参数指标后,添加断言声明模板后封装于Bind模板内。将源代码读入DUT信号分析工具提取端口和信号信息并输出成文本,将端口和信号文本信息组合生成input端口定义语句写入Bind模板中。将生成好的Bind模板导入Bind库中,依据生成时条件的Bind标识对Bind模板进行分组,当一个组的Bind导入完成后,生成组内日志文件,记录Bind文件信息、属性条数以及断言种类和条数。Bind库建立完毕后将需要执行的Bind与被测对象连接,通过抓取Bind文件关键词,生成Bind实例化模板。将实例化模板植入被监控信号所在的文件内便可读入仿真测试环境。有源代码提供逻辑,Bind库提供并发断言,一同读入形式化验证工具执行验证。通过TCL脚本,将形式化验证工具的违例报告和违例案例波形图导出到Bind库,放于违例组日志同目录下,便于测试问题分析。
如图2所示,为基于Bind机制的SVA形式化验证结构图,本发明采用Bind分离SVA断言和源代码,Bind可以被定为module或interface,如此可以很方便地从外部RTL电路中引入需要监测的信号。同时,在分离断言后需要实现断言和RTL电路的连接,采用Bind可以完成与被测电路的实例化。同时Bind的实例化与传统可编程逻辑器件tesebench测试脚本实例化不同,tesebench测试脚本采用输入输出端口对接,原理类似于外接电路模块,而Bind实例化只需要在被连接对象的module外连接引入信号即可。其实现原理类似于示波器从电路管脚引出信号,连接需要监测的信号的同时,不用再构造复杂的电路模块。如图2可知,从被测对象中引入信号到Bind中,既可以是模块的输入输出端口,也可以是中间寄存器变量或线网变量。不受内外部信号限制。完成Bind构建后,Bind随被测对象一同被读入形式化验证工具执行验证。本发明Bind以库的形式读入,对于未使用的Bind则屏蔽实例化,以最大程度减轻运算负担,提升测试效率。
如图3所示,为分层级实例化图,Bind实例化不受被测对象层级限制,可以在电路的任意一个文件(*.v、*.vhd、*.sv)中插入Bind。就像使用示波器导出信号观测一样,而Bind机制的优势在于中间模块同样可以导出监测。只要是被测对象内部定义的端口、信号或是变量均可引入Bind。然后在Bind中构建断言模型监控被引入的信号,实现基于SVA的形式化验证。本发明中以库的形式读入若干Bind,未屏蔽实例化的Bind均为在仿真测试环境中生效。即任意时刻,可以同时观测被测对象的各级端口和信号的工作状态。
如图4所示,为Bind实例化及文件关系图,从单个设计代码文件和Bind来看如图呈如图所示的连接关系。电路模块实例化需要置于module内,作为电路的连接线,在综合和布局布线会产生响应的电路结构。本发明抓取Bind文件的关键词,自生成实例化模板后,将模板插入源代码末尾。这种方式可以最大程度减少被测对象中因测试产生的冗余代码。Bind实例化对综合也没有影响,在设计调试阶段采用这种仿真测试环境,可以避免频繁修改代码,使调试过程和测试结果得到管理和可追溯。同时,使用testbench作为载体就必须使用电路实例化的方式连线,这种方式引入电路中间变量较为麻烦,需要使用例化连线的方式逐级追溯信号的来源,繁杂的拉线过程不方便使用,且容易出错。
如图5所示,为基于SVA形式化验证的FPGA软件仿真环境搭建方法。首先需要依据需求,选取合适的并发断言属性模板,设置敏感信号、触发时钟和参数指标后与断言声明模板组合成完整的断言模板。结合DUT信号分析工具,将源代码的端口和信号抓取出来,声明与Bind中,将监控信号引入Bind中,构建完整的Bind模板。将若干构建的Bind模板导入Bind库中,依据模板标识对Bind模板进行分组管理,组内导入Bind模板后更新组内日志文件,方便验证人员查询Bind库最新的断言信息。然后生成实例化模板,将需要执行的Bind与源代码连接,不需要立马执行的Bind则屏蔽实例化,节约运算资源。在验证过程中,发现违例案例,则通过TCL脚本将形式化验证工具产生的案例波形图输出到Bind库中,存放于违例日志同一目录下。该仿真测试环境下Bind库保持动态更新,每次修改测试用SVA断言,Bind模板和组内日志就同步更新。违例信息则会一直保存,用于追溯和分析。
如图6所示,为基于本发明的SVA的形式化验证流程图,生成断言模板和DUT信号信息,构建Bind模板。使用建立的Bind模板搭建Bind库,在形式化验证工具读入设计源代码的同时调用Bind库。在发生断言违例时,将形式化验证工具产生的违例案例输出到Bind库中,动态更新Bind库。新增的回归用断言则封装于回归测试Bind并放于库下的回归组,然后再次调用Bind库开展形式化验证,直到所有断言模型验证正确后终止验证。验证执行情况和验证问题,可随时在Bind库日志中查询分析。
本发明中提及的一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,该方法能够在形式化验证过程中,不需要将并发断言模型插入源代码,实现设计源码与并发断言在分离状态下完成基于SVA的形式化验证。首先,依据测试需求,结合并发断言模板和DUT信号分析工具,半自动地产生不同适用于测试类型的Bind模板。验证人员设置并发断言模板中的敏感信号、触发时钟以及参数指标等信息后,将可用于形式化验证的Bind文件放入Bind库。Bind库依据测试类型对Bind文件进行分组,分组后产生各组别的日志文件,用于记录组内Bind文件列表、各Bind文件中属性数量、并发断言数量和种类。然后,对Bind库中需要执行形式化验证的Bind抓取关键词并产生实例化模板,将实例化模板插入并发断言监控的代码文件(*.v、*.vhd、*.sv)module之外。最后调用形式化验证工具读入源代码并调用Bind库,即可实现基于SVA的形式化验证。在验证结束后,若发现违例断言,则更新Bind库。将含有违例断言的Bind移至违例组,并更新违例组日志,标记出现违例情况的断言。同时,将形式化验证工具产生的违例案例波形文件输出到日志同目录下。新生成的用于封装回归测试断言的Bind,将被存放到Bind库下回归组。
本发明用于开展可编程逻辑器件软件能力评估,解决了传统断言置于被测逻辑代码文件中,产生大量冗余代码的问题。可以实现被测设计与断言分离,解决传统断言插入被测设计形成大量冗余代码的问题。本方法还将封装断言的Bind建库,分类分组保存;同时在测试过程中更新Bind库的日志文件,实现了断言数量可统计,断言执行情况可追溯,断言违例案例可查询;有效提升测试效率的同时,提升了测试执行的可管理性。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (10)
1.一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,其特征在于,包括以下步骤:
S1、依据被测对象FPGA软件的测试需求,结合SVA并发断言模板和DUT信号分析工具,产生适用于对被测对象开展形式化验证的Bind模板;
S2、将所述Bind模板文件导入Bind库中;所述Bind库依据模板标识按照测试类型对Bind模板进行分组;
S3、在所述Bind库中选取要执行的Bind,生成实例化模板并将实例化模板插入并发断言监控的代码文件module之外;
S4、调用形式化验证工具读入源代码并调用Bind库,实现基于SVA的形式化验证。
2.根据权利要求1所述的一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,其特征在于,所述S1步骤还包括:
根据测试需求,将Bind模板的测试类型分为功能测试、性能测试、边界测试、时序测试、接口测试以及安全性测试;
对不同类型的Bind模板插入不同类型的Bind标识,并通过DUT信号分析工具扫描出Verilog/VHDL源码文件中的管脚、寄存器或线网信号,选取需要使用并发断言监控的信号,以input类型端口定义在Bind模板中。
3.根据权利要求2所述的一种基于SVA形式化验证的FPGA软件仿真测
试环境建立方法,其特征在于,所述S2步骤中所述Bind库还预留断言违例组和回归测试组;每一个Bind组包含若干Bind文件和Bind组日志文件,Bind文件通过实例化与被测对象连接,封装在其中的并发断言在形式化验证工具中生效并执行验证工作;其中,Bind组日志文件记录本组信息,包含Bind文件数量、Bind标识以及各Bind中的并发断言数量。
4.根据权利要求3所述的一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,其特征在于,该方法还包括:
S5、将被测对象和Bind库联合执行形式化验证之后,产生形式化验证结
果;若发现违例断言,则将违例断言所在的Bind文件移到Bind库下断言违例组;当执行回归测试后,则存放于Bind库下的回归测试组。
5.根据权利要求1所述的一种基于SVA形式化验证的FPGA软件仿真测
试环境建立方法,其特征在于,所述S1步骤中并发断言模板构建方式如下:
1)从并发断言属性模板库中选择合适的属性框架模板;所述属性框架模板类型包括:时序型、条件型、约束型、脉宽型和自定义属性;
2)基于属性框架模板,设置其敏感信号、触发时钟以及参数指标;
3)设置完成后封装于Bind模板中。
6.根据权利要求1所述的一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,其特征在于,所述S1步骤中DUT信号分析工具需要具备如下功能:
1)读取Verilog、VHDL以及SystemVerilog文件;
2)自动识别RTL代码中的输入输出端口、寄存器变量、线网变量;
3)将识别到的端口、信号以及变量输出成文本。
7.根据权利要求1所述的一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,其特征在于,所述步骤S4中形式化验证工具,具备如下功能:
1)兼容IEEE SystemVerilog标准;
2)支持硬件描述语言Verilog、VHDL编译;
3)支持基于给定的属性,静态地分析设计的行为;
4)支持探索电路所有可能的输入序列;
5)发现电路行为与属性不一致时,产生错误分析报告,并生成违例案例。
8.根据权利要求3所述的一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,其特征在于,所述S2步骤中的Bind组日志文件生成步骤如下:
1)生成组内Bind文件列表;
2)识别Bind文件内的属性关键词,计算每个Bind文件中属性数量;
3)识别Bind文件内断言声明关键词,将断言分类,分别计算断言、约束、覆盖率并发断言的数量;
4)将文件Bind文件列表、各Bind属性数量以及各种类断言数量汇总打印到日志文件中。
9.根据权利要求1所述的一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,其特征在于,所述S3步骤中生成实例化模板的步骤如下:
1)自写入Bind例化关键字;
2)抓取被检测代码文件module名;
3)自动有序地生成程序实例化名;
4)抓取Bind中引入的源程序信号并生成敏感变量列表;
5)组合上述1)-4)步骤产生的部件,组成实例化模板。
10.根据权利要求4所述的一种基于SVA形式化验证的FPGA软件仿真测试环境建立方法,其特征在于,所述S5步骤中断言违例组的具有日志文件;在所述断言违例组的日志文件中,产生违例Bind断言列表,记录各条断言;
所述断言违例组的日志文件生成步骤如下:
1)生成组内Bind文件列表;
2)识别Bind文件内的属性关键词,计算每个Bind文件中属性数量;
3)识别Bind文件内断言声明关键词,将断言分类,分别计算断言、约束、覆盖率并发断言的数量;
4)将Bind文件列表、各Bind属性数量以及各种类断言数量汇总打印到日志文件中;
5)抓取形式化验证工具结果分析报告中,违例断言名称,与日志中的断言列表对比,将出现违例子的断言标注出来;
6)输出形式化验证工具违例结果波形图文件到违例日志同目录下。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210845602.1A CN115098400B (zh) | 2022-07-19 | 2022-07-19 | 一种基于sva形式化验证的fpga软件仿真测试环境建立方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210845602.1A CN115098400B (zh) | 2022-07-19 | 2022-07-19 | 一种基于sva形式化验证的fpga软件仿真测试环境建立方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115098400A true CN115098400A (zh) | 2022-09-23 |
CN115098400B CN115098400B (zh) | 2022-12-06 |
Family
ID=83298115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210845602.1A Active CN115098400B (zh) | 2022-07-19 | 2022-07-19 | 一种基于sva形式化验证的fpga软件仿真测试环境建立方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115098400B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116663462A (zh) * | 2023-07-27 | 2023-08-29 | 北京开源芯片研究院 | 断言验证方法、断言验证平台、电子设备及可读存储介质 |
CN116663467A (zh) * | 2023-07-27 | 2023-08-29 | 北京开源芯片研究院 | 断言等效硬件库的构建方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080059925A1 (en) * | 2006-08-29 | 2008-03-06 | International Business Machines Corporation | Method, System, and Program Product for Automated Verification of Gating Logic Using Formal Verification |
CN103020396A (zh) * | 2012-12-31 | 2013-04-03 | 青岛中星微电子有限公司 | 一种自动生成断言的方法及装置 |
US20180107765A1 (en) * | 2016-10-14 | 2018-04-19 | Imagination Technologies Limited | Detecting Out-of-Bounds Violations in a Hardware Design Using Formal Verification |
CN109857608A (zh) * | 2018-12-27 | 2019-06-07 | 深圳云天励飞技术有限公司 | 微处理器验证方法、装置、电子设备及计算机可读存储介质 |
CN110096441A (zh) * | 2019-04-26 | 2019-08-06 | 北京航空航天大学 | 一种基于uvm方法下fpga软件仿真测试环境建立方法 |
CN114661615A (zh) * | 2022-04-11 | 2022-06-24 | 成都迪真计算机科技有限公司 | 一种fpga软件测试方法和设备 |
-
2022
- 2022-07-19 CN CN202210845602.1A patent/CN115098400B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080059925A1 (en) * | 2006-08-29 | 2008-03-06 | International Business Machines Corporation | Method, System, and Program Product for Automated Verification of Gating Logic Using Formal Verification |
CN103020396A (zh) * | 2012-12-31 | 2013-04-03 | 青岛中星微电子有限公司 | 一种自动生成断言的方法及装置 |
US20180107765A1 (en) * | 2016-10-14 | 2018-04-19 | Imagination Technologies Limited | Detecting Out-of-Bounds Violations in a Hardware Design Using Formal Verification |
CN109857608A (zh) * | 2018-12-27 | 2019-06-07 | 深圳云天励飞技术有限公司 | 微处理器验证方法、装置、电子设备及计算机可读存储介质 |
CN110096441A (zh) * | 2019-04-26 | 2019-08-06 | 北京航空航天大学 | 一种基于uvm方法下fpga软件仿真测试环境建立方法 |
CN114661615A (zh) * | 2022-04-11 | 2022-06-24 | 成都迪真计算机科技有限公司 | 一种fpga软件测试方法和设备 |
Non-Patent Citations (4)
Title |
---|
朱伟杰等: "FPGA功能验证自动化技术研究与实践", 《航天控制》 * |
朱夕辉: "核电厂仪控系统中FPGA的形式验证方法及V&V技术", 《工业控制计算机》 * |
陈先勇等: "SystemVerilog断言及其应用", 《中国集成电路》 * |
颜丽 等: "基于SVA的FPGA接口时序验证方法研究", 《萍乡高等专科学校学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116663462A (zh) * | 2023-07-27 | 2023-08-29 | 北京开源芯片研究院 | 断言验证方法、断言验证平台、电子设备及可读存储介质 |
CN116663467A (zh) * | 2023-07-27 | 2023-08-29 | 北京开源芯片研究院 | 断言等效硬件库的构建方法、装置、电子设备及存储介质 |
CN116663467B (zh) * | 2023-07-27 | 2023-11-10 | 北京开源芯片研究院 | 断言等效硬件库的构建方法、装置、电子设备及存储介质 |
CN116663462B (zh) * | 2023-07-27 | 2023-11-17 | 北京开源芯片研究院 | 断言验证方法、断言验证平台、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115098400B (zh) | 2022-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115098400B (zh) | 一种基于sva形式化验证的fpga软件仿真测试环境建立方法 | |
US7065481B2 (en) | Method and system for debugging an electronic system using instrumentation circuitry and a logic analyzer | |
US7356786B2 (en) | Method and user interface for debugging an electronic system | |
US6618839B1 (en) | Method and system for providing an electronic system design with enhanced debugging capabilities | |
US7827510B1 (en) | Enhanced hardware debugging with embedded FPGAS in a hardware description language | |
US5801958A (en) | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information | |
US7222315B2 (en) | Hardware-based HDL code coverage and design analysis | |
US7506286B2 (en) | Method and system for debugging an electronic system | |
US20030131325A1 (en) | Method and user interface for debugging an electronic system | |
US20050193280A1 (en) | Design instrumentation circuitry | |
US6192504B1 (en) | Methods and systems for functionally describing a digital hardware design and for converting a functional specification of same into a netlist | |
JPH10232890A (ja) | プログラマブル論理回路のための組み込み式論理アナライザー | |
CN116663462B (zh) | 断言验证方法、断言验证平台、电子设备及可读存储介质 | |
CN114816980A (zh) | 一种嵌入式通信系统用自动测试装置及方法 | |
US8868396B1 (en) | Verification and debugging using heterogeneous simulation models | |
Mathaikutty et al. | Model-driven test generation for system level validation | |
Saafan et al. | SoC connectivity specification extraction using incomplete RTL design: An approach for Formal connectivity Verification | |
CN114239459B (zh) | Fpga原型设计文件的处理方法、装置、设备及介质 | |
Fiergolski | Simulation environment based on the Universal Verification Methodology | |
CN117350208A (zh) | 时序逻辑元件性能检查方法及设备 | |
Lagadec et al. | Software-like debugging methodology for reconfigurable platforms | |
CN116663463B (zh) | 一种电路验证方法、装置、电子设备及可读存储介质 | |
Macori | Implementation of UVM-Based Framework for Enhancement of DFT DV Flows | |
Shen et al. | A Universal-Verification-Methodology-Based Verification Strategy for High-Level Synthesis Design | |
Heikura | High-Level verification methodology for UVMF-based C++ reference model testbench implementation |
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 | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Lu Yunfeng Inventor after: Jia Yang Inventor after: Zhou Jianyun Inventor after: Wang Shihai Inventor after: Liu Bin Inventor before: Lu Yunfeng Inventor before: Jia Yang Inventor before: Chang Liang Inventor before: Wang Shihai Inventor before: Liu Bin |
|
GR01 | Patent grant | ||
GR01 | Patent grant |