加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • ? ? ? 1. 完備性
    • ? ? ? 2. 可擴(kuò)展性?
    • ? ? ? 3. 可控性?
    • ? ?總結(jié)? ? ??
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

如何寫(xiě)出更牛的驗(yàn)證激勵(lì)

10/08 15:10
1080
閱讀需 11 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

芯片驗(yàn)證是為了發(fā)現(xiàn)芯片中的錯(cuò)誤而執(zhí)行的過(guò)程,它是一個(gè)破壞性的過(guò)程。完備的驗(yàn)證激勵(lì)可以更有效地發(fā)現(xiàn)芯片錯(cuò)誤,進(jìn)而縮短驗(yàn)證周期。合格的驗(yàn)證激勵(lì)必須能產(chǎn)生所有可能的驗(yàn)證場(chǎng)景(完備性),包括合法和非法的場(chǎng)景,并保持最大的可擴(kuò)展性和可控性。

激勵(lì)構(gòu)造一直都是芯片驗(yàn)證的一大難點(diǎn)。本文將從完備性、可拓展性可控性三方面展開(kāi)闡述如何系統(tǒng)地思考和構(gòu)建驗(yàn)證激勵(lì)。

? ? ? 1. 完備性

完備性可以從接口類型、內(nèi)部結(jié)構(gòu)激勵(lì)審查三方面分析。分析接口類型是為了從待測(cè)模塊與其它模塊的交互信號(hào)上提取出驗(yàn)證場(chǎng)景。分析內(nèi)部結(jié)構(gòu)是為了從待測(cè)模塊內(nèi)部實(shí)現(xiàn)細(xì)節(jié)上來(lái)調(diào)整激勵(lì),使激勵(lì)多產(chǎn)生可能發(fā)現(xiàn)錯(cuò)誤的場(chǎng)景。激勵(lì)審查用于查缺補(bǔ)漏,從自己、他人以及項(xiàng)目等各個(gè)環(huán)節(jié)上對(duì)激勵(lì)進(jìn)行完善。

1.1 接口類型

對(duì)于待測(cè)設(shè)計(jì)的輸入輸出接口,可以通過(guò)接口類型進(jìn)行劃分,根據(jù)接口類型的特性構(gòu)造對(duì)應(yīng)的驗(yàn)證組件來(lái)產(chǎn)生激勵(lì)。常見(jiàn)接口類型有:

系統(tǒng)控制接口:主要是時(shí)鐘、復(fù)位、電源開(kāi)關(guān)、時(shí)鐘門控、時(shí)鐘分頻等,這類信號(hào)行為都會(huì)有詳細(xì)的規(guī)定,遵循實(shí)際集成關(guān)系做控制即可。例如:時(shí)鐘和復(fù)位的時(shí)序,多個(gè)時(shí)鐘是不是同步關(guān)系,多個(gè)復(fù)位信號(hào)是否可以單獨(dú)控制等。

標(biāo)準(zhǔn)總線接口:行業(yè)公開(kāi)的標(biāo)準(zhǔn)總線協(xié)議,例如AMBA系列協(xié)議。這類協(xié)議通常有現(xiàn)成的驗(yàn)證IP,只需配置它們來(lái)產(chǎn)生預(yù)期的場(chǎng)景。

非標(biāo)準(zhǔn)總線接口:公司內(nèi)部定義的接口,或者根據(jù)模塊功能需求定義的接口。這類接口需要從相鄰設(shè)計(jì)了解各信號(hào)的準(zhǔn)確信息。

其它接口:DFT等。通常來(lái)說(shuō),這類接口與驗(yàn)證關(guān)系不是很大,只需要把它們接固定值即可。

在對(duì)接口類型進(jìn)行分析要產(chǎn)生的激勵(lì)時(shí),可以先從單一接口類型進(jìn)行分析,然后再看多個(gè)接口交互上有什么需要重點(diǎn)關(guān)注。關(guān)于如何進(jìn)行測(cè)試點(diǎn)分解,可以看這個(gè)系列視頻《芯片驗(yàn)證分享系列總結(jié)及PPT分享》。

1.1.1 單一接口類型

單一接口類型分析可以按基本顆、高級(jí)顆非法行為順序進(jìn)行。

基本顆粒:基本顆粒面向信號(hào)層,提供基本顆粒生成方法。

每根信號(hào):信號(hào)來(lái)源和功能、使能極性、脈沖有效或電平有效、時(shí)序、信號(hào)的取值范圍和格式等。

信號(hào)之間:不同信號(hào)之間的關(guān)系,是否存在握手和時(shí)序關(guān)系,無(wú)關(guān)信號(hào)是否處理成隨機(jī)值還是固定值等。

高級(jí)顆粒:高級(jí)顆粒面向場(chǎng)景層,它封裝了多個(gè)基本顆粒,較少考慮底層信號(hào)。

