1、前言
在SoC驗證中,checklist是很重要的一步,要審視下有沒有無意間漏掉的檢查或者做出的假設(shè)。大部分情況下,checklist總能發(fā)現(xiàn)一些RTL bug,本文給出了檢查的思考方向,希望對大家有用,也歡迎大家補充。
2、存在假設(shè)
對TB的假設(shè)
對IP只需要驗證集成和基礎(chǔ)功能就可以?
測試點分解時有做過哪些等價類劃分?
Memory調(diào)試信號不需要看,有錯的話,驗證環(huán)境會報的?
繼承的用例一定沒問題?是golden的?
如果集成的IP沒變,驗證用例也不需要改動?
對RTL的假設(shè)
IP是成熟的?
IP功能沒有修改?
IP是供應商交付的?
寄存器是腳本產(chǎn)生的,默認值應該不存在問題?
沒有改動的代碼沒有問題?
不同層次驗證是否使用相同的RTL版本
上述這些假設(shè)是否成立,我們該如何證明這些假設(shè)是成立的。
3、功能驗證
IP的輸入信號
IP的輸入信號有哪些?是否每根信號都有覆蓋過?
是否構(gòu)建了多個輸入同時觸發(fā)的場景?
輸入信號來源于哪些IP,這些IP在各種低功耗場景下給我的信號正確嗎?
輸入信號來源的IP的工作場景和我負責的IP有耦合嗎?
IP的輸出信號
IP的輸出信號值是否正確?
每根輸出信號是否都正確連接到對應的終點?
輸出信號是否是寄存器輸出?
中斷輸出是脈沖還是電平?是否構(gòu)建了多次中斷,且中斷是否能被正確消除?
掉電或異常時,輸出是否會有毛刺或跳變出現(xiàn)?
IP的工作流程
只驗證集成的,集成驗證的層次是否正確?是否驗證到了IP的接口位置?
IP的整體工作流程是怎么樣的?
在整個工作流程中,時鐘域是否正確,占空比是否合適?
復位域是否正確,復位寬度是否合適?
上電流程是否正確?
下電流程是否正確?
電源域是否正確,掉電鉗位值是否正確?
如果有多個時鐘源,是否構(gòu)建了各種頻率組合,特別是時鐘源之間的最大頻率差和最小頻率差?
如果有多個電源域,是否構(gòu)建了各種電源域的組合?
是否構(gòu)建了多次上下電的場景?
上下電流程波形檢查了嗎?
是否構(gòu)建了喚醒的場景?喚醒信號的寬度是否合適?
安全是如何管理的?
會有哪些異常,這些異常是如何管理的?
IP如果在樣片上出現(xiàn)問題,該如何debug呢?需要的信號通過什么手段得到?如果同時發(fā)生其它問題,還能繼續(xù)debug嗎?
如果有一個訪問掛死,會怎么處理?
總線反壓是如何觸發(fā)的?該如何解反壓?
RTL代碼我review過了嗎?如果我是設(shè)計人員,我會如何設(shè)計這些代碼?我考慮了哪些因素,目前的設(shè)計人員都考慮了嗎?
IP中有異步設(shè)計嗎?怎么做的?符合規(guī)范嗎?異步兩端的復位是怎么處理的?
多個master訪問同一個slave,訪問的優(yōu)先級是否正確,訪問地址時怎么處理的?
IP的應用場景
IP的各種應用場景都覆蓋了嗎?
在各種應用場景中使用哪些輸入和輸出?以及如果出現(xiàn)了其它輸入信號的跳變會怎么樣?
IP對外支持的功能是否都驗證到了?是否驗證了一個功能多次觸發(fā)的場景?
配置是否支持動態(tài)配置?
構(gòu)建的應用場景是否全面,是否足夠復雜,是否考慮了多種場景、異常的組合?
移植的驗證用例我修改了哪些?為什么要做這些修改?其它不修改的地方是基于什么考慮?
所有驗證用例都了解嗎?每一行的作用都明白嗎?
4、性能驗證
這個IP的性能指標有哪些?如何測試的?
性能測試的場景是否充分?
性能是否滿足市場使用需求?
5、低功耗驗證
有哪些低功耗場景,這些場景都有覆蓋嗎?
這些低功耗場景是如何切換的(切換過程中是否有時鐘、復位等的異常)?
各種低功耗場景對IP是什么要求?
6、網(wǎng)表驗證
exclude的時序報錯是否review過?
這個IP是否有一些需要綜合keep的單元?網(wǎng)表中這些都還在嗎?
7、后記
上述這些內(nèi)容我已經(jīng)整理成思維導圖,有需要的話,可以在《專芯致志er》公眾號后臺回復SoC關(guān)鍵字自動獲取。