CN114924992B - 一种基于形式化的fpga软件安全性验证方法及验证*** - Google Patents
一种基于形式化的fpga软件安全性验证方法及验证*** Download PDFInfo
- Publication number
- CN114924992B CN114924992B CN202210851736.4A CN202210851736A CN114924992B CN 114924992 B CN114924992 B CN 114924992B CN 202210851736 A CN202210851736 A CN 202210851736A CN 114924992 B CN114924992 B CN 114924992B
- Authority
- CN
- China
- Prior art keywords
- sva
- design
- assertion
- information
- sva assertion
- 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
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于形式化的FPGA软件安全性验证方法及验证平台,属于可编程逻辑器件软件测试技术领域。其方法包括,获取FPGA软件通用安全性设计要求信息,根据FPGA软件通用设计要求信息生成SVA断言模板;提取拟验证的安全性设计准则及待测FPGA软件信息,并从待测FPGA软件中提取待测信号信息;将拟验证的安全性设计准则与SVA断言模板进行映射,从SVA断言模板选取目标SVA断言并生成待执行SVA断言;将待执行SVA断言以及待测FPGA软件的源代码输入形式化验证工具完成形式化验证并输出安全性验证报告。本发明通过上述方法和执行该方法的验证平台解决了通过人工编写测试用例,并进行仿真验证所带来的开发周期长、通用化程度低等诸多问题和不足。
Description
技术领域
本发明涉及可编程逻辑器件软件测试技术领域,更具体的说是涉及一种基于形式化的FPGA软件安全性验证方法及验证平台。
背景技术
可编程逻辑器件由于其具有可重复编程、可靠性高、集成度高、功耗低、体积小、成本低、易于维护等优点,近年来在航空、航天、电子、船舶等各领域中的应用占比逐年提高,采用可编程逻辑器件代替原有ASIC+DSP的设计方式逐渐被设计师们普遍接受。硬件RTL代码规模不断增大,FPGA设计也越来越复杂,这给RTL代码的逻辑验证带来了巨大挑战,据各大商业公司年度报告统计,整个项目生命周期中的70%时间和人力用于投入到FPGA软件代码验证阶段,但是验证仍然难以收敛,采用可编程逻辑器件实现的产品仍不时有安全问题出现。
传统的FPGA软件验证是由设计人员完成特定的功能代码后,测试人员根据该功能编写定向测试用例以便于产生用于验证该功能的激励,紧接着将激励灌输到DUT(待测试模块),然后使用EDA工具进行仿真,得到定向测试激励进入DUT后的数字信号电平跳转情况,通过观察波形图来判断实际结果与预期结果是否一致,如果实际结果与预期结果一致,那么FPGA代码设计的这一功能符合我们的要求。这样传统的验证方式多数仅仅依赖于软件开发文档中对于功能的部分描述,对于FPGA软件的安全性设计要求的验证过程往往被忽略,并且其存在人工编写的测试用例通用差、测试用例开发周期长、繁杂的测试用例需花费大量的人力维护、测试结果通过EDA波形图判读存在人为误判可能等几个明显的缺点。
因此,如何摆脱基于设计文档本身人工编写测试用例进行FPGA软件安全验证,提高FPGA软件安全验证效率,提供一种通用化的FPGA软件安全性验证方法及验证平台是本领域技术人员亟需解决的问题。
发明内容
针对传统FPGA软件测试方法采用人工编写测试用例并送入仿真工具中对FPGA软件功能、性能进行验证,缺乏针对FPGA软件安全性设计通用化、自动化验证手段这一事实,本发明提出了一种基于形式化的FPGA软件安全性验证方法和验证平台。
为了实现上述目的,本发明采用如下技术方案:
本发明一方面公开了一种基于形式化的FPGA软件安全性验证方法,包括以下步骤:
S1、获取FPGA软件通用安全性设计要求信息,根据FPGA软件通用安全性设计要求信息生成SVA断言模板;
S2、提取拟验证的安全性设计准则,并根据拟验证的安全性设计准则从待测FPGA软件中提取待测信号信息;
S3、将S2中提取的拟验证的安全性设计准则与S1中生成的SVA断言模板进行映射,从所述SVA断言模板选取目标SVA断言,将目标SVA断言中的信号信息替换为S2中提取的待测信号信息,生成待执行SVA断言;
S4、将待执行SVA断言以及待测FPGA软件的源代码输入形式化验证工具进行验证并输出安全性验证报告。
优选的,步骤S1中,具体包括以下步骤:
S11、对GB/T37691-2019可编程逻辑器件软件安全性设计指南中的设计和实现要求信息进行分类和逐条分析;
S12、从每一条设计和实现要求信息中提取能够采用SVA断言方式进行安全验证的FPGA软件通用安全性设计准则,并根据提取的通用安全性设计准则构建SVA断言模板;
S13、提取SVA断言模板中执行SVA断言所需替换的信号信息及约束条件,所述信号信息包括时钟信号名称及寄存器信号名称。
优选的,步骤S2中提取拟验证的安全性设计准则及待测FPGA软件信息,具体包括以下步骤:
S21、根据待测FPGA软件所属产品的应用领域、应用场景以及相关软件技术文档选取拟验证的安全性设计准则;
S22、根据安全性设计准则中的信号名称对选取的拟验证的安全性设计准则进行去重处理;
S23、根据去重后的拟验证的安全性设计准则从待测FPGA软件中提取初始信号信息;
S24、判断初始信号信息中的信号名称、信号数量及时钟域关系是否满足SVA断言模板要求;
S25、保留满足SVA断言模板要求的初始信号信息即为待测信号信息,所述待测信号信息包括待测时钟信号名称及待测寄存器信号名称。
优选的,步骤S23中还包括:
判断当前去重后的拟验证的安全性设计准则是否包含跨时钟域设计要求,当存在跨时钟域设计要求时对信号名称按照时钟域关系进行划分。
优选的,步骤S3具体包括以下步骤:
S31、按照拟验证的安全性设计准则完成SVA断言模板的映射关系,从SVA断言模板中选取目标SVA断言;
S32、将目标SVA断言中的时钟信号名称及寄存器信号名称逐项替换为待测时钟信号名称及待测寄存器信号名称,生成待执行SVA断言,并将所述待执行SVA断言保存到待执行SVA断言文件中。
优选的,步骤S4具体包括以下步骤:
S41、将待执行SVA断言文件和待测FPGA软件源代码一同送入支持SVA断言验证的形式化验证工具中进行形式化验证,所述支持SVA断言验证的形式化验证工具包括AveMC、JasperGold和VC_Formal;
S42、对执行形式化验证后输出的断言覆盖率结果进行判断,当断言覆盖率结果不满足设定阈值时,重新提取拟验证的安全性设计准则及待测FPGA软件信息并更新待执行SVA断言;
S43、重复步骤S41~S42直至断言覆盖率结果满足设定阈值;
S44、对形式化验证工具给出的SVA断言通过情况进行分析,判断SVA断言未通过原因并输出FPGA软件安全性验证报告。
本发明另一方面公开了一种基于形式化的FPGA软件安全性验证平台,包括:SVA断言模块、信息提取模块、SVA断言生成模块、形式化验证工具及结果分析模块;
其中,所述SVA断言模块用于根据FPGA软件通用安全性设计要求信息生成SVA断言模板;所述信息提取模块用于提取拟验证的安全性设计准则及待测信号信息;所述SVA断言生成模块用于读取SVA断言模块中生成的SVA断言模板,和信息提取模块提取的拟验证的安全性设计准则及待测信号信息,生成待执行SVA断言;所述形式化验证工具用于对生成的待执行SVA断言进行形式化验证;所述结果分析模块用于对形式化验证工具给出的验证结果进行分析判断并生成安全性验证报告。
优选的,所述SVA断言模块生成SVA断言模板具体包括:
SVA断言模块输入GB/T37691-2019可编程逻辑器件软件安全性设计指南中的设计和实现要求信息,并对所述设计和现实要求信息进行分类和逐条分析;
从每一条设计和实现要求信息中提取能够采用SVA断言方式进行安全验证的FPGA软件通用安全性设计准则,并根据提取的通用安全性设计准则构建SVA断言模板。
优选的,所述信息提取模块提取拟验证的安全性设计准则及待测信号信息具体包括:
信息提取模块导入待测FPGA软件和FPGA约束文件,根据待测FPGA软件所属产品的应用领域、应用场景以及相关软件技术文档选取拟验证的安全性设计准则;
根据拟验证的安全性设计准则中的信号名称对选取的拟验证的安全性设计准则进行去重处理;
根据去重后的拟验证的安全性设计准则从待测FPGA软件中提取初始信号信息;
判断当前去重后的拟验证的安全性设计准则是否包含跨时钟域设计要求,当存在跨时钟域设计要求时对信号名称按照时钟域关系进行划分;
判断初始信号信息中的信号名称、信号数量及时钟域关系是否满足SVA断言模板要求,当不满足断言模板要求时发出提示信息;
保留满足SVA断言模板要求的初始信号信息即为待测信号信息,所述待测信号信息包括待测时钟信号名称及待测寄存器信号名称。
优选的,所述SVA断言生成模块生成待执行SVA断言包括以下步骤:
SVA断言生成模块读取基于安全性的SVA断言模板模块中生成的SVA断言模板,和信息提取模块提取的拟验证的安全性设计准则及待测信号信息,将拟验证的安全性设计准则与SVA断言模板进行映射,从SVA断言模板中选取目标SVA断言;
将目标SVA断言中的时钟信号名称及寄存器信号名称逐项替换为待测时钟信号名称及待测寄存器信号名称,生成待执行SVA断言,并将待执行SVA断言保存到待执行SVA断言文件中。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于形式化的FPGA软件安全性验证方法及验证平台,通过形式化的方式构建了FPGA软件安全性验证通用方法和验证平台,通过生成通用的FPGA软件验证SVA断言模板,并利用选定的安全性准则和从待测FPGA软件中提取的相关信息完成SVA断言即测试用例的自动生成;整个验证过程中不需要人工编写测试用例即可完成FPGA软件的安全性自动化验证流程并生成相关验证报告,有效的解决了传统FPGA软件测试方法测试效率低、测试质量受限于测试人员水平及缺少通用化的FPGA软件安全性验证方法的问题,在可编程逻辑器件软件测试领域中具有广泛的应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明基于形式化的FPGA软件安全性验证方法步骤流程图;
图2是本发明基于形式化的FPGA软件安全性验证平台结构框图;
图3是本发明SVA断言模块中SVA断言模板生成路线图;
图4是本发明信息提取模块中信息提取步骤流程图;
图5是本发明SVA断言生成模块中SVA断言自动生成流程图;
图6是本发明形式化验证工具进行形式化验证及结果分析流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明一方面公开了一种基于形式化的FPGA软件安全性验证方法,包括以下步骤:
S1、获取FPGA软件通用安全性设计要求信息,根据FPGA软件通用安全性设计要求信息生成SVA断言模板,并确定需替换的信号信息及约束条件;
S2、提取拟验证的安全性设计准则及待测FPGA软件信息;
S3、将待测FPGA软件信息与S1中生成的SVA断言模板进行映射,并根据拟验证的安全性设计准则调用所述SVA断言模板,生成待验证的SVA断言;
S4、将待测FPGA软件源代码以及待验证的SVA断言输入形式化验证工具完成形式化验证并输出安全性验证报告。
具体的,步骤S1可采用以下步骤:
S11、对GB/T37691-2019可编程逻辑器件软件安全性设计指南中的设计和实现要求信息进行逐条分析;
S12、从所述设计和实现要求信息中提取能够采用SVA断言方式进行FPGA软件安全性验证的通用设计要求,并根据所述通用设计要求构建出SVA断言模板;
S13、在SVA断言模板中明确执行SVA断言所需替换的信号信息及约束条件,所述信号信息包括时钟信号名称及寄存器信号名称,以便于对信号信息进行替换时判断信息输入是否满足SVA断言模板替换要求。
步骤S2可采用以下步骤:
S21、根据待测FPGA软件所属产品的应用领域、应用场景以及相关软件技术文档选取拟验证的安全性设计准则;
S22、根据安全性设计准则中的信号名称对选取的拟验证的安全性设计准则进行去重处理;
S23、根据去重后的拟验证的安全性设计准则从待测FPGA软件中提取初始信号信息;
S24、判断初始信号信息中的信号名称、信号数量及时钟域关系是否满足SVA断言模板要求;
S25、保留满足SVA断言模板要求的初始信号信息即为待测信号信息,所述待测信号信息包括待测时钟信号名称及待测寄存器信号名称。
步骤S23中还包括:
判断当前去重后的拟验证的安全性设计准则是否包含跨时钟域设计要求,当存在跨时钟域设计要求时对信号名称按照时钟域关系进行划分。
步骤S3可具体包括以下步骤:
S31、按照拟验证的安全性设计准则完成SVA断言模板的映射关系,从SVA断言模板中选取目标SVA断言;
S32、将目标SVA断言中的时钟信号名称及寄存器信号名称逐项替换为待测时钟信号名称及待测寄存器信号名称,生成待执行SVA断言,并将所述待执行SVA断言保存到待执行SVA断言文件中。
步骤S4可具体包括以下步骤:
S41、将待执行SVA断言文件和待测FPGA软件源代码一同送入支持SVA断言验证的形式化验证工具中进行形式化验证,所述支持SVA断言验证的形式化验证工具包括AveMC、JasperGold和VC_Formal;
S42、对执行形式化验证后输出的断言覆盖率结果进行判断,当断言覆盖率结果不满足设定阈值时,重新提取拟验证的安全性设计准则及待测FPGA软件信息并更新待执行SVA断言;
S43、重复步骤S41~S42直至断言覆盖率结果满足设定阈值;
S44、对形式化验证工具给出的SVA断言通过情况进行分析,判断SVA断言未通过原因并输出FPGA软件安全性验证报告。
如图2所示,本发明另一方面公开了一种基于形式化的FPGA软件安全性验证平台,包括:SVA断言模块、信息提取模块、SVA断言生成模块、形式化验证工具及结果分析模块;
其中,所述SVA断言模块用于根据FPGA软件通用安全性设计要求信息生成SVA断言模板;所述信息提取模块用于提取拟验证的安全性设计准则及待测信号信息;所述SVA断言生成模块用于读取基于安全性的SVA断言模模块中生成的SVA断言模板,和信息提取模块提取的拟验证的安全性设计准则及待测信号信息,生成待执行SVA断言;所述形式化验证工具用于对生成的待执行SVA断言进行形式化验证;所述结果分析模块用于对形式化验证工具给出的验证结果进行分析判断并生成安全性验证报告。
下面对FPGA软件安全性验证平台的各个模块进行详细说明。
SVA断言模块能够根据FPGA软件通用安全性设计要求信息生成SVA断言模板,并生成SVA断言模板文件;
如图3所示,在一个具体实施例中,FPGA软件通用安全性设计要求信息可以通过GB/T 37691-2019可编程逻辑器件软件安全性设计指南中获取,首先SVA断言模块需按照GB/T 37691-2019可编程逻辑器件软件安全性设计指南设计和实现的章节中关于FPGA软件安全性设计要求相关信息按照***设计、跨时钟域设计、冗余设计、余量设计、编码、时钟设计、接口及通信设计、配合存储器相关设计、复位设计、状态机设计、IP核使用、综合设计和管脚约束将其分为A~M的13类安全性准则;然后再对每一类安全性准则进行分解从而构成安全性准则A_1,安全性准则A_2,……,安全性准则M_N;接着对每一种安全性设计准则按照SVA断言的方式构建其验证模型,SVA断言模板中应包含所需验证的属性、断言类型声明(通过情况和覆盖率情况),当SVA断言模板编写完成后即可根据所设计的断言代码明确出自动生成SVA断言所需提取的信息及约束信息从而形成需提取的信息及约束A_1,需提取的信息及约束A_2,……需提取的信息及约束M_N,最后对相关文件保存管理形成基于安全性的SVA断言模板保存到SVA断言模块的SVA断言模板库中。
信息提取模块能够提取可进行形式化验证的FPGA软件安全性设计准则进行选取。
如图4所示,信息提取模块信息提取流程主要分为以下几个步骤:
步骤4.1将待测FPGA软件的源代码和FPGA约束文件导入到信息提取模块中;
本发明实施例中FPGA约束文件指可以对FPGA设计进行约束的文件,主要涉及约束可包括时钟约束、群组约束、逻辑管脚约束以及物理属性约束,在具体应用中可通过编辑用户约束文件实现对FPGA上述约束信息的编辑与制定。
步骤4.2按照被测FPGA软件所属产品的应用领域、应用场景以及相关软件技术文档完成安全性设计准则验证条目的复选;
步骤4.3对所选定的FPGA软件安全性设计准则中规定输入的内容进行去重处理,提取中其中重复的部分避免在信息提取过程中信息的重复输入;
步骤4.4判断当前所选的安全性设计准则是否包含跨时钟域设计要求,如包含跨时钟域设计则需要按照时钟域所属关系对信号名称进行划分;
步骤4.5当存在跨时钟域设计要求时需要对信号名称按照时钟域关系进行划分,对多个时钟域划分时按照时钟信号名称确定时钟域1,时钟域2,……,时钟域N,并提示依次输入相关的时钟信号名称和该时钟驱动的信号名称;
步骤4.6提示输入其他待提取的信号名称;
步骤4.7根据所选取的安全性设计准则SVA断言模板依次判断输入的信号名称、信号数量、时钟域关系是否满足SVA断言模板要求,当存在不满足要求的情况时给出相关提示信息;
步骤4.8在待测FPGA软件源代码、FPGA约束文件中搜索输入的全部信号名称在导入的文件中是否存在,当存在不满足要求的情况时给出相关提示信息;
步骤4.9重复步骤3.5~步骤3.8的过程直至满足信息提取要求;
步骤4.10根据所选的安全性准则文件分类并结合输入的时钟信号名称和寄存器信号名称等构建生成断言所需的信号信息文件。
在一种具体实施例中信息提取模块可按照所选择的安全性设计准则生成对话框弹窗提示并依次输入所需的信号名称,并自动完成相关信息检查工作,当检查通过时输出断言生成所需的信号信息至SVA断言生成模块。
SVA断言生成模块用于读取基于安全性的SVA断言模板文件和信息提取模块中选定安全性设计准则和待测软件信号信息完成SVA断言的自动生成SVA断言送入形式化验证工具中,由形式化验证工具对输入的待测FPGA软件代码和SVA断言执行形式化验证;
如图5所示,SVA断言生成模块中生成SVA断言主要分为以下几个步骤:
步骤5.1读取信息提取模块中生成的信息数据,并从中解析出所选取的安全性设计准则结果和提取的待测FPGA软件相关信号名称;
步骤5.2从SVA断言模块中读取基于安全性的SVA断言模板文件;
步骤5.3按照信息提取模块中选定的安全性设计准则完成安全性的SVA断言模板的映射关系,选取出拟进行信号名称替换的SVA断言模板;
步骤5.4对映射后的SVA断言模板文件中时钟信号名称、寄存器信号名称等逐项进行替换从而生成待执行的SVA断言文件1,SVA断言文件2,……,SVA断言文件N供形式化验证工具读取执行形式化验证操作。
形式化验证工具用于对生成的待执行SVA断言进行形式化验证,支持SVA断言验证的形式化验证工具可以包括AveMC、JasperGold和VC_Formal。
结果分析模块可以根据形式化验证工具给出的验证结果进行分析判断并生成安全性验证报告,当断言覆盖率不满足设定要求时送入信息提取模块的覆盖率满足情况生成提示信息并对其进行分析,如存在不适用待测FPGA软件的安全性设计要求时,可重新选定待测试的FPGA软件安全性设计准则进行验证。
如图6所示形式化验证及结果分析流程主要分为以下几个步骤:
步骤6.1将待测FPGA软件源代码文件、自动化生成的待执行SVA断言等文件导入到形式化验证工具中并根据被测设备实际使用场景、FPGA软件安全性要求、测试工作量等因素综合考虑并设定断言覆盖率要求,断言覆盖率默认要求为100%;
步骤6.2使用FPGA软件形式化验证工具构建测试环境,包括读取已导入的源代码文件和待执行SVA断言文件、指定时钟约束(指定待测设计中所有的时钟信号频率)、建立复位(指定设计中的顶层复位信号并约束复位有效电平)、初始化参数(为顶层中的输入信号赋初值,避免出现不定态影响断言判断结果),测试环境构建完成后使用工具执行形式化验证并读取工具输出的SVA断言通过/失败结果,以及SVA断言覆盖情况形成测试结果数据,验证工具包括AveMC、JasperGold和VC_Formal等通用SVA断言形式化验证工具;
步骤6.3判断断言覆盖率结果是否满足步骤5.1中设定的预定验证要求;
步骤6.4当断言覆盖率结果不满足要求时可以逐条判断未覆盖断言对应的安全性设计准则,并根据被测FPGA软件驻留设备的实际使用场景等重新分析该安全性设计准则是否适用于待测FPGA软件;
步骤6.5如仍需对未覆盖的测试准则进行安全性验证时需更新信息提取模块输入的相关信号信息并重新生成待执行的SVA断言并送入形式化验证工具,否则在测试结果数据中删除无需验证的安全性设计准则通过结果;
步骤6.6根据测试结果数据中的SVA断言通过/失败结果生成对应的安全性设计准则验证结果,并通过表格、文本文档、XML文件的形式给出FPGA软件安全性验证报告。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种基于形式化的FPGA软件安全性验证方法,其特征在于,所述方法包括以下步骤:
S1、获取FPGA软件通用安全性设计要求信息,根据FPGA软件通用安全性设计要求信息生成SVA断言模板;
具体包括以下步骤:
S11、对设计和实现要求信息进行分类和逐条分析;
所述设计和实现要求信息包括***设计、跨时钟域设计、冗余设计、余量设计、编码、时钟设计、接口及通信设计、配合存储器相关设计、复位设计、状态机设计、IP核使用、综合设计和管脚约束;
S12、从每一条设计和实现要求信息中提取能够采用SVA断言方式进行安全验证的FPGA软件通用安全性设计准则,并根据提取的通用安全性设计准则构建SVA断言模板;
S13、提取SVA断言模板中执行SVA断言所需替换的信号信息及约束条件,所述信号信息包括时钟信号名称及寄存器信号名称;
S2、提取拟验证的安全性设计准则,并根据拟验证的安全性设计准则从待测FPGA软件中提取待测信号信息;
S2具体包括以下步骤:
S21、根据待测FPGA软件所属产品的应用领域、应用场景以及相关软件技术文档选取拟验证的安全性设计准则;
S22、根据安全性设计准则中的信号名称对选取的拟验证的安全性设计准则进行去重处理;
S23、根据去重后的拟验证的安全性设计准则从待测FPGA软件中提取初始信号信息;
S24、判断初始信号信息中的信号名称、信号数量及时钟域关系是否满足SVA断言模板要求;
S25、保留满足SVA断言模板要求的初始信号信息即为待测信号信息,所述待测信号信息包括待测时钟信号名称及待测寄存器信号名称;
S3、将S2中提取的拟验证的安全性设计准则与S1中生成的SVA断言模板进行映射,从所述SVA断言模板选取目标SVA断言,将目标SVA断言中的信号信息替换为S2中提取的待测信号信息,生成待执行SVA断言;
S4、将待执行SVA断言以及待测FPGA软件的源代码输入形式化验证工具进行验证并输出安全性验证报告。
2.根据权利要求1所述的基于形式化的FPGA软件安全性验证方法,其特征在于,步骤S23中还包括:
判断当前去重后的拟验证的安全性设计准则是否包含跨时钟域设计要求,当存在跨时钟域设计要求时对信号名称按照时钟域关系进行划分。
3.根据权利要求1所述的基于形式化的FPGA软件安全性验证方法,其特征在于,步骤S3具体包括:
S31、按照拟验证的安全性设计准则完成SVA断言模板的映射关系,从SVA断言模板中选取目标SVA断言;
S32、将目标SVA断言中的时钟信号名称及寄存器信号名称逐项替换为待测时钟信号名称及待测寄存器信号名称,生成待执行SVA断言,并将所述待执行SVA断言保存到待执行SVA断言文件中。
4.根据权利要求3所述的基于形式化的FPGA软件安全性验证方法,其特征在于,步骤4具体包括以下步骤:
S41、将待执行SVA断言文件和待测FPGA软件源代码一同送入支持SVA断言验证的形式化验证工具中进行形式化验证,所述支持SVA断言验证的形式化验证工具包括AveMC、JasperGold和VC_Formal;
S42、对执行形式化验证后输出的断言覆盖率结果进行判断,当断言覆盖率结果不满足设定阈值时,重新提取拟验证的安全性设计准则及待测FPGA软件信息并更新待执行SVA断言;
S43、重复步骤S41~S42直至断言覆盖率结果满足设定阈值;
S44、对形式化验证工具给出的SVA断言通过情况进行分析,判断SVA断言未通过原因并输出FPGA软件安全性验证报告。
5.一种基于形式化的FPGA软件安全性验证***,其特征在于,包括:SVA断言模块、信息提取模块、SVA断言生成模块、形式化验证工具及结果分析模块;
其中,所述SVA断言模块用于根据FPGA软件通用安全性设计要求信息生成SVA断言模板;所述信息提取模块用于提取拟验证的安全性设计准则及待测信号信息;所述SVA断言生成模块用于读取SVA断言模块中生成的SVA断言模板,和信息提取模块提取的拟验证的安全性设计准则及待测信号信息,生成待执行SVA断言;所述形式化验证工具用于对生成的待执行SVA断言进行形式化验证;所述结果分析模块用于对形式化验证工具给出的验证结果进行分析判断并生成安全性验证报告;
所述SVA断言模块生成SVA断言模板具体包括:
SVA断言模块输入设计和实现要求信息,并对所述设计和现实要求信息进行分类和逐条分析;
所述设计和实现要求信息包括***设计、跨时钟域设计、冗余设计、余量设计、编码、时钟设计、接口及通信设计、配合存储器相关设计、复位设计、状态机设计、IP核使用、综合设计和管脚约束;
从每一条设计和实现要求信息中提取能够采用SVA断言方式进行安全验证的FPGA软件通用安全性设计准则,并根据提取的通用安全性设计准则构建SVA断言模板;
所述信息提取模块提取拟验证的安全性设计准则及待测信号信息具体包括:
信息提取模块导入待测FPGA软件和FPGA约束文件,根据待测FPGA软件所属产品的应用领域、应用场景以及相关软件技术文档选取拟验证的安全性设计准则;
根据拟验证的安全性设计准则中的信号名称对选取的拟验证的安全性设计准则进行去重处理;
根据去重后的拟验证的安全性设计准则从待测FPGA软件中提取初始信号信息;
判断当前去重后的拟验证的安全性设计准则是否包含跨时钟域设计要求,当存在跨时钟域设计要求时对信号名称按照时钟域关系进行划分;
判断初始信号信息中的信号名称、信号数量及时钟域关系是否满足SVA断言模板要求,当不满足断言模板要求时发出提示信息;
保留满足SVA断言模板要求的初始信号信息即为待测信号信息,所述待测信号信息包括待测时钟信号名称及待测寄存器信号名称。
6.根据权利要求5所述的基于形式化的FPGA软件安全性验证***,其特征在于,所述SVA断言生成模块生成待执行SVA断言包括以下步骤:
SVA断言生成模块读取基于安全性的SVA断言模板模块中生成的SVA断言模板,和信息提取模块提取的拟验证的安全性设计准则及待测信号信息,将拟验证的安全性设计准则与SVA断言模板进行映射,从SVA断言模板中选取目标SVA断言;
将目标SVA断言中的时钟信号名称及寄存器信号名称逐项替换为待测时钟信号名称及待测寄存器信号名称,生成待执行SVA断言,并将待执行SVA断言保存到待执行SVA断言文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210851736.4A CN114924992B (zh) | 2022-07-20 | 2022-07-20 | 一种基于形式化的fpga软件安全性验证方法及验证*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210851736.4A CN114924992B (zh) | 2022-07-20 | 2022-07-20 | 一种基于形式化的fpga软件安全性验证方法及验证*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114924992A CN114924992A (zh) | 2022-08-19 |
CN114924992B true CN114924992B (zh) | 2022-11-15 |
Family
ID=82815864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210851736.4A Active CN114924992B (zh) | 2022-07-20 | 2022-07-20 | 一种基于形式化的fpga软件安全性验证方法及验证*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114924992B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020396A (zh) * | 2012-12-31 | 2013-04-03 | 青岛中星微电子有限公司 | 一种自动生成断言的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100088257A1 (en) * | 2006-02-09 | 2010-04-08 | Yuan Lu | Systems and Methods for Generating Predicates and Assertions |
-
2022
- 2022-07-20 CN CN202210851736.4A patent/CN114924992B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020396A (zh) * | 2012-12-31 | 2013-04-03 | 青岛中星微电子有限公司 | 一种自动生成断言的方法及装置 |
Non-Patent Citations (3)
Title |
---|
基于SVA的FPGA接口时序验证方法研究;颜丽;《萍乡高等专科学校学报》;20140630;第31卷(第3期);第50-54页 * |
机载复杂电子硬件跨时钟域同步电路验证方法研究;刘万和;《CNKI中国知网》;20170315(第03期);第1.3节、第3.2.1节 * |
核电厂仪控***中FPGA的形式验证方法及V&V技术;朱夕辉;《工业控制计算机》;20171025;第30卷(第10期);第84-85、87页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114924992A (zh) | 2022-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mingsong et al. | Automatic test case generation for UML activity diagrams | |
CN109739766A (zh) | 一种快速搭建fpga数字仿真模型的***及方法 | |
CN106445795A (zh) | 一种数据库sql效率检测方法及装置 | |
US9594543B2 (en) | Activity diagram model-based system behavior simulation method | |
US7895575B2 (en) | Apparatus and method for generating test driver | |
CN110389896A (zh) | 代码自动化分析和测试方法、装置及计算机可读存储介质 | |
CN104408264A (zh) | 一种基于断言的嵌入式存储控制器验证***及方法 | |
CN104793171A (zh) | 一种基于故障仿真的智能电表故障检测方法 | |
CN108984393A (zh) | 一种单元测试代码自动生成方法及装置 | |
US20200074040A1 (en) | Hierarchical expression coverage clustering for design verification | |
CN109491922A (zh) | 一种基于模型驱动的测试方法和装置 | |
CN111158656A (zh) | 基于因果树法的测试代码生成方法及装置 | |
CN109101414B (zh) | 基于埋点数据的海量ui测试生成方法及其装置 | |
CN102567351B (zh) | 一种数据库变更效果的测试方法及测试装置 | |
CN103885341A (zh) | 基于汽车性能模拟器的性能分析***和方法 | |
CN114924992B (zh) | 一种基于形式化的fpga软件安全性验证方法及验证*** | |
Villalobos-Arias et al. | Evaluation of a model‐based testing platform for Java applications | |
CN113485940B (zh) | 一种基于参数抽象建模的组合测试用例生成方法 | |
CN114661615A (zh) | 一种fpga软件测试方法和设备 | |
Buffoni et al. | Traceability and impact analysis in requirement verification | |
CN112329124B (zh) | Cae模型查错方法、装置、计算机设备和存储介质 | |
Nikiforova et al. | Towards a Business Process Model-based Testing of Information Systems Functionality. | |
CN109374038B (zh) | 一种基于应用样机的核安全级仪控产品的变更测试方法 | |
CN108363567B (zh) | 一种基于数据库的验证平台激励器自动化生成方法 | |
Akinsola et al. | Qualitative comparative analysis of software integration testing techniques |
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 |