新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 基于OpenVera構(gòu)建以太網(wǎng)MAC芯片驗證平臺

基于OpenVera構(gòu)建以太網(wǎng)MAC芯片驗證平臺

——
作者:張冬青 張晉敏 時間:2007-01-26 來源:《電子設(shè)計應(yīng)用》 收藏

引言

本文引用地址:http://butianyuan.cn/article/21369.htm

當芯片的設(shè)計規(guī)模越來越大,朝向soc發(fā)展時,rtl級功能仿真時間還可以忍受,但門級仿真己經(jīng)成為不可能繼續(xù)廣泛使用的技術(shù)了。對設(shè)計進行完備性驗證要求有足夠的測試向量,隨著設(shè)計規(guī)模的增大,需要的仿真向量也急劇增加。近十年來,芯片的設(shè)計規(guī)模增大了100倍,仿真向量增加了近10000倍。二者的共同作用使門級仿真所需的時間飛速增長。要找到如此龐大的能夠保證驗證完備性的仿真向量集也變得不太可能。

另一方面,芯片設(shè)計又面臨著上市時間的巨大壓力,驗證的不足直接導(dǎo)致芯片不能通過測試,由此可能造成更大的損失。驗證,尤其是功能驗證必將影響集成電路的設(shè)計和開發(fā)進程。因此,縮短驗證時間、建立高效的驗證平臺已成為現(xiàn)代集成電路設(shè)計的關(guān)鍵。

基于openvera驗證平臺的結(jié)構(gòu)

實時以太網(wǎng)rte mac芯片是符合ieee802.3(csma/cd)協(xié)議和ieee1588精確時間同步協(xié)議的網(wǎng)絡(luò)通信控制器。它不僅兼容商用以太網(wǎng)的功能,還增加了特殊工業(yè)網(wǎng)絡(luò)中所必須的實時特性,將應(yīng)用于高速工業(yè)以太網(wǎng),以滿足工業(yè)以太網(wǎng)的實時要求。


圖1 驗證平臺的發(fā)送部分架構(gòu) 本平臺就是為驗證rte mac芯片而搭建的。平臺采用openvera語言,基于事務(wù)級建立。驗證平臺發(fā)送部分的架構(gòu)如圖1所示,接收部分結(jié)構(gòu)與此類似。它包括下面幾個部分:

1) 調(diào)度:調(diào)度是整個平臺的頂層,用于協(xié)調(diào)各個模塊的工作。

2) duv(design under verification):待驗證的芯片,除此以外都是用openvera語言編寫的測試軟件模塊。

3) 測試事例:驗證中針對具體功能而采用不同的測試事例,這里采用帶約束的隨機驗證方式,通過對它的約束產(chǎn)生各種測試事例。

4) frame_gen:將測試事例按照cpu總線側(cè)的幀格式組成數(shù)據(jù)幀通過bfm輸出到芯片。

5) monitor:監(jiān)視器,包括bus_ monitor和ethernet_ monitor。其中bus_ monitor監(jiān)測總線的行為,可以監(jiān)視存儲器讀寫,芯片的數(shù)據(jù)處理等事務(wù);ethernet_ monitor可以監(jiān)視輸出有效、沖突、載波等網(wǎng)路信息。

6) check_table:根據(jù)bfm側(cè)監(jiān)視器檢測的數(shù)據(jù)以及相應(yīng)的配置,將理想duv的輸出存儲在數(shù)組中,check模塊可以把check_table內(nèi)的數(shù)據(jù)與duv輸出進行對照,實現(xiàn)自動檢測。

7) bfm:總線功能模型,用于模擬總線功能,驅(qū)動duv。

openvera驗證平臺的建立方法及特點

該平臺基于事務(wù)級驗證,采用專門的驗證語言編寫,具有高度的可重用性、靈活性,體現(xiàn)著現(xiàn)代電路設(shè)計中驗證的發(fā)展潮流,下面將結(jié)合此平臺介紹現(xiàn)代驗證的特點和趨勢。 驗證與設(shè)計并行

