?

面向SoC 系統的可擴展UVM 自動化驗證平臺

2024-04-13 06:54劉斌虞小鵬譚年熊
電子設計工程 2024年7期
關鍵詞:測試用例指令總線

劉斌,虞小鵬,譚年熊

(1.浙江大學微納電子學院,浙江杭州 310000;2.西安路科驗視集成電路技術咨詢有限公司,陜西 西安 710000)

在日益先進的工藝制程下,芯片的流片費用越來越昂貴。為了保證一款芯片能夠順利流片完成全部功能,芯片功能驗證的重要性日益突出。盡管目前的SoC 系統集成方式越來越普遍,在系統快速集成和系統測試完備性之間也出現了越來越大的人力鴻溝需要填補。一個龐大的SoC 系統往往容納了數十個子系統和IP,而這些硬件資源之間的互連與集成急劇放大了需要測試的系統功能空間。動態功能仿真技術與UVM(Universal Verification Methodology)作為主要的芯片驗證手段,面臨著緊緊跟隨芯片設計步伐的項目壓力。為了降低項目壓力,一種面向SoC 系統的UVM 可擴展自動化驗證平臺得以開發。該平臺的推出,使得多款不同類型的芯片在結構化的驗證環境中得到充分驗證,有力地保障了芯片研發進程。

1 SoC系統集成

成熟穩定的IP 可以加速SoC 的系統集成。一個典型的SoC 系統中的IP按照功能類型,可以分為處理器、片上網絡(Network on Chip,NoC)、存儲、I/O 設備等。它們與專用的功能模塊、系統控制模塊等先構成子系統,而后多個子系統構成了SoC系統。為了能夠確保從模塊級到子系統級再到系統級的集成都是經過充分測試的,需要在每一個集成層次中對待測設計(模塊、子系統和系統)進行功能驗證。

對于模塊、子系統和系統進行驗證有著不同的目標和需求。模塊驗證需要盡可能完成80%以上的功能測試點要求,對寄存器的配置做組合設置,并且在各個端口上進行充分的數據組合測試,模塊級測試用例以SV 和UVM 為主[1]。子系統驗證會圍繞著各個模塊實例和它們之間的集成關系進行驗證,子系統級測試用例兼有UVM 和C 語言。系統級驗證會就各個子系統的啟動運行和系統應用場景進行測試,系統級測試用例以C 語言為主[2]。

2 UVM驗證結構

UVM 驗證方法學在過去的十年已經成為了動態功能驗證的主要方法。它在吸收了以往多種驗證方法學的基礎上,將驗證環境的構建、驗證組件的標準模型、驗證組件間的通信、寄存器模型集成、測試序列的組織和調度都納入其中[3]。

如圖1 所示,典型的UVM 驗證結構中需要包含這些組件:agent(由sequencer、driver、monitor 構成)、environment(由若干agent和子一級environment構成)、test(由一個頂層environment、register model、configuration object 構成)。與模塊驗證有關的代碼相比于設計代碼要多出很多[4]。從驗證代碼的類型劃分來看,可以分為驗證結構代碼、測試用例代碼、數據檢查代碼與功能覆蓋率代碼。在實際項目中由于工程師的經驗局限,每個驗證結構不僅無法保持類似結構,還需要重復投入的人力來完成前期驗證結構的搭建以及后期的管理維護。

圖1 典型UVM驗證結構

如圖2 所示,一種可擴展自動化驗證平臺不但可以讓驗證平臺以非常短的時間創建出來,還能保持驗證結構的一致性。結構化的驗證框架有助于保持數據檢查代碼和功能覆蓋率代碼的范式。該平臺也具備了標準的測試指令,便于驗證人員在多個項目間理解和復用已有的測試用例[5]。

圖2 Liezhen驗證平臺的增益

3 Liezhen(列陣)驗證平臺

Liezhen(列陣)驗證平臺可以將驗證環境搭建時間縮短到30 min 之內。依托于L 指令傳輸網絡和適配組件,Liezhen 可以使用標準化的測試指令來實現測試用例。

