18lickc新利
的意见

欢迎来到EDA 4.0和AI-Driven革命

验证可寻址的挑战毫升和显示承诺的技术和算法。

受欢迎程度

于丹,哈里·福斯特和汤姆·菲茨帕特里克

欢迎来到EDA 4.0的时代,我们正在见证一个革命性的转变在电子设计自动化由人工智能的力量。EDA的历史可以被描述成不同时期的重大技术进步推动更快的迭代设计,提高生产力,促进了复杂的电子系统的发展。

值得注意的是,引入EDA的出现1.0引入香料(与集成电路重点模拟程序)在加州大学伯克利分校在1970年代早期,它彻底改变了电路的设计。

在1980年代和1990年代早期,EDA 2.0成为高效place-and-route算法的发展的结果。这一时期,也称为RTL时代,见证了从门电路级设计过渡到更高级别的抽象,RTL设计使电路描述在过户层面,从而提高模拟性能。这一时期见证了通过引入逻辑合成一个重要里程碑。

芯片系统(SoC)设计的崛起在1990年代末和2000年代初标志着一个关键时刻,导致EDA 3.0。这个时代经济发展一个IP的出现加上设计重用方法。EDA工具和标准开发支持设计,验证,和soc的验证,使工程师管理升级SoC-class设计的复杂性。

在许多方面,EDA 4.0与4.0工业革命的大趋势,这是快速变化的企业生产的方式,改善,和分发他们的产品,导致部分制造业的数字化。EDA 4.0已经进化到促进智能的设计和连接设备,利用云计算的潜力和人工智能(AI)和机器学习(ML)功能。

EDA工具现在结合机器学习、虚拟原型、数字的孪生兄弟,和系统级设计方法将加速验证,自动验证工作流,并增加验证准确性EDA产品。EDA 4.0时代承诺优化产品性能,减少投入市场的时间,简化开发和制造过程。

在本文中,我们深入研究先进的ML解决方案专门针对功能验证的实现。我们探索毫升可寻址的挑战和现在的新技术和算法相关性在这一领域。

在功能验证毫升的话题

表1总结了主要和次要的内容适用于功能验证,包括所有功能验证主题一般的编程代码验证。斜体文字表示次要的内容在其他普查出版物是未知的。

表1:主题毫升应用程序的功能验证。

需求工程

要求工程在功能验证的过程定义、记录和维护验证要求,这是至关重要的,以确保底层IC设计的优良品质。

需求定义涉及翻译模糊自然语言(NL)验证目标与正式确认规格和精度。翻译的质量直接决定的正确性验证。传统上这个过程是费力而消耗大量的设计与手工打样的几个迭代周期,确保质量。

两组经典方法提出了自动翻译。一组的方法是引入受限自然语言(CNL)形式化规范起草,紧随其后的是一个基于模板的翻译引擎。这种方法需要大量的前期投资发展中一个强大的补偿中子测井的语法和全面的编译器/模板系统,以确保它是强大到足以满足大多数需求中遇到功能验证。此外,它负担开发者学习一门外语,可以防止这个想法成为被广泛接受的。

另一组利用经典的自然语言处理(NLP)来解析本地语言规范和提取相关要素制定正式的规范。

毫升的进步翻译在问域使全自动机器翻译商业上可行的,有时超过平均人工翻译的性能。它点燃的希望利用大规模训练问模型高达数十亿参数直接翻译问规范在SystemVerilog断言验证规格(上海广电),属性规范语言(PSL),或其他语言。几次试图做一个成功的端到端翻译曾被观察到,但是没有一个已经生产好了。这种方法的主要障碍是缺乏可用的训练数据集,对本地语言的规范与正式的翻译。最广泛的数据仅仅是大约100句对问同行相比数量,经常有数百万甚至数十亿的句子配对。

匡威需求定义,总结看了代码,并把它转换成一个human-understandable问总结。它可以帮助开发人员阅读不理想情况下维护代码或理解复杂的逻辑。一个理想的实现代码总结可以内联文档插入代码块或生成单独的文档。在它的帮助下,代码的可维护性和文档可以显著改善。

毫升的应用程序代码总结一直在尝试用计算机语言更受欢迎,例如,Python和JavaScript。几组的方法尝试了不同程度的成功。基于信息检索(IR)的方法集中在NLP应用到源代码和寻找相似的代码与现有的总结。这组方法严重依赖与总结现有代码的质量。使用只能密切组织内许多现有代码库是现成的。启发式方法的方法而不是试图定义特定的基于启发式的规则中标识一个模块的定义,例如,与许多子模块的基本读/写命令行可能会被视为一个内存模块。因此,总结可以从预定义的模式构建内存模块。

