帳號:
密碼:
最新動態
 
產業快訊
CTIMES / 文章 /
透過PCI介面驗証SoC的方法
系統和晶片設計專欄(二)

【作者: 誠君】   2002年09月05日 星期四

瀏覽人次:【4031】

過去一般晶片設計公司的開發工作可以大概區分為三大階段:1. 需求規格確定;2. 系統分析與設計;3.驗證除錯。在理想的情況下,前兩個階段應該安排較長的時間,好讓設計人員能充份開發出真正符合市場需求的晶片。


但是,在實務上,常因為許多特殊因素,在驗證除錯工作上耗費了比前兩個階段還要長的時間,例如:目前百萬閘級SoC的「非再使用工程(Non-recurring Engineering;NRE)」費用已達到100萬美元。因此在SoC正式投產前,開展全面完整的測試是非常重要的。


本文將介紹典型PCI子系統設計中的驗証策略及實現方法,充份應用直接和假隨機測試產生方法、通訊協定檢查器和功能覆蓋分析(functional coverage analysis)方式,以期創造客觀和可預測的測試過程。


元件與系統的相容性測試問題

隨著採用隨插即用矽智權(PnP IP)的單晶片系統(SoC)設計逐步進入實用階段,元件與系統相容性測試問題變得越來越嚴重。問題的關鍵在於:IP的使用對功能性驗証來說基本上沒有什麼幫助。另外,隨著IP硬體和軟體的日趨複雜,對通訊協定相容性和系統級驗証的要求也越來越高。


對於SoC設計人員來說,在SoC中嵌入PCI介面來橋接晶片內匯流排和晶片外PCI本地匯流排的確是一個非常好的解決方案。PCI具有強大的互連機能,專門用於連接各種高性能周邊設備,例如:圖形處理器、視訊處理器、SCSI和LAN等介面卡。目前為止全球已有70多個PCI組織,而PCI也成為全世界最受歡迎的匯流排標準之一。


事實上,全球有許多ASIC和IP供應商已開始供應包含單主(master-only)、單從(slave-only)和主從控制器(master-slave controller)在內的各種PCI和PCI-X介面控制器,而且這些控制器均支援同步和非同步PCI介面。建立PCI子系統驗証環境的首要目標是要實現適用於最新PCI匯流排介面元件和周邊元件的可再使用高效能隨插即用型驗証環境。


PCI子系統驗証會遇到包括PCI本地匯流排需求和系統級需求在內的許多挑戰。PCI本地匯流排的功能十分強大,而且,這種複雜的數據處理沒有固定的持續時間。另外,每個設計都會採納一系列供應商提出的實現方案,因此每個IP內核或周邊元件都有其特有的性能。此外,PCI子系統是一種多層次的硬體/軟體系統,系統內的整體匯流排性能、頻寬和反應時間取決於系統負載特性、匯流排速度和頻寬(如圖1所示)。


《圖一 PCI子系統》
《圖一 PCI子系統》

PCI測試環境

下面所要討論的PCI子系統驗証策略實現了模組化可再使用的測試開發和覆蓋分析環境,該環境適用於PCI介面和子系統級的功能驗証。利用簡單的網表實例和元件功能與位址架構可以簡化元件和元件之間的整合。此外,所有的測試產生器、處理器、監視器和通訊協定檢查器都是在PCI級開發完成的。


PCI測試環境是遵守「PCI信號和系統測試綜合論壇(PCI Signal and System Test Integrators Forum)」制定的PCI元件相容性測試規範。每項測試都需要進行嚴格的PCI通訊協定檢查、功能覆蓋測試以及PCI元件與系統級功能的分析。功能覆蓋測試尤其重要,其結果可以用來客觀地評估元件和系統功能,而且還能用來控制閉環(closed-loop)測試。


除了基本的相容性測試外,PCI測試環境還支援測試開發,利用假隨機處理產生器還可以驗証周邊設備的核心功能和性能。這些假隨機處理產生器可以改變多種處理參數,如命令類型、脈衝長度、目標地址、元件請求速率以及重試率。最後,由於PCI子系統本質上是一個多層次的硬體/軟體系統,因此需要先將診斷和元件驅動程式與硬體模擬模型整合起來,這樣可以簡化軟體的開發和除錯。