序列:傳輸包的序列有哪些。

密度:傳輸包的密度分布有哪些。

非法行為:用于驗(yàn)證待測(cè)設(shè)計(jì)的魯棒性,出現(xiàn)非法行為,待測(cè)設(shè)計(jì)是否可以正常處理。

數(shù)值:信號(hào)值可能出現(xiàn)哪些非預(yù)期的值。

行為:信號(hào)時(shí)序、協(xié)議等行為可能出現(xiàn)哪些異常行為。

1.1.2 多個(gè)接口交互

對(duì)于具有多個(gè)接口的待測(cè)設(shè)計(jì),我們也需要考慮接口之間可能存在的交互或同步,以及接口之間是否使用共同資源。比如,為了測(cè)試兩個(gè)接口相同地址hazard,可以讓這兩個(gè)接口共享一個(gè)地址產(chǎn)生器。

不同接口對(duì)應(yīng)不同的驗(yàn)證組件,組件之間的協(xié)調(diào)有用多種方式:

中心統(tǒng)籌式:通過(guò)集中式控制、分配和協(xié)調(diào),在上層將任務(wù)分解成每個(gè)接口組件的任務(wù),并統(tǒng)一分派給各個(gè)接口組件去執(zhí)行,進(jìn)而產(chǎn)生不同的激勵(lì)組合場(chǎng)景。比如UVM中的virtual sequence角色。

分布事件驅(qū)動(dòng)式:每個(gè)接口組件有自己的控制權(quán),各個(gè)組件直接進(jìn)行交互。比如使用SystemVerilog中的event、mailbox、semaphore和全部變量等方式實(shí)現(xiàn)通信交互。

混合式:上述兩種方式并存。這需要根據(jù)具體場(chǎng)景來(lái)使用。

1.2 內(nèi)部結(jié)構(gòu)

激勵(lì)設(shè)計(jì)除了看接口信號(hào)外,還需要結(jié)合待測(cè)設(shè)計(jì)的內(nèi)部結(jié)構(gòu)和功能去分析,調(diào)整激勵(lì)約束,從而有更大的概率產(chǎn)生有效場(chǎng)景。

可以沿著控制流(control flow)方向去分析待測(cè)設(shè)計(jì)的內(nèi)部結(jié)構(gòu)和功能,具體以下幾個(gè)地方需要重點(diǎn)關(guān)注:

觸發(fā)功能點(diǎn):觸發(fā)內(nèi)部某個(gè)功能的激勵(lì)序列有哪些,比如Prefetch、flow-control、address hazard等。觸發(fā)內(nèi)部某個(gè)功能的敏感值有哪些,比如ALU、內(nèi)部錯(cuò)誤(cache ecc error, slave error, etc)、barrier、exclusive monitor、address hazard等。

觸發(fā)資源瓶頸和爭(zhēng)搶:如何觸發(fā)內(nèi)部資源瓶頸和爭(zhēng)搶。比如FIFO空滿、Buffer空滿、多請(qǐng)求源仲裁、數(shù)字運(yùn)算上下溢等。

1.3 激勵(lì)審查

審查(Review)環(huán)節(jié)對(duì)完善激勵(lì)起著至關(guān)重要的作用,可以提高激勵(lì)質(zhì)量,并減少漏驗(yàn)特性、無(wú)效激勵(lì)的概率,對(duì)個(gè)人成長(zhǎng)也有很大幫助。

建議以下這些審查方式都要按順序進(jìn)行:

個(gè)人審查:由自己進(jìn)行,對(duì)照歷史錯(cuò)誤清單進(jìn)行,舉一反三,避免犯類似錯(cuò)誤。

同組審查:由組內(nèi)更有經(jīng)驗(yàn)的人進(jìn)行,對(duì)激勵(lì)完備性、設(shè)計(jì)結(jié)構(gòu)、假設(shè)、代碼實(shí)現(xiàn)進(jìn)行檢查。

跨組審查:由待測(cè)模塊的設(shè)計(jì)人員進(jìn)行,對(duì)激勵(lì)完備性、設(shè)計(jì)顧慮、易錯(cuò)特性、局限性和各種激勵(lì)假設(shè)進(jìn)行檢查。

? ? ? 2. 可擴(kuò)展性?

可擴(kuò)展性也包括可復(fù)用性。為了處理驗(yàn)證周期縮短、待測(cè)RTL規(guī)格頻繁變動(dòng)等各種情況,我們需要在設(shè)計(jì)激勵(lì)時(shí)提前構(gòu)思如何讓激勵(lì)更容易擴(kuò)展?;诖?,我們可以從模塊化層次化方面去思考。

2.1 模塊化

