久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

芯片驗(yàn)證系列:驗(yàn)證的計(jì)劃篇(良心大作,,驗(yàn)證必看)

 畢杰lb7q1kq7pr 2020-12-15

          復(fù)雜信號(hào)處理模塊的驗(yàn)證方案

          芯片驗(yàn)證全視

         芯片驗(yàn)證的方法篇(上篇)

         芯片驗(yàn)證的方法篇(下篇)

芯片驗(yàn)證的方法篇

本文分四個(gè)部分:
驗(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è)步驟,,它們包括:

  1. 創(chuàng)建驗(yàn)證計(jì)劃

  2. 選擇驗(yàn)證方法

  3. 人力資源調(diào)配

  4. 構(gòu)建驗(yàn)證平臺(tái)和環(huán)境組件

  5. 開(kāi)發(fā)測(cè)試用例

創(chuàng)建一份驗(yàn)證計(jì)劃是首要的任務(wù),,通過(guò)收集下列材料可以更好地組織出有價(jià)值的計(jì)劃:

  • 結(jié)構(gòu)功能描述

  • 設(shè)計(jì)的各種操作使用模式

  • 在正常輸入和錯(cuò)誤輸入情形下設(shè)計(jì)的行為

  • 設(shè)計(jì)的接口

  • 在一些邊界情況下設(shè)計(jì)的行為

  • 設(shè)計(jì)在現(xiàn)實(shí)中使用的場(chǎng)景描述

通常上面的這些資料可以從硬件功能描述和系統(tǒng)文檔中找到,,同時(shí),也可以從硅后測(cè)試,、固件開(kāi)發(fā)人員那里得到設(shè)計(jì)的實(shí)際使用配置情況,。

通過(guò)合理的驗(yàn)證計(jì)劃,可以為芯片開(kāi)發(fā)帶來(lái)很多好處:

  • 使得設(shè)計(jì)和驗(yàn)證人員對(duì)于功能描述文檔的理解和翻譯保持一致,。

  • 將自然語(yǔ)言描述的功能通過(guò)可測(cè)試的語(yǔ)言來(lái)描述,。

  • 可更合理地評(píng)估出工作量、人力安排和進(jìn)度節(jié)點(diǎn),。

  • 為驗(yàn)證人員提供更清晰的驗(yàn)證目標(biāo),、任務(wù)和進(jìn)度安排

  • 為功能文檔提供反饋,,修改文檔中不明確,、有歧義的描述

從更寬泛的意義上來(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ì)劃的更新,這些可能的因素包括:

  • 會(huì)有不同人員更新驗(yàn)證計(jì)劃,。一份充分的驗(yàn)證計(jì)劃,,需要系統(tǒng)、設(shè)計(jì),、驗(yàn)證,、軟件人員給出意見(jiàn),共同參與制定,。

  • 需要更新上百上千的測(cè)試用例,,并且與計(jì)劃中的待測(cè)功能映射。

  • 考慮選擇不同的驗(yàn)證方法,,如果有多種方法并用還需要使得它們之間保持兼容和跨越式的復(fù)用,。針對(duì)不同的設(shè)計(jì),需要考慮選擇動(dòng)態(tài)仿真,、形式驗(yàn)證或者硬件加速方法,,如果采用兩種以上的方法,還需要考慮如何實(shí)現(xiàn)技術(shù)平臺(tái)上的跨越復(fù)用,。

  • 如果有新的設(shè)計(jì)要求,,需要更新計(jì)劃,,同時(shí)設(shè)法對(duì)人力和進(jìn)度的影響降低到最小。在設(shè)計(jì)的過(guò)程中,,設(shè)計(jì)人員仍然會(huì)收到新的功能需求,,那么一旦確定下來(lái)添加新的功能,就需要考慮額外的人力和對(duì)于進(jìn)度的影響,。

  • 如果有多個(gè)組參與驗(yàn)證,需要考慮如何協(xié)調(diào),。對(duì)于大型的SoC項(xiàng)目,,一般會(huì)有多個(gè)功能組參與,甚至他們會(huì)在不同的城市辦公,,這時(shí)候去協(xié)調(diào)組跟組之間的工作,,并綜合出整體進(jìn)度結(jié)果就很重要了。

