《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > MDV流程在geMac驗證中的應(yīng)用
MDV流程在geMac驗證中的應(yīng)用
2016年電子技術(shù)應(yīng)用第8期
張海波
深圳市中興微電子技術(shù)有限公司,廣東 深圳518055
摘要: 在驗證工作中,驗證工程師通常先編寫驗證計劃(verification plan,vplan),然后根據(jù)它來編寫驗證用例(testcase)。在項目進展的過程中,設(shè)計方案會不斷的修改更新,那么一段時間后,就會出現(xiàn)設(shè)計方案、驗證計劃和驗證用例不匹配的情況,驗證計劃本身容易流于形式;另外驗證工程師也需要定位問題、回歸用例、向驗證經(jīng)理匯報工作,工作內(nèi)容繁多。文章通過geMac驗證實例,介紹了如何借助Cadence公司vManager驗證工具的regression center、Metric Center、Tracking Center,更加高效科學(xué)地開展驗證工作。
關(guān)鍵詞: testcase vplan geMac vManager
中圖分類號: TN402
文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.08.010
中文引用格式: 張海波. MDV流程在geMac驗證中的應(yīng)用[J].電子技術(shù)應(yīng)用,2016,42(8):48-52.
英文引用格式: Zhang Haibo. Practical application of MDV in geMac verificaton[J].Application of Electronic Technique,2016,42(8):48-52.
Practical application of MDV in geMac verificaton
Zhang Haibo
Shenzhen Zhong Xing Microelectronics Co.,Ltd,Shenzhen 518055,China
Abstract: Verification engineer usually write verification plan(vplan) at first, and then write testcase according to the vplan. However, after a period of time,the testcases do not match the verification plan, and in this case the verification plan is a mere formality. Moreover, verification engineer the verification engineer needs to debug problems, regress, and report to verification manager about the process of jobs. Various things need to be done. This paper whick takes geMac Verfication as an example,and with the help of Cadence’s vManager, using vManager’s regression center,Metric Center and Tracking Center demonstrates how carry out verification job more efficiently and scientificly.
Key words : testcase;vplan;geMac;vManager

