本發(fā)明涉及一種基于UVM驗證方法學(xué)的PCIE驗證方法。
背景技術(shù):
芯片設(shè)計和驗證技術(shù)的快速發(fā)展使得模塊的功能驗證的要求越來越高,在短時間內(nèi)完成模塊功能驗證,保證邏輯功能正確,對驗證環(huán)境的完備性,自動化和重用性上有著很高的要求。
PCIE是一種最新最流行的總線和接口標(biāo)準(zhǔn),其主要優(yōu)勢是傳輸速率極高,以及多路高速串行傳輸帶來的高帶寬。PCIE的功能正確性是至關(guān)重要的,尤其每款重新設(shè)計或者設(shè)計改動的PCIE都需要經(jīng)過大量的回歸測試,甚至多次流片才能夠真正使用到項目中。因此PCIE的驗證通常需要大量時間和人力投入。
以往在驗證PCIE模塊的過程中,重新生成各種不同的PCIE數(shù)據(jù)包不但很麻煩,而且臨時的編寫很容易出現(xiàn)錯誤,因為通過驗證平臺來驗證PCIE模塊的效率很低,且無法重用。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服上述不足,提供一種基于UVM驗證方法學(xué)的PCIE驗證方法,能夠搭建一個可移植、重用、擴(kuò)展,且完全自動檢查的具有層次化結(jié)構(gòu)的PCIE驗證平臺。
本發(fā)明的目的是這樣實現(xiàn)的:一種基于UVM驗證方法學(xué)的PCIE驗證方法,它通過系統(tǒng)級硬件描述語言SystemVerilog來搭建一個基于UVM驗證方法學(xué)的可移植,重用,擴(kuò)展,完全自動檢查,具有層次化結(jié)構(gòu)的PCIE驗證平臺。
所述方法采用驗證方法學(xué)UVM和系統(tǒng)級硬件描述語言(SystemVerilog),利用AXI總線行為模型構(gòu)建驗證環(huán)境平臺,對PCIE模塊實施功能驗證。
所述功能驗證是指隨機(jī)化自動產(chǎn)生對PCIE模塊的隨機(jī)激勵,自動化的判斷響應(yīng)結(jié)果,以及自動化的統(tǒng)計功能覆蓋率。
所述實施功能驗證是指,可約束的PCIE數(shù)據(jù)包的產(chǎn)生,分類發(fā)送PCIE數(shù)據(jù)包,自動完成數(shù)據(jù)響應(yīng)。
所述驗證方法中的驗證環(huán)境平臺采用系統(tǒng)級硬件描述語言SystemVerilog完成,所述驗證環(huán)境平臺包括:
1)測試用例完成隨機(jī)化序列的定義,不同的測試用例使用不同的序列,用于驗證PCIE的不同功能;
2)序列產(chǎn)生器,完成隨機(jī)化數(shù)據(jù)包的定義;包括事務(wù)層數(shù)據(jù)包的事務(wù)類型、接收者地址、順序?qū)傩?、緩存一致性屬性、流量類別、傳送事務(wù)包的數(shù)據(jù)及其大小;包括數(shù)據(jù)鏈路層數(shù)據(jù)包的類型及其數(shù)據(jù),以及不同有序集的類型和錯誤包的類型;在約束完數(shù)據(jù)的具體特征之后,由自動生成數(shù)據(jù)包函數(shù)自動生成數(shù)據(jù)包;定序器的功能是組織管理序列產(chǎn)生器,當(dāng)驅(qū)動器要求數(shù)據(jù)時,定序器把序列產(chǎn)生器生成的事務(wù)轉(zhuǎn)發(fā)給驅(qū)動器;
3)AXI驅(qū)動模塊與AXI定序器相連接,將接收到的數(shù)據(jù)包,轉(zhuǎn)換成AXI接口上實際的信號激勵,這里的AXI驅(qū)動模塊為總線行為模型;
4)PCIE驅(qū)動模塊與PCIE定序器相連接,將接收到的數(shù)據(jù)包,轉(zhuǎn)換成PIPE接口上的實際信號激勵;
5)通過驅(qū)動模塊的監(jiān)視器從待驗證的PCIE模塊的接口上接收數(shù)據(jù),并且把接收到的數(shù)據(jù)轉(zhuǎn)化成數(shù)據(jù)包級別,并發(fā)送給PCIE參考模型。參考模型采用SystemVerilog編寫;
本發(fā)明運(yùn)行UVM驗證方法學(xué),能夠?qū)崿F(xiàn)一個層次化的驗證結(jié)構(gòu),可以較簡單的移植并驗證不同配置的PCIE,并且通過約束產(chǎn)生隨機(jī)數(shù)據(jù)包激勵,可以實現(xiàn)遍歷所有指令以及地址,另外功能覆蓋率模型能夠收集并監(jiān)測覆蓋率。
具體實施方式
本發(fā)明所創(chuàng)建的PCIE模塊驗證環(huán)境平臺,采用系統(tǒng)級硬件描述語言SystemVerilog完成:主要包括以下9個組件:測試用例,序列產(chǎn)生器(sequence),AXI驅(qū)動模塊(AXI in_agent),PIPE驅(qū)動模塊(PIPE in_agent),AXI監(jiān)測模塊(AXI out_agent),PIPE監(jiān)測模塊(PIPE out_agent),PCIE參考模型(reference model),記分板(scoreboard),功能覆蓋率模塊。UVM組件之間通過端口(port)相連接或者通信。
測試用例完成隨機(jī)化序列的定義,不同的測試用例使用不同的序列,用于驗證PCIE的不同功能;序列產(chǎn)生器完成隨機(jī)化數(shù)據(jù)包的定義,包括事務(wù)層數(shù)據(jù)包的事務(wù)類型、接收者地址、順序?qū)傩?、緩存一致性屬性、流量類別、傳送事務(wù)包的數(shù)據(jù)及其大小,數(shù)據(jù)鏈路層數(shù)據(jù)包的類型以及數(shù)據(jù),以及不同有序集的類型,錯誤包的類型;在約束完數(shù)據(jù)的具體特征之后,由自動生成數(shù)據(jù)包函數(shù)自動生成數(shù)據(jù)包;
定序器的功能是組織管理序列產(chǎn)生器,當(dāng)驅(qū)動器要求數(shù)據(jù)時,定序器把序列產(chǎn)生器生成的事務(wù)轉(zhuǎn)發(fā)給驅(qū)動器;
AXI驅(qū)動模塊將相應(yīng)的數(shù)據(jù)包,轉(zhuǎn)換成PCIE模塊在AXI總線上實際的輸入信號激勵;
AXI監(jiān)測模塊將PCIE模塊在AXI總線上的實際輸出信號激勵;
PIPE驅(qū)動模塊將相應(yīng)的數(shù)據(jù)包,轉(zhuǎn)換成PCIE模塊在PIPE接口上實際輸入信號激勵;
PIPE監(jiān)測模塊將PCIE模塊在PIPE接口上的實際輸出信號激勵。
PCIE參考模型接收通過驅(qū)動模塊的監(jiān)視器從待驗證的PCIE模塊的接口上接收數(shù)據(jù)轉(zhuǎn)化成的數(shù)據(jù)包,將處理過的數(shù)據(jù)包發(fā)送到記分板,參考模型采用SystemVerilog編寫;
記分板,通過端口分別從PCIE參考模型和監(jiān)測模塊中的監(jiān)視器中獲取數(shù)據(jù)包,實時比較數(shù)據(jù);
功能覆蓋率模塊通過功能覆蓋組(cover_group)函數(shù)定義功能覆蓋點,并通過采樣功能覆蓋點動統(tǒng)計覆蓋率。
本發(fā)明利用PCIE驗證模塊作為根復(fù)合體(Root Complex),PCIE模塊作為終端(Endpoint),模擬實際情況收發(fā)數(shù)據(jù)包。PCIE模塊一端與根復(fù)合體相連接,另一端通過AXI總線與應(yīng)用程序(Application)通信和配置相應(yīng)的寄存器。
當(dāng)用AXI總線配置好相應(yīng)的寄存器之后,根復(fù)合體完成與待驗證模塊的連接,復(fù)位,鏈路初始化以及通信。數(shù)據(jù)結(jié)果被采集到記分板(scoreboard)進(jìn)行自動比較。
按照PCIE模塊的通信流程,當(dāng)用AXI總線配置好相應(yīng)的寄存器之后,PIPE驅(qū)動模塊應(yīng)該先進(jìn)行鏈路初始化,發(fā)送PCIE協(xié)議規(guī)定的有序集,包括定向序列1和定向序列2(TS1和TS2)、電氣空閑、快速定向序列(FTS)、Skip有序集(SKIP),來確定鏈路配置(速度選擇、鏈路寬度、鏈路號、通道反轉(zhuǎn)、極性倒置和執(zhí)行通道到通道的相位補(bǔ)償)。然后進(jìn)入工作狀態(tài),PIPE驅(qū)動模塊發(fā)送PCIE協(xié)議規(guī)定的事務(wù)層數(shù)據(jù)包(TLP),在每一個事務(wù)層數(shù)據(jù)包執(zhí)行后,PCIE的參照模型寫出一個參照結(jié)果;PCIE的參照模型通過存儲單元保存或者讀取數(shù)據(jù),系統(tǒng)IO映射單元保存或者讀取數(shù)據(jù),PCIE設(shè)備配置空間保存或者讀取數(shù)據(jù),通過對比PCIE的參照模型與待驗證模塊PCIE的存儲單元和設(shè)備配置空間中的數(shù)據(jù),來保證待驗證模塊PCIE的每一條指令的工作狀態(tài)和參照模型都是一致的;在PCIE工作中,數(shù)據(jù)鏈路層進(jìn)行鏈路電源管理、TLP流控制和通過鏈路成功傳送TLP的確認(rèn)提供方便,因此數(shù)據(jù)鏈路層會發(fā)送數(shù)據(jù)鏈路層數(shù)據(jù)包(DLLP),包括ACK/NAK數(shù)據(jù)包、電源管理數(shù)據(jù)包和流量控制包。PIPE監(jiān)測模塊同時可以監(jiān)測PCIE工作狀態(tài),將所需信息反饋給PIPE驅(qū)動模塊,PIPE驅(qū)動模塊根據(jù)PIPE監(jiān)測模塊所反饋的監(jiān)測信息來驅(qū)動PIPE接口上的實際信號激勵。AXI驅(qū)動模塊和AXI檢測模塊類似于AXI總線中的主設(shè)備和從設(shè)備,處理入站(InBound)和出戰(zhàn)(OutBound)事務(wù)。例如,PIPE驅(qū)動模塊解析到當(dāng)前需要通過PIPE接口發(fā)送一個存儲器讀請求的事務(wù)層數(shù)據(jù)包,發(fā)送完成后,通過PCIE模塊解析后,讀請求通過AXI總線信號由AXI監(jiān)測模塊監(jiān)測到。AXI監(jiān)測模塊返回給AXI驅(qū)動模塊后,AXI驅(qū)動模塊則通過AXI總線發(fā)送給PCIE模塊一個帶讀數(shù)據(jù)、地址以及完成包(Cpl)標(biāo)志的數(shù)據(jù),在PCIE模塊中進(jìn)行正確的組包后,通過PIPE接口由PIPE接口監(jiān)測到一個帶數(shù)據(jù)的完成包(CplD)。再將監(jiān)測模塊監(jiān)測的數(shù)據(jù)包與參考模型中輸出的數(shù)據(jù)包進(jìn)行實時比較。
以上通過具體實施方式對本發(fā)明進(jìn)行了詳細(xì)的說明,但這些并非構(gòu)成對本發(fā)明的限制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可做出許多變形和改進(jìn),這些也應(yīng)視為本發(fā)明的保護(hù)范圍。