SOC設計過程的質量保證
進入二十一世紀,標志著ASIC設計時代結束,嶄新的系統芯片(SOC)時代到來。為了適應科技發展和市場競爭的需要,系統設計者不斷尋求更短的上市時間,更高的性能和更低的成本,所有這些都是推動SOC需求的主要因素。世界SOC市場1998年只有57億美元,而到2003年預期能達到265億美元,市場將保持36%的年增長率。作為IC設計技術和未來市場的走向,SOC也逐漸受到了國內IC行業的重視。
本文引用地址:http://www.104case.com/article/3020.htmSOC的出現導致了IC業的分工,并且向虛擬再集成的商業模式發展,本文對這種趨勢作概括的描述。同時,在這種虛擬再集成的商業模式中,設計質量是最后SOC產品成敗的關鍵因素。功能驗證決定了SOC的質量,本文主要討論虛擬再集成的商業模式導致的功能驗證方法的發展。
IC業的虛擬再集成
今天的IC業和許多構成IC業價值鏈的焦點專業分層,將繼續沿著已經走了十幾年的分工之路走下去,即從垂直結構逐步向水平結構過渡。這種分工促進了SOC技術的成長,縮短了上市周期,降低了芯片造價,提高了經營效率。
分工的發展經歷了兩個階段:
二十世紀八十年代后期的設計與加工分離是第一個階段。在這個階段,從事設計的無生產線(Fabless)公司銷售產品,但不擁有加工條件;而加工公司專門提供加工服務。負擔著芯片加工設施大量開支的加工公司,基本上可以不用面對產品公司跨入IC業時所面臨的風險。
第二個階段是二十世紀九十年代末獨立IP供應商的出現。SOC技術的復雜度很高,大大加重了設計負擔,于是,產生了對驗證好的第三方IP核的需求,以簡化多功能芯片的設計。在這個階段,加工公司在提供IP硬核,以及加速經過驗證的IP核向更小幾何尺寸移植等方面扮演著重要的角色。因此,加工公司處于未來開放式IP時代的焦點,將促進系統設計、IC設計、第三方IP和電子設計自動化等這些商業增值活動的虛擬再集成。
SOC趨勢將進一步加速分工的進化。分析家預測:設計服務和IP將成為分工的主旨,然后是純粹的加工。第三方IP供應商將為無生產線公司、集成器件制造商(IDM)和系統設計公司進一步減少進入市場和縮短上市周期方面的種種障礙。
分工進化有幾個主要的推動力量。第一,使用委托加工是進入IC業的一個低風險、很有競爭力的途徑。使用加工服務,無生產線公司進入市場時,沒有加工工廠的沉重經濟負擔。而且,IC業也經歷反復的商業周期。在衰退期時,使用加工的IC公司有低得多的固定成本,會更有競爭力。第二,SOC趨勢大大增加了設計復雜度,促使無加工線公司和集成器件制造商專注于它們的核心競爭產品:高層次設計和IP。
分析家預測新的IP時代要經歷一個根本的改變。這個改變是系統開發和IC芯片開發將按職能劃分為兩部分,如圖1所示:一個將專門進行IP核設計,另外一個進行系統級集成。
IC業的分工繼續發展,它將從一個垂直結構變成由各個專業分層構成的水平結構。這種轉變又產生了再集成為另外一個商業模型的要求。如圖2所示,由EDA工具、庫、IP核、加工等公司構成的一個緊密的相互聯系的網絡,要比分層關系有更高的生產率。尤其是在深亞微米設計中,這種強有力的網絡保證了設計平臺高性能、產品周期更短、一次流片設計的無缺陷。各供應商的緊密伙伴關系為用戶提供了一個完整的解決方案。在這種關系中,委托加工是核心,也是SOC發展關注的焦點,是這種虛擬再集成的組織者。無論是IP的開發、授權、SOC的加工和驗證,都是圍繞委托加工來進行的。
SOC功能驗證
現在,還沒有驗證SOC的標準方法。各種SOC對HDL語言使用上的不一致造成了大量的驗證技術和手段。由于大約70%的設計工作都在驗證上,驗證途徑的標準化已經變得非常必要。
現在,為緩解復雜系統功能驗證問題,提高功能驗證質量的新工具不斷涌現。不管過去還是現在,電子部件的質量主要依賴于它們的驗證過程怎么樣。不好驗證,不論由于什么原因,極有可能造成電子部件質量差或失敗。
現在,一般有一個專門的隊伍負責驗證設計。只有驗證工作的起點好,他們的工作才能好,也就是說好的驗證必須有一個好的規格書,規格書也是驗證過程的起點。驗證從規格指定階段開始,在設計、實現和加工各階段一直持續進行。
模塊為基礎SOC的驗證
SOC一般是由統一的總線結構連接起來的IP核的聚集。現在,有許多商用或非商用的總線結構在使用。基于總線結構的驗證模型是目前SOC中比較成熟的技術。
總線結構一般通過總線功能模型(BFM)來模擬,該模型的復雜度由總線協議來決定,分為預捆包(prepackaged)的PLI(編程語言接口)為基礎的BFM和用戶定制的Verilog BFM。
一個完整testbench的建立需要5要素:驗證計劃、測試實例、完整的BFM、待測部件DUT和testbench。
在所有的驗證方法中,驗證計劃決定了最終驗證的好壞,所以,驗證計劃是非常關鍵的,而不是可有可無的。為了一次成功,設計者必須識別在什么條件下必須檢測什么特征,以及期望的反饋該是什么。整個設計團隊都要參與計劃制訂,以保證它的完整性和正確性。驗證計劃應該采用黑盒功能驗證方式,這是由整個驗證通過的一個BFM來執行,而BFM只能訪問接口信號來決定的。
黑盒驗證方式有不依賴于實現的優點,也就是設計不管是行為級、可綜合的RTL、門級網表、ASIC、FPGA或者甚至是軟件都與它無關。黑盒法形成了真正的一致性驗證,表明了某個設計是否達到了規格書要求的目標。另外,這種方式對于保證測試激勵便攜性(portability)也是非常關鍵的。
編制驗證計劃的時候,每個測試實例應當區分每個單一的設計特征,防止復合特征出現,這可以簡化調試的過程。
但是,在驗證過程中經常會出現規范要求的改變,這時必須修改驗證計劃,驗證計劃必須與設計規范保持同步。
驗證環境另外一個關鍵部分是BFM。可以使用現有的封裝好的BFM,也可以基于總線結構的時序圖,構造自己的BFM。無論如何,都要確保BFM模型能準確地反應總線協議。BFM主要包括測試實例執行所引發的總線任務,另外,它還必須包括象watchdog定時器和wait-acknowledge等的支撐型任務。如果協議要求的話,BFM還必須執行密集型(back to back)事件,比如burst-read和burst-write。監控器monitor可以內建在BFM里,也可以是獨立的設計文件。
既然BFM只訪問頂層的接口信號,于是testbench也只需要看到頂層DUT的信號。推薦使用testbench的自動生成器,透明生成沒有錯誤困擾的testbench。
有些驗證方式要求多個testbench,但是由于很難跟蹤各testbench執行中引起了哪些文件執行,所以這種方法非常繁瑣,很容易出錯。故只使用一個統一的testbench的方法受到了普遍的歡迎。在這個方法中,不用為RTL和門級分別產生testbench。完整的測試環境包括一個或多個驗證語言文件(VL, Verification Language file),即測試實例,一個DUT,一個BFM和一個testbench。Testbench的輸入是驗證語言文件VL,仿真結果由監控器載入日志文件。
所有部件級的測試實例很容易移植到系統級,往往可以直接把它們應用到系統級的全功能模型(FFM)或軟件模擬環境,即在SOC設計中部件級設計操作驗證應與系統級驗證的無縫對接,如圖3所示。
平臺為基礎的SOC驗證
平臺為基礎SOC驗證強調軟硬件的協同設計和仿真,驗證方式上有基于數學推導的形式驗證方法和基于仿真的動態功能驗證。形式驗證的代碼覆蓋率好,但涉及較復雜的數學推導,推導本身的正確性難以把握。而且,系統較復雜時,形式驗證會成為整個項目進展的瓶頸,甚至由于成本太高而不能實施。動態功能驗證關注整個系統或其中某些部分的仿真運行,對仿真結果做出判斷和調試,是本文討論的重中之重。
驗證主要是建立整個設計和內部子模塊的驗證環境。為了不讓驗證處于項目的關鍵路徑上,主要開展軟硬件驗證工作的并行,減少驗證的設計開銷。同時,基于商業工具的驗證環境,最好能夠復用主流項目中的一些工作,進一步提高驗證的效率。在下面比較的兩類方式中,可驗證性設計比傳統方式有更多的優越性。
傳統的驗證方式
整個結構從系統指定階段開始構造,這時忽略軟硬劃分。功能指定先由C或C++編程實現,以后再精煉。硬件模塊由C/C++和某個或某些testbench來描述和實現,且從C/C++實現可以重新設計出RTL級的HDL實現。為了驗證,單個子模塊(C或HDL)可以隨時換入換出系統。在HDL仿真過程中,一般是施加波形來執行硬件測試。在某個時間點,通常需要建立一個原型系統。最后,時間到的時候,PG將會交付加工。
這個流程很普遍(實際肯定比這里概括的要復雜得多),雖然很適合手邊的工作,但也不是盡善盡美的。
最新的驗證方式(推薦)
-可驗證性設計
(DFV-Design For Verification)
缺乏一致性和復用性差是傳統驗證流程的主要問題。既然一個復雜系統的驗證占用整個項目70%的時間,定義一個能夠使用現有任何一種驗證工具、簡單明了的驗證方法是非常關鍵的。于是,提出了基于“可驗證性設計”這個概念的驗證流程。
可驗證性設計方法解決的問題,對于改善設計過程的動態功能驗證階段的質量舉足輕重:
* C/C++和HDL的分別硬件描述是必需的,但是至少testbench可以在不同設計階段廣泛復用。要求建立的每個測試必須有應用于它調用的子模塊的所有映象(view,即C/C++、VHDL、Verilog等描述形式)的可能,并且能使用市面上所有的仿真模擬工具;
* 在HDL驗證過程使用的映象必須是可綜合的;
* 必須是IP復用。這不僅僅是現有硬件模塊的復用,還表明了訪問非常合適的測試環境時的復用可能性。該測試環境作為驗證工作的一部分必須復用;
* 一些映象經常需要調整。為保證一致性,當映象手工修改后,要使用形式驗證技術;
* 完全驗證,尤其是在“任務模式”(包括實際的軟件),實現時必需很長的仿真過程。在該過程中建議使用模擬手段,提高執行效率;
* 覆蓋率標準在驗證過程中影響著一些選擇,所以非常重要;
* 仿真過程太長而不是合理驗證手段時候,模擬往往是較好的選擇。
市場提供了幾種可能的模擬手段,如:不僅僅是模擬器,經常用作快速原型平臺的FPGA系統;還有其它一些更像仿真器,在某些方面,比基于FPGA的系統更容易使用的模擬系統。從模塊正確性檢查一直到系統級檢查,它們都有比較廣泛的應用。所以,這是系統集成和軟件開發的較好選擇(除非有頻率限制)。
可驗證性設計的驗證方式,很好地解決了上面提到的動態功能驗證問題。
結語
隨著IP的出現,IC業的各專業分層,通過非常緊密的聯系,虛擬的重新結合起來,構成了高效運作、增值能力很強的新型商業模型。這也是我國IC業的發展方向。同時,在這種商業模式下,SOC設計質量,即IP功能驗證,是倍受關注的問題。本文給出了兩大類功能驗證策略和方法,它們是由SOC不同設計方式決定的,提供給國內的設計人員參考。■
參考文獻
1.Shang-yi Chiang, "Foundries and the dawn of an open IP era", Computer , Volume: 34 Issue: 4 , April 2001,
2.Iniguez, A, "Vector language: a proposed verification methodology for intellectual property cores", ASIC/SOC Conference, 2001. Proceedings,
3.Sforza, F., Battu, L., Brunelli, etc, "A "design for verification" methodology", Quality Electronic Design, 2001 International Symposium on, 2001.
c++相關文章:c++教程
評論