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