在開發(fā)第一塊基于PCI Express的SoC過程中,ClearSpeed公司為了在有限的時間和預(yù)算條件下確保PCI Express協(xié)議一致性而面臨重重困難。PCI Express是一種復(fù)雜的協(xié)議,具有特別大的覆蓋范圍。從管理的角度看,保證協(xié)議一致性沒有其它更好的方法,只有采用標準驅(qū)動的驗證過程。遺憾的是,即使做了上千次覆蓋相關(guān)場景的測試,仍留有相當大的覆蓋漏洞,從而使得這個方法沒有可預(yù)測性,成本也很高。而另外一種普通的隨機測試方法也沒有足夠的可預(yù)測性。
ClearSpeed公司開始意識到,理想的方法可以產(chǎn)生顯著的好處:它能最小化技術(shù)開發(fā)工作量,同時最大化測試應(yīng)用控制。ClearSpeed公司率先采用Cadence公司提供的商用化PCIe驗證IP。這種驗證IP被稱為UVC,包含了一致性管理系統(tǒng)(CMS),該系統(tǒng)將覆蓋空間劃分和映射到了PCIe規(guī)范。CMS還提供受限隨機測試(稱為測試序列)形式的一致性測試套件,用于自動取得針對每個PCIe規(guī)范部分的高功能性覆蓋。
ClearSpeed公司還在UVC基礎(chǔ)上創(chuàng)建了自己的受限隨機測試套件。相關(guān)覆蓋在每次測試組運行之后都會進行分析,從而能清楚地理解覆蓋漏洞出現(xiàn)在什么地方,并指導(dǎo)新的測試應(yīng)在什么地方進行以到達未被覆蓋的場景。這種方法還向ClearSpeed提供了無價的項目管理工具,因為它能幫助理解和報告驗證狀態(tài)。ClearSpeed公司目前能夠在每個主要的規(guī)范領(lǐng)域正常地跟蹤覆蓋、缺陷統(tǒng)計和測試故障。
工程背景
ClearSpeed公司的產(chǎn)品范圍包括芯片、加速器卡、機架模塊、軟件和支持。ClearSpeed公司的芯片、加速器卡和機架模塊都可以與工業(yè)標準的x86系統(tǒng)一起使用。ClearSpeed公司的芯片采用C語言進行編程,并且公司向用戶提供可與所有標準軟件開發(fā)工具協(xié)同工作的完整IDE,如圖1所示。

圖1:ClearSpeed產(chǎn)品概要。
與以前的CXS600芯片相比,主要變化如下:
1. 一個芯片上有兩個處理器內(nèi)核(“MTAP”)
2. 芯片上有一個標準的PCIe接口(相對私有PCIx接口而言)
3. MTAP有多項的改進
總體驗證需求和策略
圖1給出了ClearSpeed產(chǎn)品的架構(gòu)。為了確保這個復(fù)雜產(chǎn)品的質(zhì)量,需要對以下性能進行驗證:
1. 驅(qū)動程序代碼與芯片的緊密集成
2. 眾多軟件庫和應(yīng)用程序的集成
3. 與各種主機(操作系統(tǒng)和芯片組)環(huán)境的兼容性
4. 高性能和低功率
從芯片本身看,主要驗證挑戰(zhàn)是最新引入的PCIe接口。為了應(yīng)對這些驗證挑戰(zhàn),ClearSpeed公司采用了一種適合待測復(fù)雜設(shè)計的先進驗證策略。整個驗證策略中有一些要點是可以明確的:
-
這種驗證策略是以仿真為基礎(chǔ),并采用了覆蓋驅(qū)動的偽隨機方法。
-
使用了分層仿真策略,從模塊級開始,并逐漸向外擴展。
-
與軟件的協(xié)同仿真非常重要,它有助于展示產(chǎn)品的正確性,并在芯片回廠時為硅片取得成功取得了良好開端。
-
軟件協(xié)同仿真也是分層執(zhí)行的,從驅(qū)動程序開始,一直擴展到應(yīng)用程序。
-
模塊和層次體系之間的驗證再利用。
- 使用驗證IP。這樣做有利于充分利用該領(lǐng)域?qū)<业默F(xiàn)有知識,并有利于加快測試平臺的開發(fā)速度。
總的驗證指導(dǎo)原則是在芯片開發(fā)初期從商業(yè)和技術(shù)角度獲得簽字確認標準。這些確認標準是客觀性的,可以使用合適的準則進行測量。這樣做具有很多優(yōu)點,包括:
1. 能夠使所有感興趣方預(yù)先同意用于驗證的對象。
2. 能夠在項目執(zhí)行中跟蹤向驗證簽字確認方向發(fā)展的進程。
3. 能夠建立流片時的信心。