傳統(tǒng)的設(shè)計首先進行設(shè)計的開發(fā),完成rtl代碼的編寫后再進行驗證,整個產(chǎn)品開發(fā)時間接近于設(shè)計加上驗證的時間。而對于現(xiàn)在的項目開發(fā),在根據(jù)具體的設(shè)計要求定義功能,并給出初步的設(shè)計文檔之后,就可以根據(jù)這些功能定義同時進行設(shè)計開發(fā)和驗證平臺的搭建。這一階段中驗證平臺的搭建主要是建模,因此需要引入高級驗證語言。高級驗證語言是芯片設(shè)計復(fù)雜度達到一定程度后的必然產(chǎn)物,如openvera ,systemc ,system verilog,都具有強大的建模功能。就openvera而言,它引入c++中類的概念,是一種面向?qū)ο蟮木幊?,并有強大的函?shù)功能支持,不僅使得驗證與設(shè)計并行成為可能,還能加快驗證平臺的建立。


圖2 總線的驅(qū)動時序

基于事務(wù)級的驗證方法

以往的驗證基于信號級,一個復(fù)雜芯片的信號數(shù)目非常多,包括大量的外部信號和內(nèi)部信號,想要對它進行完整詳細的驗證,需要耗費很多的精力和時間,嚴重影響設(shè)計周期?;谑聞?wù)的驗證方法可以在一個更高的層次上進行驗證,顯著地減輕了測試工作,并有助于統(tǒng)計測試覆蓋率。事務(wù)是一次性完成的一組操作或信號變化,在一個抽象概念上包括信號的傳送,數(shù)據(jù)的處理、變化,系統(tǒng)的狀態(tài)等。事務(wù)的概念很寬,可以簡單到存儲器的讀寫,復(fù)雜到很多數(shù)據(jù)的處理與傳輸。事務(wù)也可以由多個操作、多個時鐘周期組成。

當一個設(shè)計在信號層經(jīng)常要關(guān)注那些1或0時,設(shè)計者可以借助基于事務(wù)的方法很方便快捷地創(chuàng)建測試方法。系統(tǒng)結(jié)構(gòu)設(shè)計人員可以不用費心去思考那些使能信號、地址總線等細節(jié), 而是更多的關(guān)注數(shù)據(jù)的流向、處理、存儲,以及電路的狀態(tài)和動作等這類事務(wù)?;谑聞?wù)的驗證方法可以說是自然驗證方法在設(shè)計更高抽象層的一種擴展,它也有利于平臺的可重用性。


圖3 將發(fā)送數(shù)據(jù)寫入片內(nèi)ram

驗證平臺的重用性

具有重用性的驗證既可以被有相同特性的芯片所重用,比如當不同芯片基于同樣的總線時,總線的bfm以及監(jiān)視器就可以重用在不同的設(shè)計里。很多公司也有自己的成型驗證庫,如synopsys提供的designware vip就是一種。另外,具有重用性的驗證也可以在同一設(shè)計中被不同的測試事例所重用,本設(shè)計中的frame_gen就是這樣的模塊。搭建可重用的平臺最重要的是各個部件相互獨立,并有層次性。下面對本平臺的bfm和監(jiān)視器這兩大關(guān)鍵的可重用部件加以說明。

bfm

總線功能模型構(gòu)建于較高的抽象層次,是總線功能的一種抽象描述,在基于特定總? 線的基礎(chǔ)上,為底層的各種總線操作建立直接同信號相聯(lián)系的模塊。這些模塊可以用函數(shù)的形式出現(xiàn),這些函數(shù)的組合可以用來實現(xiàn)總線的功能,這就是總線功能模型??梢?,它的作用是提供給上層測試激勵一個任務(wù)接口,而對底層的dut,它提供具體的時序,完成從高層函數(shù)到具體帶時序功能的轉(zhuǎn)換。在設(shè)計測試激勵的時候,可以通過簡單地調(diào)用總線功能模型提供的任務(wù)以及函數(shù)對dut進行驅(qū)動。


圖4 發(fā)送開始

在本驗證任務(wù)中,只對單個芯片進行驗證,只需要對總線進行讀寫,可以完全采用任務(wù)的形式實現(xiàn)。bfm的程序中有一個cpu_port.vrh端口文件,是程序與芯片接口的文件之一,openvera通過它對duv施加激勵。驅(qū)動任務(wù)可以用類封裝起來(這里是基于任務(wù)的bfm),這些任務(wù)模擬總線的功能,通過對類內(nèi)任務(wù)調(diào)用可實現(xiàn)對duv施加激勵。

在平臺運行時可以例化這個類,并調(diào)用其任務(wù),調(diào)用bfm任務(wù)實現(xiàn)對duv驅(qū)動時的時序如圖2所示。圖中示出intel186寫周期的時序(wr為寫信號,低電壓有效,s_clk為時鐘,ale為地址鎖存信號,data_addr為數(shù)據(jù)地址線),實現(xiàn)總線向芯片寫數(shù)據(jù)的功能。采用vera與vcs工具,數(shù)據(jù)與地址總線分時復(fù)用值為0xffff 的部分是數(shù)據(jù),0x0001與0x0002是寫操作的地址。

