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