由於主機運行的是本地作業系統和驅動程式,因此需要藉由中間處理器(transactor)才能與PCI設備的硬體模型協同工作。PCI匯流排通訊協定必須檢查從PCI 2.2到PCI-X的全部匯流排處理規範。本文討論的驗証策略採用了嚴格和客觀的驗証方法,要求為每項測試指標定義一組客觀的通過/失敗(pass/fail)標準。由於所定義的測試標準能滿足被測元件的性能要求,同時也滿足業界標準和規範,因此測試標準中的數據能與業界實際應用保持一致。


相容性測試的三個等級

測試文件是在一系列相容性測試的基礎上產生的,而這些符合PCI組織及系統測試綜合論壇規定的相容性測試又分為三個等級,它們是:PCI元件介面級;PCI系統介面級;獨立於元件的核心功能級。


元件介面相容性基礎測試是PCI國際組織定義的,其根據就是專用於元件的主從通訊協定測試方案下的PCI 2.2相容性檢查表及該表的PCI-X附錄。它是迷你型的通訊協定測試方案,是與主從元件所用的元件通訊協定檢查表一起使用的,可作為PCI本地匯流排規範2.2版的通訊協定相容性測試的簡化規範,並且有助於設計審查(design review)。當然,前提條件是配置暫存器必須設置為適當的狀態,並由通訊協定檢查器監視PCI匯流排。上述通訊協定測試方案主要用於模擬環境,但也可用於硬體測試環境。


系統測試開發論壇(System Test-IF )的PC99測試技術規範第4章 - PCI測試規範提供了有關系統介面相容性測試的內容。另外,在論壇所提供的測試規範中,還有許多針對不同設備類型,例如:網路卡、數據機等的專門測試技術規範。


獨立於設備的系統相容性測試需要考慮包括應用軟體、專用驅動程式和設備特殊機能在內的多種硬體和軟體通訊協定間的相互關係和影響,而且必須在功能和性能測試的基礎上做系統級架構相容性測試。另外,相容性測試必須涵蓋到相容性測試覆蓋矩陣中的每個PCI元件和系統級性能。矩陣對照測試的依據是:


  • 1. 硬體和系統功能;各種晶片、電路板以及當前使用的系統級模擬模型配置;


  • 2. 相容性測試覆蓋範圍;


  • 3. 根據通訊協定檢查器和功能覆蓋模型的通過/失敗標準所制定的測試實現方法和測試結果,就很容易跟蹤PCI架構性特點以及晶片、電路板的測試範圍(大量隨機案例),並有利於開展系統級驗証測試。



驗証環境的具體實現過程還確定了另外的目標,包括:利用以數據處理為主,且適用於功能測試產生器、結果檢查器和架構性參考模型,可以提高編寫和再使用測試的效率;利用整合的模擬及功能覆蓋分析來開展閉環隨機測試,並向驗証小組不斷提供有益的幫助。


覆蓋分析和通訊協定檢查器

在大規模特別是包含有假隨機驗証環境的驗証測試中,覆蓋測試的自動化是非常重要的,它能讓人很容易地理解大量測試案例的複雜測試過程。具體來說,覆蓋測試可用來正確評估測試的整體進程,去除那些重複和低效的測試案例,確定尚沒有被測試過的區域,並能識別出回歸測試組(Regression Suites)。另外,覆蓋測試可以劃分為兩大類,即代碼覆蓋(基於程式)測試和功能覆蓋(與特殊處理有關)測試。


代碼覆蓋測試會在模擬過程中,檢查設計中哪些部份已經完成了測試。某個高階模組會指示所有的狀態機控制器、數據通道和控制機制,至少以一個工作模式來運作。代碼覆蓋工具還會測試累積性模擬,並對狀態值和狀態變換、數據和控制值以及線覆蓋實施追蹤。