圖2:ClearSpeed公司當前的CXS700架構(gòu)。
為了與上述原則保持一致,預(yù)先對CSX700驗證確認標準進行了定義。所選的關(guān)鍵指標有:
1. 功能覆蓋目標:
(1) 優(yōu)先級1覆蓋目標達到100%
(2) 所有其它覆蓋目標至少達到95%,并檢查所有未實現(xiàn)的覆蓋目標。
2. 編寫和支持的所有系統(tǒng)級測試。
3. 在所有可用PCIe服務(wù)器中工作的原型PCIe。
4. 檢查缺陷發(fā)現(xiàn)率以確保(與功能覆蓋一起)我們正在接近所有最重要缺陷已經(jīng)被發(fā)現(xiàn)的點。
5. 檢查任何突出并已知未修復(fù)的問題,并評估它們的影響。
下面將在上文描述的總體驗證策略框架下討論PCIe驗證策略。
模塊級驗證
圖3所示是PCIe模塊級測試平臺。ClearSpeed公司已經(jīng)開發(fā)過圖中所示的AVCI、PVCI和私有協(xié)議,因此PCIe接口提出了主要的驗證挑戰(zhàn)。由于我們使用的IP來自不同的管線PHY和端點內(nèi)核供應(yīng)商,因此這種挑戰(zhàn)越發(fā)艱巨。

圖3:PCIe模塊級測試平臺。
從圖3可以看出,測試平臺采用了許多UVC。除了PCIe UVC外,其它UVC都是ClearSpeed公司自己開發(fā)的。測試平臺的其它部分使用公司自己的UVC有利于建立同質(zhì)的eRM一致性系統(tǒng)(隨后的uRM和現(xiàn)在的OVM)。
選用第三方VIP的原因是因為:PCIe協(xié)議的復(fù)雜性;驗證任務(wù)的工作量以及缺少內(nèi)部資源;VIP的成熟度;獨立的VIP可以由與內(nèi)部開發(fā)小組不相干的外部PCIe專家組開發(fā)。
系統(tǒng)級測試
系統(tǒng)級測試平臺包括了芯片和軟件驅(qū)動堆棧。實際的軟件驅(qū)動程序基本原樣投入使用,除了在堆棧底部做了一些修改,即將調(diào)用做進了仿真環(huán)境中,并由軟件驅(qū)動PCIe UVC。更多細節(jié)請參考圖4。在本例中,驅(qū)動程序完成與硬件對話要做的所有事情,并且每個事務(wù)都要傳送給仿真器。這樣運行起來雖然比較慢,但確實能讓我們測試DMA引擎等。