0 引言

  在傳統(tǒng)的驗證流程中,通常會先編寫好驗證計劃(verification plan,vplan),然后再編寫驗證用例(testcase)。但是由于項目需求、規(guī)格變更,驗證計劃和testcase會有著比較大差異的情況,testcase不能真實地反映驗證計劃,而驗證計劃就失去了其指導(dǎo)testcase編寫的本意。要避免這種情況發(fā)生,就需要工程師手動對驗證需求、覆蓋目標(biāo)、覆蓋結(jié)果進行管理和跟蹤,使得驗證迭代過程變得繁瑣,耗時,降低驗證效率。

  借助于vManager,通過完整的標(biāo)準(zhǔn)度量驅(qū)動驗證(Metric Driven Verification,MDV)流程參見圖1,可以很好地解決上面存在的問題。MDV驗證方法使用功能覆蓋率,仿真正確性檢查和斷言作為驗證需求通過準(zhǔn)則(Metrics),并使驗證計劃成為驗證過程本身的一個可執(zhí)行的(executable)部分,即使用驗證過程自動化工具制定(或讀?。炞C計劃,并收集覆蓋數(shù)據(jù),產(chǎn)生基于驗證計劃的狀態(tài)報告。使得驗證計劃在整個項目周期內(nèi)充當(dāng)驗證過程檢驗標(biāo)準(zhǔn)的角色。

圖像 001.png

圖1  完整的MDV流程

1 建立executable驗證計劃

  驗證計劃的編寫是整個MDV流程的開始,在MDV流程中通過vplanner進行編寫驗證計劃,如圖2所示,在vplanner中添加了兩個用例[1]。在這里一開始并沒有編寫完全部的驗證計劃,主要是基于以下兩個原因:(1)驗證計劃是一個逐次迭代的過程,隨著驗證工作的展開,以及對DUT(Design Under Test)理解的加深,驗證計劃會修改多次,所以一開始,先編寫兩個簡單用例,跑通數(shù)據(jù)流,為后續(xù)工作的開展,奠定堅實的基礎(chǔ);(2)以這兩個testcase為例,重點介紹如何將所編的vplan和testcase建立一種關(guān)聯(lián),而這種關(guān)聯(lián)的建立,是MDV流程的基礎(chǔ),同時它能夠使得驗證計劃和testcase的更新相互促進。

圖像 002.png

圖2  vplanner編寫testcase

  1.1 vsif和仿真腳本

  vsif(Verification Session Input Format)文件是整個MDV流程的重要組成部分,該文件中描述了vManager在啟動仿真時,需要執(zhí)行的用例、仿真時需要執(zhí)行的腳本、每個用例最長的仿真時間等內(nèi)容[2],根據(jù)文獻[2]的方式,編寫的debug_tb.vsif文件的部分內(nèi)容如圖3所示。

圖像 003.png

圖3  vsif文件部分內(nèi)容

  在這個group geInternal_intfFormat里面,設(shè)定了這個group中用例需要執(zhí)行的次數(shù)、所使用的種子、用例的名稱、以及這個用例所執(zhí)行的模式,同時也可以根據(jù)自己的需要設(shè)定其他的一些信息。

  1.2 vplan和驗證平臺testcase/覆蓋率模型(ucm)建立關(guān)聯(lián)

  在vManager中l(wèi)aunch一個vsif(Verification Session Input Format)文件,待仿真結(jié)束后,在vplanner中l(wèi)oad某個 session,然后進行驗證平臺中的testcase和vplan中的testcase建立關(guān)聯(lián)的操作,如圖4所示。

圖像 004.png

圖4  選中對應(yīng)的session

  接下來,點擊Metrics標(biāo)簽,然后窗口左右兩邊選中對應(yīng)的testcase,點擊map建立關(guān)聯(lián), Map之后,需要對vplan進行保存。

  通過前文的介紹,已經(jīng)建立了vplan與testcase的關(guān)聯(lián),通過這種關(guān)聯(lián),在vmanager中可以實時地查看vplan中相關(guān)feature的覆蓋情況(不僅僅局限于Testcase,同時也可以包括assertion、function coverage等,圖5中僅以testcase為例,關(guān)于assertion也將在下文介紹),通過這種圖形化的顯示,可以讓驗證人員更加直觀地了解到vplan中哪些feature尚未被覆蓋,可以及時調(diào)整工作方向和工作重點。

圖像 005.png

圖5  vplan中的覆蓋情況

2 多維度度量分析

  當(dāng)仿真進行到一定階段之后,需要進行testcase、assertion、coverage三個方面的分析,表現(xiàn)在vplan中的testcase被執(zhí)行了多少,還剩余哪些;assertion 是否被觸發(fā);coverage達到了多少,哪些testcase對coverage的貢獻最新,所有的這些分析在Analysis Center中完成。

  2.1 testcase和assertion分析

  首先,按照上一個小節(jié)介紹的方法,增加相關(guān)用例,然后在vManager中l(wèi)aunch相關(guān)vsif文件,仿真結(jié)束后在vplan中l(wèi)oad相關(guān)session,那么接著就可以在vManager中進行分析,圖6中展示了部分testcase的覆蓋情況:

圖像 006.png

圖6  vplan分析

  從圖6中可以看到在vplan中關(guān)于1.1.1的gmii的testcase這一Metric已經(jīng)被覆蓋了,單從testcase上說,暫時可以告一段落了,后續(xù)如果再需要添加相應(yīng)用例的話,也可以按照上面的前文所述之方法進行相對應(yīng)的分析。

  正如前文所言,驗證工程師需要從多個維度展開驗證工作,testcase的編寫只是一方面,斷言assertion也是非常有用的手段,添加assertion之后,這些assertion是否被觸發(fā),是否成功都需要關(guān)注。在MDV中,assertion也可以反映在vplan中,而且可以與testcase類似進行相對應(yīng)的map,在vplan中添加的斷言如圖7所展示。

圖像 007.png

圖7  vplan中添加assertion

  在仿真結(jié)束之后,load相應(yīng)的session,在vplan中可以進行如圖8的map。

圖像 008.png

圖8  對assertion進行map

  完成map之后,可以對assertion進行分析,如圖9所示。

圖像 009.png

圖9  assertion覆蓋情況

  通過上面的操作,可以將所編寫的assertion清晰地展現(xiàn)出來,其優(yōu)點體現(xiàn)在以下幾個方面:

  (1)整個驗證計劃中有哪些assertion,可以清晰地展現(xiàn)。

  (2)assertion是否被覆蓋可以在vplan分析中容易被發(fā)現(xiàn)。

  不會在regression中遺漏assertion。這是因為assertion對仿真速度有著很大的影響,可能在某次仿真中,驗證工程師“關(guān)閉”了assertion,但是在后期的regression中又忘記“打開”,而使用vplan進行map以及在vmanager中對vplan進行分析,就可以很好地避免這種情況的出現(xiàn)。

  2.2 Coverage分析

  驗證過程中需要在適當(dāng)?shù)睦锍瘫?jié)點關(guān)注DUT的coverage情況,以便及時地添加用例,同時在regression時,確定哪些用例對覆蓋率貢獻比較高,那么在regression的時候,就可以優(yōu)先回歸;而對覆蓋率貢獻比較低的testcase,可以分析其原因加以改進。另外在覆蓋率分析的時候,可能某些特定的模塊和開發(fā)溝通之后知道它是冗余的或者不需要覆蓋,而這些不需要覆蓋的模塊可以通過在coverage分析的時候?qū)⑵洹疤蕹?,最終使coverage達到可解釋的100%如圖10所示。

