本發(fā)明涉及芯片設(shè)計及芯片驗證技術(shù)領(lǐng)域,具體地說是一種基于功能點覆蓋動態(tài)調(diào)整隨機約束的驗證方法。
背景技術(shù):
隨著工藝技術(shù)以及應(yīng)用領(lǐng)域的不斷發(fā)展,芯片的復(fù)雜度不斷提高,相對應(yīng)的,對于仿真驗證工作的要求也在不斷提高。不但需要進行仿真驗證的功能點越來越繁復(fù),而且驗證周期的要求也越來越嚴(yán)格。
現(xiàn)有的芯片設(shè)計流程中,分為前端設(shè)計(邏輯設(shè)計)和后端設(shè)計(物理設(shè)計)兩個階段。前端設(shè)計主要是以通過硬件描述語言(如verilog)來實現(xiàn)芯片的邏輯功能,而代碼描述的正確性主要就是通過對這些代碼(或是由這些代碼生成的網(wǎng)表)的仿真驗證來實現(xiàn)的。在標(biāo)準(zhǔn)的仿真驗證流程中,需要確保的前端設(shè)計涉及到的邏輯功能的功能點,都需要通過構(gòu)造相應(yīng)的仿真場景,證實前段設(shè)計邏輯功能的正確性。
在現(xiàn)有的仿真驗證中,定向驗證一般是基于覆蓋率驅(qū)動的,既通過分析對于功能點覆蓋(或者關(guān)鍵代碼行的覆蓋)的情況來構(gòu)造特定的激勵來進行定向驗證。而隨著待驗證芯片的規(guī)模不斷擴大,為了提高效率,縮短驗證周期,更多的隨機驗證被引入到基于覆蓋率驅(qū)動的驗證中來。通過對于覆蓋率情況的分析,添加不同的隨機約束來構(gòu)造更多的驗證場景。然后,對于隨機驗證無法覆蓋到的功能點,再構(gòu)造特定的定向驗證。
技術(shù)實現(xiàn)要素:
為克服上述現(xiàn)有技術(shù)存在的不足,本發(fā)明的目的在于提供一種仿真驗證效率高、減少人員投入的基于動態(tài)覆蓋率統(tǒng)計的隨機驗證方法。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種基于功能點覆蓋動態(tài)調(diào)整隨機約束的驗證方法,其特征是:包括以下步驟:
s1,定義待測芯片的功能覆蓋點;
s2,選取隨機約束對所述功能覆蓋點進行隨機驗證;
s3,收集和分析動態(tài)覆蓋率;
s4,判斷所述覆蓋率是否達到要求,如果達到要求,驗證結(jié)束,否則轉(zhuǎn)到步驟s5;
s5,判斷是否需要調(diào)整算法,如果需要調(diào)整算法,轉(zhuǎn)到步驟s6,否則轉(zhuǎn)到步驟s2;
s6,變換隨機約束動態(tài)調(diào)整算法,轉(zhuǎn)到步驟s2,直至覆蓋率達到要求。
進一步地,驗證開始之前,將所述隨機約束以動態(tài)配置的方式實現(xiàn)。
進一步地,驗證過程中還包括特定退出機制,所述特定退出機制在滿足預(yù)設(shè)條件時觸發(fā)。
進一步地,所述預(yù)設(shè)條件包括預(yù)設(shè)動態(tài)調(diào)整的次數(shù)或預(yù)設(shè)仿真的時間。
進一步地,所述功能覆蓋點包括待測芯片的功能點和待測芯片的運行狀態(tài)。
進一步地,所述功能覆蓋點用斷言的方式定義。
進一步地,對所述隨機約束的選取按照設(shè)定的算法動態(tài)變換。
進一步地,對所述動態(tài)覆蓋率的分析和收集采用讀寫文件的方式進行。
本發(fā)明的有益效果是:本發(fā)明通過在現(xiàn)有的隨機驗證環(huán)境中,增加對功能覆蓋點覆蓋信息動態(tài)搜集和分析,即增加在仿真進行過程中對覆蓋率的統(tǒng)計,相對于在仿真結(jié)束階段進行覆蓋率統(tǒng)計的方式,大大地縮短了隨機驗證的時間,提高工作效率。
通過預(yù)先定義的動態(tài)調(diào)整算法來調(diào)整相應(yīng)隨機約束的,將顯著地減輕定向驗證在功能點覆蓋上的壓力,在不需要大規(guī)模增加人力的情況下縮短研發(fā)周期,節(jié)省研發(fā)投入。
附圖說明
圖1是本發(fā)明所述方法的流程圖。
圖2是加入本發(fā)明所述方法的仿真驗證流程圖。
具體實施方式
為能清楚說明本方案的技術(shù)特點,下面通過具體實施方式,并結(jié)合其附圖,對本發(fā)明進行詳細闡述。本發(fā)明省略了對公知常識的描述以避免不必要地限制本發(fā)明。
本發(fā)明提供了一種基于功能點覆蓋動態(tài)調(diào)整隨機約束的驗證方法,它包括的步驟如圖1所示:
s1,開始驗證,定義待驗證芯片的功能覆蓋點;
以斷言的方式定義出關(guān)鍵的功能覆蓋點。這里所指的關(guān)鍵功能覆蓋點,與傳統(tǒng)上針對待驗證目標(biāo)進行覆蓋率統(tǒng)計與分析用的功能覆蓋點略有不同。在不考慮時間和資源限制的情況下,本發(fā)明所述關(guān)鍵功能點的覆蓋點,在原本針對待驗證目標(biāo)的功能覆蓋點基礎(chǔ)之上,加入針對整個仿真環(huán)境和待驗證目標(biāo)運行狀態(tài)的覆蓋點。
s2,選取隨機約束對所述功能覆蓋點進行隨機驗證;
s3,收集和分析動態(tài)覆蓋率;
為了獲得對所述隨機約束以及其他參數(shù)的動態(tài)調(diào)整變換,首先需要將驗證環(huán)境中的隨機約束以及其它參數(shù)盡可能地用可以動態(tài)配置的方式實現(xiàn)。如果不考慮需要對已經(jīng)進行過仿真的參數(shù)進行記錄和分析,可以直接用變量的方式存取參數(shù),動態(tài)配置這些變量就可以。否則,除了變量之外,還需要以存取log文件的方式將所有進行過仿真的參數(shù)進行記錄和分析。
根據(jù)斷言的覆蓋情況動態(tài)地調(diào)整隨機約束或者其它仿真參數(shù)配置。理想情況下,這些動態(tài)調(diào)整中途是不需要人力再去參與的。工程師只需要在仿真開始之前為這些動態(tài)調(diào)整制定和編寫一套算法,然后依照仿真情況對隨機約束進行自動化的調(diào)整。
所述算法按照待驗證芯片的類型進行編寫,算法的內(nèi)容在此不做贅述,對本領(lǐng)域技術(shù)人員來說能夠按照待驗證的芯片的情況具體確定。
所述對斷言的分析還包括周期性地或者以特定觸發(fā)條件來掃描斷言的覆蓋情況。具體周期長度需要根據(jù)實際情況而定。周期太長會造成仿真時間的浪費,周期太短的話過于頻繁的掃描也會降低仿真效率。在需要進行非常長時間的仿真時,可以采用自適應(yīng)周期的方式進行掃描,即覆蓋情況沒有變化時,延遲下一次掃描的周期,反之則縮短。
對斷言的滿足情況進行匯總記錄。由于針對待驗證目標(biāo)比較復(fù)雜,斷言比較多,或者仿真時間比較長的情況,應(yīng)采用讀寫文件的方式進行記錄和分析。
上述對斷言的分析和斷言滿足情況的匯總記錄即對覆蓋率的匯總和分析。
s4,判斷所述覆蓋率是否達到要求,如果達到要求,仿真結(jié)束,否則轉(zhuǎn)到s5;
s5,判斷是否需要調(diào)整算法,如果需要調(diào)整算法,轉(zhuǎn)到步驟s6,否則轉(zhuǎn)到s2;
s6,變換隨機約束動態(tài)調(diào)整算法,轉(zhuǎn)到步驟s2,直至覆蓋率達到要求,結(jié)束仿真。
如圖2所示,在加入本發(fā)明所述方法后,仿真驗證過程中同時進行定向驗證和動態(tài)隨機驗證,在完成對功能覆蓋點或代碼的定義之后,同時開啟隨機驗證和定向驗證,如果判斷覆蓋率沒有達到要求,分別構(gòu)造對未覆蓋功能點或代碼的定向激勵進行進一步地定向驗證和對是否需要調(diào)整算法的判斷進行進一步地隨機驗證,兩種驗證同時進行,提高工作效率。
優(yōu)選地,為仿真設(shè)置新的退出機制。在實際仿真驗證中,由于預(yù)先制定的算法不可能是完美的,具體從功能點覆蓋的角度而言,在長時間的仿真之后,肯定會出現(xiàn)依照預(yù)設(shè)算法無論怎么動態(tài)調(diào)整也無法提高覆蓋率的情況。因此,除了通常仿真都會有的異常退出機制和正常退出機制(覆蓋率滿足要求的情況下觸發(fā))之外,還應(yīng)設(shè)置一種退出機制,在動態(tài)調(diào)整一定次數(shù)或者一定長度的仿真時間之后,覆蓋率始終無法增加的情況下觸發(fā)。
以上所述只是本發(fā)明的優(yōu)選實施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也被視為本發(fā)明的保護范圍。