驗(yàn)證其實(shí)是一個(gè)“證偽”的過(guò)程,從流程到工具,驗(yàn)證工程師的終極目的都只有一個(gè):發(fā)現(xiàn)所有BUG,或者證明沒(méi)有BUG,以保證芯片功能性能的正確性和可靠性。
驗(yàn)證環(huán)節(jié)對(duì)于一顆芯片的重要性也是不言而喻的:
·從項(xiàng)目周期來(lái)說(shuō),功能驗(yàn)證在芯片的整個(gè)設(shè)計(jì)周期中占用時(shí)間最多,大概要占到70%左右。
·從項(xiàng)目成本來(lái)說(shuō),驗(yàn)證一顆芯片大概會(huì)占硬件開(kāi)發(fā)總成本的50%。
接下來(lái)就來(lái)聊聊IC驗(yàn)證的流程和工具。
理解DUT
驗(yàn)證工程師需要深入理解芯片Spec,包括但并不限于:了解架構(gòu)、數(shù)據(jù)流向、基本功能、接口、IP、協(xié)議、寄存器定義等。
對(duì)Spec了解越詳細(xì),之后的驗(yàn)證工作就能夠越充分。
使用工具:查看Spec使用最基礎(chǔ)的Office軟件即可
制定驗(yàn)證計(jì)劃
對(duì)于芯片項(xiàng)目的Boss或者負(fù)責(zé)人來(lái)說(shuō),一份完整的驗(yàn)證計(jì)劃需要包含:驗(yàn)證策略方法、人力資源調(diào)配、項(xiàng)目進(jìn)度評(píng)估、風(fēng)險(xiǎn)評(píng)估等多項(xiàng)內(nèi)容。
對(duì)于驗(yàn)證工程師來(lái)說(shuō),就應(yīng)該考慮功能測(cè)試點(diǎn)、驗(yàn)證層次、驗(yàn)證方法和驗(yàn)證覆蓋率等技術(shù)層面為主的內(nèi)容,還需要在搭建驗(yàn)證環(huán)境之前充分review驗(yàn)證計(jì)劃。
制定驗(yàn)證方法策略
一般會(huì)按照大的功能模塊或數(shù)據(jù)流向?qū)UT進(jìn)行劃分,比如需要確定是在module/sub system/chip system哪個(gè)level去做驗(yàn)證。
搭建驗(yàn)證平臺(tái)
根據(jù)驗(yàn)證方案來(lái)編寫驗(yàn)證環(huán)境,一般會(huì)使用uvm平臺(tái),python腳本輔助來(lái)搭建環(huán)境,并通過(guò)冒煙測(cè)試來(lái)確定驗(yàn)證平臺(tái)是否完善。
從時(shí)間線上來(lái)說(shuō),搭建驗(yàn)證平臺(tái)可以和提取驗(yàn)證點(diǎn)并行進(jìn)行。
提取測(cè)試點(diǎn)
測(cè)試點(diǎn)被驗(yàn)證工程師認(rèn)為是“驗(yàn)證的圣經(jīng)”,因?yàn)檫@是諸多工作開(kāi)展的出發(fā)點(diǎn)和落腳點(diǎn)。一些公司會(huì)把這個(gè)步驟稱作VO(verification objective),也有的公司叫做Test Point。
驗(yàn)證工程師在分解測(cè)試點(diǎn)時(shí)需要注意完備性、低耦合以及無(wú)歧義,然后將測(cè)試點(diǎn)羅列在Excel表格中。
理想情況下,驗(yàn)證工程師拿到測(cè)試點(diǎn)list和DUT之后,就可以寫testcase進(jìn)行驗(yàn)證了。
另外,在環(huán)境搭建、驗(yàn)證執(zhí)行、用例調(diào)試、覆蓋率分析等階段也會(huì)不斷對(duì)測(cè)試點(diǎn)進(jìn)行修正和增補(bǔ)。
執(zhí)行驗(yàn)證
根據(jù)提取出來(lái)的測(cè)試點(diǎn),添加testcase在驗(yàn)證平臺(tái)上去進(jìn)行測(cè)試,這是一個(gè)需要反復(fù)迭代、反復(fù)優(yōu)化的過(guò)程。
這個(gè)過(guò)程中會(huì)使用到vcs/xrun進(jìn)行仿真、makefile編輯腳本、verdi/ncsim查看波形,并且要盡可能確保每個(gè)測(cè)試點(diǎn)的功能是否實(shí)現(xiàn)正確。
收集驗(yàn)證覆蓋率
需要收集功能覆蓋率和代碼覆蓋率,增補(bǔ)用例,以確保覆蓋率達(dá)到100%。一般可以通過(guò)imc或Verdi來(lái)查看覆蓋率報(bào)告。
一些規(guī)模比較大的IC設(shè)計(jì)公司,會(huì)設(shè)置專門的崗位來(lái)收集驗(yàn)證覆蓋率。
完成驗(yàn)證報(bào)告
驗(yàn)證報(bào)告通常需要包含checklist、覆蓋率分析、難點(diǎn)覆蓋情況等內(nèi)容。
上述環(huán)節(jié)概述了驗(yàn)證工程師比較主要的工作流程。
但其實(shí)驗(yàn)證是貫穿著整個(gè)IC設(shè)計(jì)流程的,在芯片開(kāi)發(fā)過(guò)程中只要發(fā)現(xiàn)問(wèn)題或缺陷,就需要進(jìn)行修正和改進(jìn),直到設(shè)計(jì)符合預(yù)期的要求為止。
從提取驗(yàn)證點(diǎn)、編寫驗(yàn)證方案到搭建驗(yàn)證環(huán)境再到具體驗(yàn)證執(zhí)行環(huán)節(jié)的Debug,每一步都需要經(jīng)驗(yàn)的加持。
入行兩三年的工程師和十年經(jīng)驗(yàn)的工程師,在細(xì)節(jié)方面的把控是完全不同的。
而驗(yàn)證,恰好是一個(gè)細(xì)節(jié)為王的崗位。這也就是為什么ic驗(yàn)證工程師越老越吃香的原因之一。
工作特性要求驗(yàn)證工程師要做的并不僅僅只是用EDA工具進(jìn)行仿真驗(yàn)證,而是從系統(tǒng)架構(gòu)到應(yīng)用層面對(duì)自己所負(fù)責(zé)驗(yàn)證的模塊進(jìn)行深入了解。
既要能夠如驗(yàn)證計(jì)劃要求的那樣工作在最高層,也要能夠在最底層植入錯(cuò)誤進(jìn)行自我檢查。
現(xiàn)在每個(gè)摳細(xì)節(jié)的一小步,都是積累經(jīng)驗(yàn)一大步。與ICer共勉!