圖像 010.png

圖10  coverage分析

  我們可以通過圖10對coverage的情況有直觀的了解,同時也可以在instance名字,比如GE4_MAC_TX上右擊,然后進行更加細(xì)致地分析比如Block Analysis、Expression Analysis、FSM Analysis等,關(guān)于這些細(xì)節(jié)這里不再進行詳細(xì)地探討,留給讀者自行嘗試。這里介紹如何確定testcase對coverage貢獻的情況,那么在后續(xù)regression時,可以優(yōu)先執(zhí)行對coverage貢獻大的用例。

  在Analysis Center中,執(zhí)行Rank Runs操作,其方法在圖11給出了描述。

圖像 011.png

圖11  Rank Runs

  在Rank Runs的結(jié)果中,需要重點關(guān)注兩列。testRankRuns(Rank),這一列顯示出用例對覆蓋率整體的貢獻大??;另外一列是delta_testRankRuns(Rank),它顯示了在所有羅列的仿真中,本次仿真用例相對于其他用例,對coverage貢獻的大小。例如第一行的geInternal_intfFormat/RVC_pcs2mac_metric,在仿真中相對其他testcase而言,對coverage的貢獻是67.74%;而那些delta_tessRankRuns(Rank)為0的行,表示,在這次仿真中,相對其他的幾次的仿真,對coverage沒有任何額外的貢獻。值得注意的是RVC_pcs2mac_metric在第一行中delta_tessRankRuns(Rank)為67.74%;而在最后一行中delta_tessRankRuns(Rank)為0%,這是因為在仿真中用例可能被執(zhí)行多次,而且每次的seed都有可能是隨機的,那么就會出現(xiàn)同一個testcase對coverage貢獻不同的情況。

3 項目級別狀態(tài)進展匯報

  3.1 項目進度狀態(tài)跟蹤

  驗證工程師不僅要完成日常工作,還有需要將工作之進展向驗證經(jīng)理進行匯報,在vManager中提供了非常方便的Report功能,生成Report的格式也可以是多樣的;另一方面,作為驗證經(jīng)理也需要關(guān)注每個驗證工程師testcase執(zhí)行的情況,如testcase總數(shù)、pass多少、失敗多少;或者是在某個時間段內(nèi),驗證工作的進展。vManager的Tracking Center提供了非常便捷的方式,以多樣化的圖表展示出驗證工作的進展。

  首先,需要Taking snapshot,選中所要分析的sessions,然后執(zhí)行如圖12中所示的操作。

圖像 012.png

圖12  take snapshot

  在Tracking Center中,可以看到生成的表格顏色,其中bar的顏色是可以自己設(shè)置的,從圖13中可以看到這個session中,用例總共是6個,pass和fail都是3個。

圖像 013.png

圖13  用例執(zhí)行情況(toatal、Pass、Fail)

  按照上面的方法,可以再增加一些session,其結(jié)果如圖14所示。

圖像 014.png

圖14  增加多個session

  通過圖14,比較直觀地了解到這幾個工作日用例執(zhí)行的情況;在tracking center中,也可以tracking coverage的情況,通過tracking coverage,驗證工程師能夠更好地調(diào)整用例的執(zhí)行,否則即使用例pass再多,coverage一直很低,或者一直維持在一個恒定的水平,那么說明testcase設(shè)計的不夠合理,或者是沒有使用隨機化種子。

  基于這樣的考慮,我們進行在tracking center中查看coverage的情況,其主要步驟如圖15所示。最終的結(jié)果如圖16所示。