在撰写本文时,代码总结集成电路设计验证尚未在任何文献报道。合理乐观是成功的其他语言可以实现在集成电路设计和验证,研究尚未证实的社区。特别是,最新进展与跨语言模型可以帮助从其他编程语言学习知识转移到集成电路设计。然而,除了挑战通用代码总结毫升,内在时间并行集成电路设计和验证码可以在其他编程语言的挑战罕见。

软件工程规范开采一直是一个长期的话题。作为替代手工制图规范,它提取规范间接从设计测试(DUT)执行。毫升可以应用于矿井循环模式模拟的痕迹。它可以帮助自动化仿真覆盖关闭或正式的验证。一般假定重复出现的模式可能DUT的预期行为。另外,事件很少发生在跟踪模式可以被视为一个异常;因此,它可用于诊断和调试。

毫升已经应用于模式发现和异常检测在许多领域时态数据的一个复杂的系统是可用的。阿兹等人提出一个通用的软件工程方法,毫升是用来从观测发现正式的规范协议跟踪和发现可能有疑问的协议的实现。成功的实验,激发了有趣的后续研究项目规范矿业毫升。

静态代码分析

随着修复缺陷的成本指数在集成电路发展的阶段,静态代码分析提供了一个有吸引力的选择来提高代码质量和可维护性在早期阶段的设计开发。

代码味道指的是次优设计模式在源代码中,语法和语义上这可能是正确的,但违反最佳实践和可能导致糟糕的代码的可维护性。一个特定的示例代码重复,多次实现相同的功能在一个项目或整个代码库。一些本可以有一个特定的错误固定在相对较短的时期内,而在其他副本同样的错误不被察觉。

经典代码气味检测依赖于启发式规则来识别模式定义的源代码。代替手动开发这些规则和指标的静态代码分析工具,ML-based方法可以训练大量的源代码可用来识别代码味道。研究已经证明,嗅觉检测与ML可能导致通用代码味道检测和显著减少模式实现的努力。由此产生的气味评分可以用于代码质量评估和帮助开发人员提高产品质量一致。此外,ML-based代码重构可能提供有用的线索来改善代码味道,甚至进一步的一些候选人的变化。

毫升的应用在功能验证是不可见的,和不可用的大型训练数据集阻止了现有研究充分利用此解决方案的潜力。

开发人员时可以最有效的集成电路设计提供适当的工具。简单的代码完成是一个标准的特性在现代集成开发环境(IDE)。然而,涉及深度学习提出了更先进的技术,并迅速成熟。现在可以训练人工神经网络与数十亿参数从许多大规模的开源代码库给予合理建议开发人员的意图实现的代码片段或上下文。

毫升也可能帮助IC开发人员保持生产与语义代码搜索,它允许通过问查询检索相关代码。代码通常是充满了各种缩写和术语,语义搜索可以更有效的找到相关的代码片段不正确拼写的关键变量,函数或模块名称。而类似于许多现有的搜索引擎,语义搜索的语义代码搜索可以帮助找到缩写和高度技术性的代码与模糊的概念。平均倒数排名最好的模型已经可以实现可用70%的分数。

尽管理论上的ML技术应用于其他编程语言可以应用于集成电路设计,还没有研究已经发表在编码援助。

验证加速度

最近的调查表明,功能验证仍然是最耗费时间的一步在集成电路设计中,功能和逻辑错误的衍生版本仍然是最重要的原因。任何改善功能验证的速度将大大影响集成电路设计的质量和效率。ML被用于正式的和基于仿真的验证的加速度。

形式验证使用正式的数学算法,证明了设计的正确性。现代形式验证编制使用正式的算法针对不同尺寸的设计,类型和复杂性。经验和启发式可以帮助开发人员选择最合适的算法从图书馆为一个特定的问题。

统计方法,毫升不能直接解决形式验证问题。然而,它已被证明是非常有用的在正式编制。计算资源的预测和解决问题的概率,可以安排正式解决者充分利用这些资源来缩短验证时间首先调度计算资源消耗较低的最有前途的解决者。Ada-boost决策树分类器可以提高解决实例从基线编排的比例从95%提高到97%,平均速度为1.85。另一个实验是能够预测资源需求的正式验证平均误差为32%。迭代的特性适用于工程仔细从DUT选择特性,属性,和正式约束,然后用来训练资源需求预测的多元线性回归模型。

