2023年注定是 AI 时代开启的元年,ChatGPT 为各行各业都带来了新的发展驱动力,芯片验证领域也没有落后;这一年来,AI 技术的进步引发了很多人的思考,AI 如何引入到各个行业内部,成为了每个领域都在探讨的问题。但是其实,AI (机器学习 MachineLearning, 后称为ML),在芯片验证领域的探索,已经有很多前人的探索了。
首先说,统计学支撑起了AI发展的基础,它的技术发展需要大量数据的支持,而 DV 在仿真过程中会产生大量的数据,这使得二者成为天作之合,DV 急需 AI 的自动化提升其生产效率。那我们就来看看 AI 在芯片验证领域的发展如何呢?
本文译自于:DVCov US 2023:A Survey of Machine Learning Applications in Functional Verification.
目录
0 前言
现代硬件设计的功能要求不断增加,这意味着传统的功能验证过程在满足设计上市时间目标方面变得效率低下。 大量的事实证明,机器学习 (ML) 模型对于流程主要部分的自动化非常有价值,而这些部分通常占用了工程师的精力; 使他们不再需要添加新的覆盖率指标来使设计更加稳健。
其实最早的 ML(Machine Learning) 在 Functional Verification (功能验证,后面简称FV)中应用的探索可以追溯到2000年前后[1],具体大家可以参考 “Coverage Directed Test Generation automated by Machine Learning – A Review”。
而目前许多ML算法已经在功能验证的不同领域进行了尝试,并取得了不错的效果。ML在功能验证中的应用主要分为:需求工程、静态代码分析、验证加速、覆盖率收集和BUG的检测及定位。
1 需求工程
需求工程(Requirement Engineering)一般指定义、文档化和维护验证需求的过程,这也是保证最终的设计符合spec的重要一环。
1.1 需求定义
需求定义(Requirement definition)将自然语言(NL)的验证目标转化为标准化的验证规范。传统的验证flow需要多次手动校对以确保质量,借助机器学习,目前有两种经典的方法进行自动化翻译。
第一种方法是引入约束自然语言(CNL)进行描述需求,然后使用基于模板的翻译引擎进行翻译。只要CNL配套的工具足够强大,CNL可以描述FV中遇到的大多数需求。但这需要开发人员学习新的语言,具有一定的门槛。
第二种方法是使用经典的自然语言处理(NLP)来解析自然语言(NL)的需求,提取出关键要素。
随着大模型的训练和演进,后续可以直接将自然语言的需求翻译为SystemVerilog、Assertions (SVA)、Property Specification Language (PSL)或其他语言。目前已经有一些端到端的翻译尝试,但离大规模使用还有比较大的gap,主要的障碍在于训练数据集的稀缺。
1.2 代码总结和翻译
Code summarization and translation to NL,与需求定义相反,将代码翻译成自然语言。可以帮助开发人员理解一些复杂的逻辑代码,提升代码的可维护性和可读性。
但目前,IC设计验证领域的Code summarization几乎没有尝试。不过跨语言模型的发展或许有助于将其他编程语言的实践经验转移至IC设计。需要注意的是,IC设计和验证的code存在语义的并发,如fork,module等,这在其他语言中并不常见。
1.3 特性挖掘
特性挖掘(Specification mining)在软件工程领域比较常见,Dallmeier、Valentin等人以及Wenchao、Forin和Seshia等人都曾对进行研究。Specification mining从待测试设计(DUT)的执行中提取规范的方法,用于替代手写spec的方法。机器学习可以从仿真中挖掘到某些重复的模式,可能是DUT的预期行为。此外很少出现的事件模式可以视为异常,也可用于debug和调试。
Azeem等人提出了一种通用的软件工程方法,利用机器学习来寻找spec,并找到可能存在问题的协议实现。
2 代码分析
芯片开发中的错误修复成本呈现一种指数级增长的规律&#