1. 驗證計劃必要性
有了驗證策略之后,為什么需要驗證計劃呢?在《》文章里講過,驗證策略是芯片驗證的戰(zhàn)略性指導(dǎo)文件,驗證計劃是芯片驗證的戰(zhàn)術(shù)性指導(dǎo)文件。驗證策略在高層次上用比較概括的語言描述對項目驗證的整體規(guī)劃,方便大家了解整體方向,具體可以看《》。
有了驗證方向之后,就需要進一步把驗證策略拆解成更具體的實施計劃,詳細描述驗證是如何進行的,驗證計劃的存在至少有以下幾點必要:
可以更清楚知道驗證某對象有哪些任務(wù)、風(fēng)險等;
方便評估工作量、人力安排和進度節(jié)點
判斷驗證何時可以結(jié)束;
有一份驗證環(huán)境對應(yīng)的文檔,方便其他人審視和提出改進意見;
方便以后人員交接時,有文檔可供參考;
方便同一小組內(nèi)任務(wù)的分工合作,減少不必要的溝通,也讓小組成員做事有依據(jù)可循;
方便驗證收尾時查缺補漏;
2. 驗證計劃撰寫流程
驗證計劃撰寫的流程是怎么樣的呢?首先就是要明確驗證計劃的輸入件有哪些,也就是根據(jù)哪些文檔來撰寫驗證計劃,比如:功能需求文檔、設(shè)計文檔和內(nèi)存映射表等等。通常要求這些文檔是準(zhǔn)確無誤的,如果描述有出入的地方都算是bug,因為驗證是依賴于這些文檔來做的,如果源頭出錯了,那驗證可能也就跟著錯了。
在明確所有輸入件后,就開始撰寫驗證計劃了,期間可能還會反復(fù)與其他人溝通確認(rèn)。等驗證計劃完成后就開始邀請各方人員(至少包含項目經(jīng)理、系統(tǒng)設(shè)計人員、待驗設(shè)計人員、資深驗證專家)進行評審,然后根據(jù)大家所提的各種合理建議進行完善驗證計劃,最終開始搭建驗證環(huán)境。
驗證計劃不是寫一次就束之高閣了,而是會隨著項目的進行反復(fù)更新,比如說待驗設(shè)計的規(guī)格變化,那么驗證計劃理所當(dāng)然就要更新了,更新完就需要新的一輪評審和改進,最終實施?;蛘哂行炞C計劃在實施過程發(fā)現(xiàn)某些方面不可行,那也需要進行更新、評審和改進,并不是一成不變的。
總得來說,驗證計劃撰寫的流程如下圖1所示,是一個周而復(fù)始、循環(huán)進行的過程。
圖1 驗證計劃撰寫流程
3. 驗證計劃內(nèi)容
驗證計劃需要包含哪些內(nèi)容?可以劃分為兩類:技術(shù)部分和管理部分。顧名思義,技術(shù)部分就是講如何驗證待測對象,確保無問題遺漏。管理部分就是講人員管理和分工合作等方面的事情。
3.1 技術(shù)部分
技術(shù)部分建議至少包含這幾部分:驗證測試點、驗證層次、驗證方法、驗證環(huán)境、驗證用例、驗證檢查、覆蓋率和驗證完備性分析。
3.1.1 驗證測試點
建議驗證測試點使用Excel表系統(tǒng)整理出來,應(yīng)包含待驗設(shè)計接口、內(nèi)部結(jié)構(gòu)以及與其它模塊交互的測試點分解,具體可以參考這篇文章《》和《》。在寫完測試點后,需要與架構(gòu)人員、設(shè)計人員以及有經(jīng)驗的人員一起評審,看看有哪些需要增強和補充的,特別是設(shè)計重點關(guān)注的部分,還要結(jié)合歷史的問題清單進行舉一反三。
3.1.2 驗證層次和驗證方法
驗證層次和驗證方法通常在驗證策略里已經(jīng)確定好了,在驗證計劃需要再提及本驗證的層次和方法,并展開陳述。驗證層次需要闡述清楚本驗證環(huán)境覆蓋的RTL范圍、重點驗證哪些功能、有哪些功能無法在本層次覆蓋,需要提級驗證的。驗證方法就是要論證所采用的方法是否可以覆蓋本驗證層次的驗證目標(biāo),這些方法有什么優(yōu)缺點、局限性等,對于缺點和局限性,要如何去解決或盡量減小呢。
3.1.3 驗證環(huán)境
需要闡述驗證環(huán)境的框架,是由哪些組件組成,采用什么樣的方法學(xué)和抽象層次,比如UVM、VMM等。有哪些激勵組件、檢查組件、覆蓋率、寄存器模型等,可以讓大家快速了解驗證環(huán)境的結(jié)構(gòu)。
在這些組件中,需要描述組件是否要全部重新開發(fā)、或是在已有組件上進行修改就可以使用、或是購買商用VIP等。
3.1.4 驗證用例
驗證用例是一塊很重要的內(nèi)容,驗證質(zhì)量的好壞很大程度上有依賴激勵是否有能夠有高效地產(chǎn)生完備的場景。具體內(nèi)容可以參考《》和《》。
要提前把用例按類規(guī)劃清楚,列出大致需要的用例類別和個數(shù),最好整理成一個表格,寫清楚每個testcase所要產(chǎn)生的驗證場景。一方面做到心中有數(shù)和排計劃,另一方面也方便別人審查。
3.1.5 驗證檢查
驗證用例產(chǎn)生期望的場景后,能否找出RTL bug,直接取決于驗證檢查(checker或reference_model+scoreboard)是否完備。具體內(nèi)容可以參考《》。
要闡述清楚有哪些驗證檢查手段,這些手段分別檢查什么features。是使用端到端檢查、仿真斷言檢查、formal證明還是self-check等。然后介紹下每種檢查手段的結(jié)構(gòu)和檢查流程等。
3.1.6 覆蓋率
覆蓋率包含代碼覆蓋率、功能覆蓋率、斷言覆蓋率和統(tǒng)計覆蓋率。在指定EDA工具的選項后,代碼覆蓋率會自動被收集,這一塊不用過多操心人為引入錯誤。對于其它三種覆蓋率,一定要百分百重視,它是衡量我們是否充分驗證到期望場景的重要依據(jù),它們一般不會直接發(fā)現(xiàn)RTL bug,但對于增強激勵起著關(guān)鍵作用。
統(tǒng)計覆蓋率可以統(tǒng)計激勵的分布情況,讓我們早點發(fā)現(xiàn)是否哪里約束有問題導(dǎo)致激勵走偏,做很多無用功。功能覆蓋率和斷言覆蓋率可以讓我們知道是否有什么場景是未覆蓋到的。對于這三者要盡早開發(fā),而且多輪審查,確保覆蓋完備且實現(xiàn)正確。一旦漏掉或?qū)崿F(xiàn)錯誤它們中的某些點,就可能直接導(dǎo)致漏驗證了某些RTL功能特性,而且還不一定好發(fā)現(xiàn)。
CDV(coverage driven verification),也即基于覆蓋率驅(qū)動的驗證技術(shù),是基于覆蓋率的一個閉環(huán)。如果覆蓋率實現(xiàn)有問題,將直接導(dǎo)致閉環(huán)被破壞掉了。
覆蓋率也是衡量驗證進度的關(guān)鍵指標(biāo),是重中之重,要萬分謹(jǐn)慎。
圖2 CDV流程
3.1.7 驗證完備性分析
這一節(jié)需要論證驗證環(huán)境是否可以支撐覆蓋當(dāng)前驗證層次的所有特性,既要定性也要定量。定性從驗證流程規(guī)范、波形檢視等環(huán)節(jié)去論述,定量從測試點清單、覆蓋率數(shù)據(jù)、回歸數(shù)據(jù)量等方面去論述,兩者一塊組成完備地證據(jù)鏈,用以說服項目經(jīng)理、驗證經(jīng)理等同事,讓他們和自己對驗證質(zhì)量有信心。
3.2 管理部分
管理部分建議至少包含這幾部分:工具列表、驗證進度安排、每階段驗收標(biāo)準(zhǔn)、人力需求和風(fēng)險評估。
3.2.1 工具列表
說明當(dāng)前驗證環(huán)境工具的需求情況,比如需要哪些EDA工具及其版本,需要開發(fā)和復(fù)用的腳本、UVM版本、代碼管理工具、Python等軟件的版本,等等。統(tǒng)一的工具可以使同組成員之間動作的一致性,不至于某些代碼在A同事可以跑的通,到B同事就報語法不兼容錯誤。
3.2.2 驗證進度安排
這一塊要結(jié)合項目和驗證策略的進度時間表,把當(dāng)前驗證環(huán)境的所有任務(wù)分階段細化到各個時間節(jié)點上。寫清楚在什么時間點需要做完什么事情。比如驗證環(huán)境開發(fā)程度、回歸通過率、覆蓋率數(shù)據(jù)達到多少、質(zhì)量審視及驗證報告完成度等。
驗證進度安排需要提前和驗證精力、設(shè)計人員對齊,讓別人了解你到什么階段會做什么事,心里有數(shù)。
3.2.3 每階段驗收標(biāo)準(zhǔn)
這里需要結(jié)合驗證策略中規(guī)定需要驗收的材料和數(shù)據(jù)與本驗證環(huán)境的進度安排,把它們細化到各個階段點上,比如到A節(jié)點ccov為50%,fcov為60%,到B節(jié)點ccov為80%,fcov為80%等。
而且這些每階段的驗收標(biāo)準(zhǔn)也是需要提前和驗證經(jīng)理、設(shè)計人員對齊的。
3.2.4 人力需求
根據(jù)前面評估的工作量和時間進度,規(guī)劃完成驗證需要多少人以及每個人的技能點等。
3.2.5 風(fēng)險評估
風(fēng)險評估也是很重要,要提前理清楚當(dāng)前驗證可能存在什么風(fēng)險,及時上報。比如:
待驗設(shè)計某功能存在延遲交付風(fēng)險;
人力風(fēng)險;
能力風(fēng)險;
工具風(fēng)險
4. 總結(jié)
完整的驗證計劃是做好驗證必不可少的條件,一定要用心寫好,而且也要多溝通、多對齊和review,這不只是驗證工程師的事情,更需要其他相關(guān)領(lǐng)域的同事共同參與完善。千萬不要怕麻煩,好的驗證計劃是成功的一半。
創(chuàng)芯大講堂芯片驗證課程推薦
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.