AI设计芯片:从Spec到RTL的进展如何?IC设计师还能高枕无忧吗?
2024-10-14 12:18:17 EETOP基于AI的RTL生成技术是否已经成熟?
基准测试
该领域已从早期的存在性证明的热情,逐渐转向更为稳健的分析。一个很好的例子是最近在arXiv上发表的一篇论文:《重新审视VerilogEval:更新的大语言模型、上下文学习和从Spec到RTL任务》,该论文的多数作者来自英伟达,另一位作者来自康奈尔大学,称得上是权威来源。
作者扩展了他们在2023年创建的VerilogEval基准,用于评估基于LLM的Verilog生成器。原始工作研究了代码补全任务;而在这篇论文中,他们进一步探讨了如何从自然语言Spec生成模块RTL。他们还描述了一种通过上下文学习(在提示中提供额外指导)进行提示调优的机制。值得注意的是,针对代码补全和从Spec到RTL的生成,他们提供了一种分类失败类型的方法,这对于提示调优可能很有帮助。
尽管没有提到仿真测试平台,作者们显然使用了仿真器(Icarus Verilog),并讨论了Verilog的编译时和运行时错误,因此可以推测该基准测试套件中包含了为每个测试开发的人工测试平台。
分析
作者比较了从GPT-4模型到Mistral、Llama、CodeGemma、DeepSeek Coder和RTLCoder DeepSeek等一系列LLM的性能。有一点小小的困惑:他们提到的“温度设置”与物理温度无关,而是LLM的一个随机化因素。
首先,关于生成代码评分的背景介绍。通常用于评估机器生成文本的评分方法称为BLEU(双语评估替代),旨在与人类评判的质量/相似性指标相关。虽然BLEU适用于自然语言翻译,但并不完全适合代码生成。功能正确性作为仿真中的测量指标是一个更好的起点。
论文中的图表和表格通过基准测试套件的测试成功率来衡量,允许每个测试的RTL生成尝试一次(pass@1),因此除了一次性改进(1-shot)与初次生成(0-shot)之外,不允许进行反复改进。0-shot指从初始提示生成,1-shot指在初始提示的基础上添加进一步指导后的生成。表中的参数“n”用于管理估计中的方差——n越高,方差越低。
基准测试套件中通过测试成功率(质量)的范围从不到10%到某些情况下高达60%。不出意料,较小的LLM模型表现不如较大的模型。最高成功率来自于参数量约为1万亿的GPT-4 Turbo和4050亿参数的Llama 3.1。在同一模型中,代码补全和从Spec到RTL的测试成功率大致相当。在许多情况下,上下文学习/改进的提示提升了生成质量,尽管对于GPT-4 Turbo的从Spec到RTL生成以及Llama3 70B的提示优化,实际上降低了质量。
总结
无论是代码补全还是从Spec到RTL的生成,这些准确率表明RTL代码生成仍在不断发展中。我很好奇,入门级的RTL设计师在这些标准下的表现会如何。
此外,论文中没有提到可综合性或PPA的测试。(另一个较小的基准测试RTLLM也研究了这些因素,其中PPA是在物理综合中确定的——尽管细节较少。)
更普遍地说,我们也会好奇可读性和可调试性如何。在此或许可以使用某种修改版的BLEU指标来衡量与专家生成代码相比的质量,作为这些分数的补充。
目前看来AI设计芯片还有很多路要走,不过看到这一领域的进展仍然很有趣。