论文笔记:(Security) Assertions by Large Language Models
来源:IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY
I. 引言
计算机系统的安全性通常依赖于硬件的根信任。硬件漏洞可能对系统造成严重影响,因此需要支持安全验证的技术。断言验证是一种流行的验证技术,通过一组断言捕捉设计意图,用于非正式验证或测试检查。然而,编写以安全为中心的断言是一项具有挑战性的任务。在这项工作中,我们研究了新兴的大型语言模型(LLMs)在硬件断言生成中的应用,主要使用自然语言提示(如代码注释)来生成SystemVerilog断言。我们关注的是一个流行的LLM,并描述了其在"开箱即用"的情况下生成断言的能力,给定提示中不同详细程度的变化。我们设计了一个评估框架,生成各种提示,并创建了一个包含真实世界硬件设计和相应黄金参考断言的基准套件,我们希望利用LLM生成这些断言。
II. 相关工作
A. 断言验证
断言验证是数字设计流程的一部分,其中设计师意图被捕获为一组属性,在模拟、形式验证或合成到实际硬件中进行运行时检查。断言用于静态证明属性或动态验证。
B. 大型语言模型
LLMs是基于Transformer的人工神经网络,能够处理大量的文本数据集。OpenAI的Codex和GitHub Copilot等工具利用LLMs生成代码,显示出其在理解和生成代码方面的潜力。
C. 断言生成的自动化
除了生成新设计外,相关研究探索了设计流程中的特定部分,如补丁生成(程序修复)。本文的工作类似地关注硬件设计流中的安全断言生成问题。
III. 评估框架:评估LLM生成断言的能力
为了测量LLM生成硬件安全断言的能力,我们设计了一个评估框架,如图1所示。它根据基准套件中的一个生成提示,查询LLM以生成断言,模拟生成的断言以及"黄金"参考断言,并比较它们的输出。生成的断言如果与参考断言触发相同的输入值集,则被认为是正确的。
A. 基准套件
基准套件包括两个手动设计的设计和八个模块,来源于Hack@DAC硬件安全竞赛和开源硅基信任SoC OpenTitan的设计。每个基准包括以下信息:
- 设计源代码:包括目标断言的设计源代码,经过简化以限制提示中的令牌数量。
- 黄金参考断言:每个基准包含一个SystemVerilog断言文件(SVA)中的参考断言。
- 提示数据:每个基准包括描述目标断言的评论字符串、示例断言和目标断言的开头字符串。
- 测试平台:每个基准包括一个SystemVerilog测试平台,驱动所有涉及断言的信号。
B. 提示生成器
提示生成器生成提示字符串和LLM的参数值。提示字符串由设计源代码、示例断言、评论字符串和开始字符串组成。
C. 断言文件生成器
断言文件生成器接收LLM生成的所有断言,首先处理这些生成的断言以修复有限的语法/拼写错误。然后,将处理后的断言替换黄金参考断言。
D. 模拟器
使用Siemens Modelsim构建每个断言的SystemVerilog项目,并使用相应的测试平台文件进行模拟,生成模拟日志。
E. 评分板
收集模拟日志,解析断言违反数据,并比较处理后和黄金参考断言的违反情况。生成的断言被认为是正确的,如果它们与参考断言触发相同的输入值集。
IV. 实验设置和结果
我们使用32核2.6 GHz Intel Xeon运行Siemens Modelsim,并在CentOS Linux下进行实验。我们使用OpenAI的Codex作为我们的LLM,并配置其生成最多256个令牌。对于停止令牌,使用"endmodule"。
A. 研究概述
我们使用框架评估LLM在生成硬件安全断言方面的表现。我们的目标是回答两个研究问题:RQ1: LLMs能否生成硬件安全断言?RQ2: LLMs在不同提示下的表现如何?
B. 评估设置
我们对32-core 2.6 GHz Intel Xeon进行了实验,使用了10个基准来评估Codex LLM。我们使用了两种类型的设计源代码:空DUT和有缺陷的DUT。每个基准包括三个类型的设计源代码,以及三种类型的示例断言和三种类型的提示字符串。
C. RQ1: LLMs能生成硬件断言吗?
我们生成了22,680个断言,并通过模拟器检查每个生成的断言的有效性。结果表明,LLM可以生成硬件安全断言,但同时也生成了不正确和非编译的断言。
D. RQ2: LLM在不同提示下的表现如何?
我们分析了Codex code-davinci-002 LLM在不同提示组合下的性能。结果表明,提供足够的上下文可以提高LLM生成正确断言的概率。
E. 可扩展性至其他LLM引擎
我们使用其他LLM引擎(如OpenAI Codex、NVIDIA MegatronLM和Salesforce CodeGen)展示了框架的可扩展性。结果表明,不同的LLM引擎在不同的提示组合下表现不同。
F. 其他观察
我们观察到多个正确断言可能针对同一设计,而单个查询可能生成多个断言。此外,一些不正确的断言可能因为无效的Verilog语法、变量错误或不正确的逻辑而导致编译或模拟失败。
V. 讨论与局限性
A. 基准套件的完整性
我们的实验工作包含了十个现实黄金参考断言基准,代表了各种属性。未来的工作可以考虑更广泛的CWE类型和漏洞。
B. 模拟测试平台
我们的模拟测试平台是详尽的,但参数化的信号宽度可能导致某些情况下的不准确模拟。此外,我们的参考断言不是表达安全属性的唯一方式。
C. 使用场景
我们的框架主要用于评估LLM在生成硬件安全断言方面的能力。虽然我们评估了OpenAI的Codex,但其他LLM也可以使用。我们还设想该框架可以帮助微调开放LLM以生成断言。
D. 未来工作
未来的工作可以包括生成即时断言或将断言插入硬件中进行回归测试。这将需要专业知识来分析断言的安全性和准确性。
VI. 结论
本文提出了一种使用LLM自动创建硬件安全断言的新方法。我们贡献了一个新的评估LLM用于此任务的管道,以及一个包含各种情景和黄金参考断言的基准套件。使用code-davinci-002 LLM,我们在各种环境和上下文条件下生成了226,800个断言。我们发现,只要提供足够的提示上下文,LLM可以达到最高93.55%的准确性。当评估不同上下文水平的提示时,LLM的平均准确率为26.54%。这些结果表明这种方法是有效的,LLM将在断言生成的未来中发挥作用。