<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 如何選擇正確的芯片驗證方法

          如何選擇正確的芯片驗證方法

          作者: 時間:2016-12-02 來源:網(wǎng)絡 收藏
          眾所周知,功能驗證在芯片的整個設(shè)計周期中占用的時間最多。盡管目前有許多技術(shù)可用于減少驗證時間,但最終應當如何選擇?答案并不簡單明了,而且經(jīng)常令人迷惑并要付出高昂的代價。

          一個項目中需要使用的工具和技術(shù)必須在設(shè)計周期的初期就確定下來,以便獲得新驗證方法費用預算的準確信息。經(jīng)常有公司因為錯誤估計了運轉(zhuǎn)這些新型工具和技術(shù)所需的設(shè)計和技術(shù)的復雜性而浪費大量的資金和資源。

          產(chǎn)品的抽象級越高,越容易設(shè)計;同樣的,抽象級越高,越容易犯嚴重的錯誤。一個架構(gòu)上的缺陷可能會導致整個芯片的損害,而在門級網(wǎng)表中的連線錯誤可以通過重制解決。

          例如,Verilog為設(shè)計者提供了一種相對容易的接口,以便他們在相當抽象的層次上進行設(shè)計。當設(shè)計曾經(jīng)作為制約性的瓶頸時,Verilog 為設(shè)計生產(chǎn)率帶來了指數(shù)增長,并且大大推動了復雜芯片的發(fā)展。但是如果設(shè)計者不了解在復雜的設(shè)計周期中語言上的細微差別,就很容易犯錯。在驗證成為瓶頸的今天,同樣的觀點也適用于許多驗證技術(shù)和語言。

          本文將對時下流行的驗證技術(shù)(形式驗證、隨機、定向、有約束的隨機、斷言、屬性檢驗)與語言(SystemC、C/C++、SystemVerilog、Open-VERA、E等)進行全面評述,還將分析在傳統(tǒng)的數(shù)字ASIC設(shè)計流程中應當在何時采用何種驗證技術(shù)和語言。

          1 驗證瓶頸

          盡管事實表明如今設(shè)計生產(chǎn)率的增長速度仍然低于芯片復雜度的增長速度,然而現(xiàn)在需要面對的瓶頸已不再是設(shè)計時間,而是驗證時間。最近的統(tǒng)計數(shù)據(jù)表明,對一個復雜邏輯芯片而言,整個產(chǎn)品周期中 60_70% 的時間都用于驗證工作。如何使用新的工具和技術(shù)對設(shè)計中的復雜功能進行驗證已經(jīng)成為縮短總體的產(chǎn)品時間所需要面對的挑戰(zhàn)。

          由于以下原因,可以說驗證瓶頸在某種程度上是設(shè)計抽象級逐步提高造成的結(jié)果:

          1) 在較高的抽象水平上進行設(shè)計,易于構(gòu)建高度復雜的產(chǎn)品功能。設(shè)計復雜度的提高造成驗證工作的成倍增加;

          2) 在設(shè)計、轉(zhuǎn)換以及映射到最終產(chǎn)品的過程中,應用更高的抽象級進行設(shè)計會帶來信息損失和解釋錯誤的問題。例如,采用HDL級設(shè)計并將其轉(zhuǎn)換到門級的綜合過程,需要進行驗證以確保轉(zhuǎn)換的正確性以及使設(shè)計意圖完全得到體現(xiàn)。提高抽象級還帶來了代碼解釋問題,在仿真時要通過這些代碼對設(shè)計進行描述,以確保所寫的代碼真實反映了功能規(guī)范。

          其它影響驗證問題的因素還包括:

          1) 由于設(shè)計中硬件與軟件、模擬與數(shù)字等共存而造成的功能復雜度增加;

          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)重制的后果:重制費會高達10萬美元,還會延誤產(chǎn)品的推出,由于使用這些有缺陷的芯片而導致的系統(tǒng)失敗也會增加成本。

          為了提高驗證生產(chǎn)率,EDA行業(yè)提出了一個與解決設(shè)計瓶頸類似的解決方案——抽象化的理念。諸如 Verilog 和VHDL等高層次的語言被用于驗證芯片,這些語言包括各種指令如任務指令和線程指令(fork/join 語句),以及控制結(jié)構(gòu)(while語句)。這提供了更強的數(shù)據(jù)控制力,以便對所有邊角設(shè)計進行充分驗證。然而,這些指令不能被綜合,因此不會被用作實際設(shè)計代碼的一部分。

          隨著復雜度與日俱增,能夠驗證具有不同抽象級的復雜設(shè)計的新語言被創(chuàng)建出來,支持這些新的驗證語言的技術(shù)和工具也隨之誕生。

          所有這一切意味著芯片廠商必須對新的工具作出評估,必須針對這些新的工具和技術(shù)對工程師進行培訓,在公司的研發(fā)費用成本結(jié)構(gòu)中必須包括新的工具和資源,公司在總體上必須在短時間內(nèi)克服學習曲線問題,另外,還需要對這些工具進行風險評估,以及考慮新工具與已有技術(shù)的集成和協(xié)同工作的能力。

          2 驗證與確認(Validation)

          除了驗證問題之外,芯片公司還要面對確認時間問題。Kropf將“確認”定義為“通過檢查實現(xiàn)行為以獲得對規(guī)范的信心的過程”。在驗證和確認之間,有一種觀點認為,“確認能夠確保這是正確的設(shè)計,而驗證則是確保這個設(shè)計是正確的”;另外一種觀點認為,“驗證指硅片成為成品之前的測試(Verilog/VHDL 仿真等),確認指硅片成為成品之后的測試(在實驗室里測試電路板上的芯片)”。

          無論是確認還是驗證,若要保證硅片滿足規(guī)范要求,要完成以下兩個步驟:1)通過文件或建模,芯片規(guī)范得到了正確的解釋;2)以上解釋得到了正確的理解與實現(xiàn)(一般是通過 HDL),綜合入硅片,并封裝成為芯片。

          本文認為第二步是驗證,第一步是確認。目前業(yè)界流行的設(shè)計流程如圖1所示,此流程可保證以上兩個步驟的要求得以滿足。根據(jù)待實現(xiàn)功能的復雜程度不同,可以跳過一些步驟或者增加一些步驟。例如,如果某一項設(shè)計是純粹面向硬件的,不涉及驅(qū)動或軟件,那么可以從抽象級3直接跳到抽象級1,鎖相環(huán)設(shè)計即為一例。

          本文引用地址:http://www.ex-cimer.com/article/201612/324772.htm
          當設(shè)計按照抽象級逐步推進時,要注意必須一直保持等效性,以確保最低層的抽象級能滿足系統(tǒng)規(guī)范的要求。例如:

          1)當 C 模型被置于一個系統(tǒng)環(huán)境并能夠滿足規(guī)范中所描述的所有系統(tǒng)要求時,芯片規(guī)范(一般是一個文本文件)與其 C 模型之間就達到了等效。這在實質(zhì)上是功能等效。

          2)通過比較 C 模型與HDL 實現(xiàn)的輸出,可以在規(guī)范的C 模型與其 HDL 實現(xiàn)之間建立等效關(guān)系。在沒有 C 模型的情況下,可使用“期望數(shù)據(jù)模型”。這在實質(zhì)上也是功能等效。

          3)HDL實現(xiàn)與門級(綜合后的)之間通過應用“邏輯等效性檢驗”可以建立等效關(guān)系。這時,由于設(shè)計采取的形式是純粹的邏輯門,而且功能能夠被表示為邏輯表達式,因此,這在實質(zhì)上是邏輯等效。

          上一頁 1 2 3 下一頁

          關(guān)鍵詞: SystemC視角芯片驗

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();