基于语义分析的Verilog缺陷自动检测技术研究

发布日期:2022年11月14日
基于语义分析的Verilog缺陷自动检测技术研究 基于语义分析的Verilog缺陷自动检测技术研究

本内容试读结束

下载后可阅读完整内容,立即下载

本文对Verilog的语义级缺陷进行了研究,并提出了一种基于语义缺陷的自动化检测方法。通过对Verilog代码进行转换,得到两种包含不同语义信息的中间表达,并将其运用于语义级缺陷的自动检测方法。笔者们对Verilog设计中几种常见的语义级缺陷进行了说明与分析,并通过两种中间表达,从中提取了各种缺陷的特征。检测方法对转换后中间表达的语义信息进行提取,与缺陷的特征进行比较,从而实现对缺陷的检测。经实际应用,该方法满足了可编程逻辑器件的测试工作需求,提升了静态测试工作的分析效率与准确率。

随着可编程逻辑器件的技术越来越成熟,在军事、国防、航空、航天等领域的应用也越来越广泛, 尤其在控制、数据处理和存储、仪器仪表、通信和数字信号处理等方面。可编程逻辑器件软件具有代码紧凑、可靠、对实时性有严格要求等特点,传统的检测手段主要包括动态测试和静态测试。动态测试主要依靠仿真测试手段对设计的功能、性能、接口等正确性和对需求的符合性进行检测,很难做到代码级检测;而静态测试主要针对代码本身缺陷进行检测,不需要运行代码程序,可对软件代码的规范性、准确性、一致性等特性进行综合检测, 因此, 静态测试成为检测可编程逻辑器件软件代码缺陷的重要手段。

使用自动化测试方法开展可编程逻辑器件软件代码缺陷检测是提高静态测试效率的必要手段。因为硬件描述语言(HDL)非常复杂,为了实现自动化检测,需要借助一种中间表示(IR)形式,在中间表示形式上定义相应的检查规则来实现。

在Verilog 代码分析测试工作中, 许多包含一定特征与规律的语义类缺陷, 如异步复位信号未同步释放,输入信号产生毛刺经常被检出,对这样的缺陷进行自动化发现与定位,将能够极大地提高测试工作的效率。然而作为一种常见的HDL,Verilog 由于其复杂性,不能够作为现代电路设计流程的中间结构。

相反,每个设计自动化工具都会转换HDL 到其自己的中间表示(IR)。这些工具是一个整体并且大部分技术都是专有的,他们在HDL 的实现方面存在分歧。虽然有很多IR,但还不存在一种IR 可以用于整个电路设计流程。且这些IR 的结构与使用往往是商业机密,难以基于它们进行进一步开发。本文提出一种HDL 的语义级代码缺陷检测方法,对Verilog HDL 代码进行结构转换,使用抽象语法树表达与底层硬件描述表达(LLHD)两种IR,能够从两种IR 中提取语义结构信息,检测语义级HDL 代码缺陷,并支持语义级代码缺陷检测规则的定制。

2. 当前缺陷检测方法的发展 对Verilog 进行语义分析的问题早在1995 年就被提出[1]。将Verilog 翻译到部分中间语言,并进行语义分析的努力始终存在,并已经可以实现类型检查、一致性检查、信号路径追踪等[2] [3] [4];同时, 随着近些年机器学习的大发展,涌现出了一批新的解决方案,如通过支持向量机、粒子群算法来检测硬件木马[5]。但是这些工作要么还不能解决工作中更复杂的问题,要么太过于专门且复杂,测试人员只能检测有限的缺陷,使用随软件提供的规则,且难以自己进行扩展,对未包含在内的许多缺陷都需要依赖软件供应商未来的更新才能支持。

这些方法都不便于在Verilog 设计的静态测试工作中使用, 需要提出一



相关标签