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