通過(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í)分為:

  • 基本功能:通常包括時(shí)鐘,、電源,、復(fù)位、寄存器訪問(wèn)和基本特性,,這些可以在模塊級(jí)完成驗(yàn)證,。

  • 互動(dòng)功能:一些需要同其它模塊互動(dòng)的特性,需要在更高層次的子系統(tǒng)級(jí)或者芯片級(jí)完成驗(yàn)證,。

  • 次要功能:通常這些功能沒(méi)有要求必須在流片之前完成驗(yàn)證,,例如性能驗(yàn)證、效能驗(yàn)證,。它們沒(méi)有通過(guò)驗(yàn)證,,并不會(huì)造成芯片的功能錯(cuò)誤。

驗(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)證工具

  • 驗(yàn)證IP

  • 斷言IP

  • 調(diào)試器

  • 硬件加速器

  • 高層次驗(yàn)證語(yǔ)言(High-level Verification Language,,HVL)

選擇了不同的驗(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ì)算:

  • 工作量 = 人力 x 時(shí)間 

來(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ì)面臨諸多不確定的因素:

  • 芯片結(jié)構(gòu)不穩(wěn)定因素。如果在項(xiàng)目執(zhí)行后期,,突然面臨結(jié)構(gòu)的變化,,這肯定會(huì)給對(duì)應(yīng)的設(shè)計(jì)和與它關(guān)聯(lián)的設(shè)計(jì)帶來(lái)很大影響,而驗(yàn)證任務(wù)量和時(shí)間也需要發(fā)生改變,。

  • 工具的不穩(wěn)定因素,。在新的項(xiàng)目中,我們傾向于使用更新的工具版本,,因?yàn)樗鼈儠?huì)帶來(lái)新的性能提升和特性,,而在新版本工具使用中也會(huì)有適應(yīng)期,并非一帆風(fēng)順,。如果我們需要替換工具,,那么面臨的工具替換成本、環(huán)境流程更新,、技術(shù)培訓(xùn)都要更大一些,。

  • 人力的不穩(wěn)定因素。我們都希望在項(xiàng)目中人員結(jié)構(gòu)可以穩(wěn)定,,這樣就不會(huì)出現(xiàn)模塊的驗(yàn)證人員被臨時(shí)替換,,加大驗(yàn)證風(fēng)險(xiǎn)的問(wèn)題。同時(shí),,如果一個(gè)人投入到兩個(gè)以上的項(xiàng)目,,那么他在不同項(xiàng)目中的精力分配也需要考慮進(jìn)來(lái)。

  • 模塊交付時(shí)間的不穩(wěn)定因素,。由于驗(yàn)證的展開(kāi)與設(shè)計(jì)的交付時(shí)間密不可分,,所以HDL設(shè)計(jì)的交付時(shí)間對(duì)于驗(yàn)證進(jìn)度的影響非常大,所以在計(jì)劃初期,,驗(yàn)證經(jīng)理應(yīng)該從設(shè)計(jì)團(tuán)隊(duì)那里獲取清晰的交付時(shí)間,,然在在此基礎(chǔ)上做進(jìn)度和人力安排。

在清楚了一份驗(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ì)劃呢,?通常我們按照如下的步驟:

  1. 邀請(qǐng)相關(guān)人員參加會(huì)議

  2. 開(kāi)會(huì)討論

  3. 確定測(cè)試場(chǎng)景

  4. 創(chuàng)建驗(yàn)證環(huán)境

邀請(qǐng)相關(guān)人員