不同的設計往往具備多種不同的總線接口和系統控制信號[6]。如圖3 所示,Liezhen 驗證平臺可以針對不同接口產生相對應的驗證結構,用以滿足系統控制、寄存器訪問和數據傳輸等需求。不同的agent會同時監測總線信號,將總線采樣數據事務送往數據檢查組件和功能覆蓋率模型[7]。不同的agent 可以接收從lzn_net 傳遞的標準指令,再經由lzn_slave 適配為各個agent 可識別的激勵事務信息,最終通過接口發送至待測設計。這些標準指令可以由一個或者多個lzn_master 發送。

圖3 Liezhen驗證平臺的結構

Liezhen 驗證平臺可以在模塊級、子系統級和系統級滿足驗證需求,充當外圍激勵或者接管設計內部激勵,既能支持標準化的SV 和C 測試指令,也可以支持UVM sequence,實現多種激勵形式[8]。

3.1 自動化驗證平臺生成方法

Liezhen 驗證平臺生成驗證環境是通過一套完善的Python 腳本來實現的[9]。對于不同的待測設計,首先需要收集該設計的端口信息、寄存器信息、地址映射信息。端口信息列舉出各個總線端口、主從設置、激勵或者監測設置。如圖4 所示,這些信息可以通過圖形界面或者表格進行輸入,工具會將收集到的設計參數放入數據池。這些數據池中的信息會被分為四類,分別是配置數據、環境結構數據、寄存器數據和測試數據。分類好的數據會與各自的模板文件(Mako 格式文件)結合,最后由Python 實現的代碼生成器按照驗證結構、文件類型依次生成相對應的代碼。

圖4 Liezhen驗證平臺的生成過程

3.2 標準化測試指令

Liezhen 驗證平臺擁有一套標準化測試指令[10]。標準化指令可以使得驗證人員在不同的設計、驗證階段使用相同的測試指令進行測試。如表1 所示,標準測試用例按照用途可以分為數據訪問指令、信號控制指令、隨時數據指令、測試控制指令、核間通信指令、消息報告指令、斷言檢查指令、覆蓋率定義指令、I/O 外設控制指令等[11]。這些指令可以幾乎滿足所有需求,實現90%以上的測試用例。

表1 Liezhen標準化測試指令(部分)

標準化指令由lzn_master 組件發送,經由lzn_net傳遞至各個lzn_slave,再由lzn_slave 轉譯為各個總線driver 可以識別的激勵事務。指令的標準化可以對設計結構做到更大的靈活性,也能夠將SV 的測試指令通過SV DPI-C 技術轉為C 語言的測試指令[12]。

3.3 測試指令的傳送和轉譯

如圖5 所示,標準化測試指令能夠從lzn_master發送到lzn_slave,離不開lzn_net 的路由作用。在傳遞到目標agent 之前,測試指令需要經過若干層數據的打包和解包。指令的傳送和轉譯過程分為4層[13]。第一層轉換是由lzn_master 將指令類型、參數通過TLM2 協議接口傳送到lzn_net。lzn_net 由AHB 總線網絡構成,其將TLM2 事務通過網絡地址信息送往目標slave 端口。utb_slave 從AHB slave 端口獲得數據并轉換為指令數據包,這是第二層轉換。目標agent在接收到總線激勵事務前,還需要將指令數據包轉換為總線激勵事務,這需要第三層轉換。最終,總線agent會完成第四層轉換[14]。

圖5 Liezhen測試指令的傳輸和轉換

3.4 Liezhen驗證平臺的組成

如圖6所示,Liezhen驗證平臺除了自動化生成方式、mako 代碼模板、硬件設計結構參數、標準測試指令、指令傳輸網絡以外,還依賴VIP(Verification IP)。VIP 是驗證環境能夠快速構建的必備元素。在集成VIP 之后的測試中,會進行必要的VIP 和驗證結構的配置。中心化的配置可以對驗證環境中各個組件進行配置。標準化的測試指令,也便于引導驗證人員在實現測試用例時遵循統一的測試用例格式。

圖6 Liezhen測試平臺的構成要素

3.5 中心化的數據信息處理

從圖3 可知,Liezhen 在自動化生成驗證組件時,可以將各個總線agent 中的monitor 通過TLM 端口連接到scoreboard(數據檢查組件)和coverage model(覆蓋率模型)[15]。所有數據信息在匯集到數據檢查組件和覆蓋率模型后,有助于數據的比對和采集。

4 Liezhen在NoC的驗證應用

如圖7 所示,Liezhen 可以就NoC 的結構化特征,根據主端和從端的總線類型、地址位寬、數據位寬、地址映射等信息生成適配的驗證結構[16]。NoC 的結構一般由工具生成,一個復雜SoC 的NoC 拓撲結構也同樣復雜,Liezhen 可以在項目中與不時變化的NoC 結構保持一致。如果NoC 結構發生了變化,已經生成的Liezhen 測試平臺可以根據新的參數自動生成新的驗證結構[17]。

圖7 Liezhen面向NoC生成的驗證結構

NoC 的拓撲結構與Liezhen 驗證結構中的lzn_net 指令傳輸網絡相似。Liezhen 可以使用與NoC相同的設計結構參數來產生驗證環境。驗證環境產生的同時,可以產生訪問各個地址范圍的測試用例[18-21]。

5 Liezhen在LPDDR4的驗證應用

如圖8 所示,在驗證LPDDR4 的流程中,Liezhen可以根據設計結構,生成相匹配的LZN TB。它包含一個lzn_master 負責發送測試指令,一個AXI 端的lzn_slave 收發數據,一個AHB 端的lzn_slave 配置寄存器,還有兩個外部的memory 與LPDDR4 PHY 做數據存儲交互。在LPDDR4 controller 驗證過程中,lzn_master 可以先后通過lzn_slave(AHB)和lzn_slave(AXI)完成功能配置和數據發送,而且再通過lzn_net 直接訪問與LPDDR4 PHY 連接的存儲模型,完成數據比對。

圖8 Liezhen面向LPDDR4生成的驗證結構

在生成了結構化驗證環境之后,可以利用標準化測試指令很快實現基本測試,如下:

6 測試應用

如表2 所示,在將Liezhen 運用到芯片驗證以后,通過將傳統UVM 驗證環境和采用Liezhen 自動化生成驗證環境做對比,按照搭建時間、環境結構代碼量、測試用例構建時間、測試用例代碼量、回顧測試用例耗時、功能覆蓋率數據等多個維度做比較,可以發現Liezhen 的優勢,其能夠在項目中發揮實效。

表2 Liezhen在芯片驗證中的增效對比

7 結論

利用Liezhen 自動化平臺去管理和維護驗證環境更為簡單,因為多數驗證人員需要一致性的驗證結構,而又不需要為此投入太多的時間。Liezhen 自動化平臺用于構建和調試驗證環境的時間可以被顯著縮短,而節省下來的時間也有助于讓設計盡快穩定,加速項目進度。一致性的驗證結構既是測試平臺自動化的基礎,也是測試指令標準化的基礎。為了達到這種統一的驗證結構,Liezhen 可以適配不同類型的驗證IP,為不同類型的設計構建好相適應的驗證環境。同時,Liezhen 也可以支持掛載UVM 測試序列,從而實現對于激勵更為靈活的控制。在實際項目中,基于Liezhen 生成的測試平臺即可以支持SV命令形式,也可以支持C 命令形式,而這也為接下來將PSS(Portable Stimulus Standard)與Liezhen 自動化平臺相結合、為復雜的SoC 資源建模、為自動產生不同的測試場景和測試用例做好了準備。

猜你喜歡
測試用例指令總線
聽我指令:大催眠術
基于SmartUnit的安全通信系統單元測試用例自動生成
ARINC661顯控指令快速驗證方法
基于PCI Express總線的xHC與FPGA的直接通信
機載飛控1553B總線轉以太網總線設計
LED照明產品歐盟ErP指令要求解讀
基于混合遺傳算法的回歸測試用例集最小化研究
基于依賴結構的測試用例優先級技術
多通道ARINC429總線檢查儀
坐標系旋轉指令數控編程應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合