模塊化需要將設(shè)計(jì)輸入輸出信號(hào)劃分為不同的接口類型,并創(chuàng)建出對(duì)應(yīng)的接口驗(yàn)證組件,確保各個(gè)組件之間的獨(dú)立性,各個(gè)組件才會(huì)最大程度地不受其它組件的制約。并定義好模塊之間的交互方式,這樣一個(gè)模塊的改動(dòng)對(duì)其它模塊的影響就很小,而且模塊也更容易的復(fù)用到其它地方。例如,如果有兩組相同接口,則應(yīng)該引入兩個(gè)組件分別控制,而非建立一個(gè)組件卻擁有兩套接口,這樣后期維護(hù)起來(lái)會(huì)很麻煩的。

另外把常見(jiàn)的功能封裝成公共庫(kù),這樣在多個(gè)地方都可以直接使用,如果功能需要改動(dòng),只需要改動(dòng)一處代碼即可。在寫(xiě)代碼時(shí),多留一些后門(callback),方便實(shí)現(xiàn)多樣化的激勵(lì)和后期增加新功能。

2.2 層次化

層次化需要將激勵(lì)抽象出各個(gè)層次,越高的抽象層次越不關(guān)注底層的時(shí)序,而是更重視驗(yàn)證場(chǎng)景構(gòu)造。這樣底層信號(hào)時(shí)序或功能的改動(dòng)也不容易影響到上層的激勵(lì),而且上層的激勵(lì)說(shuō)不定也可以復(fù)用到其它地方。

以UVM為例,uvm_driver應(yīng)只關(guān)心接口驅(qū)動(dòng),負(fù)責(zé)把收到的uvm_sequence_item內(nèi)容直接驅(qū)動(dòng)到接口信號(hào);uvm_sequence負(fù)責(zé)場(chǎng)景的構(gòu)造,當(dāng)然uvm_sequence也可以繼續(xù)分層,更上層的uvm_sequence產(chǎn)生更宏觀的驗(yàn)證場(chǎng)景,然后逐層分解成小的場(chǎng)景。

? ? ? 3. 可控性?

可控性用于表征是否容易控制激勵(lì)產(chǎn)生預(yù)期的驗(yàn)證場(chǎng)景。比如驗(yàn)證ECC模塊功能時(shí),在最開(kāi)始時(shí),我們需要不注入任何ECC錯(cuò)誤的激勵(lì),側(cè)重于驗(yàn)證ECC模塊功能是否正常。隨后才會(huì)打開(kāi)ECC注錯(cuò)激勵(lì),驗(yàn)證ECC模塊是否可以檢查出來(lái)。這需要提供一些方式可以控制是否打開(kāi)ECC注錯(cuò)激勵(lì)?;诖?,我們可以從局部全局方面去思考。

 

3.1 局部

可控性局部的意思是驗(yàn)證激勵(lì)可以單獨(dú)控制局部激勵(lì)的行為,通常來(lái)說(shuō)面向單個(gè)接口驗(yàn)證組件。這層控制的特點(diǎn)是偏向于接口,可以細(xì)致到控制接口每根信號(hào)的行為。

比如,待測(cè)對(duì)象有兩個(gè)ECC模塊,我們可以控制其中一個(gè)有ECC注錯(cuò),另一個(gè)沒(méi)有。

3.2 全局

可控性全局的意思是驗(yàn)證激勵(lì)可以一同控制所有激勵(lì)的行為,通常來(lái)說(shuō)面向一個(gè)驗(yàn)證環(huán)境中的所有接口驗(yàn)證組件。這層控制的特點(diǎn)是偏向于特性,是把所有局部控制參數(shù)整合起來(lái),提供和驗(yàn)證特性相關(guān)的控制參數(shù)。

比如,待測(cè)對(duì)象有兩個(gè)ECC模塊,我們可以同時(shí)控制兩個(gè)都有ECC注錯(cuò),或都沒(méi)有等。又或者待測(cè)對(duì)象的某個(gè)特性還未開(kāi)發(fā)完成,我們可以控制不讓所有激勵(lì)發(fā)出與未完成特性相關(guān)的場(chǎng)景。

? ?總結(jié)? ? ??

綜上所述,激勵(lì)設(shè)計(jì)可以按照“完備性->可拓展性->可控性”方向去分析。在完備性中,可以按照“接口類型->內(nèi)部結(jié)構(gòu)->激勵(lì)審查”方向去分析。在可拓展性中,可以按照“模塊化->層次化”方向去分析。在可控性中,可以按照“局部->全局”方向去分析。

另外很重要的一點(diǎn)是:要經(jīng)常對(duì)驗(yàn)證結(jié)果進(jìn)行復(fù)盤(pán)分析,并優(yōu)化激勵(lì)。

總得思維導(dǎo)圖如下:

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

分享Arm architecture, AMBA, 芯片驗(yàn)證, 腳本, EDA, Linux等知識(shí)。

微信公眾號(hào)