通常我們會(huì)邀請(qǐng)跟系統(tǒng)設(shè)計(jì)和功能模塊相關(guān)的人員到會(huì),,共同展開(kāi)討論,參加會(huì)議的人一般包括:

  • 設(shè)計(jì)人員

  • 驗(yàn)證人員

  • 硅后測(cè)試人員

  • 軟件開(kāi)發(fā)人員

  • 系統(tǒng)人員

  • 驗(yàn)證經(jīng)理(或項(xiàng)目經(jīng)理)

這些人員在看待如何驗(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)行:

  1. 驗(yàn)證經(jīng)理,、設(shè)計(jì)人員和驗(yàn)證人員開(kāi)會(huì),確定大致需要驗(yàn)證的功能點(diǎn),、進(jìn)度和人力安排,。

  2. 系統(tǒng)人員、設(shè)計(jì)人員和驗(yàn)證人員溝通對(duì)于功能描述文檔存在歧義的地方,,確定理解一致,。

  3. 設(shè)計(jì)人員,、驗(yàn)證人員、軌后測(cè)試人員和軟件人員在最后來(lái)為實(shí)際軟件配置的場(chǎng)景添加測(cè)試用例,,將軟件配置添加到硅前驗(yàn)證階段,。

開(kāi)會(huì)討論

在開(kāi)會(huì)討論前,作為會(huì)議的組織者,,需要搞清楚開(kāi)會(huì)的目的和議題分別是什么,?

  • 驗(yàn)證計(jì)劃的內(nèi)容組成

  • 需要確定的驗(yàn)證功能點(diǎn)

在開(kāi)會(huì)之前,我們需要一份合適的驗(yàn)證計(jì)劃的模板用來(lái)指導(dǎo)我們?cè)跁?huì)議上討論的主要內(nèi)容,,一份驗(yàn)證計(jì)劃的模板(或者組織結(jié)構(gòu))可以像下面這樣:

  1. 設(shè)計(jì)功能描述

  2. 硬件實(shí)現(xiàn)框圖

  3. 待驗(yàn)證的功能點(diǎn)

  4. 驗(yàn)證環(huán)境搭建

  5. 測(cè)試用例構(gòu)成

  6. 編譯腳本和遞歸測(cè)試

  7. 覆蓋率分析

在上面這樣的計(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é)果,。這些值得注意的地方包括有:

  • 由于與會(huì)人員本身具有不同的背景,,在討論中遇到分歧,試著從對(duì)方的角度看待這個(gè)問(wèn)題,,給予理解。

  • 需要覆蓋設(shè)計(jì)在實(shí)際過(guò)程中軟件的使用情況和在系統(tǒng)中的角色扮演,探明真實(shí)運(yùn)用場(chǎng)景,。

  • 弄明白哪些功能是基本核心功能,,哪些功能是次要功能,。

  • 確定所有需要驗(yàn)證的功能點(diǎn),,以及聲明哪些功能點(diǎn)不需要驗(yàn)證和哪些場(chǎng)景是偽場(chǎng)景(即不實(shí)際的運(yùn)用)。

通過(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è)地方:

  • 針對(duì)某些功能點(diǎn),,我們?nèi)绾谓o出特定的測(cè)試場(chǎng)景,。這些場(chǎng)景是否同實(shí)際情況一致或者類似,,比如我們給出的時(shí)鐘信號(hào)頻率是否同設(shè)計(jì)要求的頻率一致,,不同時(shí)鐘之間的同步異步關(guān)系是否參照系統(tǒng)要求,。

  • 需要測(cè)試的場(chǎng)景,,會(huì)需要待驗(yàn)設(shè)計(jì)的哪些功能模塊參與。這種情況一般在模塊級(jí)測(cè)試中,,往往需要較多的子模塊參與進(jìn)來(lái),,而隨著測(cè)試的層次升高,我們需要喚醒使能的模塊數(shù)量就逐漸減少了,。一旦在心中有了這個(gè)習(xí)慣,,這就方便與我們?cè)跇?gòu)建測(cè)試用例前,大腦已經(jīng)模擬出完成整個(gè)功能的序列,,懂得參與進(jìn)來(lái)的模塊,以及如何配置寄存器、等待某些狀態(tài)信號(hào)完成下一步功能設(shè)置,,直到最后完成整個(gè)復(fù)雜功能的測(cè)試,。

  • 一些場(chǎng)景如果跟電源開(kāi)關(guān)有關(guān),,我們需要考慮是否需要在PA(Power Aware)場(chǎng)景中完成測(cè)試,。

  • 一些場(chǎng)景如果跟性能有關(guān),,我們需要考慮如何發(fā)送大規(guī)模的數(shù)據(jù)量實(shí)現(xiàn)壓力數(shù)據(jù)傳輸場(chǎng)景,。

  • 針對(duì)不同的功能點(diǎn),,我們需要考慮選擇合適的驗(yàn)證層次,以及對(duì)應(yīng)的驗(yàn)證方法,,進(jìn)而考慮怎么在驗(yàn)證環(huán)境中做好準(zhǔn)備,。