圖像 015.png

圖15  tracking metric

圖像 016.png

圖16  coverage圖表

  驗證工程師,生成了所需要的數(shù)據(jù),可以將結(jié)果反饋給驗證經(jīng)理,數(shù)據(jù)結(jié)果的生成也是比較簡單的,點擊Create Report,然后選擇相應(yīng)的路徑即可,如圖17所示。查看生成的最終結(jié)果如圖18所展示。

圖像 017.png

圖17  生成Report

圖像 018.png

圖18  最終的html格式圖表(部分內(nèi)容)

  通過上面的操作,將所感興趣的內(nèi)容最終以html格式的文件向驗證經(jīng)理進行匯報,通過圖表,更加直觀地展示了工作的進展,coverage的趨勢,有助于降低項目的風(fēng)險,節(jié)省項目管理所需要的時間。

  3.2 基于server的項目管理

  在上一個小節(jié)中,提及了驗證工程師如何向驗證經(jīng)理匯報工作進展,作為驗證經(jīng)理,從項目管理的角度,需要知曉團隊中所有的驗證工程師的工作進展,而傳統(tǒng)的EDA工具無法讓驗證經(jīng)理實時知曉每個人的進展,用例執(zhí)行情況,用例耗時等信息,這些信息需要在周末或者月末匯總之后才可以得知。

  vManager是基于server進行管理的,server的地址以及端口號,需要設(shè)置在環(huán)境變量中,設(shè)置完成之后,驗證工程師在自己的服務(wù)器上啟動vManager,launch vsif文件啟動仿真時,這些信息會傳遞到server上,驗證經(jīng)理可以在自己的服務(wù)器上啟動vManager,在regression Center中查看每個人的情況,如圖19所示。

圖像 019.png

圖19  查看項目中所有的seesion

  當(dāng)然驗證經(jīng)理也可以在tracking Center中查看到所有session狀態(tài),如pass, fail, session duration time等等,如圖20所示。

圖像 020.png

圖20  查看團隊中所有用例執(zhí)行情況

4 小結(jié)

  Cadence vManager作為MDV驗證方法的實現(xiàn)工具,將項目驗證過程變得自動化和可管理化。本文由vplan和session如何建立關(guān)聯(lián)開始,詳細(xì)地介紹了建立關(guān)聯(lián)的意義以及流程。接著向讀者展示如何借助于vManager進行testcase分析,assertion分析,重點介紹了如何在Coverage分析時,如何借助于Rank Runs查找對覆蓋率貢獻最大的testcase。最后介紹了驗證工程師如何利用tracking Center生成相關(guān)報告,以便更加直觀地反饋自己的進展以及所負(fù)責(zé)模塊的覆蓋率趨勢;驗證經(jīng)理如何利用regression Center查看團隊session執(zhí)行的情況,以及在Tracking Center中以圖表的形式查看整個團隊session執(zhí)行的情況。

  驗證質(zhì)量的提升與MDV驗證方法的實施緊密相連。工具本身并不能保證驗證的完備性,但其具備的制定可執(zhí)行驗證計劃,自動回歸驗證管理及仿真數(shù)據(jù)管理,覆蓋率分析,以及驗證進度可視化等功能為MDV驗證方法的實施提供了強有力的支撐,為驗證過程中大量耗時管理工作節(jié)約了時間,使驗證工程師能夠有更多時間專注于設(shè)計本身,對設(shè)計中功能點進行詳細(xì)分析和驗證,以提升驗證完備性。

  當(dāng)驗證計劃發(fā)生變化時,所有改動都能夠被工具記錄,跟蹤并保證最終能得以驗證,因而可執(zhí)行的驗證計劃在整個驗證過程中都是有意義的一部分,而非如傳統(tǒng)驗證計劃,在項目初期完成后就很少被使用。同時,可執(zhí)行的驗證計劃使驗證進度變得透明,幫助驗證團隊提高驗證可預(yù)見性,以及更好的利用資源。

  參考文獻

  [1] Cadence.2_mdv_foundations_planning workshop.pdf.

  [2] Cadence.3_mdv_foundations_infrastructure_workshop.pdf.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。