功能驗(yàn)證正成為IP驗(yàn)證的瓶頸,并影響到整個(gè)設(shè)計(jì)團(tuán)隊(duì)。設(shè)計(jì)工程師想方設(shè)法提高驗(yàn)證效率,以實(shí)現(xiàn)整個(gè)芯片設(shè)計(jì)的最佳利益。在這里,我們提供10個(gè)簡(jiǎn)單技巧,顯著提升您的IP驗(yàn)證效率。 1. 參與驗(yàn)證計(jì)劃審核 良好的開(kāi)端是成功的一半!在驗(yàn)證計(jì)劃上的投入是非常重要的。很多時(shí)候,沒(méi)有明確的微架構(gòu)文檔的驗(yàn)證計(jì)劃(從白盒驗(yàn)證的觀(guān)點(diǎn))是不完整的。前期的投入可以減少很多執(zhí)行中的障礙。你需要根據(jù)設(shè)計(jì)開(kāi)發(fā)計(jì)劃確定優(yōu)先順序。您還需要對(duì)驗(yàn)證計(jì)劃的完整性有所投入。此外,如果您的驗(yàn)證團(tuán)隊(duì)正計(jì)劃采購(gòu)第三方驗(yàn)證的IP,請(qǐng)確保它符合DUT的特殊定制需求。 2. 以文檔的形式記錄接口信號(hào)、寄存器和數(shù)據(jù)流 文檔是一種奢侈品!許多設(shè)計(jì)工程師奉行“代碼就是文檔”的理念。這是可以理解的,因?yàn)槟阍谂c時(shí)間作戰(zhàn)。然而,有關(guān)測(cè)試器件與測(cè)試平臺(tái)之間的接口的基礎(chǔ)文檔和基礎(chǔ)數(shù)據(jù)流信息對(duì)提高驗(yàn)證效率大有益處。在整個(gè)調(diào)試過(guò)程中這些文檔能夠充當(dāng)參考從而避免混淆。 3. 在系統(tǒng)整合前就完成DUT的頂層編譯 為了早點(diǎn)把RTL交付給驗(yàn)證團(tuán)隊(duì),工程師常常跳過(guò)DUT的RTL頂層編譯。你可千萬(wàn)別忽略這一步。每個(gè)新寫(xiě)的測(cè)試平臺(tái)都會(huì)有自己的問(wèn)題。而引用未成熟的DUT只會(huì)將問(wèn)題復(fù)雜化。因此,最好能給驗(yàn)證團(tuán)隊(duì)提供一個(gè)沒(méi)有錯(cuò)誤的DUT頂層的RTL編碼作為參考。 4. 避免DUT頂層出現(xiàn)dangle信號(hào) dangle信號(hào)是內(nèi)部模塊之間的連接信號(hào)。然而,由于缺少連接,這些dangle信號(hào)最終會(huì)被放到頂層的端口上。這破壞了測(cè)試平臺(tái)頂層編譯從而導(dǎo)致混亂。你需要在內(nèi)部把它們連接起來(lái),然后按照規(guī)格要求,參照預(yù)定義的端口列表交付DUT頂層。 5. 為關(guān)鍵性的假設(shè)和接口信號(hào)添加必要的斷言 隨著斷言的日益普及,如果你可以多花些精力,添加必要的斷言,肯定是有百利而無(wú)一害的。這可以是簡(jiǎn)單的內(nèi)部FIFO空滿(mǎn)斷言,也可以基于任何輸入激勵(lì)或任何可能出現(xiàn)的異常的假設(shè)的復(fù)雜的斷言。針對(duì)DUT上的接口信號(hào)的斷言可以提供及時(shí)的信息,以判斷驗(yàn)證工程師是否正確整合DUT。這些早期的斷言可以為后期的調(diào)試節(jié)省大量的時(shí)間。 6. 繞過(guò)冗長(zhǎng)的初始化序列 許多接口協(xié)議規(guī)范都列舉了很長(zhǎng)的初始化序列,以提供配置的靈活性。一些初步的測(cè)試過(guò)后,驗(yàn)證的焦點(diǎn)會(huì)轉(zhuǎn)移到其他環(huán)節(jié)。大多數(shù)的測(cè)試是為了驗(yàn)證初始化序列以外的特性,所以你應(yīng)該提供方法繞過(guò)這些長(zhǎng)期的初始化序列。 7. 設(shè)置可變的計(jì)時(shí)器時(shí)長(zhǎng) 設(shè)計(jì)通常都會(huì)使用定時(shí)器以避免出現(xiàn)掛起的情況。這些定時(shí)器要么符合標(biāo)準(zhǔn)的規(guī)范要么由內(nèi)部定義。通常,這些計(jì)時(shí)器都設(shè)定有非常長(zhǎng)的值以防止超時(shí)。不過(guò),要測(cè)試那些很長(zhǎng)的值需要消耗大量的仿真時(shí)間。一些值甚至是仿真測(cè)試無(wú)法實(shí)現(xiàn)的。所以,你需要讓計(jì)時(shí)器具有可伸縮性,以確保定時(shí)器可以毫不費(fèi)力地進(jìn)行縮放。同時(shí),你也應(yīng)該調(diào)整其他相關(guān)的配置,總之一定要讓計(jì)時(shí)器順利進(jìn)行仿真。 8. 一致性驗(yàn)證 這一步是 “錦上添花”!隨著形式驗(yàn)證工具的日益普及,設(shè)計(jì)師可以做一些一致性驗(yàn)證而無(wú)需在測(cè)試平臺(tái)上大量投入。對(duì)設(shè)計(jì)(或設(shè)計(jì)的主要模塊)進(jìn)行一些非常基本的測(cè)試,將大大節(jié)省時(shí)間,從而加速啟動(dòng)全面驗(yàn)證。 9. 在DUT頂層使用System Verilog接口 設(shè)計(jì)師鐘愛(ài)Verilog,但是當(dāng)今世界大多數(shù)的驗(yàn)證都是通過(guò)System Verilog實(shí)現(xiàn)的。你應(yīng)該逐漸發(fā)掘System Verilog的“設(shè)計(jì)友好型”的特點(diǎn)。為DUT頂層提供System Verilog接口,而不是 Verilog的端口列表。這會(huì)是一個(gè)良好的開(kāi)端,它可以減少集成時(shí)間,也可為接口斷言提供合適的場(chǎng)所。此外,這將有助于轉(zhuǎn)變?cè)O(shè)計(jì)思維過(guò)程,從單純的Verilog到System Verilog – 從長(zhǎng)遠(yuǎn)看,這無(wú)疑是有益之舉。 10. 參與功能覆蓋率收斂 你可以說(shuō),“我已經(jīng)處理了代碼覆蓋率收斂。功能覆蓋率收斂不關(guān)我的事 。”沒(méi)錯(cuò)。然而,從長(zhǎng)遠(yuǎn)來(lái)看,延遲的驗(yàn)證收斂必定讓你耗費(fèi)更多的努力。在時(shí)序關(guān)鍵設(shè)計(jì)領(lǐng)域的后期修復(fù)的bug會(huì)導(dǎo)致時(shí)序收斂的返工(非常痛苦的過(guò)程)。因此,你最好能全程參與和指導(dǎo)功能覆蓋收斂,尤其是關(guān)鍵或薄弱環(huán)節(jié)。 |