圖4:通過設(shè)備驅(qū)動程序連接到RTL仿真的軟件接口。
驅(qū)動程序可以連接到PCIe層上面的仿真器。這樣無需花費時間在完整仿真每個PCI事務(wù)上面就可以實現(xiàn)對更高層單元的仿真。這對仿真在處理器上運行的程序來說是非常有用的。
雖然通過使用UVC可以在測試規(guī)范允許的地方(例如在一些要寫入的數(shù)據(jù)中,在定義范圍內(nèi)的地址中)使用受限隨機激勵,但在系統(tǒng)級主要應(yīng)用定向測試方法。在系統(tǒng)級存在許多現(xiàn)成的定向測試,主要目標是用它們擴展測試這個芯片的變化(如前所列出的)。許多vPlanning會話被保持以獲得測試規(guī)范,然后我們就能跟蹤這些測試的實現(xiàn)。一旦驅(qū)動程序堆棧經(jīng)驗證能與RTL一起工作,就可以運行較高層的軟件。
運行這些應(yīng)用程序能給功能驗證和性能驗證帶來高度的信心。
在FPGA中建立PCIe原型
在CSX700的開發(fā)過程中,ClearSpeed公司生產(chǎn)了一種基于現(xiàn)有硅片(CSX600)但用FPGA提供PCIe接口的產(chǎn)品,這樣允許我們模擬PCIe接口并執(zhí)行兼容性測試。也就是說,我們能將被模擬的PCIe接口連接到運行各種OS的眾多服務(wù)器上,從而在流片前確定兼容性問題。它還能讓我們更徹底地測試帶PCIe的軟件驅(qū)動程序堆棧接口。
該方法可以識別主要位于PCIe堆棧物理層中的缺陷(FPGA中的PHY不同于我們芯片中的PHY),也讓我們注意到我們連接的服務(wù)器中PCIe實現(xiàn)的變化數(shù)量,并促使我們提升取得很高覆蓋的重要性:我們對覆蓋劃分優(yōu)先等級,并為最高優(yōu)先級對象設(shè)定100%的目標。然而,該方法不能識別通過仿真&覆蓋也不能發(fā)現(xiàn)的PHY外的任何缺陷。這使我們相信,PCIe仿真中的高覆蓋將有助于取得很高的首次流片成功率。
原型的其它優(yōu)勢還表現(xiàn)在軟件開發(fā)方面。它能幫助PCIe軟件驅(qū)動程序遠早于CSX700硅片開發(fā)出來,加快基于CSX700的產(chǎn)品的上市時間。
可配置的驗證環(huán)境
用于PCI Express的Incisive UVC能讓用戶專注于設(shè)計的任何部分或整個設(shè)計,并針對驗證過程中每一階段的特殊需要優(yōu)化驗證環(huán)境。Incisive UVC一般用于在模塊、芯片和系統(tǒng)級對PCI Express器件進行功能驗證。它也可以通過配置有選擇地激活或關(guān)閉各個功能模塊以及功能覆蓋和檢測機制來優(yōu)化特殊任務(wù)的驗證。這樣可以提供到驗證收斂的最可預(yù)測路徑,并最大化在仿真器和工作站方面做出的投資回報。
自動激勵產(chǎn)生
與使用上千次定向測試的其它解決方案不同,用于PCI Express的UVC采用自動激勵發(fā)生器來減少用戶需要做的工作量。利用包含所供序列庫在內(nèi)的自動化情景產(chǎn)生功能,用戶可以覆蓋主要協(xié)議功能以及難以到達的情景和邊界案例。通過增加少量測試,剩余的邊界案例就能被一一驗證。這種方法有助于用戶更快地發(fā)現(xiàn)更多缺陷,并讓設(shè)計師有更多的時間進行DUT的私有功能測試。CMS可以實現(xiàn)整個過程的自動化。
使用CMS實現(xiàn)覆蓋驅(qū)動的驗證
CMS向用戶提供了可執(zhí)行的驗證計劃(vPlan)。vPlan與Enterprise Manager以及內(nèi)置功能覆蓋模型一起可以提供清晰地報告哪些被覆蓋、還有哪些沒被覆蓋所需的標準。這給用戶提供了驗證過程的路線圖、收斂標準以及可預(yù)測的驗證過程,并向項目或管理方提供明晰的狀態(tài)報告。這種方法被稱為覆蓋驅(qū)動的驗證,可以幫助驗證人員方便地識別覆蓋漏洞,并將資源集中用于DUT的有問題部分。
Cadence的再利用方法可以快速建立功能驗證環(huán)境,確保在從模塊級驗證向芯片級、系統(tǒng)級驗證轉(zhuǎn)移以及派生設(shè)計時能立即再利用基于UVC的環(huán)境。這種方法通過消除重復(fù)工作而節(jié)省了時間與資源。
覆蓋點的優(yōu)先級劃分
通過使用能用來屏蔽掉與DUT無關(guān)的覆蓋區(qū)/條目的“透視圖(perspective)”,ClearSpeed公司能夠只考慮與實現(xiàn)有關(guān)的覆蓋點。ClearSpeed使用以下這個透視圖:
“端點, AER = On, VC 1-7 = Off, 完成器退出 = Off, 配置請求重試狀態(tài) = Off, 抑制 = Off"
CMS允許由主要的PCIe模塊TPL、TXN、DLL、PHY、PMG、SYS和CONFIG報告覆蓋,這有助于ClearSpeed公司根據(jù)技術(shù)風(fēng)險劃分驗證工作的優(yōu)先級。
我們認為物理層(PHY)存在較高的風(fēng)險,因為物理層有兩個不同的IP供應(yīng)商,而且FPGA原型測試中沒有覆蓋PHY(因為FPGA使用不同的PHY);Power mgt是下一個最高優(yōu)先級對象,因為在FPGA原型中沒有覆蓋到它(由于技術(shù)限制的原因);數(shù)據(jù)鏈路層是下一優(yōu)先等級,因為它靠近PHY。
我們還要求更細顆粒的優(yōu)先級劃分:模塊內(nèi)的優(yōu)先級劃分。雖然一般來說可以使用透視圖進行優(yōu)先級劃分,但這種方法不能滿足所有需要和優(yōu)先級劃分的使用模型。它缺少更細的顆粒和一些對CMS專業(yè)用戶(如ClearSpeed和IP開發(fā)人員)來說更重要的再利用因素。
一致性測試套件
CMS提供的一致性測試可以使你一開始就有一個很好的基本覆蓋,并因此而快速啟動驗證工作。ClearSpeed公司是比較早介入的,在整個項目中也在不斷自我修正(附加的覆蓋項目和一致性測試),因此一致性測試取得的覆蓋在項目過程中會有變化。據(jù)Cadence公司目前估計,用戶通過使用現(xiàn)成的CMS測試套件能夠達到約70%的覆蓋。
CMS測試也能經(jīng)過配置進入PCIe協(xié)議的邊界案例。然后,我們就可以寫出許多自己的測試來驅(qū)動UVC達到想要的覆蓋水平。
本文小結(jié)
上述驗證方法被證實取得了很大的成功。這種方法基于的是標準驅(qū)動的驗證,采用了第三方的VIP,超出了我們的期望值,并成功地對將現(xiàn)有IP集成進ClearSpeed芯片進行了驗證。作為成功的證明,我們在CSX700芯片上取得了首次流片成功,成果如下:
-
成功的一致性測試結(jié)果,包括在2008年2月份PCIe PlugFest上的所有機器中取得首次成功。
-
在許多服務(wù)器和芯片組上取得了100%成功的啟動周期測試結(jié)果。
-
在所有可用服務(wù)器上成功地集成了ClearSpeed公司全套的支持OS。
- 滿足所有的性能和功率目標要求。
