姜 琦,史敬端,劉 健,程金海
JIANG Qi1,SHI Jing-duan2,LIU Jian2,CHENG Jin-hai2
(1. 天津天鋼聯合特鋼有限公司 機動處,天津 301500;2. 天津電氣傳動設計研究所 市場部,天津 300180)
隨著超大規模數字集成電路功能的日益完善和集成度的不斷提高,各個領域對其功能設計完整性、可靠性要求也變得越來越高。因此,對數字集成電路的故障檢測、診斷方法、故障定位以及可測性設計技術進行全面深入的研究具有重要的現實意義,這也是確保超大規模數字集成電路器件在使用中正常安全工作的重要手段。超大規模數字集成電路自身具備的高集成度特性增加了對其進行測試和驗證的難度。在測試和驗證過程中,測試向量的生成又是最主要和最復雜的部分,且對測試效率和故障覆蓋率的要求也越來越高。
目前的數字集成電路設計工具可以使設計師將主要精力集中在算法級和功能級設計,綜合工具自動對功能設計進行RTL和門級綜合,這就對數字芯片傳統門級測試和驗證帶來了極大挑戰[1]:由于設計師使用綜合工具自動布局布線,因此設計師不清楚電路設計結構,因而無法進行結構級測試;另一方面,由于電路設計規模不斷增大,如果使用門級測試驗證方法,則需要占用大量的時間,有時甚至無法進行。
數字集成電路的驗證測試是實現“從設計到測試無縫連接”的關鍵。在深亞微米制造工藝下,芯片驗證測試的重要性尤為突出。其主要功能是驗證設計和測試程序的正確性,確定芯片是否符合所有設計規范[2]。從測試驗證角度來說,電路描述的層次可以分為行為級描述、功能級描述、結構級描述、開關級描述以及幾何級描述[3]。高級驗證測試方法指的是任何高于門級的驗證測試方法[4]。高級驗證測試的目的在于檢驗數字電路系統是否達到初始說明書上的要求,發現并改正其中的設計缺陷。在這個過程中,應該有一個方法來衡量驗證的完整性,這個方法就是建立覆蓋模型。
覆蓋模型一般包括覆蓋空間和覆蓋率度量。覆蓋空間引入及分類的目的在于將聲明、執行、內部結構以及外部調用驗證相互補充完整,將聲明中指出的和未指出的均實現驗證。在實現中,覆蓋空間中的聲明、執行、內部結構以及外部調用驗證相互補充完整性的檢查往往通過代碼覆蓋率報告完成。由于器件的全部功能由其輸入、輸出要求定義,所以一個捕捉這些要求的覆蓋空間可視為一個覆蓋模型的重要組成部分,這一部分往往通過功能驗證和斷言驗證來實現。覆蓋率度量包括四方面:隱含度量、顯性度量、聲明度量和執行度量。
一個完整的覆蓋模型主要包括三方面內容,即代碼覆蓋、斷言驗證和功能覆蓋。概括來說,建立覆蓋模型包括以下步驟:通過分析功能設計說明,記錄所有設計會用到的操作狀態,從中提取模型參數;捕捉所有操作狀態的參數值,繪制成表;根據各參數所有可能狀態定義所有節點,即每種組合為一個節點。設計并執行一個覆蓋模型分為兩部分內容,一部分是頂層設計,另一部分為細節設計。頂層設計關注器件本身的模型描述、定義的屬性以及屬性間的關系。頂層設計包括:用語言描述將要建立的模型、確定模型應包括的屬性以及確定屬性間的關系。細節設計關注如何用驗證環境描述覆蓋模型設計。細節設計包括:哪些屬性必須被采樣、在驗證環境的何處進行采樣以及何時進行采樣并將其關聯起來。
功能說明即系統的使用說明,是建立覆蓋模型的第一步,其用于描述系統的操作狀態及參數提取。
驗證的交互系統包括2個控制設備和2個從屬設備??刂圃O備和從屬設備之間通過一個連接設備相連。同一時刻,只能有一個控制設備與一個從屬設備交互。任何控制設備都可以和任何一個從屬設備交互。事務可以是一個讀操作或寫操作。連接設備用來決定哪個控制設備管理事務,同時建立指定控制設備和從屬設備間的連接及成功處理該事務。
2.1.1 控制設備
控制設備可執行讀和寫操作,支持在交互系統中控制兩個從屬設備。當控制設備收到指令“bg”,就準備開始一個事物,發出一個低電平有效的脈沖到信號“ask”上,然后等待一個“gnt”信號?!癵nt”信號是一個低電平有效信號。如果在2~5個時鐘周期內沒有等到“gnt”信號,稍后控制設備將重試這個過程。如果在2~5個時鐘周期內獲得了“gnt”信號,控制設備將立即斷言信號“avail”,用來確認“gnt”信號的到達(“avail”信號是低電平有效信號)。
2.1.2 連接設備
連接設備負責兩個重要任務:1)決定哪個控制設備管理與從屬設備之間的事務。2)建立一個特定的控制設備和一個從屬設備之間的連接。在一個給定的時間,控制設備可以通過斷言各自的“ask”信號來請求執行事務。
控制設備選定要與其建立事務的從屬設備后,連接設備將提供指定從屬設備的信息。由于兩個控制設備能與任何一個從屬設備建立事務,因此連接設備必須監控兩個控制設備的“sel”信號(即“sel1”和“sel2”)。在任何給定時間,要么兩個“sel”信號都處于三態,要么其中一個處于三態。如果兩個“sel”都是三態,那么在此時沒有事務請求。如果有一個事務請求,那么其中一個“sel”信號的值為0或1,具體的值依賴于選擇的目標設備。如果連接設備的輸出信號“sel”(該信號為兩位)的最高位置為高,則從屬設備1被選中,如果最低位置為高,表示從屬設備0被選中。
模塊級斷言驗證是實現覆蓋模型的第二步,即捕捉系統各個屬性、屬性間的關系以及所有操作狀態的參數值,從而得到驗證代碼。
2.2.1 控制設備驗證
根據控制設備的功能描述,可以分析出斷言驗證。每個控制設備只有一個“ask”、“gnt”、“avail”信號,是控制設備的單獨信號,因此在編程構建系統時需調用兩個實例。一旦控制設備有一個請求信號,啟動信號要在2~5個時鐘周期內到達,此種情況下,如果信號“sel”為高,則在同一時鐘周期,控制設備應斷言信號“avail”。三個時鐘周期后,從屬設備2應該通過斷言信號“ready”確認該選擇。
仿真結果如圖1所示。
斷言驗證結果分析如圖2所示。
通過波形及結果分析可知,所有斷言均有效,其中成功兩次,失敗零次。
2.2.2 連接設備驗證
每個控制設備中有唯一的“avail”信號,其為連接設備的輸入。如果控制設備處于激活狀態,其將信號“avail”置為低,因此,把兩個“avail”信號進行“與”操作,如果結果為低,則可知總線狀態為激活;如果結果為低,則沒有控制設備處于激活狀態。
圖1 控制設備仿真波形
圖2 控制設備斷言驗證結果分析
每個控制設備有唯一的一個“ask”信號,用來請求總線,而連接設備提高唯一的“gnt”信號。通過將所有的“ask”信號進行“或”操作來判斷是否有控制設備存在有效請求;同理,將“gnt”信號進行“或”操作,可知一個控制設備的請求獲得了許可。
仿真結果如圖3所示。
斷言驗證結果分析如圖4所示。
通過波形及結果分析可知,所有斷言均有效,其中成功四十三次,失敗一次。
當對系統的各個模塊進行驗證后,還要對系統的連接和協議進行驗證,在任何一個給定的時間點,只能斷言一個“ready”信號,在任何給定的時鐘周期,只能激活一個“sel”信號,其他“sel”信號應該是三態,當一個控制設備發出一個正確的請求后,在2~5個時鐘周期內,應該實現一個正確的“gnt”,在任何給定時鐘周期,如果一個控制設備的“avail”信號被斷言,則3個時鐘周期后,相關的“ready”信號應該被斷言,在任何給定的時鐘,如果控制設備的“avail”信號被解除斷言,則兩個時鐘周期后,相關的“ready”信號應該被解除斷言,在任何給定的時鐘,如果沒有有效的事務,則總線“data”和“datao”應該為三態。
仿真結果如圖5所示。
斷言驗證結果分析如圖6所示。
通過波形及結果分析可知,所有斷言均有效,其中成功一百九十次,失敗零次。
模塊級驗證和系統級驗證檢驗的是任何可能存在的違反指定的功能要求的情況,從而提高系統功能的可信等級。而從測試平臺角度考慮,在模擬中需要覆蓋系統功能的所有可能場景,因此在模擬中覆蓋的情景應成為測試計劃的一部分。
圖3 連接設備仿真波形
圖4 連接設備斷言驗證結果分析
圖5 系統級仿真波形
圖6 系統級斷言驗證結果分析
檢驗驗證的效果依然依賴于輸入激勵,如果輸入向量不能促使系統執行某些情景,那么它們就不會被測試到。許多測試平臺采用隨機技術產生模擬的輸入激勵。一個非常通用的方法是運行許多預先定義的事務,然后測量對某些情景集合的覆蓋。通過約束控制輸入激勵的產生,會更加有效地覆蓋到各種場景。交互系統中有許多重要的功能,應作為功能驗證的一部分被覆蓋到。
請求場景:
在任何給定的時間,有兩個控制設備可以請求訪問,即控制設備的“ask”信號有四種可能的組合,如表1所示:
圖7 請求狀態仿真波形
表1 控制設備請求場景
圖8 請求狀態斷言驗證結果分析
圖9 系統仿真驗證波形
其中,“0”表示控制設備正在請求總線。
仿真結果如圖7所示。
斷言驗證結果分析如圖8所示。
通過波形及結果分析可知,所有斷言均有效,其中成功四十次,失敗零次。
通過系統驗證,發現在驗證過程中,雖然所有斷言均有效,但許多斷言未被覆蓋到,同時有一處斷言失敗,即屬性check_avail_gnt(圖9中向下箭頭處)。該屬性斷言當控制設備完成該任務時,需解除對信號“avail”的斷言,連接設備在下一時鐘周期解除對“gnt”信號的斷言。
此斷言失敗表明,當任務完成后,為解除信號“avail”的斷言,從斷言失敗處到仿真結束,連接設備的狀態始終為控制設備2等待,同時結合代碼執行率報告發現,在斷言失敗處,連接設備模塊的程序為死循環狀態,由此發現該系統的連接模塊設計存在缺陷。在交互系統驗證的例子中,系統功能驗證是通過斷言的方式來實現的,將失敗的斷言與其相應處的代碼執行報告結合分析,可以提高檢測到系統功能缺陷的效率。
本文通過實例介紹了高級驗證測試方法的概念、作用以及應用范圍,并通過SystemVerilog驗證語言結合具體實例在QuestaSim仿真軟件上實現了系統驗證過程。通過試驗可以看出,構建覆蓋模型測試平臺可以提高驗證測試工作的效率、完備性、可靠性以及易控性。但高級驗證測試方法也存在不能精確預見門級故障覆蓋率的問題,因此未來的高級驗證測試技術還可以在可測性設計和層次化測試兩方面進行深入研究,使覆蓋模型在具有代表性的同時對底層故障具有較高的覆蓋率。
[1] Riesgo T,Uceda J,Aldana F,High-level testing for digital VLSI-a survey[A]. Proc Int Conf Industrial Electronics,Control,and Instrumentation[C]. Hawaii,USA. 1993. 1.402-407.
[2] M. L. Bushnell,V. D. Agrawal,“Essentials of Electronic Testing for Digital,Memory and Mixed-Signal VLSI Circuits”,Kluwer Academic Publishers,2000.
[3] Jha N K,Gupta S. Testing of digital systems[M].Cambridge University Press,2003.
[4] Kapur R. High level ATPG is important and is on its way[A]. Proc Int Test Conf[C]. Atlantic City,NJ,USA.1999.
[5] Corno F,Reorda M S,Squillero G,RT-level ITC’s99 benchmarks and first ATPG result[J]. IEEE Design & Test of Computers,2000,17(3).
[6] 成本茂,王紅,刑建輝,楊士元,數字電路的高層測試技術及發展趨勢[J]. 微電子學,2006.
[7] Andrew Piziali,“Functional Verification Coverage Measurement and Analysis”,Kluwer Academic Publishers,2004.