相反的形式验证,基于仿真的验证通常不能保证完成设计的正确性。相反,在试验台设计与特定的随机或固定图形输入刺激,而输出与参考输出验证预计如果设计的行为。虽然仿真功能验证的面包和黄油,基于仿真的验证也可以受到长时间的验证。并不少见的验证复杂的设计需要几星期的时间才能完成。

正在讨论和试验了一个有前途的想法是使用毫升模型和预测复杂系统的行为。通用逼近定理证明了一个多层感知器(MLP)与至少一个隐层前馈神经网络,可以与任意精度逼近任意连续函数。而规范化的复发性神经网络(RNNs),安的特殊形式,被证明能近似任何动态系统内存。先进毫升加速器硬件已经成为可能,人工神经网络模型的行为可以加速他们的模拟集成电路设计模块。显著加速根据人工智能的能力可能实现加速器和ML的复杂性模型。

关闭测试生成和覆盖范围

除了手动测试模式定义,标准技术采用基于仿真的验证包括随机测试生成和基于智能testbench自动化。由于覆盖关闭的“长尾”特性,即使是微小的效率改善很容易导致显著减少模拟时间。多少毫升的应用程序功能验证研究都集中在这个领域。

广泛的ML研究已经证明,他们可以做得更好比随机测试生成。大多数研究使用了一个“黑盒模型,假设一个DUT是一个黑盒,它的输入控制和输出监控。可选地,可以观察到一些测试点。这项研究并没有寻求理解DUT的行为。相反,重点是花在减少不必要的检查。他们使用各种毫升技术向历史学习输入/输出/观察数据来优化的随机测试发电机或消除测试不太可能是有用的。在最近的一次开发,基于强化学习(RL)模型被用来从DUT的输出和预测最可能的测试缓存控制器。当奖励给毫升模型是FIFO的深度,实验能够从历史中学习结果和FIFO的深度达到完整的目标在几个迭代,而基于随机测试生成的方法仍难以触及逾1。毫升架构以更细的粒度要求训练每毫升模型覆盖点。三元分类器也是用来帮助决定是否应当模拟测试,进一步丢弃,或用于训练模型。 Support vector machine (SVM), random forest, and deep neural network are all experimented on a CPU design. It can close 100% coverage with 3x to 5x fewer tests. Further experiments on FSM and non-FSM designs have demonstrated 69% and 72% reductions compared to directed sequence generation. However, most of these results still suffer from the limitation of the statistical nature of ML. A more comprehensive review of ML-based coverage-directed test generation (CDG) gives an overview of several ML models and their experiment results. Bayesian Network genetic algorithms and genetic programming approaches, Markov model, data mining, and inductive logic programming are all experiments with various degrees of success.

在所有讨论的方法,一个毫升模型可以预测的基础上,从历史数据中学习了但有能力预测未来,最小。测试,这可能是一个更有前途的选择,达到了测试的目标。这种信息尚未公布,他们所能做的就是选择最好的测试是最无关紧要的历史测试。另一个前景看好的实验探索了一种不同的方法,DUT被认为是一个白色的盒子,和代码分析和转换为控制/数据流图(细化)。基于一个梯度搜索图上一个训练有素的神经网络(GNN)是用于生成测试一个预定义的测试目标。IBEX实验v1、v2和TPU达到74%,73%和90%精度与50%覆盖点覆盖预测当训练。几个额外的实验也证实,梯度搜索方法采用GNN架构不敏感。

指出,由于训练数据的不可用,大多数这些毫升的方法只有从每个设计没有利用任何先验知识从其他类似的设计。

错误分析

错误分析的目的是确定潜在的Bug,本地化代码块包含它们,并给出解决建议。最近的调查发现,验证的IC花费的时间大致相同,在设计和功能缺陷导致约50%的衍生版本的ASIC设计。因此,它是至关重要的,这些早期的错误可以被识别和固定功能验证阶段。ML被用来帮助开发人员发现bug的设计和更快地找到缺陷。

三个进步问题需要解决加快bug狩猎在功能验证,即聚类错误的根本原因,根本原因的分类,建议修复。大多数研究集中在前两个,没有第三个研究结果可用。

