互連總線(xiàn)的產(chǎn)品生命周期(上)
可攜式刺激源標準(PSS)是最新的業(yè)界標準,其用來(lái)規范測試意圖與行為,讓測試刺激源可重復套用到不同的目標平臺。PSS不僅改變系統單芯片(SoC)傳統的確認與驗證方法,也帶來(lái)了許多優(yōu)點(diǎn)以及衍生不少挑戰。本文探討這些流程演變,以及從SystemC效能分析探索互連總線(xiàn)架構的生命周期,藉以透過(guò)通用型PSS流量產(chǎn)生器進(jìn)行確認與驗證。
隨著(zhù)設計要求日趨復雜,驗證技巧與方法也隨之不斷演進(jìn)??蓴y式刺激源標準(PSS)是演進(jìn)的最新產(chǎn)物,它的目的是因應測試可移植性的挑戰。新型PSS允許用戶(hù)建立測試意圖,藉以重復套用到不同的目標平臺。除了可移植性之外,PSS驗證技巧還提供多方面的價(jià)值,包括視覺(jué)測試代表性、限制設定、數據流隨機性及更高的測試質(zhì)量。
后續的流程演變,包括SoC確認與驗證流程,以及采用PSS技巧,這對了解其沖擊相當重要。本文探討這些演變,提出一項互連總線(xiàn)架構的案例研究,進(jìn)行SystemC效能分析解說(shuō)確認與驗證過(guò)程。
設計特點(diǎn)
隨著(zhù)設計復雜度持續攀升,包括SystemC模型分析、架構探索及高階合成(HLS)等流程演進(jìn),在傳統設計與整合流程中越來(lái)越常見(jiàn)。這些流程演變衍生出許多要求,其中包括檢查是否符合系統設計的要求。參與這些流程的團隊會(huì )用使用不同類(lèi)型的平臺與語(yǔ)言來(lái)推動(dòng)這些演變。盡管存在這些差異,后續流程的基本規格都是相同,因此導致出現許多重復工作。
架構研發(fā)團隊針對使用SystemC與架構探索與TLM模型分析法建立虛擬平臺,藉以執行架構探索與軟件開(kāi)發(fā)。組件設計團隊則會(huì )在模塊層級設計Verilog組件并加以整合,再以人工或自動(dòng)化程序建立系統。
IP層級的驗證通常采用UVM驗證在IP層級進(jìn)行,而在系統層級方面則使用C語(yǔ)言與以UVM方法。UVM環(huán)境讓檢查組件從IP層級到系統層級都能輕易重復使用,但測試刺激源通常會(huì )重新撰寫(xiě),藉以在頂層UVM環(huán)境運行,或使用C語(yǔ)言撰寫(xiě)藉以在芯片層級的處理器上運行。建立測試組件驗證startup類(lèi)別/組態(tài)以及模塊的基本模式運行,在實(shí)際芯片測試過(guò)程中會(huì )重復執行,因為測試平臺需要新測試程序或是必須在評估板上運行。因此軟件團隊必須針對客戶(hù)的接口撰寫(xiě)驅動(dòng)程序。
當各團隊使用不同語(yǔ)言與技巧執行重復性工作,經(jīng)常導致出現假性bug通報,并大幅拖慢上市時(shí)程。因此業(yè)界需要更好的解決方案,讓整個(gè)項目所有撰寫(xiě)測試碼的人員都用一套共通語(yǔ)言,并讓大部分的功能驗證測試在橫向與縱向方面都能無(wú)縫重復利用。這種不同以往的方法正是PSS驗證技巧帶來(lái)的優(yōu)勢。
PSS定義出新的測試撰寫(xiě)語(yǔ)言,它將讓業(yè)界能自動(dòng)產(chǎn)生測試程序,運用單一測試源套用到不同平臺。除了橫向的可重復使用性(模擬、仿真、機板層級、測試器等),新語(yǔ)言還允許測試程序的縱向重復使用性。在IP層級開(kāi)發(fā)的測試程序在SoC層級上可更輕易整合與重復使用。
可攜式刺激源在更高的抽象層上運行,它和目標平臺的種類(lèi)完全獨立。這里的目標平臺可以是UVM式驗證環(huán)境、C/C++與SoC型環(huán)境、C語(yǔ)言與PythonR芯片后評估平臺等。
PSS應用提供建立通用型應用的卓越機會(huì ),用來(lái)在各種層級進(jìn)行檢驗與測試意圖。在多處理器SoC中使用互連總線(xiàn),也會(huì )出現類(lèi)似的機會(huì )。我們需要在不同層級檢驗與評估功能及效能。
由于必須根據SoC的特定需求明智挑選互連總線(xiàn)架構,因此需要進(jìn)行初期效能分析,這方面可使用系統模型分析(通常以C/SystemC語(yǔ)言撰寫(xiě))。這方面必須建立可檢驗系統模型的測試程序。選好組態(tài)以及產(chǎn)生RTL之后,就需要執行IP層級的檢驗。這方面需要執行UVM驗證以及UBM程序。因此,產(chǎn)生的RTL除了在SoC系統層級進(jìn)行整合,還需執行在SoC層級的驗證。這方面通常是撰寫(xiě)C/C++執行程序的驗證與確認
所有這些互連驗證應用都可采用PS技巧建立可重復使用的測試程序。要完成這種工作,會(huì )針對通用流量產(chǎn)生器建立PSS模型,這種模型會(huì )針對不同主控器(master)數量建立不同的讀取與寫(xiě)入模式。流量產(chǎn)生器會(huì )針對每種主控器產(chǎn)生不同分布的流量,藉以仿真(emulated)高速與慢速的主控器。
此外,我們還能單獨控制哪個(gè)主控器在什么頻率下產(chǎn)生流量,以及建立連續(back-to-back)與延遲的交易。圖1顯示運用PSS流量產(chǎn)生器的流程。紫色模塊代表含有通用從屬端與主控器的互連總線(xiàn),綠色模塊則代表RTL,或是驅動(dòng)總線(xiàn)交易的行為模型。PSS式流量產(chǎn)生器(粉紅色)整合與控制這些模塊,用來(lái)驅動(dòng)與收集交易。流量產(chǎn)生器除了應付不同種類(lèi)的流量產(chǎn)生需求,還針對SystemC應用、UVM、以及C語(yǔ)言測試等各種目標建立測試。每種程序在整合與測試方面的處理方式都不相同,我們會(huì )在后面詳細介紹。
圖1 : 互連總線(xiàn)在效能分析與驗證的PSS流程
互連總線(xiàn)的SystemC效能分析
互連總線(xiàn)的效能分析是在SoC開(kāi)發(fā)流程中盡可能在初期對系統效能與功率進(jìn)行定量量測?;ミB總線(xiàn)的效能必須針對各種類(lèi)型應用、平臺、以及互連組態(tài)(拓撲、功能、組態(tài))進(jìn)行評估。過(guò)程中涉及搜集需求、建立規格、歸納出這些規格、最終轉化為符合效能/功率/面積要求的內聚設計。迭代程序在設計過(guò)程中持續進(jìn)行。每次迭代都必須搜集規格,并和設計與研發(fā)團隊進(jìn)行交流。
這方面是采用SystemC代表TLM模型,藉以反映SoC規格,這些規格可用來(lái)精準預測系統行為。圖2顯示這種流程,一開(kāi)始是從設定工具開(kāi)始,工具用來(lái)產(chǎn)生SystemC模型。這些模型是工具套件的一部分,我們設定套件使其配合設計的各項需求。它可用來(lái)產(chǎn)生精準周期,或針對AMBA主控器與從屬端、頻率產(chǎn)生器、以及刺激源建立粗略模型。產(chǎn)生模型后,必須撰寫(xiě)這個(gè)層級的流量模式,可選擇以人工撰寫(xiě)或使用自動(dòng)程序文件將規格轉換成實(shí)際仿真與產(chǎn)生結果。之后運用特定仿真器來(lái)仿真模型,提供解決方案進(jìn)行效能的量化分析。
圖2 : 使用SystemC建模法分析效能
盡管已有模型與分析工具,但使用這些工具來(lái)處理多項候選設計,耗費時(shí)間會(huì )相當可觀(guān)。使用描述式(scripts)來(lái)產(chǎn)生流量雖然可以提供某些類(lèi)型的流量模式,但繁復的情境產(chǎn)生程序仍會(huì )是一項問(wèn)題。此外,由于各項模擬非常費時(shí),因此在模擬結束后進(jìn)行分析,勢必會(huì )增加試驗的數量,藉以達到預期的數據。
另外,再加上設計以及效能建模程序中花在規格管理的時(shí)間,可看出我們需要更趨自動(dòng)化的流程,這種流程應以單一來(lái)源做為起點(diǎn)。PSS技巧是因應這些挑戰的有效方法。PSS工具的隨機化機制,一開(kāi)始是抽象描述DUT高階狀態(tài)的合法交易,然后自動(dòng)列舉覆蓋測試所需的最小測試組合,涵蓋整個(gè)狀態(tài)空間的各路徑。
PSS工具的覆蓋機制能衡量在特定狀態(tài)空間中已覆蓋多少狀態(tài)。這種能力讓系統在產(chǎn)生任何刺激源之前就能量測覆蓋狀況,因此能節省執行此程序的時(shí)間。PSS覆蓋數據讓用戶(hù)能檢視橫向(transverse)路徑以及產(chǎn)生測試程序,藉以覆蓋最大長(cháng)度的圖像。因此能以遠低于一般受限隨機驗證程序耗費的周期,藉以達到更高的覆蓋率。
PSS工具亦提供測試意圖的視覺(jué)代表,藉以提供更好的情境圖像表征。指向式測試涵蓋特定的測試條件,可透過(guò)這項功能輕易轉移。此外它亦能限制某些條件組合,因此能針對特定功能組合建立受限制隨機情境。PSS技巧基本上能維持如圖2所示的流程,但路線(xiàn)產(chǎn)生程序會(huì )有明顯的改變。
流量產(chǎn)生器的核心是通用PSS模型,模型容納的算法負責產(chǎn)生不同類(lèi)型的流量模式。這是刺激源與測試情境的單一表征方式。這種模型可用多種方法進(jìn)行設定,產(chǎn)生的測試程序可包含許多可能產(chǎn)生流量組合的其中一項。它包含三個(gè)部分:
1.執行模塊(Exec blocks)
執行模塊是從外部程序代碼擷取的陳述,這些陳述位于目標平臺的PSS包裝函式(wrapper)。對于SystemC程序,客制化程序代碼會(huì )執行不同類(lèi)型的讀取與寫(xiě)入作業(yè),將數據寫(xiě)入底層環(huán)境。在UVM SV部分,它也有衍生至工具提供宏(收發(fā)器產(chǎn)生)的邏輯,并透過(guò)PLI系統呼叫來(lái)和SV世界進(jìn)行互動(dòng)。另外還有一個(gè)部分(C語(yǔ)言產(chǎn)生)能執行轉譯與運用C語(yǔ)言進(jìn)行互動(dòng),在不同平臺之間無(wú)縫重復備使用。
2.PSS模型 :
根據整組規格建立的實(shí)際使用案例模型。它包含的功能組合,涵蓋執行一系列動(dòng)作的高階程序。流量產(chǎn)生器包含不同的算法組合,代表各種簡(jiǎn)單與復合動(dòng)作。這些功能最終會(huì )呼叫執行模塊的函式,用來(lái)在SV端執行指令。
3.PSS組態(tài):
模型一般需要特定信息來(lái)產(chǎn)生特定測試。這些信息和驗證有關(guān)連,像是AMBA主控器、從屬端、主控器種類(lèi)、來(lái)源與目的地地址、存取種類(lèi)、平均帶寬、突發(fā)大小、數據量、頻率、以及帶寬需求等。這項信息必須取自規范,藉以產(chǎn)生測試意圖的正確表征。
圖3 代表PSS流量模式產(chǎn)生流程,最先是從剖析規格開(kāi)始。Python語(yǔ)言撰寫(xiě)的描述式用來(lái)剖析電子表格格式的規格,擷取出特定格式的數據可透過(guò)PSS模型與組態(tài)加以讀取。之后利用PSS工具剖析PSS模型與組態(tài),產(chǎn)生測試意圖的視覺(jué)表征。
圖3 : 運用PSS流程產(chǎn)生流量模式
圖4顯示一部分的測試意圖視覺(jué)表征。圖中有代表寫(xiě)入與讀取作業(yè)的條件、單一或Burst Mode,以及不同總線(xiàn)大小,可加以控制以產(chǎn)生不同類(lèi)型的流量模式。紫色的部分代表能轉移(transverse)的條件,藍色則屬于不被納入考慮的部分。這種安排能協(xié)助用戶(hù)圖像化,以及限制部分的流量。
圖4 : 測試意圖與PSS覆蓋范圍的視覺(jué)代表圖
倘若使用者沒(méi)有加入限制條件,PSS工具會(huì )隨機選取某些組態(tài),然后建立受限制的隨機測試。在這個(gè)階段還可以搜集工具覆蓋范圍,以及提早分析完整性(completeness)。工具執行的覆蓋分析方法,可在工具產(chǎn)生測試中衡量測試意圖的覆蓋狀況。圖4代表PSS工具產(chǎn)生的PSS覆蓋范圍。粉紅色模塊代表未覆蓋的條件,綠色則代表已覆蓋的條件。使用者可觀(guān)察這種代表圖,針對未覆蓋的條件建立測試。
在產(chǎn)生測試程序后,再執行后置處理描述式以建立流量模式,這種模式兼容于效能分析仿真工具的客制化格式。接著(zhù)下一步是執行模擬并產(chǎn)生流量,產(chǎn)生大量的未處理數據,這些數據之后經(jīng)過(guò)處理,匯整出不同標準的數據與視覺(jué)圖像,對結果進(jìn)行有效分析。
表1顯示幾個(gè)例子,這些產(chǎn)生報告內含各項參數,用來(lái)針對含有多個(gè)主控器與從屬端的SoC對其除錯器進(jìn)行效能分析,再對獲得的數據進(jìn)行計算。這種分析可以是一(主控器)對一(從屬端)與多對一模擬(稱(chēng)為實(shí)驗),根據平臺規格產(chǎn)生結果。系統是根據頻率頻率的靜態(tài)分析以及平臺規格定義的數據寬度產(chǎn)生這些實(shí)驗,設定用來(lái)讓系統在理論最高帶寬運行。
一般而言,PSS流量允許更好地配置隨機情境,鎖定特定的總線(xiàn)組態(tài)。此外,測試意圖的視覺(jué)表征有助于產(chǎn)生更好的限制??梢暬采w促成更好的流量模式,因此在特定的主控器-從屬端系統中,只需較少次數的迭代就能達到最高的可行帶寬。
表1. 運用系統解決方案PSS仿真的數據收集
實(shí)驗 ID | 主控器 | 從屬端 | 方向 | 平均仿真帶寬 | 平均靜態(tài)帶寬 | 平均仿真延遲 |
5000 | Core | SMMR | Read | 1199.72 | 6000 | 24 |
5001 | Core | SMMR | Write | 999.79 | 6000 | 24 |
5002 | Core | L2 mem | Write | 99.92 | 100 | 24 |
5003 | Core | L2 mem | Read | 99.92 | 100 | 21.34 |
我們看到實(shí)質(zhì)的改善,包括運用PSS技巧,在經(jīng)過(guò)次數的迭代后就能達到最高平均仿真帶寬,進(jìn)而節省仿真周期與分析時(shí)間。藉由減少建立互連架構效能模型所需的工作量,以及在統一規格下的單一真值來(lái)源(single source of truth),任何重新設定時(shí)間都能大幅縮短。這樣的流程讓我們能探索許多設計候選方案,然后選用其中一項執行時(shí)序收斂以及RTL流程。
(本文作者Gaurav Bhatnagar、Courtney Fricano為ADI主任工程師)
評論