創(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)程:

  • 遞歸測(cè)試通過(guò)率(regressioin pass rate)

  • 代碼覆蓋率(code coverage)

  • 斷言覆蓋率(assertion coverage)

  • 功能覆蓋率(function coverage)

  • 缺陷曲線(bug rcurve)

接下來(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)的代碼覆蓋率包括:

  • 語(yǔ)句覆蓋率(statement coverage):指的是程序的每一行代碼是否被執(zhí)行過(guò),。

  • 條件覆蓋率(condition coverage):指的是每個(gè)條件中的邏輯操作數(shù)被覆蓋的情況。

  • 決策覆蓋率(branch coverage):指的是在if, case, while, repeat, forever, for和loop語(yǔ)句中各個(gè)分支執(zhí)行的情況,。 

  • 事件覆蓋率(event coverage):該覆蓋率用來(lái)記錄某一個(gè)事件被觸發(fā)的次數(shù),。

  • 跳轉(zhuǎn)覆蓋率(toggle coverage):用來(lái)記錄某個(gè)設(shè)計(jì)邊界信號(hào)數(shù)據(jù)位的0/1跳轉(zhuǎn)情況,例如從0到1,或者從1到0的跳轉(zhuǎn),。

  • 狀態(tài)機(jī)覆蓋率(finite stage machine coverage):仿真器的覆蓋率功能可以識(shí)別出設(shè)計(jì)中的狀態(tài)機(jī)部分,,記錄各種狀態(tài)被進(jìn)入的次數(shù),以及狀態(tài)之間的跳轉(zhuǎ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)證方法不同,,我們可以將斷言覆蓋率分為:

  • 基于動(dòng)態(tài)仿真或者硬件加速的斷言覆蓋率

  • 基于形式驗(yàn)證的靜態(tài)斷言覆蓋率

功能覆蓋率

功能覆蓋率是為了衡量設(shè)計(jì)的各項(xiàng)功能要求是否都實(shí)現(xiàn)了,并且按照預(yù)想的行為執(zhí)行,。功能覆蓋率會(huì)關(guān)注設(shè)計(jì)的輸入,、輸出和內(nèi)部狀態(tài),通常它會(huì)通過(guò)如下組合的方式來(lái)描述功能覆蓋率要求:

  • 對(duì)于輸入而言,,它會(huì)檢測(cè)數(shù)據(jù)端的輸入和命令組合類型,,以及各種控制信號(hào)與數(shù)據(jù)傳輸?shù)慕M合情況

  • 對(duì)于輸出而言,,它會(huì)檢測(cè)是否有完整的數(shù)據(jù)傳輸類別,,和各種情況的反饋時(shí)序

  • 對(duì)于設(shè)計(jì)內(nèi)部而言,,需要檢查的點(diǎn)會(huì)跟驗(yàn)證計(jì)劃中需要覆蓋的功能點(diǎn)相對(duì)應(yīng),,通過(guò)組合或者時(shí)序的功能覆蓋率來(lái)檢查目標(biāo)功能是否被觸發(fā)、以及執(zhí)行是否正確,。

缺陷曲線

在驗(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

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多