芯片驗(yàn)證的方法篇(上篇) 驗(yàn)證的方法篇之一:計(jì)劃的概述 驗(yàn)證的方法篇之二:計(jì)劃的內(nèi)容 驗(yàn)證的方法篇之三:計(jì)劃的實(shí)現(xiàn) 驗(yàn)證的方法篇之四:計(jì)劃的進(jìn)程評(píng)估 驗(yàn)證的計(jì)劃篇之一:計(jì)劃的概述在選擇驗(yàn)證方法和構(gòu)建驗(yàn)證環(huán)境之前,我們首先需要清楚驗(yàn)證計(jì)劃是什么,。在展開(kāi)設(shè)計(jì)之前,,設(shè)計(jì)人員和驗(yàn)證人員都會(huì)閱讀功能描述文檔,以理解設(shè)計(jì)的各項(xiàng)功能為前提,,來(lái)考慮如何驗(yàn)證它,。如果功能描述本身不清晰,則需要同系統(tǒng)人員溝通來(lái)修改功能描述文檔,;如果設(shè)計(jì)和驗(yàn)證雙方人員對(duì)于某一項(xiàng)功能理解有不同的地方,,也需要最后同系統(tǒng)人員的解釋保持統(tǒng)一。 那么一旦完成了驗(yàn)證計(jì)劃書,,還需要對(duì)其進(jìn)行修改嗎,?答案是需要。因?yàn)樵趯?shí)際項(xiàng)目執(zhí)行過(guò)程中,,功能描述文檔和設(shè)計(jì)會(huì)不斷更新,,直到芯片到流片前都有可能在一直進(jìn)行,那么驗(yàn)證人員就需要做好相應(yīng)的驗(yàn)證計(jì)劃更新,。所以,,驗(yàn)證計(jì)劃的生命在設(shè)計(jì)被構(gòu)建之前就誕生了,伴隨著設(shè)計(jì)的周期,,直到流片,。 伴隨著驗(yàn)證計(jì)劃的創(chuàng)建,計(jì)劃流程可以分為若干個(gè)步驟,,它們包括:
創(chuàng)建一份驗(yàn)證計(jì)劃是首要的任務(wù),,通過(guò)收集下列材料可以更好地組織出有價(jià)值的計(jì)劃:
通常上面的這些資料可以從硬件功能描述和系統(tǒng)文檔中找到,,同時(shí),也可以從硅后測(cè)試,、固件開(kāi)發(fā)人員那里得到設(shè)計(jì)的實(shí)際使用配置情況,。 通過(guò)合理的驗(yàn)證計(jì)劃,可以為芯片開(kāi)發(fā)帶來(lái)很多好處:
從更寬泛的意義上來(lái)看,,一份驗(yàn)證計(jì)劃幾乎可以囊括所以跟驗(yàn)證相關(guān)的東西,,這其中不單單包括要驗(yàn)證的設(shè)計(jì)功能,還包括驗(yàn)證方法,、人力安排,、進(jìn)度評(píng)估等等。由于驗(yàn)證計(jì)劃的生命期很長(zhǎng),,在實(shí)際環(huán)境中,,有很多因素會(huì)不斷影響計(jì)劃的更新,這些可能的因素包括:
通過(guò)在早期制定出一份驗(yàn)證計(jì)劃,,并且伴隨著設(shè)計(jì)更新和驗(yàn)證過(guò)程不斷修改和跟蹤,,就可以提高驗(yàn)證的質(zhì)量,同時(shí)降低項(xiàng)目的風(fēng)險(xiǎn),。同時(shí)對(duì)于人力和時(shí)間進(jìn)度的合理估計(jì),,也使得驗(yàn)證進(jìn)度和流程更加透明。 驗(yàn)證的計(jì)劃篇之二:計(jì)劃的內(nèi)容在制定驗(yàn)證計(jì)劃的具體過(guò)程中,,我們會(huì)將技術(shù)部分和項(xiàng)目部分都考慮進(jìn)來(lái),。從技術(shù)角度而言,我們需要考慮的有驗(yàn)證的功能點(diǎn),、驗(yàn)證的層次,、測(cè)試用例、驗(yàn)證方法和覆蓋率要求,,從項(xiàng)目部分來(lái)看,,我們也需要考慮使用的工具、人力安排,、進(jìn)度安排和風(fēng)險(xiǎn)評(píng)估,。接下來(lái),我們逐個(gè)分析技術(shù)部分和項(xiàng)目部分,。 技術(shù)部分 驗(yàn)證的功能 需要驗(yàn)證的功能點(diǎn)主來(lái)自于功能描述文檔,,設(shè)計(jì)和驗(yàn)證人員在閱讀文檔的過(guò)程中,會(huì)將設(shè)計(jì)的功能,、參數(shù),、性能從自然語(yǔ)言拆分轉(zhuǎn)化為一個(gè)個(gè)可以單獨(dú)驗(yàn)證的功能點(diǎn),并且需要用定性定量的語(yǔ)言限定描述這些功能,。 我們可以將功能點(diǎn)按照優(yōu)先級(jí)分為:
驗(yàn)證的層次 結(jié)合驗(yàn)證的功能點(diǎn),,需要清楚該功能點(diǎn)是否可以在較低的層次完成驗(yàn)證,。從驗(yàn)證效率和激勵(lì)自由度來(lái)看,我們應(yīng)該盡量在較低的層次驗(yàn)證更多的功能點(diǎn),。在較高的層次,,例如芯片級(jí),應(yīng)該側(cè)重于系統(tǒng)集成測(cè)試,。 驗(yàn)證方法 需要考慮采取何種驗(yàn)證方法,,動(dòng)態(tài)仿真、形式驗(yàn)證還是硬件加速,?采取什么樣的透明度,,黑盒、白盒還是灰盒,?采用直接測(cè)試還是隨機(jī)約束激勵(lì),?在之前的驗(yàn)證方法篇中,我們對(duì)比了不同方法適用的場(chǎng)景,。 測(cè)試用例 有了帶驗(yàn)證的目標(biāo)功能,,選擇合適的層次和方法,,在完成了驗(yàn)證平臺(tái)搭建以后,,我們就需要考慮如何利用現(xiàn)有的驗(yàn)證平臺(tái)給出適當(dāng)?shù)募?lì),,檢查測(cè)試結(jié)果。 覆蓋率要求 覆蓋率是衡量激勵(lì)生成種類和設(shè)計(jì)功能點(diǎn)驗(yàn)證的量化指標(biāo),,無(wú)論通過(guò)何種驗(yàn)證方法,,我們都需要采用覆蓋率來(lái)確保給出了足夠多的想要的激勵(lì)類型,以及設(shè)計(jì)邊界和內(nèi)部窮歷了可能的狀態(tài),。除了給出合法的激勵(lì)之外,,也需要考慮給出一些錯(cuò)誤的激勵(lì),來(lái)測(cè)試設(shè)計(jì)的穩(wěn)定性和糾錯(cuò)能力,。 項(xiàng)目部分 工具選擇 對(duì)于項(xiàng)目而言,,需要通過(guò)驗(yàn)證計(jì)劃中選擇的方法,,來(lái)考慮選擇相應(yīng)的工具,它們包括:
選擇了不同的驗(yàn)證方法和工具,,接下來(lái)就需要考慮安排有合適技能的驗(yàn)證人員完成工作。 人力安排 在確定下來(lái)驗(yàn)證方法以后,,驗(yàn)證經(jīng)理就可以考慮投入的人力了,。由于不同驗(yàn)證方法存在顯著差別,除過(guò)考慮個(gè)人的實(shí)際經(jīng)驗(yàn)以外,,也需要考慮他們是否熟悉該模塊,,知識(shí)和技術(shù)背景越貼合,越傾向于選擇這樣的驗(yàn)證人員,。一般在同一個(gè)項(xiàng)目完整周期內(nèi),我們會(huì)考慮讓固定的人員跟蹤同一個(gè)設(shè)計(jì)模塊,,從搭建環(huán)境開(kāi)始,,經(jīng)歷模塊級(jí)、子系統(tǒng)級(jí)和芯片系統(tǒng)級(jí)驗(yàn)證過(guò)程,,這樣對(duì)于項(xiàng)目的風(fēng)險(xiǎn)較低,,人員的成長(zhǎng)也更快。 進(jìn)度安排 在安排人力的過(guò)程中,,我們同時(shí)也將進(jìn)度考慮了進(jìn)來(lái),。一般而言,進(jìn)度是從上向下傳達(dá)的,,驗(yàn)證經(jīng)理事先會(huì)有一個(gè)大致的時(shí)間表,,通過(guò)簡(jiǎn)單的計(jì)算:
來(lái)安排合適的人力投入到驗(yàn)證中去。而往往陷入的境地是,,人力不夠充分,,或者時(shí)間不夠?qū)捲#鎸?duì)這樣的困難,,時(shí)間是沒(méi)有彈性的,,更多地需要在人力角度上考慮如何恰當(dāng)?shù)匕才湃肆Γ龊脛?dòng)態(tài)的人力分配,,實(shí)現(xiàn)高效的資源配置,。那么對(duì)于驗(yàn)證經(jīng)理而言,進(jìn)度是否是不可修改的,,必須嚴(yán)格遵循呢,?這樣的問(wèn)題可能難以給出一個(gè)是或者否的答案,但是如果可以在計(jì)劃中將設(shè)計(jì)的交付時(shí)間,、驗(yàn)證的驗(yàn)收時(shí)間,、不同模塊的集成時(shí)間等等重要信息拆分開(kāi)來(lái),,做到更細(xì)致的量化和評(píng)估,那么項(xiàng)目執(zhí)行中的風(fēng)險(xiǎn)就可以在早期發(fā)現(xiàn),,同時(shí)朝著按時(shí)交付的目標(biāo)共同邁進(jìn),。 風(fēng)險(xiǎn)評(píng)估 在項(xiàng)目執(zhí)行中,無(wú)論是設(shè)計(jì)人員,、驗(yàn)證人員還是項(xiàng)目經(jīng)理,,都會(huì)面臨諸多不確定的因素:
在清楚了一份驗(yàn)證計(jì)劃中需要包含的各項(xiàng)因素之后,,我們接下來(lái)就需要考慮如何在項(xiàng)目初期準(zhǔn)備這樣一份關(guān)鍵的計(jì)劃,,以及在項(xiàng)目執(zhí)行過(guò)程中怎樣針對(duì)不確定因素的相應(yīng)更新計(jì)劃,確保項(xiàng)目的進(jìn)度受到最小的影響。 驗(yàn)證的計(jì)劃篇之三:計(jì)劃的實(shí)現(xiàn)一份細(xì)致的驗(yàn)證計(jì)劃會(huì)包括詳細(xì)的項(xiàng)目動(dòng)向,、更新和進(jìn)度,,面對(duì)人員總是保持緊張的窘境,只有清晰的計(jì)劃才能夠合理運(yùn)用人力資源,,保證時(shí)間和人力的平衡,。在上一篇計(jì)劃的內(nèi)容中,我們列舉出了諸多項(xiàng)目中不穩(wěn)定的因素,,這就使得驗(yàn)證計(jì)劃需要時(shí)常保持更新,,給出合理的安排,這樣的過(guò)程就蘊(yùn)含著從計(jì)劃到實(shí)踐再到反饋,,最后再進(jìn)行計(jì)劃修改,。 計(jì)劃變更的周期在不斷地發(fā)生,如下圖: 在對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證以后,,我們需要衡量驗(yàn)證的完備性,,這時(shí)候需要對(duì)覆蓋率進(jìn)行分析。當(dāng)發(fā)現(xiàn)覆蓋率無(wú)法滿足要求時(shí),,我們需要針對(duì)覆蓋率漏洞,,更改驗(yàn)證計(jì)劃并且相應(yīng)添加測(cè)試用例,通過(guò)這樣的反饋環(huán)路,,我們才可以循序漸進(jìn)地逼近功能驗(yàn)證的收斂目標(biāo)。 那么如何制定驗(yàn)證計(jì)劃呢,?通常我們按照如下的步驟:
邀請(qǐng)相關(guān)人員 通常我們會(huì)邀請(qǐng)跟系統(tǒng)設(shè)計(jì)和功能模塊相關(guān)的人員到會(huì),,共同展開(kāi)討論,參加會(huì)議的人一般包括:
這些人員在看待如何驗(yàn)證一個(gè)模塊的問(wèn)題上面都有著不同的角度,,例如系統(tǒng)人員會(huì)關(guān)注功能描述是否被實(shí)現(xiàn),,測(cè)試場(chǎng)景是否可以覆蓋到這些功能點(diǎn),設(shè)計(jì)人員會(huì)考慮具體的設(shè)計(jì)細(xì)節(jié)是否會(huì)被測(cè)試到,,軟件開(kāi)發(fā)人員會(huì)關(guān)心如何組合硬件的寄存器配置來(lái)完成某一項(xiàng)功能的正確配置和使用場(chǎng)景,,我們將這些利益相關(guān)者對(duì)于驗(yàn)證某一個(gè)模塊給出的不同角度列舉如下: 在實(shí)際中,我們不一定可以面面俱到同時(shí)邀請(qǐng)到這么全的項(xiàng)目角色,,而且,,我們也要考慮這么多不同的角色一起開(kāi)會(huì),溝通起來(lái)難免存在一些障礙和分歧,。所以實(shí)際的建議可以變成分階段進(jìn)行:
開(kāi)會(huì)討論 在開(kāi)會(huì)討論前,作為會(huì)議的組織者,,需要搞清楚開(kāi)會(huì)的目的和議題分別是什么,?
在開(kāi)會(huì)之前,我們需要一份合適的驗(yàn)證計(jì)劃的模板用來(lái)指導(dǎo)我們?cè)跁?huì)議上討論的主要內(nèi)容,,一份驗(yàn)證計(jì)劃的模板(或者組織結(jié)構(gòu))可以像下面這樣:
在上面這樣的計(jì)劃模板中,我們開(kāi)會(huì)前需要了解的是功能描述和硬件實(shí)現(xiàn)方案,,在開(kāi)會(huì)中只需要討論和確定哪些功能點(diǎn)是要驗(yàn)證的,,而哪些事不需要驗(yàn)證的,,至于驗(yàn)證環(huán)境搭建和測(cè)試用例構(gòu)成則是驗(yàn)證工作展開(kāi)以后需要更新到計(jì)劃中去的。 面對(duì)著不同背景的項(xiàng)目人員,,我們?cè)跁?huì)議中需要注意幾個(gè)方面,使得會(huì)議最終可以達(dá)成我們想要的結(jié)果,。這些值得注意的地方包括有:
通過(guò)和不同系統(tǒng)層次的人溝通,,充分交流不同層面上的觀點(diǎn),我們對(duì)于驗(yàn)證的功能點(diǎn)和它們?cè)谙到y(tǒng)運(yùn)用中的角色認(rèn)識(shí)才會(huì)更加清晰。 確定測(cè)試場(chǎng)景 經(jīng)過(guò)了細(xì)致的討論,,我們就可以確定下來(lái)哪些功能點(diǎn)需要測(cè)試,,進(jìn)而模擬實(shí)際場(chǎng)景給出激勵(lì)進(jìn)而生成測(cè)試場(chǎng)景,。在考慮如何生成測(cè)試場(chǎng)景的時(shí)候,我們需要注意思考下面幾個(gè)地方:
創(chuàng)建驗(yàn)證環(huán)境 在確定了測(cè)試場(chǎng)景和驗(yàn)證方法以后,我們構(gòu)建驗(yàn)證環(huán)境產(chǎn)生激勵(lì)來(lái)實(shí)現(xiàn)場(chǎng)景,。那么我們需要針對(duì)設(shè)計(jì)模塊的接口信號(hào)設(shè)計(jì)對(duì)應(yīng)的激勵(lì)發(fā)生組件,,通過(guò)控制協(xié)調(diào)不同的激勵(lì)組件來(lái)構(gòu)建場(chǎng)景。在實(shí)現(xiàn)激勵(lì)發(fā)生組件中,,我們需要考慮接口信號(hào)是否是標(biāo)準(zhǔn)總線或者是系統(tǒng)控制信號(hào)例如時(shí)鐘,、復(fù)位,如果有可以復(fù)用的驗(yàn)證資源,,那么毫無(wú)疑問(wèn)會(huì)節(jié)省我們的時(shí)間,。在有些時(shí)候,如果接口是標(biāo)準(zhǔn)總線,,且沒(méi)有現(xiàn)有資源可以利用的情況下,,我們需要自己實(shí)現(xiàn),那么從成本的角度來(lái)看,,只需要實(shí)現(xiàn)設(shè)計(jì)中所實(shí)現(xiàn)的總線功能即可,。例如,如果設(shè)計(jì)實(shí)現(xiàn)的是AHB總線協(xié)議,,但是只支持單次的讀寫訪問(wèn),,那么我們?cè)趯?shí)現(xiàn)AHB激勵(lì)組件的時(shí)候,也不必要實(shí)現(xiàn)AHB協(xié)議的全部,,而只需要實(shí)現(xiàn)單次讀寫協(xié)議,,滿足設(shè)計(jì)接口的協(xié)議要求即可。 同時(shí),,我們也需要考慮收集數(shù)據(jù)和檢查對(duì)比結(jié)果,,這就需要有監(jiān)視信號(hào)組件和檢查組件的實(shí)現(xiàn)。監(jiān)視信號(hào)組件的主要任務(wù)就是監(jiān)視設(shè)計(jì)的接口信號(hào)以及內(nèi)部信號(hào),,如果是總線接口,,那么需要在解析總線的情況下將觀察到的數(shù)據(jù)打包整理,如果是控制或者其它信號(hào),,也需要按照信號(hào)的使能定義,,在特定的事件下捕捉有效信號(hào)。監(jiān)視信號(hào)組件最終會(huì)將分析整理好的數(shù)據(jù)發(fā)送給檢查組件,,最后由檢查組件進(jìn)行數(shù)據(jù)比較,,給出比較信息和報(bào)告,最終判定該次測(cè)試是否成功,。 驗(yàn)證的計(jì)劃篇之四:計(jì)劃的進(jìn)程評(píng)估 在驗(yàn)證過(guò)程中,,我們需要不斷地更新驗(yàn)證的進(jìn)度,從各項(xiàng)參數(shù)綜合評(píng)估驗(yàn)證的完備性,。在不同的驗(yàn)證層次過(guò)程中,,我們通過(guò)收集以下信息來(lái)評(píng)估驗(yàn)證計(jì)劃的實(shí)施進(jìn)程:
接下來(lái)我們分別介紹上述信息的具體收集和分析過(guò)程。 遞歸測(cè)試通過(guò)率 一份遞歸測(cè)試表是將測(cè)試設(shè)計(jì)所有功能點(diǎn)的用例合并為一個(gè)測(cè)試集,。遞歸測(cè)試表的主要功能就是用來(lái)在設(shè)計(jì)經(jīng)過(guò)缺陷修復(fù)或者性能提高后測(cè)試原有的所有功能點(diǎn),,確保設(shè)計(jì)仍然可以正常工作。這種往復(fù)的測(cè)試方式不僅在于確保新的設(shè)計(jì)變化不會(huì)影響之前的功能,,也可以用來(lái)避免新的對(duì)話對(duì)于別的模塊造成的功能失效,,所以,設(shè)計(jì)的維護(hù)不僅在于按照設(shè)計(jì)需求提供新的功能,,而且也需要保證新功能不會(huì)影響原有的功能,。 不同的公司和團(tuán)隊(duì)之間,往往有著不同的遞歸測(cè)試工具和方法,,在這里需要注意的是工具和腳本的版本可能會(huì)對(duì)遞歸測(cè)試造成影響,。例如,如果我們切換了仿真器的版本,,那么可能會(huì)出現(xiàn)新的問(wèn)題需要我們調(diào)試,,所以在項(xiàng)目后期階段設(shè)計(jì)區(qū)域穩(wěn)定時(shí),我們不建議切換工具或者腳本的版本,。 另外一個(gè)重要的地方時(shí),,遞歸測(cè)試表中的測(cè)試用例需要確保是可以重現(xiàn)激勵(lì)場(chǎng)景的。這一點(diǎn)對(duì)于直接測(cè)試方法(例如C/C++)是容易實(shí)現(xiàn)的,,而對(duì)于隨機(jī)約束測(cè)試而言,,我們需要在測(cè)試中打印出每次測(cè)試用例使用到隨機(jī)種子(random seed),只有通過(guò)這個(gè)特定的鐘子號(hào),,我們才可以重新產(chǎn)生之前的激勵(lì),,并且跟蹤調(diào)試失敗的用例,。 我們將遞歸測(cè)試的流程歸納為下圖,值得注意的是,,如果在某一個(gè)層次的遞歸測(cè)試通過(guò),,我們接下來(lái)可以向上遷移到新的驗(yàn)證層次,展開(kāi)新的遞歸測(cè)試流程,,或者在設(shè)計(jì)需求發(fā)生變化時(shí),,重新從模塊級(jí)開(kāi)始遞交測(cè)試表。 不同層次的遞歸測(cè)試表,,每個(gè)測(cè)試用例的仿真時(shí)間消耗也不一樣,,一般而言,模塊級(jí)是最快的,,到了芯片級(jí),,一個(gè)遞歸測(cè)試表如果是數(shù)千級(jí)別的測(cè)試用例,往往需要若干天時(shí)間才能最終運(yùn)行完畢得出結(jié)果,。所以,,不同層次,不同設(shè)計(jì)規(guī)模大小,,不同測(cè)試場(chǎng)景復(fù)雜度,,都會(huì)影響測(cè)試用例的仿真時(shí)間。遞交測(cè)試表的重要因素就是仿真速度,,由于考慮到遞交測(cè)試表主要是計(jì)算資源的消耗和驗(yàn)證結(jié)構(gòu)的性能表現(xiàn),,我們對(duì)驗(yàn)證平臺(tái)的優(yōu)化和運(yùn)算資源都會(huì)在此時(shí)提出更高的要求,因?yàn)橹挥懈焖俚赝鶑?fù)遞交和得出結(jié)果,,才能更快得知新的設(shè)計(jì)變動(dòng)是否是可靠的,。 代碼覆蓋率 代碼覆蓋率是用來(lái)衡量RTL代碼是否被充分運(yùn)行的指標(biāo),目前的仿真器也都提供方法來(lái)收集代碼覆蓋率,,并且進(jìn)行合并和分析,。通過(guò)遞歸測(cè)試表,我們可以產(chǎn)生基于測(cè)試用例的代碼覆蓋數(shù)據(jù),,并且在遞歸測(cè)試完成后,,通過(guò)合并數(shù)據(jù),生成總的數(shù)據(jù)來(lái)分析各個(gè)模塊的覆蓋率情況,。常見(jiàn)的代碼覆蓋率包括:
值得注意的一點(diǎn)是,,仿真器在收集覆蓋率數(shù)據(jù)的時(shí)候會(huì)犧牲一些運(yùn)行效率,這是因?yàn)樗枰獙?duì)代碼保持“更多的關(guān)注”,,所以資源消耗要更多一些。所以,,我們建議只有在需要收集覆蓋率的時(shí)候,,需要傳入一些仿真命令觸發(fā)覆蓋率收集,而在更多情況下,,不需要傳入這些命令,,也不需要編譯帶有支持覆蓋率收集的仿真目標(biāo)。 在項(xiàng)目執(zhí)行中,,我們一般會(huì)在模塊級(jí)驗(yàn)證節(jié)點(diǎn)結(jié)束后開(kāi)始收集模塊級(jí)的代碼覆蓋率,,而在芯片級(jí)驗(yàn)證節(jié)點(diǎn)結(jié)束后,收集芯片級(jí)的代碼覆蓋率,。在兩部分的數(shù)據(jù)都收集結(jié)束后,,我們會(huì)進(jìn)行這兩個(gè)級(jí)別的覆蓋率數(shù)據(jù)融合,生成總的數(shù)據(jù)庫(kù),。一般項(xiàng)目中會(huì)有專人來(lái)負(fù)責(zé)收集和分析覆蓋率,,各個(gè)模塊的覆蓋率數(shù)據(jù)會(huì)分發(fā)給相應(yīng)的驗(yàn)證人員,等待他們的分析,、過(guò)濾或者添加新的測(cè)試用例,,再次遞交測(cè)試收集新的數(shù)據(jù),以此往復(fù),,來(lái)提高總體的覆蓋率,。 通常,我們會(huì)比較關(guān)注語(yǔ)句覆蓋率,、決策覆蓋率和跳轉(zhuǎn)覆蓋率,,對(duì)于總體指標(biāo)和各個(gè)模塊在這三項(xiàng)覆蓋率上也有相應(yīng)的指標(biāo),只有至少達(dá)到了90%以上的覆蓋率,,才會(huì)有足夠的信心進(jìn)行分析下面的兩類覆蓋率,。 斷言覆蓋率 斷言描述本身也支持覆蓋率收集,一般可以通過(guò)仿真或者硬件加速的方式來(lái)收集,,也可以通過(guò)形式驗(yàn)證的工具來(lái)收集,。在常見(jiàn)的仿真中,仿真器會(huì)記錄斷言的先決條件是否被觸發(fā),以及判斷語(yǔ)句成功或者失敗,。 根據(jù)選擇的驗(yàn)證方法不同,,我們可以將斷言覆蓋率分為:
功能覆蓋率 功能覆蓋率是為了衡量設(shè)計(jì)的各項(xiàng)功能要求是否都實(shí)現(xiàn)了,并且按照預(yù)想的行為執(zhí)行,。功能覆蓋率會(huì)關(guān)注設(shè)計(jì)的輸入,、輸出和內(nèi)部狀態(tài),通常它會(huì)通過(guò)如下組合的方式來(lái)描述功能覆蓋率要求:
缺陷曲線 在驗(yàn)證過(guò)程中,,我們會(huì)不斷地發(fā)現(xiàn)新的設(shè)計(jì)缺陷,通過(guò)缺陷記錄表或者已有的商業(yè)工具記錄下來(lái),,進(jìn)而提交給設(shè)計(jì)人員,。設(shè)計(jì)人員在分析了缺陷,構(gòu)思并修復(fù)了設(shè)計(jì)缺陷以后,,也會(huì)修改該缺陷的記錄,,并且通知驗(yàn)證人員。驗(yàn)證人員會(huì)遞交原有的遞歸測(cè)試,,在有必要的情況下添加新的測(cè)試用例,,直到所有的測(cè)試通過(guò)以后,才能宣布新修復(fù)的缺陷是成功的,。 在缺陷被記錄的過(guò)程中,,我們通過(guò)時(shí)間坐標(biāo)和特定時(shí)段的缺陷數(shù)量繪制出缺陷率曲線。在之前《驗(yàn)證的任務(wù)》一文中,,我們就指出了缺陷曲線對(duì)于驗(yàn)證計(jì)劃的影響,,從下圖中我們看到,如果我們可以盡早地將缺陷曲線增長(zhǎng)狀態(tài)收斂,,這意味著我們后期發(fā)現(xiàn)缺陷數(shù)量和可能性也就越小,。可有些時(shí)候,我們需要當(dāng)心的是,,如果到了驗(yàn)證后期,,我們發(fā)現(xiàn)了一個(gè)基本功能存在重大缺陷,,這就是一個(gè)危險(xiǎn)信號(hào),代表我們很可能在之前驗(yàn)證當(dāng)中遺漏一些重要的激勵(lì)部分,。 至此,,我們將用來(lái)評(píng)估驗(yàn)證進(jìn)度的幾種標(biāo)準(zhǔn)概括介紹完了。對(duì)于驗(yàn)證計(jì)劃的制定,,不僅僅是驗(yàn)證人員會(huì)參與其中,,其它角色也會(huì)被邀請(qǐng)到會(huì)議當(dāng)中。而到后來(lái)驗(yàn)證進(jìn)度的更新和評(píng)估過(guò)程,,則主要是驗(yàn)證人員和驗(yàn)證經(jīng)理的在執(zhí)行,。實(shí)際項(xiàng)目的經(jīng)在重復(fù)告訴我們,一份詳盡準(zhǔn)確,、不斷更新維護(hù)的驗(yàn)證計(jì)劃是邁向成功驗(yàn)證的基石,。 來(lái)源:路科驗(yàn)證(微信訂閱號(hào)ROCKER-IC) 及 EETOP BLOG |
|
來(lái)自: 畢杰lb7q1kq7pr > 《待分類》