監(jiān)視器

本設(shè)計中有兩個監(jiān)視器,它的可重用性是提高驗證效率的重要原因,需要遵循一些基本的設(shè)計規(guī)則。首先,1個監(jiān)視器只監(jiān)視1個接口,這樣具有更大的靈活性,需要重用時可以不進行任何修改直接使用。 如果監(jiān)視器要監(jiān)視多個接口,當1個接口發(fā)生改變時就需要修改監(jiān)視器,這不符合重用性的要求。其次,監(jiān)視器可以被建立和取消。 在soc設(shè)計中經(jīng)常有復(fù)用i/o 的存在,隨著i/o功能的不同,可能要使用不同的監(jiān)視器來監(jiān)控,需要通過soc設(shè)置的改變來進行選擇。一般來說,可以在監(jiān)視器代碼中添加一個參數(shù)開關(guān)來滿足這個要求,在openvera中只需在調(diào)度中控制

。最后還需要注意的是,監(jiān)視器不能受其它設(shè)計或測試模塊影響, 其它模塊代碼如激勵驅(qū)動、運行環(huán)境或待測ip 的可配置寄存器的變化不能影響監(jiān)視器工作。

隨機測試

隨機測試是必不可少的。因為對于一個系統(tǒng)而言,若期望使用直接測試激勵來覆蓋所有功能的測試,工作量是巨大的;對于模塊間交互工作的邊界情況的測試,使用直接測試激勵也力不從心。所以,相對于直接激勵測試而言,隨機測試的目的在于試圖花費較少的代價找出在某些極端情況或偶然巧合下才出現(xiàn)的設(shè)計錯誤。隨機是帶約束的隨機,它比完全的隨機測試更有針對性。對隨機的控制可以在類內(nèi)部建立constraint模塊進行隨機約束,也可以調(diào)用類的對象randomize()函數(shù),用with{}進行約束。以以太網(wǎng)幀為例,
“ frame.randomize() with{data_length<100};”產(chǎn)生的隨機數(shù)據(jù)長度限定在100字節(jié)以內(nèi)。另外,在隨機測試中,功能覆蓋率顯得尤為重要,它是隨機測試是否完成的標準。采用專門的語言和事務(wù)級的驗證,以及監(jiān)視器的監(jiān)視,能使統(tǒng)計功能覆蓋率變得很容易。比如檢測是否激勵經(jīng)過了所有類別的幀,如超長幀、短幀、地址不匹配幀等。

平臺靈活性和獨立性

靈活的驗證平臺會大大提高驗證的效率。重用性在實現(xiàn)復(fù)雜功能的情況下,還要具有獨立性。從另一個角度看,獨立性也可以帶來平臺的靈活性。本文平臺中的配置模塊和軟件提供給check模塊特定的通道,從而在不影響其它模塊的情況下達到了最大的靈活性。自動檢測通過兩側(cè)監(jiān)視器監(jiān)視的事務(wù),根據(jù)配置進行對照,然后產(chǎn)生錯誤提示,給出出錯的相關(guān)信息,這使得驗證人員可以根據(jù)錯誤報告準確定位錯誤發(fā)生地點。這些就是現(xiàn)代驗證的一個趨勢。

實驗結(jié)果

本平臺在unix工作站采用synopsys的驗證開發(fā)環(huán)境,設(shè)計語言采用openvera,應(yīng)用vera和vcs仿真工具。發(fā)送部分波形如圖3和圖4所示,芯片有8k的片內(nèi)ram,首先把發(fā)送數(shù)據(jù)寫入ram,當ram中有數(shù)據(jù)或數(shù)據(jù)寫完后再進行發(fā)送。

如圖,從15100ns開始向片內(nèi)ram寫入發(fā)送數(shù)據(jù);從27220ns開始啟動發(fā)送數(shù)據(jù)并添加前導(dǎo)(premable)、前定界(sfd)、校驗碼(fcs)。

結(jié)語

本文中所討論的驗證平臺已在具體項目中得到應(yīng)用,該結(jié)構(gòu)在很大程度上提高了可重用性、靈活性和驗證的自動化程度。使用該驗證平臺, 能夠極大地提高驗證平臺開發(fā)效率,也加速了設(shè)計的最終實現(xiàn)。



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