1. 程式人生 > >自動建立SOC測試平臺

自動建立SOC測試平臺

本文轉自:http://www.eetop.cn/blog/html/28/1561828-437620.html

複用對於測試平臺的開發和部署是非常重要的,我們經常談論複用驗證IP(簡稱VIP),然而,複用測試平臺的結構同樣很重要。手動構建測試平臺是一個耗時和成本昂貴的過程,此外,它很難保證一致性。為了緩解這個問題,Cypress 建立了一個測試平臺自動生成器,並命名為TBGen。

 

TBGen實際上就是能自動生成測試平臺(TB)的指令碼,這意味著它可以生成任何測試平臺。它的整體流程如圖一所示:

VIP: Verification Intellectual Property(驗證智慧財產權)

SAS: System Architecture Specification(系統架構規範)

 

TBGen有兩個主要輸入:一是SAS Database,從這可以獲得驗證平臺設計的具體資料,比如哪個子系統被用來建立平臺,每個子系統的例項數目,傳遞給每個子系統的配置引數,以及該系統暫存器對映等。二是Collection of VIP,可以提供每個VIP裡預定義資訊,比如介面或連線性的資訊是通過繫結模板預定義。

 

並且,整合測試可以自動檢查針對特定IP的相應例項,通過建立由驗證管理系統(VMS)認可的測試架構,可自動生成和啟動測試列表。最後,TBGen要求以統一的方式搭建每個VIP,如果某個VIP沒有基於TBGen準則搭建,它將是無效的。一旦遵從準則,並提供所有需要的資訊,測試平臺就很容易搭建起來,以減少驗證開發時間。

 

圖2顯示建立一個平臺所需的基本構建模組,基礎是VIP Guidelines(準則)。(Bind Templates)介面繫結,(Paremeter Passing)引數處理,(Test Integration)自動測試整合,以及(Multiple Instace)多例項都是必要的,將會在後文逐一介紹。框架基礎是與驗證工程師溝通需求的Guidelines(準則),一旦工程師在構建子系統測試平臺時遵從這些準則,那麼將這些子平臺整合將會被實現:TBGen將從SAS資料庫中提取資訊,將子系統測試平臺整合在一起,成為一個整體的測試平臺。

 

 

A 設計和測試平臺引數類

這些設計引數被用於子系統測試平臺核心中,目的是建立一個包含測試平臺引數的class(類),這些類被頂層TB使用,從而頂層TB可以通過它和子系統TB傳遞引數。每個IP的設計引數被放在一個特定的類中,類的名字針對與特定的IP名;TB(測試平臺)引數也被放在一個類裡,命名是類名和“v”字首的組合。

所有的引數類被打包在sys裡,通過“sys::*”將引數匯入需要的名稱空間。

B 連線

TBGen一個主要的功能就是將TB和DUT連線起來,如圖6所示,就是連線模型,包含協議代理,SystemVerilog的介面,和DUT介面。每個DUT的介面都被連線到System Verilog的介面上,協議代理又連線著System Verilog的介面。

C 繫結模板

一個繫結方法被定義為允許子系統VIP機制,繫結頂層TB例項。

圖7包含兩個簡單的繫結模板例子。首先,vip2 聲明瞭一個對斷言模組的繫結模板,斷言模組被繫結到了ip2,但是沒有介面,沒有配置控制代碼和定義命名。裡面聲明瞭interface=no, 提供了3個連線訊號。斷言模組三個訊號sig1,sig2,sig3被連線到input1, input2, input3。第二,vip3聲明瞭一個到名字為sample_if介面的繫結模板,如果ip3 類裡引數PARAM2>0,這個介面就被繫結到ip3。介面sample_if應該用`ifdef包裹IF_ON與之對應,並且,ip3設計引數PARAM1在例項化時會自動傳遞,還有兩個連線訊號,介面訊號if_sig1, if_sig2會連線到input1, input2。

 

在平臺級,TBGen將藉助這些繫結模板生成正確的繫結例項,可以在 dut_wrapper.sv 中看出來, assetions_0 被繫結到 if2的例項 u_ip2_top ,  sample_if_0 被繫結到ip3的例項 u_ip3_top。TBGen還將生成一個函式: set_value_in_global_config,呼叫 sample_if_0 而不是 assertions_0。

 

D 支援設計多例項

在SOC中,一些子系統可以具有多個例項。圖8給出一個簡單的例子,其中頂層的環境(env.svh)中,同時示出了SOC和子系統的TB。子系統的環境(vip_env)在SOC環境中被例項化了兩次,第一個例項通過 sys::ip1_0 和 sys::vip1_0 將引數在TB和design之間傳遞;第二個例項同樣道理。通過這種方法,ip1_env可以接收到正確的類並配置這些類的例項。

 

E 子系統整合測試

要實現全自動化,TBGen必須不僅僅建立一個測試平臺,它還必須建立或啟用自動遞迴測試。子系統VIP開發人員可以在特定目錄下建立名為integration_tests和integration_seqs資料夾,TBGen將找到這些資料夾,並自動將它們複製到測試平臺的目錄結構中,同一型別的所有序列和測試被放置在一個目錄下,而從子系統VIP整合序列或測試資料夾會被放在一個資料夾中。

 

Cypress的VMS工具用來自動建立一個遞迴名單,VMS的開發是為了處理檔案的編譯,測試列表的建立和測試載入,關於如何做到這一點的詳細資訊不在討論的範圍之內。對於測試列表的建立,基本概念是,VMS可以遍歷測試資料夾,並根據配置資訊和資料夾結構確定測試名稱,該測試的名稱和配置資訊相結合,構建適當的引數測試列表,一旦列表被建立,VMS將使用該測試列表,載入每一個測試。

 

F 生成內建暫存器包

Cypress的測試平臺使用基於Mentor Graphics公司的集中式暫存器包,在子系統級別中,暫存器包生成是由SAS中暫存器對子系統描述驅動的;在SoC級,暫存器包生成是由SAS暫存器描述中對SOC中包含的子系統描述驅動的,因此描述用於生成相同的子系統的暫存器塊可以在子系統和SOC中複用。

 

不同的設計引數可以導致子系統的暫存器塊之間的差異。暫存器生成指令碼由兩個階段操作處理這個問題,第一階段讀取一個給定的子系統SAS暫存器描述和設計引數;第二階段,平面檔案中的資訊轉換成實際欄位,暫存器,暫存器塊,暫存器對映類。如圖10所示:

 

總結

TBGen藉助必備驗證IP庫,提供了一個搭建SOC層次TB的自動化環境。它通過處理子系統測試例項和統一配置方式來實現,使用這個工具減少了建立新的SOC級測試平臺的時間,此外,具有自動整合測試和VMS,SOC級測試平臺的建立和遞迴測試可用兩個簡單的步驟來完成,啟動TBGen並啟動 VMS。雖然還需要額外的努力來為TBGen準備驗證IP,但總體收益還是巨大的。