功能覆蓋測試方法需要用到監視器(monitor)和檢查器(checker)。藉由收集模擬過程中,有關臨時相關性組合所產生的資訊以及狀態條件和次序資訊,監視器可以管理整個驗証過程。因此可以用這種方式在架構性能的測試作業範圍內對一項測試或一組測試作出評估。根據模擬過程中測得的覆蓋水平,可以動態增加更多的假隨機測試案例,或者增加全新的測試。覆蓋分析數據可以保存在數據庫中以備未來做更好地集中、分類和分析。監視器可以提供不止一種的特殊功能覆蓋分析方法。


然而,現在仍不能保証這些固定的、假隨機性的功能測試能用在所有系統的作業模式中。此外,用於PCI的小型覆蓋監視器子系統包含有匯流排命令類型、目標位址、數據處理類型(消息、延遲、分支與合併)和長度、終止和錯誤條件。


在模擬期間,通訊協定檢查器會在通訊協定、架構和演算法沒有遭到破壞的前提下對系統性能和假設條件進行驗証。而在複雜的平行系統中,通訊協定規則的相互影響是非常微妙的,很容易遺漏一些問題,因此需要為每個通訊協定規則製作通過/失敗聲明(assertion)。一份通訊協定規則必須支援信號與事件之間複雜的臨時性關係,而PCI通訊協定規則的一個小型化子集需要包含元件選擇時序、最大處理長度、數據相位時序和終止及重試資訊。


假隨機測試的三步驟

開展系統級相容性驗証最重要的是要利用隨機測試產生偏僻案例(corner cases)和耐用測試(stress tests)。一般可以藉由產生大量系統性地高度相關的處理特性來完成。在嘗試了所有的人工測試後會發現,假隨機測試方法能提供更有效的途徑來提高功能覆蓋水平。假隨機測試是一種高效率的智慧化測試方法,它不像窮舉測試需要長時間的模擬。從這些非常有用的隨機方法中可以發現限制性隨機案例、循環案例、邊界案例和一些加權案例演算法。另外,對多個架構化參數之間固有關係的充分理解能改進隨機案例的品質,並提高設計人員的設計效率。


假隨機測試過程有三個步驟。首先,需要根據特定的測試規範選擇架構化性能特點;其次,要獲得可支援測試內容(包括隨機參數)的測試樣板;第三,需要開發一個處理器(transactor)能作為測試樣板與硬體模型之間的實體介面。當模擬過程同時用到多個隨機測試產生器時,由於子系統中相互獨立的功能間會出現較為複雜的關係,因此常常會產生很多問題,這也是PCI子系統所用的隨機測試中的設計關鍵。


VLE是Verilog HDL驗証語言的延伸

在Verilog硬體描述語言(HDL)中通常都有測試產生器、通訊協定檢查器和監視器的代碼。Verilog支援平行處理,其數據類型可支援硬體實現、通用數據類型,其任務與函式可改進模組性能。然而,與一般的編程語言相比,Verilog語言缺乏用戶可定義的數據架構、巨集、強大的隨機函式以及程式間可相互溝通的同步原始函式(interprocess synchronization primitives),例如:鎖定(locks)、互斥體(mutexes)和旗語(semaphores)。在測試平台的開發中,無論是Verilog還是與它同類的一般性編程語言都無法提供有效的表達方法來開發高效的假隨機測試、臨時通訊協定檢查器和功能覆蓋監視器。


