技術只有在能改進既有的方法論時才真正有用。屬性生成仍在不斷完善這一目標,但從長期來看,它可能會非常有價值。
Dintlha tsa botlhokwa:
- 自上而下的半導體開發流程一直是以來芯片設計的目標,而「左移」(left-shifting)正讓這一目標變得越來越可行。問題在於出發點——規格說明——往往並不完整,甚至根本就不存在,因為芯片行業長期以來在編寫規格方面表現不佳。
- AI e ka tsenngwa mo dithulaganyong tse di leng teng ka ditsela tse di farologaneng. Le fa go ntse jalo, "o ka dira" ga go reye gore "o tshwanetse go dira." Se ke nngwe ya dikgwetlho tse dikgolo tse di lebaganeng le go tsenngwa tirisong ga AI. Ditiro tse dintsi tse di leng teng di ka wediwa ka katlego ka dithulaganyo tsa boemedi, fela ga go tlhaloganyesege gore a seno ke mokgwa o o siameng.
- 當 AI 開始幫助處理過去一直較薄弱的環節——高品質、完整規格的創建——這一限制就會變得特別明顯。真正的问题是,AI 是否能讓設計或驗證環境自動從規格中推導出來。或許更準確的目標是:AI 是否能幫助創建更好的規格。有了更好的規格,下游設計就會容易得多。
「AI可以在幾秒鐘內生成一條SystemVerilog斷言,」驗證技術專家、圖書作者Ben Cohen說,「但這條斷言是否有意義,完全取決於它是從什麼樣的來源生成的,而在實際中,這個來源很少是單一、清晰、自然語言的規格。它往往只是一段含糊的文字,在被信任之前還需要進一步澄清。」
解決這個問題應被視為高優先級。「現代 SoC 設計日益增加的複雜性,使得 AI 輔助的工件生成和驗證變得越來越困難,這已經從研究選項變成了現實需求,」南安普頓大學 AI 與 EDA 研究員 Simon Davidmann 說,「在實踐中,驗證問題已經大到沒有 AI 輔助就無法應對。處理器開發中驗證工程師與設計工程師 5 比 1 的比例,並非勞動力規劃上的異常,而是複雜性已經超出了現有方法的能力的訊號。」
從規格到任何結果,今天還都不是現實。「如果我們真的要把這件事變成現實,就需要在編寫規格方面更有紀律性,」Synopsys應用工程總監Ravindra Aneja說,「如果我們真想讓它成為現實,就必須去行動。作為一個行業,我們準備好了嗎?沒有,我認為我們還沒有到那個階段。我不認為我們已經到了這樣一個地步:無論是啟動一個新的設計,還是做一個衍生設計,你都可以說規格已經夠好了。」
我們甚至是否從正確的角度來思考這個問題?「一份散文式的規格文件,形式化工具無法直接對其進行推理,因為形式化引擎處理的是精確、無歧義、可機器檢查的陳述,而不是自然語言,」Axiomise 首席執行官 Ashish Darbari 說,「AI 能夠幫上忙的,是縮小這道鴻溝,更快地將散文轉換成候選的形式化陳述,而這實際上就是從規格中推導屬性的含義。屬性就是規格的形式化表達,而不是在那之後的另一個獨立步驟。所以,與其把它理解為先規格、再屬性、再形式化證明,不如更準確地說,屬性集就是可機器閱讀的規格,而形式化是在完成這一步轉換之後對規格進行的工作。」
有時,規格本身就故意設計得含糊不清。「人類設計師會結合領域知識、過往經驗以及提出澄清問題的能力來解釋它們,」Davidmann 說,「AI 模型在接收到規格文本後會直接生成輸出,卻沒有能力標記歧義或識別不一致之處。規格歧義很可能是 LLM 生成代碼失敗的重要原因之一,但現有的研究文獻尚未系統性地描述它在多大的程度上是根本原因,而非模型能力的限制。下一步應當是開發自動化規格分析方法,在歧義進入生成流程之前將其識別出來。」
是否應該從相反的方向來看待這個問題?「与其讓形式化直接作用於規格,不如有充分的理由認為,現代規格編寫本身就應當在構造上做到形式化且可機器閱讀,」Normal Computing設計驗證解決方案工程師Arvind Srinivasan說,「這是解決信任、覆蓋和漂移這些內在問題的唯一方式。僅靠現有的形式化方法在結構上無法做到這一點,但如果能使用新的求解器和像Lean這樣的語言,就有可能實現。」
這可以服務於長期目標。「我希望將規格交給我的大語言模型,然後讓它生成代碼,」Cadence產品營銷總監Paul Graykowski說,「但你要如何捕捉規格的真正意圖,並確保那就是你使用的唯一事實來源呢?還有許多事情必須被探索,許多現有的規格都將這些事情視為理所當然。」
或許可以採用迭代式的方法。「當你閱讀 RTL 時,它可以給你一些關於 RTL 想要實現什麼的抽象信息,」 Synopsys 的 Aneja 說,「它或許並不完美,但它可以給你一個不錯的起點,然後你可以逐步修改那份規格。你可以從那裡繼續。它並不完美,但至少給了你一個合理的起點。」
技能遷移
自動生成屬性的一个被認為的優點是,它可能減少對專門驗證人員的需求。但事實未必如此。
「對於沒有內部形式化經驗的團隊來說,複雜的 AI 生成形式化屬性可能會成為一個難以審查和維護的累贅,而且 SystemVerilog 断言方法的實用性邊界是眾所周知的,」 Normal 的 Srinivasan 說,「關鍵原則是內部一致性。高度依賴 AI 的設計流程,如何既將形式化作爲對其他 AI 驅動設計和驗證材料的檢查,又利用其他材料來檢查虛假或錯誤的形式化屬性?把穩定的系統記錄和內部一致性放在流程核心的用戶,更適合以零信任的方式使用這些系統。」
仍然需要有人逐條閱讀每個生成的 SVA 屬性。「他們需要判斷前件是否過弱或過強,後件是否真正捕捉到了實際需求,時鐘和重置條件是否處理正確,以及該屬性是否可能是空洞成立的,」 Axiomise 的 Darbari 說,「這要求既懂時序邏輯和斷言語義,又深入理解微架構。沒有這種能力,團隊就無法區分一個強屬性和一個看起來很像、但实际上很弱的屬性,也無法正確解讀形式化工具的反例或『已證明』結果。因此,現實中的要求是,AI 可以減輕編寫負擔,但會提高流程中必須有懂形式化的工程師來解釋和驗證輸出的重要性。採用這類工具的組織應當為這種專業能力預留預算,而不是假設工具會消除對它的需求。」
在某些角色上,形式化属性可能比其他角色更有价值。「形式化驗證正成為解決方案中更重要的一部分,」Arteris產品管理與營銷總監Ashley Stevens說,「它在架構合規性方面尤其強大——確保ISA屬性對所有合法指令序列都成立——也適用於在實現驗證中強制執行硬體協議的正確性。但形式化並不能取代動態驗證或系統級驗證,尤其是在涉及完整SoC行為和真實工作負載時。實踐中,形式化方法扮演的是補充角色:證明深層邊界條件的正確性,而仿真和仿真加速則建立端到端完整性。」
問題區域
空洞斷言是一種需要直接關注的特定準確性風險。「空洞斷言是一種SVA,它能正確編譯,通過形式化工具,但实际上什麼也沒有覆蓋,因為無論設計如何,它總是為真,」Davidmann說,「空洞斷言並不等於正確斷言。一個能生成看起來合理、但实际上空洞的SVA的模型,會在消耗形式化工具能力的同時製造虛假的信心。那種在紙面上看起來準確、但在實踐中極其危險的版本,就是模型自信且錯誤,測試平台也由模型生成,而流程中沒有人具備足夠的領域知識去發現問題。這不是假設中的失敗模式,而是一種很容易在無意中構造出來的工作流。」
這類錯誤的代價很高。「在形式化驗證流程中,這些錯誤的代價不菲,」Cohen說,「它們會消耗工具的運行時間、工程師的調試時間,而且——最關鍵的是——會侵蝕人們對驗證結果本身的信心。」
形式化驗證涉及多種求解器,其中一種是模論可滿足性求解器(SMT)。它們用來判斷一個數學公式是否可滿足。「對於將形式化工具納入流程的代理式系統來說,SMT 求解器的運行會帶來不可忽視的成本,」Srinivasan 說,「而且這類成本會隨著設計複雜度和屬性數量的增加而上升。」
如何開始
決定如何將屬性作為方法論的一部分引入,並非易事,需要考慮多個問題。也沒有一種經過充分驗證的單一方法論,因此每家公司很可能都需自行摸索,找到技能、時間、算力投入與驗證收斂程度之間的最佳平衡。
AI 需要學會如何使用所生成的屬性。「有些屬性用於仿真,有些則用於形式化,」Aneja 說,「有一些技術可以讓你写出更適合形式化的屬性,這將幫助你在可擴展性上取得進步,也就是『你能否根據屬性的寫法得到一個明確的答案?』當你試圖寫這些屬性時,不如將這個功能拆分成多個更小的部分。這樣會更有可擴展性。然後你就不會卡在需要200個週期才會出現有意義行為的場景上,因為在形式化中這是行不通的。」
「檢索增強生成(RAG)提供了一種有原則的解決方案,」Cohen說,「與其完全依賴於LLM訓練時學到的內容,不如讓一個增強了RAG的系統在生成時查詢一個經過篩選的知識庫——檢索與當前任務相關的具體規則、模式和經驗教訓。RAG規則代表了多年累積的應用知識——這些規則來自真實項目、真實工具行為和真實失敗。它們編碼的不僅是語法上正確的內容,還有可驗證正確的內容;包括一個假設是否恰當地約束了環境,還是讓形式化證明空間變得不可達之間的差別;包括一個屬性是否檢查了正確行為,還是只是空洞通過;包括時序圖是否與生成的代碼一致,還是在無聲無息中偏離。」
還可以試試分階段的方法。「有一個中間步驟叫做正式測試計劃,如果你有一份完美的規格書,那裡會說明你的設計是做什麼的,而不是你想驗證什麼,」Aneja 說,「我的意思是,藉助這些 LLM 和代理,你可以讀取文本、查看時序圖、查看 FSM 圖以及你可能擁有的其他圖像,然後根據你正在做的設計提取某些特徵。你可以訓練系統來判斷:這是 CPU 設計嗎?這是 GPU 設計嗎?這是 AI 加速器嗎?再往下層,是內存控制器嗎?是中断控制器嗎?是總線橋嗎?還是跨不同主設備和從設備的某種互連?根據這些內容,它可以提取出你可能想測試的某些特徵。」
選擇 LLM 時也必須考慮到同樣的問題。「領域邊界意識需要成為一門首要的工程學科,」Davidmann 說,「在將任何 AI 模型引入生產流程之前,正確的評估標準不僅是模型有多準確,還要看它訓練於什麼數據、那個數據分佈沒有涵蓋什麼,以及實際設計與那個邊界的接近程度。每個部署這些工具的團隊都應該對一組具有代表性、最複雜且最具創新的設計模式進行有意的邊界探測,並由領域專家獨立核對結果。這個過程可以識別出數據分佈的終點和模型不確定性的起點。沒有這一步,部署就等於在缺乏管理風險所需信息的情況下進行。」
從小處開始,建立信心。「先在一個範圍明確、理解充分的模塊上進行試點,將 AI 的輸出與現有的手工編寫的屬性集進行比較,在廣泛推廣之前衡量差距,」Darbari 說,「最後,這只有在與已經理解形式化方法的工程師一起使用時才會有效。它不是用來跳過這種專業能力的,而是用來讓專家工程師工作得更快。在這方面,我看到大型設計公司出現了一個有趣的需求。管理層希望工程師接受形式化訓練,這樣他們就能驅動整個工具生態,並正確應用方法論。」
同時,考慮你所處的領域也非常重要。「目前的工具已經領先於治理了,」Davidmann說,「大多數團隊還沒有標準來記錄哪些斷言是人工編寫的,哪些是AI生成的,或者這種區別對簽核信心意味著什麼。此外,大多數供應商的文檔也沒有說明模型的訓練範圍、失敗模式或部署模型的領域邊界。在AI生成內容擴展到安全關鍵設計之前,這兩個缺口都需要先補上。」












