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設計芯片還有很多路要走,不過看到這一領域的進展仍然很有趣。