Verilog HDL驗証語言延伸(VLE)是VCK的一個子集,它能提供一些必需的函式與數據類型,可用於開發人工指導測試和自動假隨機指導測試以及結果檢查器、功能覆蓋圖和通訊協定檢查器。幸運的是,由於VLE是Verilog語言的擴展,設計人員能很容易地學會VLE新功能的用法。VLE的基礎是IEEE 1364-1995 Verilog HDL標準中提到的Verilog用戶自定義任務(user-defined task)和函式語法。VLE具有以下一些性能特點:


  • 1. 列表功能(list functions)支援新數據類型。所提供的列表是可變的、未排序的,包含所有Verilog和VLE能支援的數據類型,甚至也包括列表(lists)類型。同時列表也支援範圍符號(Range Notation),因此可提供數值(value)範圍的定義。


  • 2. 隨機變量函式能將一個或多個隨機值產生器聲明為標準的包括VLE記錄類型在內的Verilog數據類型。同時它還支援不少隨機數位產生器演算法,包括簡單隨機、加權分佈、邊界案例以及在不重複的情況下能一次窮舉所有值的循環再生演算法。合法的隨機值子集合可被定義為列表函式。此外,利用隨機變量組和其它特殊的隨機變量相關函式可建立複雜的相關性,並且藉由呼叫更新函式(Update Function)可賦予隨機變量一個新數值。


  • 3. 信號歷史函式可提供對信號歷史的存取,包括變量值和修改次數。查詢函式能在指定的模擬時間存取變量歷史,或者存取可查尋到前面N個數值的數值修改歷史索引。


  • 4. 通訊協定和臨時檢查任務(check tasks)所提供的函式可用於檢查變量與表達式之間的臨時關係。


  • 5. 旗語任務所提供的同步函式可用於對共享資源的存取控制,並具有延緩和即時兩種選項。另外,這是一種計數式(counting)旗語,對資源的存取不具備排他性。


  • 6. 任務增強功能支援參考性呼叫(call by reference),並能藉由建立任務變量的保護性拷貝支援同時呼叫。任務變量現在已包含了記憶體和記錄類型(record types)。


  • 7. 記錄函式(record functions)具有聲明和存取記錄的功能。這裏的記錄非常類似於C語言中的結構(struct)或者C++中的容器物件(Container Object),記錄的每個域可以是任何Verilog或VLE數據類型,甚至可以是記錄類型。記錄數據類型提供了功能強大的用戶自定義Verilog架構。另外,可直接映射為C結構的「$c_record」能被直接建立。


  • 8. 功能覆蓋函式(Profile Function)用於分析模擬的功能覆蓋,而功能覆蓋監視器可以跟蹤變量中數值的變化,包括狀態機的變化。功能覆蓋函式可以聲明功能覆蓋監視器、設置變量的合法值、控制和更新人工或自動的功能覆蓋測試數值,還能聲明功能覆蓋方程式並報告功能覆蓋結果。功能覆蓋測試可以在模擬期間動態地進行,並支援覆蓋面的增大。



結語

雖然利用基於VLE的自動化測試平台(testbench)可以改善硬體測試性能,但系統相容性方面仍需慎重考慮軟硬體之間的相互作用。ASIC和SoC的複雜架構為晶片處理器、韌體和即時作業系統(RTOS)的設計帶來了嚴苛的挑戰。系統綜合測試的重點在於韌體和設備驅動程式的除錯,因此,韌體與驅動程式兩者就形成了軟體應用程式、高層通訊協定堆疊、RTOS和獨立嵌入式系統硬體平台架構之間重要的介面。


系統相容性驗証需要開發工作於軟體抽象層級(abstraction level)的測試,並提供能表示模型和演算法的軟體數據,且與系統保持更好的一致性。診斷測試程式是在軟硬體協同模擬環境下運行的,該模擬環境採用了基於VCI API的硬體軟體處理器(transactor)。


如今,SoC設計的成敗是由驗証環境決定的,SoC中的隨插即用IP元件的生命力是取決於驗証環境的品質和嚴謹性,PCI本地匯流排標準中提供了一個理想的案例可供參考。「PCI信號和系統測試綜合論壇」已明確客觀地定義了PCI元件與系統級相容性驗証的具體要求,這將加快SoC的設計步伐。


相關文章
輕鬆有趣地提高安全性:SoC元件協助人們保持健康
從設計到製造 模組化儀器高彈性優勢完全發揮
仿真和原型難度遽增 Xilinx催生世界最大FPGA
SmartBond元件增加藍牙網狀網路支援能力
我們能否為異質整合而感謝亞里士多德?
comments powered by Disqus
相關討論
  相關新聞
» 慧榮獲ISO 26262 ASIL B Ready與ASPICE CL2認證 提供車用級安全儲存方案
» 默克完成收購Unity-SC 強化光電產品組合以滿足半導體產業需求
» 新思科技與台積電合作 實現數兆級電晶體AI與多晶粒晶片設計
» 恩智浦提供即用型軟體工具 跨處理器擴展邊緣AI功能
» AMD攜手合作夥伴擴展AI解決方案 全方位強化AI策略布局


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.13.59.192.81
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw