基于eRM建立自動(dòng)化的驗證平臺
Monitor:是一個(gè)被動(dòng)組件,Monitor只能采樣需要監測的DUT信號和輸入數據,從圖1中可以看出,Monitor只是單端通道,不能主動(dòng)驅動(dòng)信號。此外,Monitor可以監測DUT的輸出響應,并對監測到感興趣的信號發(fā)生變化時(shí)激活預定義的事件,通過(guò)此事件可以對當前輸入的數據進(jìn)行覆蓋率統計以及對輸出數據和信號的時(shí)序進(jìn)行檢查。
2.2 提高功能覆蓋率的方法
為了提高驗證的生產(chǎn)率和功能覆蓋率,eRM提供了一套標準化的驗證方法,典型的是測試激勵采用隨機(Random)驗證和直接(Direct)驗證方法。直接(Direct)驗證法是指輸入的激勵是驗證人員所期望的,相應的輸出也是可以控制和實(shí)時(shí)監控的。但是直接測試方法不能驗證正常功能以為的驗證點(diǎn),而且編寫(xiě)每條測試激勵需要耗費大量的時(shí)間,一般只在驗證前期調試驗證環(huán)境或者發(fā)現DUT錯誤的時(shí)候才采用直接測試法來(lái)定位錯誤。隨機驗證法是為被驗證子模塊或系統產(chǎn)生一系列隨機的輸入序列。采用隨機驗證法可以發(fā)現一些設計人員沒(méi)有預計到的但實(shí)際應用中會(huì )出現的情況,同時(shí)也能找出設計中很難發(fā)現的錯誤。此外,對于目前大多數設計來(lái)說(shuō),所有輸入情況和內部狀態(tài)的組合是無(wú)窮的,因此不可能將所有的情況都進(jìn)行驗證。解決此問(wèn)題的辦法就是有效的將直接驗證法和隨機驗證法結合起來(lái)。eVC中提供的sequence可以很好地實(shí)現以上2種驗證方法,在編寫(xiě)測試激勵時(shí),可以對Sequence加入任何的約束來(lái)產(chǎn)生測試數據。為了直觀(guān)的看到功能覆蓋率的情況,Spe-cman提供了圖形化的覆蓋率統計界面,每次驗證完一條測試激勵后,都可以生成一個(gè)覆蓋率文件,當所有的測試激勵驗證完畢后,Specman一次讀入所有的覆蓋率文件,并且將每個(gè)功能點(diǎn)的覆蓋率都是用百分比的框圖來(lái)表示。
3 eVC驗證平臺的應用實(shí)例
下面通過(guò)一個(gè)應用實(shí)例來(lái)介紹如何基于eRM建立自動(dòng)化驗證平臺,該實(shí)例中待測模塊fifo是一個(gè)簡(jiǎn)單的存儲模塊,其驗證平臺如下圖2所示。本文引用地址:http://dyxdggzs.com/article/194825.htm
在驗證fifo時(shí),先驗證fifo的正常讀寫(xiě)功能,再驗證其讀寫(xiě)的極端情況,即將fifo寫(xiě)滿(mǎn)直至溢出或者讀空,并且實(shí)時(shí)的監測fifo讀出的數據及其狀態(tài)。圖2中的各個(gè)文件都是用e驗證語(yǔ)言中的Struct或Unit來(lái)實(shí)現的。
(1)信號接口fifo_signal。fifo_signal中定義了所有需要與fifo相連接的信號,既可以是接口信號也可以是fifo的內部信號,fifo_bfm可以通過(guò)這些信號端口向fifo輸入激勵,也可以采樣部分輸出信號。
(2)總線(xiàn)驅動(dòng)接口fifo_bfm。在fifo_bfm中,通過(guò)drive()函數將sequence里生成的數據加載入fifo中,也可以在總線(xiàn)端口產(chǎn)生fifo的讀寫(xiě)時(shí)序,將數據和地址寫(xiě)入fifo中,此組件也可以采樣驗證人員感興趣的信號。
(3)輸入數據流fifo_seqtlence。在fifo_sequence中,主要是根據所加約束來(lái)產(chǎn)生fifo的測試數據。fifo_sequence的定義中包含三部分,分別是item,sequence_driver以及sequence_kind。其中item是模擬fifo需要的輸入激勵來(lái)定義,例如數據以及讀寫(xiě)信號等。sequen-ce_driver將生成的數據包發(fā)送給fifo_bfm。sequence_kind是指定需要的各種sequence,一般由驗證人員根據實(shí)際設計協(xié)議自主定義的。
(4)監視器fifo_monitor。fifo_monitor主要是對寫(xiě)入和讀出fifo的數據進(jìn)行監測,并實(shí)時(shí)檢查fifo的狀態(tài)是否與實(shí)際的輸入相符。fi-fo_monitor是一個(gè)被動(dòng)組件,不能驅動(dòng)信號,本例中只能采集fifo的數據和狀態(tài)信號并且釋放在Item中定義的事件,作為fifo_coverage統計fifo的數據及其狀態(tài)覆蓋率的敏感事件。
(5)fifo_coverage組件。fifo_coverage中定義了所有的需要統計覆蓋率的數據,例如統計fifo的狀態(tài)變化、寫(xiě)入的數據等,并在每驗證完一條測試激勵后,可以實(shí)時(shí)的觀(guān)測到該覆蓋率的變化。
(6)評分板fifo_sb。fifo_sb是一個(gè)用來(lái)做自動(dòng)化比較的組件,并對輸入的激勵進(jìn)行一系列的處理,預先得到一個(gè)絕對正確的輸出結果,并與從fifo中fifo_monitor采集到的輸出數據逐一進(jìn)行比較,如果二者的數據或時(shí)序不同,就會(huì )報出錯誤信息。
(7)eVC中expect和check檢查。在eRM中,提供了一些特定的檢查時(shí)序的函數和語(yǔ)法,和Verilog中斷言Assert一樣,使用Expect或者Check可以將fifo的設計規范中的fifo_empty,fifo_full等狀態(tài)的與實(shí)際在仿真器中的監測到的fifo狀態(tài)進(jìn)行比較,如果二者不相符,則通過(guò)函數dut_error()輸出相應的錯誤信息。
4 結語(yǔ)
本文以fifo為例,采用了基于eRM驗證方法學(xué)來(lái)建立自動(dòng)化的驗證平臺,并詳細介紹了fifo驗證環(huán)境框架結構中各個(gè)組件的功能和實(shí)現方法,極大地提高了fifo的驗證效率和功能覆蓋率。該平臺完全繼承eRM驗證方法學(xué),主要采用了eRM中的直接測試法和隨機測試法,具有較高的驗證重用性,大大的縮短了實(shí)際項目開(kāi)發(fā)中搭建驗證環(huán)境的時(shí)間,并已得到了廣泛的應用。
評論