如何選擇正確的芯片驗證方法
一個項目中需要使用的工具和技術(shù)必須在設(shè)計周期的初期就確定下來,以便獲得新驗證方法費用預(yù)算的準(zhǔn)確信息。經(jīng)常有公司因為錯誤估計了運轉(zhuǎn)這些新型工具和技術(shù)所需的設(shè)計和技術(shù)的復(fù)雜性而浪費大量的資金和資源。
產(chǎn)品的抽象級越高,越容易設(shè)計;同樣的,抽象級越高,越容易犯嚴(yán)重的錯誤。一個架構(gòu)上的缺陷可能會導(dǎo)致整個芯片的損害,而在門級網(wǎng)表中的連線錯誤可以通過重制解決。
例如,Verilog為設(shè)計者提供了一種相對容易的接口,以便他們在相當(dāng)抽象的層次上進行設(shè)計。當(dāng)設(shè)計曾經(jīng)作為制約性的瓶頸時,Verilog 為設(shè)計生產(chǎn)率帶來了指數(shù)增長,并且大大推動了復(fù)雜芯片的發(fā)展。但是如果設(shè)計者不了解在復(fù)雜的設(shè)計周期中語言上的細(xì)微差別,就很容易犯錯。在驗證成為瓶頸的今天,同樣的觀點也適用于許多驗證技術(shù)和語言。
本文將對時下流行的驗證技術(shù)(形式驗證、隨機、定向、有約束的隨機、斷言、屬性檢驗)與語言(SystemC、C/C++、SystemVerilog、Open-VERA、E等)進行全面評述,還將分析在傳統(tǒng)的數(shù)字ASIC設(shè)計流程中應(yīng)當(dāng)在何時采用何種驗證技術(shù)和語言。
1 驗證瓶頸
盡管事實表明如今設(shè)計生產(chǎn)率的增長速度仍然低于芯片復(fù)雜度的增長速度,然而現(xiàn)在需要面對的瓶頸已不再是設(shè)計時間,而是驗證時間。最近的統(tǒng)計數(shù)據(jù)表明,對一個復(fù)雜邏輯芯片而言,整個產(chǎn)品周期中 60_70% 的時間都用于驗證工作。如何使用新的工具和技術(shù)對設(shè)計中的復(fù)雜功能進行驗證已經(jīng)成為縮短總體的產(chǎn)品時間所需要面對的挑戰(zhàn)。
由于以下原因,可以說驗證瓶頸在某種程度上是設(shè)計抽象級逐步提高造成的結(jié)果:
1) 在較高的抽象水平上進行設(shè)計,易于構(gòu)建高度復(fù)雜的產(chǎn)品功能。設(shè)計復(fù)雜度的提高造成驗證工作的成倍增加;
2) 在設(shè)計、轉(zhuǎn)換以及映射到最終產(chǎn)品的過程中,應(yīng)用更高的抽象級進行設(shè)計會帶來信息損失和解釋錯誤的問題。例如,采用HDL級設(shè)計并將其轉(zhuǎn)換到門級的綜合過程,需要進行驗證以確保轉(zhuǎn)換的正確性以及使設(shè)計意圖完全得到體現(xiàn)。提高抽象級還帶來了代碼解釋問題,在仿真時要通過這些代碼對設(shè)計進行描述,以確保所寫的代碼真實反映了功能規(guī)范。
其它影響驗證問題的因素還包括:
1) 由于設(shè)計中硬件與軟件、模擬與數(shù)字等共存而造成的功能復(fù)雜度增加;
2) 對系統(tǒng)可靠性的要求增高,使得對驗證工作的要求也增加,以確保在系統(tǒng)環(huán)境下,芯片功能可以順利執(zhí)行。
統(tǒng)計數(shù)據(jù)表明,驗證問題現(xiàn)實存在,而且讓公司付出了高昂的成本:
1)由于設(shè)計錯誤造成的芯片缺陷:在需要進行重制的芯片中,有82%是由于邏輯與功能缺陷設(shè)計錯誤。這意味著驗證過程沒有覆蓋邊角情況,缺陷一直隱藏在設(shè)計過程中直到流片。
2)由于規(guī)范錯誤造成的芯片缺陷:在需要進行重制的芯片中,有47%是由于邏輯與功能規(guī)范不正確或不完整,有32%是由于規(guī)范發(fā)生了改變。
3)重用IP和外來IP的問題:所有失敗的芯片中,有14%是由于在重用或外來的IP中存在錯誤。
4)重制的后果:重制費會高達(dá)10萬美元,還會延誤產(chǎn)品的推出,由于使用這些有缺陷的芯片而導(dǎo)致的系統(tǒng)失敗也會增加成本。
為了提高驗證生產(chǎn)率,EDA行業(yè)提出了一個與解決設(shè)計瓶頸類似的解決方案——抽象化的理念。諸如 Verilog 和VHDL等高層次的語言被用于驗證芯片,這些語言包括各種指令如任務(wù)指令和線程指令(fork/join 語句),以及控制結(jié)構(gòu)(while語句)。這提供了更強的數(shù)據(jù)控制力,以便對所有邊角設(shè)計進行充分驗證。然而,這些指令不能被綜合,因此不會被用作實際設(shè)計代碼的一部分。
隨著復(fù)雜度與日俱增,能夠驗證具有不同抽象級的復(fù)雜設(shè)計的新語言被創(chuàng)建出來,支持這些新的驗證語言的技術(shù)和工具也隨之誕生。
所有這一切意味著芯片廠商必須對新的工具作出評估,必須針對這些新的工具和技術(shù)對工程師進行培訓(xùn),在公司的研發(fā)費用成本結(jié)構(gòu)中必須包括新的工具和資源,公司在總體上必須在短時間內(nèi)克服學(xué)習(xí)曲線問題,另外,還需要對這些工具進行風(fēng)險評估,以及考慮新工具與已有技術(shù)的集成和協(xié)同工作的能力。
2 驗證與確認(rèn)(Validation)
除了驗證問題之外,芯片公司還要面對確認(rèn)時間問題。Kropf將“確認(rèn)”定義為“通過檢查實現(xiàn)行為以獲得對規(guī)范的信心的過程”。在驗證和確認(rèn)之間,有一種觀點認(rèn)為,“確認(rèn)能夠確保這是正確的設(shè)計,而驗證則是確保這個設(shè)計是正確的”;另外一種觀點認(rèn)為,“驗證指硅片成為成品之前的測試(Verilog/VHDL 仿真等),確認(rèn)指硅片成為成品之后的測試(在實驗室里測試電路板上的芯片)”。
無論是確認(rèn)還是驗證,若要保證硅片滿足規(guī)范要求,要完成以下兩個步驟:1)通過文件或建模,芯片規(guī)范得到了正確的解釋;2)以上解釋得到了正確的理解與實現(xiàn)(一般是通過 HDL),綜合入硅片,并封裝成為芯片。
本文認(rèn)為第二步是驗證,第一步是確認(rèn)。目前業(yè)界流行的設(shè)計流程如圖1所示,此流程可保證以上兩個步驟的要求得以滿足。根據(jù)待實現(xiàn)功能的復(fù)雜程度不同,可以跳過一些步驟或者增加一些步驟。例如,如果某一項設(shè)計是純粹面向硬件的,不涉及驅(qū)動或軟件,那么可以從抽象級3直接跳到抽象級1,鎖相環(huán)設(shè)計即為一例。
本文引用地址:http://2s4d.com/article/201612/324772.htm
當(dāng)設(shè)計按照抽象級逐步推進時,要注意必須一直保持等效性,以確保最低層的抽象級能滿足系統(tǒng)規(guī)范的要求。例如:
1)當(dāng) C 模型被置于一個系統(tǒng)環(huán)境并能夠滿足規(guī)范中所描述的所有系統(tǒng)要求時,芯片規(guī)范(一般是一個文本文件)與其 C 模型之間就達(dá)到了等效。這在實質(zhì)上是功能等效。
2)通過比較 C 模型與HDL 實現(xiàn)的輸出,可以在規(guī)范的C 模型與其 HDL 實現(xiàn)之間建立等效關(guān)系。在沒有 C 模型的情況下,可使用“期望數(shù)據(jù)模型”。這在實質(zhì)上也是功能等效。
3)HDL實現(xiàn)與門級(綜合后的)之間通過應(yīng)用“邏輯等效性檢驗”可以建立等效關(guān)系。這時,由于設(shè)計采取的形式是純粹的邏輯門,而且功能能夠被表示為邏輯表達(dá)式,因此,這在實質(zhì)上是邏輯等效。
評論