發布日期:2022-07-14 點擊率:50
為了在DSP-IC上改進DSP技術的質量,恩智浦半導體(其前身為飛利浦半導體)的一個部門將驗證方面的經驗轉換成了推進驗證工藝發展的工具和技術。后續章節將分享這些經驗。
創建新的驗證解決方案
恩智浦公司的嵌入式矢量處理器內核以超長指令字(VLIW)架構為基礎,支持高并行度的標量和矢量操作,目標是各種多標準的通信技術,如、WLAN和數字視頻廣播(手機電視)等。于是,在驗證過程中需要測試許多邊界條件將成為一個前提條件(pre-condition)。冒著陳述事實的風險,DSP技術的用戶可以依賴于接收具有最高質量的健壯內核,因此他們能夠將精力全部集中到SoC設計上。
在目前DSP架構的復雜性下,采用隨機生成測試并且只有少量功能覆蓋點的傳統方案已經過時。因此,從計劃到收斂(plan-to-closure)的完整方法將選用覆蓋率驅動的隨機約束驗證架構。為了做到這一點,我們將貫徹Cadence公司的plan-to-closure方法學,包括該公司的Specman Elite測試平臺自動解決方案和驗證管理平臺。
計劃的利用
選用的方法要求采用可執行的驗證計劃(vPlan)作為舊式基于紙張的測試計劃的替代方案。其中心思想是在過程早期就確定驗證和覆蓋率目標,然后貫穿項目的整個過程,并按設立的目標報告進度。vPlan業已證明是非常好用的,它不僅可以用來驗證獨立的功能塊,還能將這些功能塊集成到一個主要的子單元或完整的芯片中。
計劃階段判斷需要驗證的特定功能,包括邊界案例。這一過程是在測試臺中編寫功能覆蓋代碼(采用e語言),用以判斷與每個功能覆蓋點相關的特性。
在整個驗證過程中產生的報告指明了被覆蓋(和尚未覆蓋)的點。針對每種情況,覆蓋率參數都將被返回給原始的vPlan。
多級驗證策略
為了避免研發過程中的依賴性,可以選用多級驗證策略,該策略專門將內核驗證與其他的DSP子系統(DSS)分隔開。在e語言中,總線功能模型(BFM)是專門為了內核開發的。BFM具有DSS驗證所需的足夠功能,可以與RTL代碼和內核自身的驗證同時產生。通過運行實際的軟件,最后的驗證階段重點將放在RTL內核和其它DSS部件的集成上。
內核的驗證
為了在驗證內核之前驗證基本的功能,RTL設計師通過激勵輸入并檢查輸出的方式對一些單獨的功能區進行基本的測試。這種方法主要用于接口功能模塊。大多數獨立功能塊是利用內核測試環境的一個子集進行測試的。
完整內核的獨立驗證廣泛地依賴于指令集仿真器(ISS),它是Adelante軟件開發套件(SDK)中的一個組件。ISS包括全部寄存器的管線執行周期精度,這些寄存器是在DSP的指令集架構(ISA)中定義的。這意味著在每一個執行周期的末尾,這些寄存器的狀態與RTL中相應寄存器是精確匹配的。逐個周期地比較ISS和RTL寄存器的狀態是內核驗證中使用的最重要的方法。
如圖1所描述的那樣,所有的內核測試是隨著程序在DSP核上的運行來實現的。程序可通過測試生成器創建,用的是e語言,它能產生一序列的指令去試圖用不同的操作數來執行所有不同的DSP矢量和標量運算。
圖1.內核驗證流程利用e編寫的組件鏈接RTL和ISS仿真。
針對測試生成的約束(也用e表達)被分為如下兩類:
1. 捕獲有關DSP指令集基本規則的“硬“約束,例如哪些運算可以并行執行。
2. 指明被測子單元中的子單元和運算的“測試”約束。
多路測試功能允許我們在仿真服務器陣列上并行執行任務,從而減少了每次回歸運行的總時間。測試生成階段的輸出是一個程序映像,可以直接下載到DSP的程序存儲器中,并在RTL仿真中執行。
盡管硬約束能夠捕獲絕大部分依賴于結構的問題,但在執行的不同階段多指令間還會偶爾出現許多微妙的資源沖突。與試圖利用約束捕獲所有這些規則相反,可以利用ISS及其詳細的指令集架構模型。
解決沖突
除了計算每條指令的預期結果,ISS還檢查該指令針對管線內其他指令的有效性。如果發現資源沖突,一個錯誤條件將會報告給測試生成器。該測試生成器具有“備份”和重發指令的能力,因此可以避免這些沖突。事實上,在最終測試程序中只包含無沖突的指令。
當在內核驗證環境中執行每個測試程序時,ISS是與DSP RTL并行運行程序的。這兩種表述經對齊后再被包含進一個e檢查代碼,該代碼在每個管線執行周期的末端比較所有ISA定義的寄存器狀態。這種能夠發現主要缺陷的方法已被證明是行之有效的。在針對ISS驗證RTL的過程中,也能夠檢測出ISS中的錯誤。
應用覆蓋率指標
自動測試臺為每項測試收集了具體的覆蓋率指標。其結果是產生針對計劃的全過程掃描。
除了功能覆蓋點外,傳統的代碼覆蓋方法也可用來幫助識別無法被充分測試的部分RTL代碼。仿真器的本地代碼覆蓋功能可用來收集每次仿真測試的結果并對結果進行合并。為了產生單個的頂層覆蓋視圖,可以書寫腳本將功能覆蓋與仿真器的代碼覆蓋報告結合到一起。
第一步集中于進入DSS驗證之前的獨立內核驗證過程期間指令的單獨正確執行上。當然,DSP運算的其他方面,例如中斷處理,是在DSS驗證過程中測試并在集成驗證階段期間確認的。
轉到DSS組件
在對整個子系統進行驗證之前,我們先用獨立的測試臺對幾個DSS RTL組件進行了驗證,這將簡化一些邊界案例的執行。此外,組件的并行測試避免了驗證過程中由于一定的依賴性所產生的延遲。
為了執行測試序列,采用了一個經典的基于e的測試臺。記錄板對結果進行跟蹤以驗證三個獨立的DSS功能塊。
在組件級驗證過程的同時,DSP-IC驗證工程師還開發出了用于內核的BFM,從而允許提前啟動DSS驗證。另外,BFM還提供了對約束隨機激勵的精密控制,其仿真速度快過完全的RTL實現。
圖2描述了BFM的主要功能以及整個DSS驗證環境。與組件級測試臺類似,該環境采用eVCs和記錄板來生成流量和跟蹤結果。
圖的絕大多數驗證利用了DSP內核的一個BFM。
復用優勢
這種隨機約束并以覆蓋驅動的環境采用e編寫的面向對象的功能,允許高度的驗證復用。在完整的DSS驗證過程中,組件級eVCs、記錄板和序列都已得到復用。另外,還采用了一個商用的AXI eVC和共享的APB eVC軟件,從而可以充分利用前人所做的驗證工作。
就DSP內核驗證而言,業已證明覆蓋方法對DSS驗證是非常重要的。DSS vPLAN包括一個基于架構師、設計師和驗證工程師推薦的具體功能列表。當進行測試時,用于全部RTL DSS組件的代碼覆蓋參量被收集到一起,此外,功能覆蓋結果也被收集和合并。
一項好投資
DSP-IC的驗證策略在每一層都具有通用的主題:即廣泛地利用隨機約束激勵,復雜的自動測試臺環境,可執行的驗證計劃,以及一個對能夠度量驗證過程的覆蓋率參量的依賴性。能夠自動執行回歸運行并精確地報告測試結果也很有用處。
用于開發DSP-IC先進方法的投資將會取得豐厚的匯報。Adelante VD3204x嵌入式矢量DSP核已被證明是一款高質量的DSP,極具靈活性,并且易于集成,至今已經用于多個SoC設計中。該方法被證實有助于我們目標的實現,其復用能力對VD3204x嵌入式矢量DSP系列產品的進一步發展來說也是至關重要。
作者:
高級驗證工程師Roger Witlox,
高級驗證工程師Ronald Heijmans,
驗證工程師Chris Wieckardt