作者:Gaurav Bhatnagar and Courtney Fricano
便攜式激勵標準 (PSS) 是最新的行業標準,旨在規范測試意圖和行為,以便測試激勵可以在各種目標平臺上重復使用。PSS的引入改變了驗證和確認片上系統(SoC)的傳統方法,提供了許多優勢和一些挑戰。本文探討了互連總線結構生命周期的這些過程變化,從基于 SystemC 的性能分析到使用基于 PSS 的通用流量生成器進行驗證和確認。
介紹
自從設計要求開始變得復雜以來,驗證技術和方法一直在不斷發展。便攜式激勵標準 (PSS) 是這一演進過程的最新成員,旨在解決測試可移植性的挑戰。新的 PSS 允許創建測試意圖,以便它可以在不同的目標平臺上重復使用。除了可移植性外,基于 PSS 的驗證技術還在可視化測試表示、約束設置、基于數據流的隨機化和更高的測試質量方面提供了價值。隨著采用基于 PSS 的技術,SoC 驗證和確認過程中涉及后續流程更改,了解其影響非常重要。本文試圖通過互連總線結構的案例研究來探索這些過程變化,從基于 SystemC 的性能分析到驗證和確認。
詳細說明
隨著設計變得越來越復雜,基于 SystemC 的建模、架構探索和高級綜合 (HLS) 等流程變化與傳統設計和集成流程一起變得越來越普遍。這些過程更改反過來又引入了檢查是否符合系統設計要求的要求。參與這些流程的不同團隊具有不同類型的平臺和語言來支持這些更改。但是盡管存在這種差異,但每個連續過程的基本規格是相同的,這導致了大量的重復工作。
架構開發團隊使用基于 SystemC 和 TLM 的建模為架構探索和軟件開發創建了一個虛擬平臺。組件設計團隊在塊級別設計 Verilog 組件,并將它們集成以手動或自動化過程創建系統。IP 級別的驗證通常使用基于 UVM 的驗證來完成,而在系統級別,則使用基于 C 和 UVM 的方法的組合。UVM 環境允許檢查器從 IP 級到系統級輕松重用,但測試激勵通常會被重寫為在頂級 UVM 環境中工作,或者在 C 語言中工作以在芯片級處理器上運行。在實際硅測試中重復創建測試來驗證模塊的啟動/配置和基本模式操作,因為測試平臺或評估板上需要新的測試。然后,軟件團隊再次努力為客戶界面編寫軟件驅動程序。
使用不同語言和技術的團隊之間的這些重復工作會導致頻繁的錯誤報告,并顯著延長整體上市時間。需要更好的解決方案來允許整個項目中的所有測試編寫者使用通用語言,并允許大部分簡單的功能驗證測試在水平和垂直方向上無縫重用。這種不同的方法正是基于 PSS 的驗證技術帶來的。
PSS 定義了一種新的測試編寫語言,允許從單個測試源自動創建針對不同平臺的測試。除了水平重用(仿真、仿真、板級、測試儀等)之外,新語言還將允許測試的垂直重用。在IP級別開發的測試將更容易在SoC級別集成和重用。可移植激勵在更高的抽象層工作,該抽象層完全獨立于目標平臺的類型。此處的目標平臺可以是基于 UVM 的驗證環境、基于 C/C++ 和基于 SoC 的環境、基于 C 和 Python 的硅后評估平臺等。?
基于 PSS 的應用程序為創建通用應用程序提供了令人興奮的機會,這些應用程序可用于驗證各個級別的測試意圖。當我們在多處理器 SoC 中使用互連總線結構時,也會出現類似的機會。我們需要在各個級別驗證和評估功能和性能。
需要根據 SoC 的特定要求明智地選擇互連總線結構,因此需要進行早期性能分析,這可以使用系統模型(通常在 C/SystemC 中)來完成。這需要創建可以驗證系統模型的測試。一旦選擇了其配置并生成了 RTL,就需要在 IP 級別對其進行驗證。這需要基于 UVM 的驗證和 UVM 序列來驗證相同的內容。隨后,生成的 RTL 被集成到 SoC 系統級別,需要在 SoC 級別進行驗證。這通常是通過在 C/C++ 中對測試進行編碼來完成的,以進行驗證和確認。
所有這些互連驗證應用程序都可以通過使用基于 PSS 的技術創建可重用的測試來處理。為此,為通用流量生成器創建了一個 PSS 模型,該模型可以為不同數量的主服務器創建不同的讀取和寫入模式。流量生成器可以為每個主站生成具有不同分布的流量,以便可以模擬快速和慢速主站。
此外,它可以獨立控制哪個主站以什么頻率生成流量,以及創建背對背和延遲交易。圖 1 顯示了使用 PSS 的流量生成器的流程。紫色塊表示具有通用從站和主站的互連總線,而綠色塊表示驅動總線上事務的 RTL 或行為模型。基于 PSS 的流量生成器(以粉紅色表示)集成并控制這些塊以驅動和收集交易。流量生成器處理不同類型的流量生成要求,并為各種目標(如基于 SystemC 的應用程序、UVM 和基于 C 的測試)創建測試。每個過程都需要在集成和測試生成方面以不同的方式處理,這將在后續部分中描述。
圖1.基于 PSS 的工藝流程,用于互連總線的性能分析和驗證。
基于系統C的互連總線性能分析
對互連總線進行性能分析,在SoC開發周期中盡早定量測量系統性能和功耗。需要針對各種應用、平臺和互連配置(拓撲、功能、配置等)評估互連總線的性能。它涉及收集需求,創建規格,然后將這些規格轉化為符合性能、功耗和面積要求的有凝聚力的設計。這是一個在設計過程中執行的迭代過程。每次迭代都需要捕獲規范并將其傳達給設計和開發團隊。
這是通過給定SoC規范的基于SystemC的代表性TLM模型實現的,該模型可用于準確預測系統的行為。圖 2 顯示了此流程,從配置用于生成 SystemC 模型的工具開始。這些模型是工具包的一部分,可以根據設計需求進行配置。它可用于為 AMBA 主站和從站、時鐘發生器和激勵生成周期精確或近似模型。模型到位后,需要在此級別編寫流量模式,手動或使用定向自動化腳本將規范轉換為實際仿真并收集結果。然后使用特定的模擬器對模型進行仿真,這些模擬器有助于提供量化性能的解決方案。
圖2.使用 SystemC 建模的性能分析流程。
盡管有建模和分析工具,但將該工具用于少數候選設計可能非常耗時。使用腳本生成流量提供了某些類型的流量模式,但詳盡的場景生成仍然是一個問題。最重要的是,由于模擬非常耗時,因此在模擬結束時進行分析會增加試驗次數,以達到預期數量。再加上在整個設計和性能建模功能中花費在規格管理上的時間,我們看到需要從單一來源開始的更加自動化的流程。基于PSS的技術是應對這些挑戰的有效方法。
基于 PSS 的工具中的隨機化機制從對 DUT 高級狀態之間的合法轉換的抽象描述開始,并自動枚舉覆蓋通過此狀態空間的路徑所需的最小測試集。基于 PSS 的工具具有覆蓋機制,可以測量給定狀態空間中條件的覆蓋程度。這允許在任何生成的刺激運行之前測量覆蓋范圍,從而節省過程中的時間。基于 PSS 的覆蓋率允許用戶查看橫向路徑,并允許生成測試,以便覆蓋圖形的最大長度。因此,它能夠在比通常的約束隨機驗證少得多的周期內實現更高的覆蓋率。
基于 PSS 的工具還提供測試意圖的可視化表示形式,從而可以更好地可視化可以生成的方案。使用此功能,可以輕松橫向覆蓋特定測試條件的定向測試。它還允許約束某些條件集,從而為特定特征集創建受約束的隨機場景。基于 PSS 的技術的引入基本上保留了圖 2 中給出的流程,但跟蹤生成流程發生了很大變化。
流量生成器的核心是一個通用 PSS 模型,其中包含用于生成不同類型流量模式的算法。它是刺激和測試場景的單一表示。可以通過不同的方式配置此模型,以生成包含可能生成流量的幾種排列之一的測試。它由三部分組成:
執行塊:exec 塊是基于 PSS 的包裝器下目標平臺中使用的外部代碼的語句。對于 SystemC 端應用程序,它具有自定義代碼,這些代碼將對基礎環境執行不同類型的讀取和寫入。對于UVM SV部分,它具有從工具提供的宏(收發器生成)派生的邏輯,該宏通過基于PLI的系統調用轉換SV世界并與之交互。它還有一個部分(C生成),可以轉換并與C端交互,并允許跨不同平臺的無縫重用。
PSS 模型:這是基于整套規范的實際用例模型。它由一組函數組成,這些函數等效于執行一組操作的更高級別序列。流量生成器包含不同的算法集,這些算法以各種簡單和復合操作的形式表示。這些函數最終將從 exec 塊調用函數以在 SV 端執行命令。
PSS 配置:通用模型需要特定信息才能生成特定測試。這可以是與驗證相關的信息,例如 AMBA 主站、從站、主站類型、源地址和目標地址、訪問類型、平均帶寬、突發大小、數據大小、頻率和帶寬要求。此信息需要從規范中派生,以生成測試意圖的正確表示。
圖 3 表示基于 PSS 的流量模式生成流程,該流程從規范解析開始。基于 Python 的腳本解析電子表格中編寫的規范的某些方面,并以通用 PSS 模型和配置可以讀取的特定格式提取數據。然后,PSS 工具分析 PSS 模型和配置,以創建測試意圖的可視化表示形式。圖 4 顯示了測試意圖的某些可視化表示形式。它具有表示為寫入或讀取操作、單或突發模式、不同總線大小等的條件,可以控制這些條件以生成不同類型的流量模式。紫色的部分表示為橫向條件,而藍色的部分將不考慮在內。這有助于用戶可視化和限制所需流量的不同方面。如果用戶不添加約束,PSS 工具將隨機選擇某些配置并創建受約束的隨機測試。這也是可以收集基于工具的覆蓋范圍并可以對完整性進行早期分析的點。基于工具的覆蓋率是衡量工具生成的測試中測試意圖的覆蓋程度的度量。圖 4 表示由 PSS 工具生成的部分基于 PSS 的覆蓋范圍。粉色塊表示未涵蓋的條件,而綠色塊表示已覆蓋的條件。用戶可以查看此表示形式,并為未涵蓋的條件創建測試。?
圖3.基于 PSS 的流,用于生成流量模式。
圖4.測試意圖和基于 PSS 的覆蓋范圍的可視化表示。
生成測試后,將運行后處理腳本,以創建自定義格式與性能分析模擬工具兼容的流量模式。下一步是運行模擬并生成流量以生成大量原始數據,這些數據必須處理成不同的指標和可視化效果,以支持對結果的有效分析。表 1 顯示了生成的報告的幾個示例,其中考慮了用于計算具有多個主站和從機的 SoC 互連總線性能分析的參數。此分析可以根據平臺規范生成一個(主)對一(從)和多對一模擬(稱為實驗)。實驗基于對平臺規范中定義的時鐘頻率和數據寬度的靜態分析生成,配置為運行到其理論最大帶寬。通常,基于 PSS 的流量允許更好地放置針對特定總線配置的隨機方案。此外,測試意圖的可視化表示允許生成更好的約束。可視化覆蓋范圍的能力可以帶來更好的流量模式,從而減少迭代次數,以達到給定主從系統中的最高可能帶寬。
實驗編號 | 主人 | 奴隸 | 方向 | 平均模擬帶寬 | 平均靜態帶寬 | 平均模擬延遲 |
5000 | 核心 | 嘟 | 讀 | 1199.72 | 6000 | 24 |
5001 | 核心 | 嘟 | 寫 | 999.79 | 6000 | 24 |
5002 | 核心 | L2 內存 | 寫 | 99.92 | 100 | 24 |
5003 | 核心 | L2 內存 | 讀 | 99.92 | 100 | 21.34 |
通過采用基于 PSS 的技術,我們已經看到達到最高平均模擬帶寬所需的迭代次數有所改善,從而節省了仿真周期和分析時間。
通過減少制作互連架構性能模型所需的工作,以及統一規范中的單一事實來源,任何重新配置時間都大大減少。該流程允許我們探索許多候選設計,然后再確定一個設計方案,以運行時序收斂和 RTL 流程。
基于 UVM 的互連總線驗證
互連結構的性能分析給出了性能、功耗和面積方面的最佳配置。一旦互連配置被凍結,它就可以用于生成具有可配置自動化流程的 AMBA 互連 RTL。但是,由于配置限制、軟件結構和規范的手動解釋,此流程可能容易出錯,因此需要對其進行驗證以確定完美的生成過程。傳統上,這是通過使用基于UVM的行業標準方法來實現的。
用于驗證互連總線的 UVM 環境如圖 5 所示。它由不同類型的AMBA(AXI,AHB,APB)主站和UVC從機組成,其自定義配置分別連接到DUT從站和主站。可以使用環境的通用配置來配置環境。記分板記錄事務,并指示任何類型的數據不匹配的錯誤。
圖5.互連總線的基于 UVM 的 IP 驗證。
這些測試包含控制底層 UVC 和接口功能的序列和虛擬序列集。測試根據從規范派生的測試計劃運行,包括定向和隨機測試用例。還根據驗證計劃創建了功能覆蓋點,以確保我們符合規范。在此之后,運行模擬并創建覆蓋率數據庫以收集代碼和功能覆蓋率。對數據庫進行分析,并審查覆蓋漏洞。運行回歸,并生成和分析報告。重復該過程,直到達到所需的覆蓋目標,以確保高質量的驗證。
除了作為驗證計劃一部分的定向測試外,基于 UVM 的技術還依賴于隨機測試來實現覆蓋目標。它從隨機刺激開始,逐漸收緊約束,直到達到覆蓋目標,依靠隨機化和計算服務器場的蠻力來覆蓋狀態空間。代碼覆蓋率是定量度量,而功能覆蓋率是 DUT 代碼執行的定性度量。通常,這種質量受到制定驗證計劃和分析承保范圍報告的人員的勤奮和徹底性的限制。決定驗證質量的另一個因素是有效的自動檢查。使用記分板和基于斷言的檢查點進行數據包比較的組合可以決定稍后在流中發現的硅后錯誤的數量。基于UVM的驗證技術在確保高質量驗證方面是自給自足且有效的。然而,基于PSS的技術的引入進一步改善了驗證流程,其各種功能。
基于 PSS 的驗證從根據設計規范創建驗證計劃和設置驗證環境開始。測試意圖是根據可移植激勵模型、約束和配置文件捕獲的。然后,支持該標準的工具可以為給定類型的驗證環境生成測試,并收集基于圖形的覆蓋范圍。對此類覆蓋率的分析可以指出測試約束和配置中的漏洞,并且可以重新訪問該過程。
圖 6 顯示了引入基于 PSS 的模型后的驗證流程。這里要注意的重要一點是,基于 PSS 的模型不會取代基于 UVM 的環境。相反,它添加到現有的基于 UVM 的環境中以增強其功能。UVM 驗證環境繼續具有主 UVC 和從 UVC,具有 SB 和配置,而 UVM SV 基礎架構繞過了虛擬序列。環境由頂級UVM測試控制,一方面調用虛擬序列來控制UVC操作,另一方面,它通過基于PLI或DPI的系統調用與便攜式激勵生成的格式進行交互。PSS 模型完全從基于 SystemC 的性能建模過程中重用。從基于 PSS 的模型生成的測試邏輯控制 UVC 之間的所有操作。使用生成的測試運行 IP 級別模擬并收集覆蓋范圍。
圖6.互連總線的基于 PSS 的 IP 驗證。
表 2 顯示了使用 PSS 和 UVM 的驗證環境運行的回歸結果。采用基于 UVM 的方法后,為達到最大覆蓋范圍(有豁免)而運行的約束隨機測試的數量顯著減少。基于 PSS 的驗證中的隨機化機制從對 DUT 高級狀態之間的法律轉換的抽象描述開始,并自動枚舉覆蓋通過此狀態空間的路徑所需的最小測試集。基于圖形的覆蓋率允許用戶查看橫向路徑,并允許生成測試,以便覆蓋圖形的最大長度。
測試運行 | 通過 | 失敗 | 不運行 | 總體代碼覆蓋率 |
(僅限紫外線)125 | 125 | 0 | 0 | 298034/388949 (76.6%) |
(UVM PSS)75 | 75 | 0 | 0 | 298034/388949 (76.6%) |
測試質量是便攜式激勵驗證方法可以更好地控制的另一個因素。可以直觀地看到測試,使用戶能夠以更好的方式理解控制和數據流。此外,某些工具允許在運行時進行主動檢查,從而實現有效的自動檢查。這將與記分牌檢查和基于斷言的檢查點相結合,提高核查質量。
可移植激勵方法在更高的抽象層工作,然后與底層驗證過程集成。因此,盡管測試或激勵生成過程有一定的改進,但這種驗證方法仍將繼承其原始形式的基礎過程。在與基于 UVM 的環境集成的情況下,一方面它將受益于驗證組件的重用,另一方面,它將受到其復雜性的限制。同樣,與UVM的情況一樣,核查的質量受到核查計劃和覆蓋率報告分析質量的限制。
互連總線的 SoC 驗證
當互連作為SoC的一部分集成時,檢查其與系統中各種主站和從站的集成至關重要。這通常通過在處理器上運行的基于 C 的測試來完成,以檢查互連總線的集成。IP 級別的通用主站更改為特定的總線主站,如多個處理器、DSP、DMA 控制器、串行協議主站(如 SPI、I2C,CAN以及更多自定義主站和從站。這需要特定的序列或宏,旨在控制SoC中的不同主站和從站。宏或序列通常具有寄存器編程,以實現來自DMA控制器,存儲器等主站的發送和接收事務。此級別沒有受約束的隨機化,因此需要手動探索和編寫每個方案。在重用方面,IP級別的一些UVM監視器可用于監視協議或記分牌以檢查特定的興趣點。但是包含規范主要部分的測試和序列需要在 C 語言中重做,并具有不同的重點。
基于 PSS 的驗證技術專為 IP 到 SoC 測試重用而設計。圖 7 顯示了流量生成器 PSS 模型在 SoC 級別驗證中的重用。在 IP 級別編碼的模型根據 SoC 規范針對不同的地址映射進行配置,并針對 C 測試生成進行配置。在 IP 級別編寫的同一組序列具有基于圖的約束隨機化,可以重復使用。當我們為基于處理器的應用程序編寫模型時,模型中的幾乎所有序列(用于執行代碼的部分除外)都是可重用的。話雖如此,在這種情況下,exec 代碼要復雜得多,包括為各種主站(如 DMA 和內存控制器)完全啟用和禁用宏,這些主控器可以在互連總線上啟動單個或突發事務。對于每個通用主站,需要重寫 exec 代碼,以便它可以與 SoC 中的各種主站集成。該工具隨機化允許主從交易的多種組合。在 SoC 級別為集成檢查創建定向測試的限制可以通過測試的可視化表示得到很好的管理。生成 C 測試后,它們將與具有某些系統特定標準基礎結構的 SoC 設置集成。然后編譯 C 測試并在處理器上運行以生成事務。
圖7.互連總線的基于 PSS 的 SoC 驗證。
圖 7 還顯示了使用 PSS 工具創建多核測試的過程,這些工具很難手動編寫。測試意圖的不同部分可以針對在不同的內核上運行,從而允許創建有趣的場景。在這種情況下,如果存在多個總線主站,它特別有用。由于此功能集,可以對不同的主站進行編程。能夠在 SoC 級別重現基于圖形的約束隨機測試,而無需實際重新編碼場景,這也是一個主要優勢。它還允許測試生成檢查具有不同地址映射的同一 IP 的不同實例。除此之外,當不同IP的不同類型的PSS模型在SoC級別組合時,可以創建復雜的場景,否則很難手動編碼。
互連總線驗證
驗證過程是確定產品符合客戶規范、可用性和驗收測試所必需的。傳統上,評估板需要基于C的測試,這些測試是根據原始規范手動編寫的。通過使用基于PSS的方法,可以生成與評估軟件兼容的C測試,可以大大減少這種重復工作。
圖 8 顯示了使用 PSS 的方法進行驗證的過程。流量生成器的 PSS 模型可以根據 SoC 規范配置為不同的地址映射,并針對 Eval-C 測試生成進行配置。PSS 工具通常能夠為多個內核生成測試,這也支持特定的方案測試。生成的C測試由調試器編譯,代碼通過JTAG等接口加載到評估板上。可以在評估板和調試器界面上運行測試并查看結果。在SoC級別編寫的同一組序列具有基于圖的約束隨機化,完全可以重復使用。除此之外,測試意圖的可視化表示形式和應用約束的能力對于創建定向方案非常方便。這是一種在傳統上完全手動的驗證過程中創建測試的獨特且受控的方法。
圖8.互連總線的基于 PSS 的硅驗證。
同樣,需要根據芯片驗證的特定要求重寫exec代碼。驗證平臺中用于控制總線上不同主站的基本軟件驅動程序(如DMA和內存控制器)通常可用于此類應用。生成的 C 代碼還需要以評估平臺可接受的格式進行集成。通常,此過程包括重用標頭,從預先編寫的驗證代碼中獲取文件,并在生成的集成代碼中重用它們。然后編譯代碼并使用目標調試器運行,以確保在此級別進行適當的測試。
PSS 工具通常提供使用后處理應用程序分析運行結果的功能。可以對指示測試通過或失敗的結果進行可視化分析,并生成代碼的特定段產生結果。這在驗證過程中特別有用,因為傳統的調試功能在這里非常有限。
雖然我們還沒有在后硅基應用程序中重用流量生成器模型的 C 測試,但我們相信它可以在任何采用基于 C 的測試的評估平臺上使用。事實上,基于SoC的PSS模型被重用于硅后評估板的模型類型已被證明可用于其他基于處理器的應用。這種重用是僅基于便攜式激勵的方法所特有的應用。
總結
基于 PSS 的通用流量生成器允許從基于 SystemC 的性能分析到驗證和確認過程的互連總線的測試重用。每個進程都需要集成和基礎設施開發。但這是一個一次性過程,并提供了在后續應用程序中重用的可能性。除了重用之外,基于 PSS 的方法在特異性隨機化、測試意圖的可視化表示和早期覆蓋分析方面具有優勢,從而增加了更多價值。創建通用應用程序的能力允許即插即用解決方案的可能性,這可以進一步加快驗證和確認過程。
審核編輯:郭婷
-
處理器
+關注
關注
68文章
19293瀏覽量
229923 -
soc
+關注
關注
38文章
4169瀏覽量
218330 -
總線
+關注
關注
10文章
2887瀏覽量
88113
發布評論請先 登錄
相關推薦
評論