李 輝,巨鵬錦,計永興
(上海高性能集成電路設計中心,上海 201204)
在信息化革命早已席卷全球的今天,人們比以往任何時候都更依賴計算機,而在計算機的各種存在形態(tài)中,服務器擁有無可替代的重要地位,擔負著對信息的存儲、篩選、分析和加工等諸多任務。近年來,隨著國家信息安全戰(zhàn)略的穩(wěn)步推進,國產服務器作為“十三五”期間國家信息安全鏈上的重要一環(huán),已成為重點發(fā)展的對象。面對大數據、云計算對服務器處理器在運算能力、主存容量和網絡服務能力等方面的需求,國產高性能服務器處理器的研制也從多核發(fā)展階段進入到多路系統(tǒng)階段。處理器設計的復雜度和規(guī)模成倍增長,而硬件設計能力與驗證能力的差距在不斷增大[1],驗證周期不斷增長,甚至貫穿整個芯片開發(fā)周期[2]。面對高性能處理器設計復雜度和規(guī)模不斷增大的挑戰(zhàn),業(yè)界采用了模擬驗證[1 - 4]、硬件仿真加速驗證[5,6]、FPGA原型驗證[7]和形式驗證[6,8]等方法開展驗證工作,其中模擬驗證仍然是處理器驗證的主要手段。
支持多路直連的服務器處理器可通過高速直連接口構建主存全共享的SMP(Symmetric MultiProcessor)系統(tǒng),這使得處理器的驗證復雜度從單處理器規(guī)模上升到了多處理器系統(tǒng)級規(guī)模,Cache一致性的驗證也從單路多核處理器規(guī)模上升到了多路多核處理器規(guī)模,不但規(guī)模更大,而且Cache一致性協(xié)議實現更復雜。多路系統(tǒng)的驗證不僅驗證充分性更加難以保證,而且在模擬驗證中追蹤定位錯誤的難度越來越大,甚至嚴重影響了驗證效率。
對處理器模擬驗證結果檢查的方式一般采用基于參考模型的驗證方法[2,5,8,10],檢查的是處理器設計在指令完成時的結果。對運算類指令而言,由于其執(zhí)行周期固定,因而錯誤定位精度可以達到時鐘周期級;但對于訪存指令而言,本身指令執(zhí)行的周期就不固定,而且在多路系統(tǒng)中,從錯誤發(fā)生的第一現場至反映到指令執(zhí)行結果與參考模型結果比對不相等,這個時間跨度可能有幾千個時鐘周期甚至上萬個時鐘周期,而且錯誤數據傳播的路徑可能會非常長,而處理器的設計非常復雜,每個設計人員通常只了解跟自己相關的功能實現,因此這樣一個錯誤的查錯經常需要在多個設計人員和驗證人員之間來回交互,查錯工作需要幾乎所有相關人員參與,如果錯誤比較復雜,有時查錯時間甚至可以達到1~2天。在這種情況下,原有基于參考模型的驗證方法只是解決了正確性比較的問題,而追蹤定位第一出錯點基本上都是靠人工完成,導致查錯效率極低,亟待探索新的方法。
本文以某國產多路系統(tǒng)的驗證為例,基于事務級驗證TBV(Transaction Based Verification)技術[11],提出并實現了一種可以應用于模擬驗證的自動錯誤追蹤定位方法,實現了多路系統(tǒng)模擬驗證環(huán)境中錯誤的自動追蹤定位,顯著縮短了錯誤定位時間,提升了多路系統(tǒng)模擬驗證的查錯效率。
本文以某款國產多路系統(tǒng)的Cache一致性驗證為例進行需求分析。該國產處理器有32個核心,每個核心內包含了一個32 KB的一級指令Cache和一個32 KB的數據Cache,以及一個256 KB的二級Cache。處理器片內采用基于目錄的Cache一致性協(xié)議實現,所有核心共享一個64 MB的三級Cache。處理器間可通過直連接口構建2路或4路系統(tǒng),多路系統(tǒng)中處理器之間使用廣播監(jiān)聽協(xié)議保證處理器之間的Cache一致性。
該處理器的待測DUT(Design Under Test)邏輯結構如圖1所示,Core表示核心;LCPM為三級Cache控制部件和片內Cache一致性協(xié)議處理部件;GCPM為全局Cache一致性協(xié)議處理部件,主要處理多路系統(tǒng)間的Cache一致性;MC為DDR4存儲控制器,負責DDR4內存的讀寫訪問控制。
Figure 1 Logic structure of DUT processor圖1 處理器的待測邏輯結構
多路系統(tǒng)通過處理器提供的A、B、C共3個直連接口互連,多路系統(tǒng)結構如圖2所示。
Figure 2 Multi-processor system architecture圖2 多路系統(tǒng)結構
由于采用了目錄和廣播監(jiān)聽兩級Cache一致性協(xié)議,且四路系統(tǒng)的核心數量最多可達128核,因此該處理器Cache一致性驗證不但環(huán)境規(guī)模大、功能復雜,而且錯誤的追蹤定位也成為了一個難點。
首先,Cache一致性協(xié)議非常復雜,一個典型的處理流程就包含了Local-CPU(請求源CPU)、Home-CPU(請求目標CPU)和多個Peer-CPU(對等CPU),還涉及片內一致性處理流程和片間一致性處理流程,如圖3所示。從圖3中可以看出,該處理器Cache一致性處理過程的特點是涉及的設計部件數量多、處理流程步驟多和飛行中的各類消息類型種類多。據統(tǒng)計該協(xié)議中包含的消息類型共計9個大類,87個子類,為理解協(xié)議和查錯帶來了很大困難。
Figure 3 Example of multi-processor system cache coherence 圖3 多路系統(tǒng)典型Cache一致性處理示例
其次,該驗證環(huán)境中查錯遇到的困難還包括:
(1)由于接口協(xié)議十分復雜,解析錯誤波形的信號總線非常繁瑣。
(2)由于設計實現要考慮硬件開銷,不同部件之間傳遞的信息都是必要最小集,因此查錯需要的信息在某一時刻的特定接口上通常是不完整的;另外,還有些消息包的控制信息和數據信息會通過不同的物理通道分開傳遞,造成時間上的不同步,需要根據ID號或其他信息向前回溯,同時結合多個部件接口分析才能得到,這一過程費時費力、難度大、易出錯。
(3)查錯時通常要在波形上搜索和篩選關鍵信息,縮小關注范圍,由于設計和環(huán)境復雜,各個部件接口的信息量很大,且錯誤第一現場距離出錯點的時間范圍有可能跨度很大,這些都增加了搜索和篩選信息的難度。
(4)由于處理器的設計非常復雜,每個設計人員通常只了解跟自己相關的功能實現,因此一個錯誤的查錯經常需要在多個設計人員和驗證人員之間來回交互,增加了人力和時間開銷。
(5)同樣由于設計和環(huán)境規(guī)模很大,記錄信號級波形不但嚴重影響模擬運行速度,而且空間占用也很大,給查錯工作增加了很大代價。
通過上述分析可以看出,研究探索一種自動高效的錯誤追蹤定位技術,對于解決多路系統(tǒng)Cache一致性驗證中遇到的錯誤定位困難是非常必要的,上述關鍵難題的解決對提高驗證效率非常有幫助。
處理器的模擬驗證主要還是基于參考模型的正確性檢查方法,典型的環(huán)境結構如圖4所示。處理器的參考模型通常都采用指令集模擬器ISP(Instruction Set Processor),實時比較的內容通常是每個設計核執(zhí)行完指令后的目標寄存器結果與參考模型結果做比較。
Figure 4 Verification environment based on reference model圖4 基于參考模型的驗證環(huán)境結構
為了保證參考模型的功能正確性,指令集模擬器基本上只實現軟件可見的處理器結構,如寄存器和頁表快表TLB(Translation Look-aside Buffer)等。而與處理器流水線站臺密切相關的結構,比如Cache,因其行為與很多微結構緊密相關,難以與實際設計進行比對,因而對于訪存指令而言,尤其是寫指令結果,難以通過檢查Cache狀態(tài)和內容做判斷,而寫一旦出錯,往往需要等到相關地址的讀指令結果與參考模型結果比較不相等后才能發(fā)現,因此從錯誤發(fā)生的第一現場至反映到指令執(zhí)行結果與參考模型結果比對不相等,這個時間跨度可能會非常長。
傳統(tǒng)的基于監(jiān)測模塊Monitor的模擬驗證環(huán)境中,Monitor會在日志文件中記錄狀態(tài)檢查和調試查錯時需要的各種信息,查錯時利用這些信息進行分析和追蹤。在多路系統(tǒng)中,不僅每個核心都會有一個Monitor,有些部件也有自己的Monitor,如果采用這種基于日志的記錄方式,整個驗證環(huán)境中會生成上百個日志文件,信息量非常大,而且難以有效關聯(lián)搜索,從而導致查錯效率不高。
因此,探索一種有效的錯誤追蹤定位技術,既要能夠與基于參考模型的處理器驗證環(huán)境相結合,還要解決環(huán)境中調試信息的采集、記錄和搜索篩選問題。
基于事務的驗證TBV技術是一種成熟驗證技術,在系統(tǒng)級驗證的建模中事務級建模TLM(Transaction-Level Modeling)被廣泛采用,也常用于RTL級的模擬驗證[12,13]。多數HDL(Hardware Description Language)模擬器都支持通過特定的庫接口將事務級的數據寫入生成的波形數據庫,從而幫助設計和驗證人員在事務級對設計和環(huán)境的行為進行分析。通常EDA工具提供的事務級波形查看工具可以支持搜索和篩選功能。
以Cadence公司IES(Incisive Enterprise Simulator)模擬器為例,該工具支持通過C++接口定義的SDI2(Simulation Database Interface version 2)庫,在模擬環(huán)境中實現事務級信息的采集,并且記錄到生成的波形數據庫中。圖5是SDI2庫的結構和事務定義方法[13]。
Figure 5 Structure of SDI2 library and TBV definition圖5 SDI2庫的結構和事務定義方法
將Monitor的日志記錄方式改為事務記錄方式后,能夠實現事務信息與波形數據庫的緊密結合,通過工具支持還可以實現快捷的信息搜索和篩選。另外,事務級波形所占空間遠小于信號級波形,而且對模擬速度的影響更小。
TBV技術為解決多路系統(tǒng)Cache一致性驗證提供了技術支撐,利用TBV技術對Cache一致性驗證環(huán)境建模,如何實現錯誤的快速追蹤定位,還需要考慮以下方面的問題:
(1)事務級建模的原則。
如何確定建模要覆蓋的設計部件和層次?如上所述,該多路系統(tǒng)的Cache一致性處理流程復雜,涉及的設計部件眾多,是否所有的部件都需要進行事務級建模?是否需要在部件級以下進行模塊級建模?
就本文來說,事務級建模的原則應該從建模的目的出發(fā),建模是為了方便進行Cache一致性錯誤追蹤和定位,因此建模的原則可以歸納為:
①建模應該至少覆蓋Cache一致性消息傳輸的關鍵通路,例如各層級緩存控制器(Cache Controller)接口、主存控制器(Memory Controller)接口和片上互連網絡NoC(Network on Chip)接口等。
②處理器核心的訪存流水線建模通常包含LQ/SQ(Load/Store Queue)、MAB Tag(Missed Address Buffer Tag)和WCSB(Write Combining Store Buffers)等。如果核心相對比較成熟,也可只對核心對外的接口建模,這樣性價比更高。
③推薦在部件級層次建模。一方面,部件級通常有專職的設計人員負責,當錯誤定位到部件級后就不再需要在多名設計人員和驗證人員間反復交互了;另一方面,部件級功能相對完整,事務級建模更加簡潔清晰,如果在模塊級建模,因接口協(xié)議更加瑣碎會導致建模的難度加大,事務級驗證的性價比降低。
(2)事務的屬性和功能定義。
確定了事務級建模的部件和層次后,就需要從設計的功能實現和驗證需求方面考慮事務級建模需要實現的功能。本文著重從Cache一致性驗證錯誤追蹤定位的需求出發(fā)確定事務屬性和功能,主要包括:
Figure 6 Implementation of automatic error trace environment 圖6 自動錯誤追蹤環(huán)境的實現原理
①要能夠對每個訪存請求進行唯一標識,以實現對其全流程的精確追蹤。由于設計中可能并不存在這樣的一個唯一標識,因此實現時需要結合信息的源和ID,甚至需要增加時間戳等信息來實現。
②同一個請求引起的所有事務均攜帶相同的事務唯一標識號,以方便建立這些消息之間的聯(lián)系。
③每個事務都必須定義消息類型屬性,且類型要覆蓋所有消息。
④訪存地址要精確到Cache塊地址(Cache Block Address),且應該攜帶所有中間過程的請求或響應。
⑤不同的事務屬性通常在不同的運行階段才能得到,因此實現時要確定登記內容的時機。由于設計中的信息在時間和空間上都是分布形成和傳播的,因此事務建模時需要構造一張或者多張表來集中記錄這些信息,以此為基礎來定義和實現事務模型。
(3)基于事務模型的錯誤自動追蹤和定位。
事務級建模完成后就可以在模擬時生成事務級波形了,通過EDA工具提供的用戶界面可以對事務信息進行搜索和查錯[14]。雖然相比信號級波形查錯效率得到了提高,但是仍然需要很多人工操作,且很多情況下都是重復性工作,因此需要探索錯誤的自動追蹤和定位技術,以進一步提高查錯效率。
EDA工具提供了一種TxE(Transaction Explorer)[14]腳本語言。該語言主要由TCL(Tool Command Language)構成,結合工具提供的接口命令,可以實現比較復雜的搜索算法。以此為基礎并結合Cache一致性的功能流程可以實現自動的錯誤追蹤定位功能。實現時需要考慮的問題主要包括:
①定義錯誤類型,例如響應超時、數據比較不等和故障報錯等。錯誤類型不同,其查錯方法也不同。
②基于事務級的錯誤追蹤要與基于參考模型的實時比較報錯信息相結合?;趨⒖寄P偷膶崟r比較報錯信息包含查錯的指令信息,如PC、出錯時刻、錯誤結果和期望數據等,訪存指令信息還包含訪存虛地址和物理地址信息?;谶@些信息可以編寫程序實現在事務級波形中的信息檢索。
③針對不同的錯誤類型,要根據設計處理流程實現不同的追蹤算法,可以根據錯誤出現的頻繁度優(yōu)先實現常見錯誤的自動追蹤功能。
事務級建模和參考模型相結合的自動錯誤追蹤環(huán)境的實現原理如圖6所示。事務級模型開發(fā)的主要工作是結合設計的功能,定義一系列關鍵信息的數據結構,并基于此對DUT內的關鍵模塊進行事務建模,將各種功能流程中的數據流和控制流定義為一系列的有向圖模型,以便追蹤出錯模塊。傳統(tǒng)正確性檢查的手段還包括斷言檢查ABV(Assertion Based Verification)和參考模型比較,這些手段可以實時監(jiān)測錯誤并終止模擬運行,同時將出錯信息寫入日志。出錯后,驗證環(huán)境會解析出錯日志,對錯誤自動分類并標記,錯誤追蹤定位工具結合模擬出錯日志和錯誤類型,通過TxE接口訪問事務波形,根據定義的規(guī)則庫(追蹤算法)找到出錯的模塊和錯誤時刻,驗證和設計人員可以據此信息通過信號波形完成對錯誤的最終定位。
通過上述分析,本文在某款國產多路系統(tǒng)的Cache一致性驗證環(huán)境中實現了事務級建模和參考模型相結合的自動錯誤追蹤環(huán)境,如圖7所示。
Figure 7 Multi-processor system cache coherence verification environment圖7 多路系統(tǒng)Cache一致性驗證環(huán)境
從圖7可以看到,該環(huán)境由2個相同的多核CPU環(huán)境、多路系統(tǒng)參考模型和錯誤追蹤腳本庫組成。每個多核CPU環(huán)境都包含了設計DUT、斷言檢查ABV、事務級建模TBV、監(jiān)測模塊Monitor、實時比較和DDR4 DIMM模型等驗證組件。圖中TBV的設計部件包括核心的核外接口、LCPM部件、GCPM部件和存控MC部件。驗證環(huán)境支持2個或4個多核CPU互連或者虛擬多核CPU(VCPU)通過直連接口互連;支持基于多路系統(tǒng)參考模型的核心級實時比較;支持錯誤追蹤腳本庫收集實時比較環(huán)境的錯誤日志,分析錯誤類型,訪問TBV波形數據并追蹤錯誤等。
在本案例實現中,事務級建模的層次和位置在選擇時統(tǒng)籌考慮了錯誤定位精度、建模位置和編程工作量。建模位置決定了錯誤定位的精度,為了迅速定位錯誤,可以考慮在頂層各個部件之間進行建模。部件之間連線比較規(guī)整,并且傳輸包的關鍵信息一般接口可見,建模后可從事務級波形上直觀查看各類包的傳輸,給驗證人員提供了極大便利。
事務包格式的確定跟待測芯片行為緊密相關。事務包格式主要指包的關鍵信息,本文驗證對象的主要行為是多路系統(tǒng)以及處理器外設的訪存一致性設計。因此,包格式需包括訪存地址、數據、請求響應類型和請求響應ID等。如果存在控制包和數據包在2個物理通道傳輸或數據包分多個子包傳輸情況,在編程時需要將控制和整個數據封裝在一個包內。特殊情況下,僅使用接口信號無法完整表達協(xié)議包之間的關系,可能需要結合部分模塊設計代碼來編寫TBV代碼,完成TBV包的創(chuàng)建。下面以GCPM模部件為例說明建立請求事務包的方法,首先定義MONITOR_GCPM模塊,聲明輸入信號,然后根據接口協(xié)議把接口信號轉化成事務包:
moduleMONITOR_GCPM
(
inputClk;
input [2:0]i_LocalNld;
inputB2G_HomVld;
input [63:0]B2G_HomInf;
)
HOM_TYPEM_B2G_Hom,c_InvHom;
integerHomFiber,DatFiber;
integerHomHandle,DatHandle;
initial
begin
c_InvHom=GenInvHom();
HomFiber=$sdi_create_fiber("sdi+B2G_Hom","TVM");
end
always@(negedgeClk)
begin
if(B2G_HomVld) task_b2g_hom;
end
taskautomatic task_b2g_hom;
begin
M_B2G_Hom=c_InvHom;
M_B2G_Hom.Type=HOM_CODE′(B2G_HomInf[4:0]);
M_B2G_Hom.Offset=B2G_HomInf[7:6];//Addr[6:5]
M_B2G_Hom.Addr=B2G_HomInf[43:8];//Addr[42:7]
……
HomHandle=$sdi_transaction("BeginEnd",HomFiber,"CAB2GCPM_HOM");
$sdi_set_attribute(HomHandle,M_B2G_Hom.Type);
$sdi_set_attribute(HomHandle,M_B2G_Hom.Addr);
……
@(posedgeClk);
M_B2G_Hom=c_InvHom;
$sdi_end_transaction(HomHandle);
end
endtask
endmodule
錯誤追蹤搜索結合TxE腳本和Python腳本實現,TxE腳本實現部分代碼如下所示:
txe_search_create search TB{
source{
}
init{
seterr_addr0x80161d//錯誤訪存地址
}
#capture all the transactions with a child in the database apply{
fiber*{
trans_type*{
setaddr{attribute"Addr"}
if{$addr==$err_addr}{
setlast_time[tformat12.2ns [end_time]]
set_attributelasttime$last_time
accept
}
}
}
}
settext_file[open "err_info.log""w"]
puts $text_file"Some Utilization Stastics for a bus modele"
puts $text_file""
foreachs[txe_search_get_list]{
#Execute the search.
txe_search_execute$s//執(zhí)行搜索算法
#Write the results table
puts $text_file"[txe_search_get_path $s]"
puts $text_file"-----Error Transaction Flow-----"
txe_table_write$text_filetext$s
puts $text_file"------------"
}
下面以一個響應超時的錯誤為例展示錯誤追蹤過程:
CG0 mpe7 ROB Timeout!!!
"The ROB Addr is 0x400000088
Calling Stop_run() from at line 60 in @ds_bfm_quit.
上述代碼表示模擬環(huán)境報錯,終止運行,錯誤信息含義為7號核心出現指令響應超時“ROB Time Out”,并且給出了錯誤的物理地址。
多路系統(tǒng)的訪存通路非常長,事務級查錯方法與常規(guī)方法一致,都是根據處理流程由正向或逆向逐級遞推來查錯。以下是針對此“ROB Time Out”錯誤的查錯過程。
(1)根據出錯地址查詢GCPM接口的事務波形,得到的結果如圖8所示。波形描述的是CPU0發(fā)起獨占數據讀請求“vcpu_RdDataM”,GCPM收到了CPU0的獨占讀請求和另外3個VCPU的無效監(jiān)聽回答“vcpu_RspI”,由GCPM向CPU0推送了獨占數據及完成消息“vcpu_AckDataE_Cmpl”,因此數據響應是向上游推送了的,GCPM的功能正確。
Figure 8 Step 1 for acknowledge timeout debug demo圖8 響應超時查錯演示步驟1
Figure 9 Step 2 for acknowledge timeout debug demo圖9 響應超時查錯演示步驟2
(2)繼續(xù)查看CPU0的LCPM部件,用出錯地址進行查詢,如圖9所示,發(fā)現LCPM發(fā)送了獨占讀請求“vcpu_RdDataM”和獨占監(jiān)聽請求“vcpu_snpDataM”后,并未收到完成消息,說明是LCPM與GCPM之間的橋接模塊出現了問題,可以定位錯誤在橋接模塊。如此,一個在四路直連系統(tǒng)中出現的錯誤經過2次查詢就可以鎖定錯誤模塊,大大縮減了錯誤定位時間。
本文使用Python和TxE腳本實現了多種常見錯誤的自動追蹤定位,查錯效率得到進一步提升,而且對查錯人員的能力要求大大降低,從而使得整個驗證團隊工作效率都得到了提升。圖10展示了對出錯訪存地址“0x00080161D”的自動追蹤過程,問題發(fā)生在CAB0給了GCPM請求但GCPM沒有將請求繼續(xù)轉發(fā)出去,因而最終定位出錯模塊為GCPM,出錯時刻為第2 844.7 ns。
Figure 10 Example of automatic error trace by scripts圖10 自動化腳本錯誤追蹤示例
表1統(tǒng)計了本文TBV建模部件的RTL代碼行數和TBV代碼行數,“TBV_Def”部分主要是事務級包的數據結構定義,不屬于DUT。從統(tǒng)計數據來看,TBV建模代碼行數與對應部件的RTL代碼行數不存在正相關關系。TBV代碼行數與RTL代碼行數之比最大的模塊是芯片頂層SOC_TOP,該TBV并不復雜,主要定義了TBV Monitor例化和TBV Monitor間的連線。其次比例較高的分別為RN和DLX,RN為DUT的片上網絡,DLX為DUT的片間網絡,因為接口眾多,使得TBV代碼量較大。從總體數據看,TBV建模的代碼量是被測設計的3.2%,開發(fā)代價不大。
Table 1 Statistics of DUT and TBV code lines表1 被測設計和TBV代碼行數統(tǒng)計
從與設計的耦合程度分析,TBV建模只關注事務包在DUT模塊間的傳遞和處理結果,并不關注DUT模塊內部的處理過程,因此只需要對DUT模塊的接口進行TBV建模,表1的統(tǒng)計數據也印證了這一點。
本文多路系統(tǒng)的Cache一致性驗證采用事務級環(huán)境和自動錯誤追蹤技術后,相比原有驗證技術在功能、性能和效率等多個方面都得到了提升,主要表現在以下幾點:
(1)事務級波形可讀性更強,錯誤追蹤方便。如圖11所示,上部分為信號級波形,接口信號分別為64位和288位,分析波形時必須對照接口協(xié)議按位解析;下部分為事務級波形,能直觀地看到事務級協(xié)議內容。
Figure 11 Signal level waveform and TBV waveform 圖11 信號級波形與事務級波形
(2)從波形占用空間大小和對模擬速度的影響方面來說,事務級驗證更具優(yōu)勢。如圖12所示,模擬環(huán)境為1個真CPU(32核)+3個VCPU構成的四路系統(tǒng),運行時間為21萬個時鐘周期。
Figure 12 Comparison of TBV waveform and signal level waveform圖12 事務級波形與信號級波形對比
(3)錯誤追蹤速度和定位精度大幅提升。從圖12可以看出,當設計規(guī)模比較大時,全部跟蹤波形不但文件很大,而且速度很慢。常規(guī)查錯方法是根據出錯時間點仿真前后一段時間內的波形進行錯誤跟蹤,但如果跟蹤的波形沒有包含第一現場,則需要將波形跟蹤點前移并重新運行,如此反復直至找到錯誤原因。事務級方法的優(yōu)勢在于,當設計規(guī)模比較大時,在不明顯影響運行速度的情況下,仍然能夠記錄全部事務級波形,完整便捷的信息檢索可以精確、快速定位第一現場,解決了常規(guī)方法反復迭代的問題。
(4)新增的事務級覆蓋率分析使得覆蓋率量化分析更加全面。
覆蓋率驅動的驗證方法CDV(Coverage Driven Verification)是當今主流的驗證方法,覆蓋率作為一種定量度量手段對判斷驗證充分性、指導激勵生成有重要作用。通常將覆蓋率分為2大類:代碼覆蓋率和功能覆蓋率。代碼覆蓋率包含行覆蓋、分支覆蓋、狀態(tài)機覆蓋、表達式覆蓋和翻轉覆蓋等多種類型,由EDA工具自動生成。功能覆蓋率由設計者或驗證者使用SV(System Verilog)或PSL(Property Specification Language)語言定義,主要是依據設計的功能描述定義功能驗證點,實際實施過程中一般由設計者在模塊級或者部件級定義,相對代碼覆蓋率而言,功能覆蓋率偏主觀。
事務級驗證不僅大大提高了查錯效率,還帶來了一個額外的好處,那就是驗證者可以基于事務級環(huán)境描述和分析功能覆蓋點,包括芯片級、系統(tǒng)級和協(xié)議級的功能覆蓋分析。其分析方法與使用SV或PSL描述功能點的方法不同,事務級覆蓋分析主要是基于事務級波形,通過編寫事務級覆蓋率查詢程序,生成事務級覆蓋率報告,例如模塊在一定時間范圍接收和發(fā)送的特定類型包數量、Cache一致性處理流程的各種情況統(tǒng)計等。
引入事務級覆蓋分析后,使得覆蓋率分析可以從3個維度進行度量,如表2所示,分別是工具自動分析生成的代碼覆蓋率、設計者角度定義的功能覆蓋率和驗證者角度定義的事務覆蓋率。
Table 2 Characters of the coverages表2 各類覆蓋率分析的特點
本文介紹了一種將事務級驗證技術應用于多路系統(tǒng)驗證的方法,實現了在事務級環(huán)境下對多路系統(tǒng)Cache一致性驗證的錯誤自動追蹤定位。該方法不僅提升了復雜多路系統(tǒng)的驗證效率,而且新增的事務級覆蓋率分析使得覆蓋率量化分析更加全面。該方法也可推廣于其他SoC芯片的驗證中,具備一定的應用價值。后續(xù)研究如何將該方法普適化形成一個框架,以適應更廣泛的設計類型和更多樣的設計變化。