2. 基于事件的仿真器:這些仿真器捕獲事件(在時鐘內部或在時鐘的邊界上)并通過設計進行傳播,直到實現(xiàn)一個穩(wěn)定狀態(tài)為止。
動態(tài)仿真的一個主要的缺點是,在一個限時仿真行程當中,只能對芯片的典型(而不是所有可能的)工作特性進行驗證。造成這種情況的主要原因在于芯片是針對已知測試空間(而不是未知測試環(huán)境)進行測試的,采用的是定向測試法。EDA行業(yè)推出了諸如Open-VERA、E和SVL(SystemC Verification Library)等更加高級的驗證語言。這些語言引入了新的概念,比如約束隨機激勵、隨機激勵信號分配和電抗性測試臺。伴隨著這些語言的運用出現(xiàn)了一些用于對其進行解釋的工具,就本場合而言,它們有可能是VERA、Specman和OSCI內核(即CCSS)。
除了引入了隨機化功能之外,新型驗證語言和工具還通過減少公司在構筑各種用于激勵信號發(fā)生的測試場合/方案所花費的時間量而實現(xiàn)了生產率的提高。例如,測試方案可以采用最高的抽象級來編寫,并能夠通過采用功能強大的面向對象型結構而“擴展”至任何較低的抽象級。
當采用動態(tài)驗證時,設計者一般希望擁有一個以可量化項來覆蓋和捕獲的功能空間的估計值:
1. 被驗證的代碼行的數(shù)量(行覆蓋率);
2. 被驗證的邏輯表達式有多少?(表達式覆蓋率)
3. 在一個FSM設計中達到了多少種狀態(tài)(FSM覆蓋率);
4. 在一個仿真行程中進行雙向變換的端口和寄存器的數(shù)量(變換覆蓋率);
5. 設計代碼中被覆蓋的邏輯通路的數(shù)量(通路覆蓋率);
這可以通過采用諸如代碼覆蓋和lint等工具來實現(xiàn)。
設計者將“斷言”用作一個占位符,用來描述與某項設計相關聯(lián)的假設和工作特性(包括暫時的特性)。如果設計滿足或未滿足規(guī)范或假設,則斷言將會在一個動態(tài)仿真過程中被觸發(fā)。斷言也可在形式/靜態(tài)功能驗證環(huán)境中使用。
2. 混合功能驗證
在該方法中通常執(zhí)行動態(tài)仿真,仿真結果被捕獲并用作靜態(tài)驗證的輸入。在靜態(tài)驗證期間,邏輯方程/符號通過設計進行傳播(而不象在動態(tài)仿真中那樣傳播的是數(shù)值)。這種手法雖然不如形式驗證詳盡周全,但卻可以被證實具有比純動態(tài)仿真更高的效率,因為它開始于動態(tài)仿真停止之時。
3.靜態(tài)功能驗證
在靜態(tài)功能驗證中,沒有向設計施加輸入激勵信號。而是將設計映射至一個采用BDD(雙擇判決圖)或其他數(shù)學表達式(它們規(guī)定了所有時間周期中的設計功能)來說明其功能的圖形結構上。利用這種圖形結構來證實或反駁屬性將能夠驗證這些數(shù)學表達式。這是通過確定數(shù)學結構中的矛盾式(方法是順著或逆著信號流來傳遞數(shù)值)來完成的。
現(xiàn)有工具采用以下兩種方式來滿足靜態(tài)驗證市場的需求
1. 采用斷言:這些是在模型/設計自身當中規(guī)定并公式化的設計約束(運用諸如SystemVerilog、Open-VERA、Verilog、VHDL等設計/驗證語言)。
2. 采用屬性:這些通過采用一種屬性語言(比如PSL、Sugar)提供了屬性的規(guī)范。
4. 等效性驗證
為了確定邏輯門級表示與HDL實現(xiàn)是相同的,通過采用匹配點并比較這些點之間的邏輯來執(zhí)行一種所謂的“等效性檢查”。生成一種數(shù)據(jù)結構,并將其與相同輸入特性曲線條件下的輸出數(shù)值特性曲線進行比較。如果它們不同,則表示(在本場合為邏輯門和RTL)是不等效的。當其中一種表示經過了某種類型的變換時,等效性檢查有時是在兩個連接表(邏輯門級)或兩個RTL實現(xiàn)之間執(zhí)行的(圖2)。
造成設計表示出現(xiàn)差異的一些實際原因如下:
1. 合成算法/啟發(fā)式法:根據(jù)對合成工具的約束條件(區(qū)域、時間、功率)的不同,合成工具將對邏輯運算進行優(yōu)化,以推導出適當?shù)倪壿嬮T級表示。為此,合成工具將采用啟發(fā)式法和邏輯最小化算法。
2. 抽象級:有時可以采用HDL來實現(xiàn)設計,它有可能與設計者的意圖存在一定的差異,原因是語言的局限性,抑或是缺乏(或不具備)對合成工具解釋特定語言結構并將其變換為邏輯門級表示的方式進行預測的能力。
正確驗證方法的選擇標準
在準備將新技術引入自己的工具流程之前,芯片供應商應當考慮以下問題并做出適當?shù)恼壑浴?
1. 在某個特定的產品線中,我們是市場的領先者還是追隨者?
2. CAD基礎設施、工具和方法是集中式的還是分布式的?
3. 新型驗證技術的評估是針對第一代產品進行的嗎?
4. 新型驗證技術對成本和產品面市時間的直接影響和間接影響是什么?
5. 新型工具能否處理變動的設計能力?
6. 工具的易用性如何?
7. 可為新型工具提供什么水平的文檔和支持?
8. 新型工具和方法與公司內部現(xiàn)有的工具和方法之間是否具有互操作性?
9. 新型工具的ROI(投資回報)是什么(包括服務、培訓、咨詢、計算和人力資源)?
10. 新型工具能否支持處于多個不同地理位置的設計?
11. 對于有關公司而言,他們所需關注的最為重要的問題或許是:我們雇用的設計師和驗證工程師對新型工具是否有成見(設計師不愿意學習和采用新技術)?
1.產品角度
主要從事存儲器芯片或存儲器密集型(而不是邏輯密集型)芯片生產的公司——比如SRAM和DRAM公司或許根本不需要進行大量的邏輯驗證。這些器件大多是定制的。雖然此類產品中有些規(guī)模會很大,但它們的邏輯復雜性并不高,因而不支持在公司內部配備大量邏輯驗證工具的計劃。不過,存儲器密集型設計提出了其他的挑戰(zhàn),比如布線、工藝調整和功耗。
那些制造純ASIC芯片(其上不運行軟件)的公司可能無須進行硬件-軟件折衷,或者也許不必實施用于捕獲運行于硬件之上的軟件的測試。例如,只具有硬件的SERDES(并串/串并變換器)芯片所要求的驗證和建模方法與同時具有硬件和軟件的SoC是不同的。
對于擁有門類寬泛的產品線的大型公司來說,驗證方法必須包含不同產品的各種要求。
2.系統(tǒng)角度
過去,邏輯芯片供應商不負責對芯片是否滿足某一參考系統(tǒng)上的功能和性能要求進行驗證。如今的系統(tǒng)廠商在批量訂貨之前都要求芯片制造商進行系統(tǒng)參考驗證。這就要求芯片公司采用一種他們所不熟悉的附加抽象級來對芯片進行建模和驗證。這需要架構模型、參考模型、制定復雜的應用級測試和精細的測試臺配置。面對這些類型的難題,有關公司有兩種選擇,一是采用現(xiàn)有的語言、技術和方法(這樣做將耗費大量的時間和精力),另一種就是大量采用新技術(如VERA、Specman等)。此外,芯片銷售商還必須確保所采用的參考模型和驗證套件是在一個與客戶兼容的環(huán)境中執(zhí)行的(比如,測試場合應該能夠使用客戶的軟件開發(fā)套件SDK以及客戶所用的仿真器)。
3.方法角度
在芯片集成之前,可以按照一個高置信度將靜態(tài)功能驗證和動態(tài)仿真結合起來用于驗證模塊級功能度。采用動態(tài)仿真能夠高效執(zhí)行系統(tǒng)級驗證,借助的方法是確定我們正在連續(xù)不斷地驗證功能空間的主要隅角。
首先執(zhí)行隨機仿真(以便在驗證的初始階段捕捉到大量的缺陷),并隨后對隨機仿真加以約束(以確定在測試計劃中所規(guī)定的測試空間已經在器件上被完全覆蓋)的做法或許相對容易一些。應考慮將約束驅動型驗證在功能覆蓋量度上進行細化!肮δ芨采w率”這一術語被用來描述一個對所覆蓋的功能空間進行量化的參數(shù),相反,“代碼覆蓋率”則被用來對已經實現(xiàn)的設計被某一給定的測試套件所覆蓋的程度進行量化。定向仿真隨后可被用來在驗證周期的末端覆蓋隅角測試空間。
斷言和屬性可在靜態(tài)功能驗證期間的背景中起作用(在模塊級上),并可在動態(tài)仿真環(huán)境中被重用(在模塊和系統(tǒng)級上)。如果模塊將被轉變成IP,則它們也是有用的,因為斷言將在IP被重用時持續(xù)不斷地檢查其屬性。
轉自 電子工程專輯
作者: Rangarajan (Sri) Purisai
高級電氣設計工程師
網絡處理解決方案小組
賽普拉斯半導體公司