半结构化仿真日志文件可用于缺陷分析。它从元数据提取616种不同的特性和消息日志文件的未披露的台词的设计。集群实现实验调整互信息(AMI) 0.593 0.543 k - means和烧结的集群和DBSCAN甚至特征降维后,远离理想集群AMI时达到1.0。各种分类算法也解决问题2中测试,以确定它们的准确性。所有的算法,包括随机森林,支持向量分类(SVC)、决策树、逻辑回归,K-neighbors,相比和朴素贝叶斯预测根源的权力。最好的成绩是通过随机森林预测精度为90.7%和0.913 F1的分数。另一种方法提出了使用标记数据集从代码提交培训一个梯度增加模型,100多个特性对作者,修订、规范和项目进行测试,直到36的选择算法。实验表明,可以预测哪些提交最可能包含错误代码和潜在的显著减少手工找出bug时间。

然而,由于ML的相对简单的技术,他们不能训练毫升模型可以考虑丰富的语义代码或从历史的bug修复。因此,他们不能解释为什么和虫子如何发生,也不建议修改自动或半自动生成代码以消除缺陷。

新兴毫升技术和模型适用于功能验证

毫升技术的重大突破,模型和算法已经目睹了近年来。我们的研究发现,很少的这些新兴技术是采用功能验证研究,和我们乐观地相信成功将可能曾经使用它们在功能验证解决具有挑战性的问题。

Transformer-based大规模问模型与数十亿参数训练取得的大量文本语料库在人类或超标水平性能在各种问任务,例如,问答、机器翻译、文本分类、抽象总结等等。这些研究成果的应用程序代码分析也证明了这些模型的潜力巨大,多才多艺。已经证明,这些模型可以真正摄取大量的训练数据,学到的知识结构和提供简单的可访问性。这种能力是静态代码分析工具,需求工程,和代码协助几个流行的编程语言。给予足够的训练数据,我们有理由相信,这些技术可以训练毫升模型对各种功能验证任务。

直到最近,很难应用毫升图数据由于其结构的复杂性。图神经网络(GNN)进步已经承诺为功能验证一个新的机会。其中一个方法将设计转换为代码/数据流图,然后进一步用于火车GNN帮助预测测试的覆盖率关闭。这种白盒方法的承诺之前无法洞察的控制流和数据流设计,它可以生成指示测试潜在的覆盖漏洞。图表可以代表丰富的关系、结构和语义信息中遇到验证。丰富的信息从培训一个毫升模型图可以许多新的可能的功能验证任务,例如,错误狩猎和覆盖关闭。

结论

EDA 4.0转换电子设计自动化通过人工智能的力量,并将几个关键技术,将有助于工程师4.0实现产业的革命性的改变。在本文中,我们提供了一个全面的调查的潜在贡献机器学习在解决功能验证的各个方面。这篇文章突出了ML的典型应用在功能验证和总结了在这个领域最先进的成果。

然而,尽管不同毫升的应用技术,目前的研究主要依赖于基本毫升方法和训练数据的可用性是有限的。这种情况让人想起毫升的早期应用程序在其他先进领域,表明毫升应用功能验证仍在萌芽阶段。仍有大量未开发的潜力,利用先进技术和模型来充分利用毫升的能力。此外,利用语义,关系和结构信息在今天的ML应用程序还没有完全实现。

更详细的探索这个主题,我们邀请你来引用我们的白皮书在功能验证机器学习应用的调查。在本白皮书中,我们深入了解这个话题,提供见解从工业的角度,讨论带来的紧迫挑战有限的可用性的数据。还包括详尽的论文全文引用有趣的研究和著作,通知的这篇文章。

哈利福斯特是西门子数码行业的首席科学家验证;并验证学院的联合创始人兼执行编辑。福斯特担任2021年设计自动化会议一般椅子,目前担任过去的椅子。他拥有多项专利在验证和验证合著了六本书。福斯特的接受者Accellera技术卓越奖他的贡献发展行业标准,是最初的创造者Accellera开放验证库(OVL)标准。此外,福斯特的收件人是2022 ACM杰出服务奖,和2022年IEEE CEDA杰出服务奖。

汤姆•菲茨帕特里克是一个战略验证架构师在西门子数字行业软件(西门子EDA)他工作发展先进的验证方法,语言,和标准。他一直是一个重要的贡献者一些行业标准,极大地改善了功能验证景观在过去的25年里,包括1364年Verilog, SystemVerilog 1800, UVM 1800.2。他是一个创始成员和当前副Accellera便携式刺激工作组,目前作为IEEE 1800的椅子和Accellera UVM-AMS工作组。菲茨帕特里克是一个长期DVCon我们指导委员会的成员,2024年DVConUS是一般的椅子。他还设计自动化会议执行委员会的成员。Fitzpatrick持有硕士和学士学位从麻省理工学院的电气工程和计算机科学。



留下一个回复


(注意:这个名字会显示公开)

Baidu