隨著設(shè)計的進行,越接近最后的產(chǎn)品,修正一個設(shè)計缺陷的成本就會越高。

不同設(shè)計階段修正一個設(shè)計缺陷所需費用示意圖
1.功能驗證概述
在IC設(shè)計與制造領(lǐng)域,通常所說的驗證(Verification)和測試(Test)是兩種不同的事
驗證
在設(shè)計過程中確認(rèn)所設(shè)計的正確性
在流片之前要做的。
測試
檢測芯片是否存在制造或封裝過程中產(chǎn)生的缺陷。
采用測試設(shè)備進行檢查
功能驗證
功能驗證一般是指設(shè)計者通過各種方法比較設(shè)計完成的電路和設(shè)計文檔規(guī)定的功能是否一致,保證邏輯設(shè)計的正確性。
通常不包括面積、功耗等硬件實現(xiàn)的性能檢測。
SoC功能驗證的挑戰(zhàn)
系統(tǒng)復(fù)雜性提高增加驗證難度
設(shè)計層次提高增加了驗證工作量

發(fā)展趨勢
2.功能驗證方法與驗證規(guī)劃

仿真為基本出發(fā)點的功能驗證方法
功能驗證開發(fā)流程制訂驗證計劃
功能驗證需求
激勵產(chǎn)生策略
結(jié)果檢測策略
驗證開發(fā)
提高驗證的效率

功能驗證開發(fā)流程
3.系統(tǒng)級功能驗證
行為級功能驗證
測試數(shù)據(jù)控制流,包括初始化和關(guān)閉I/O設(shè)備、驗證軟件功能、與外界的通信,等等
性能驗證
通過性能驗證可以使設(shè)計者清楚地知道整個系統(tǒng)的工作速度、功耗等性能方面的指標(biāo)。
協(xié)議驗證
根據(jù)總線協(xié)議對各個模塊的接口部分進行驗證
系統(tǒng)級的測試平臺
邊界條件
設(shè)計的不連續(xù)處
出錯的條件
極限情況
系統(tǒng)級的測試平臺標(biāo)準(zhǔn)
性能指標(biāo)
覆蓋率指標(biāo)

4.仿真驗證自動化

激勵的生成
直接測試激勵:檢測到測試者所希望檢測到的系統(tǒng)缺陷
可以快速、準(zhǔn)確地產(chǎn)生大量的與實際應(yīng)用一致的輸入向量
隨機測試激勵:
檢測到測試者沒有想到的一些系統(tǒng)缺陷帶約束的隨機測試激勵是指在產(chǎn)生隨機測試向量時施加一定的約束,使所產(chǎn)生的隨機測試向量滿足一定的設(shè)計規(guī)則。
帶約束的隨機激勵生成的例子
x1和x2為系統(tǒng)的兩個輸入,它們經(jīng)過獨熱碼編碼器編碼之后產(chǎn)生與被驗證設(shè)計(DUV)直接相連的輸入
輸入約束:in[0] + in[1] + in[2] <= 1

這樣產(chǎn)生的隨機向量就可以保證它們的合法性。
用SystemVerilog語言寫的帶約束隨機激勵生成例子
輸入data的數(shù)量限制在1~1000
programautomatictest; //defineconstraint classTransaction; randbit[31:0]src,dst,data[];//Dynamicarray randcbit[2:0]kind;//Cyclethroughallkinds constraintc_len {data.sizeinside{[1:1000]};}//Limitarraysize Endclass //instantiation Transactiontr; //startrandomvectorgeneration initialbegin tr=new(); if(!tr.randomize())$finish; transmit(tr); end endprogram
響應(yīng)的檢查
可視化的波形檢查:直觀,但不適用于復(fù)雜系統(tǒng)設(shè)計
自動比對檢查:通過相應(yīng)的檢測模型或驗證模型來自動完成輸出結(jié)果的比對

覆蓋率的檢測
覆蓋率數(shù)據(jù)通常是在多個仿真中收集的.
覆蓋率的模型由針對結(jié)構(gòu)覆蓋率(Structural Coverage)和功能覆蓋率(Functional Coverage)兩種目標(biāo)而定義的模型所組成。
可細(xì)化為:
限狀態(tài)機覆蓋率(FSM Coverage)
表達式覆蓋率(Expression Coverage)
交叉覆蓋率(Cross Coverage)
斷言覆蓋率(Assertion Coverage)
用SystemVerilog語言寫的覆蓋率檢測的例子
programautomatictest(busifc.TBifc); classTransaction; randbit[31:0]src,dst,data; randenum{MemRd,MemWr,CsrRd,CsrWr,I oRd,IoWr,Intr,Nop}kind; endclass covergroupCovKind; coverpointtr.kind;//Measurecoverage endgroup Transactiontr=new();//Instantiatetransaction CovKindck=new();//Instantiategroup initialbegin repeat(32)begin//Runafewcycles if(!tr.randomize())$finish; ifc.cb.kind<=?tr.kind;???//?transmit?transaction???????? ??????ifc.cb.data?<=?tr.data;???//???into?interface???????? ??????ck.sample();??????????????//?Gather?coverage??????? ??????@ifc.cb;??????????????????//?Wait?a?cycle??????? ???end????? end endprogram
5.形式驗證
形式驗證(Formal Verification)
靜態(tài)形式驗證(Static Formal Verification)和半形式驗證(Semi-Formal Verification)
靜態(tài)形式驗證不需要施加激勵,也不需要通過仿真來驗證。目前,SoC設(shè)計中常用的靜態(tài)形式驗證方法是相等性檢查。
半形式驗證是一種混合了仿真技術(shù)與形式驗證技術(shù)的方法。常用的半形式驗證是混合屬性檢查或模型檢查,它將形式驗證的完整性與仿真的速度、靈活性相結(jié)合。
相等性檢查(Equivalent Check)
對設(shè)計進行覆蓋率100%的快速驗證
主要是檢查組合邏輯的功能相等性
不需要測試平臺和測試矢量,不需要進行仿真
可用于比較RTL與RTL、RTL與門級、門級與門級的功能相等性,被廣泛應(yīng)用于版圖提取的網(wǎng)表與RTL代碼比較,特別是做完ECO后要進行網(wǎng)表和修改后的RTL的相等性檢查。
半形式驗證(Semi-Formal Verification)
仿真和形式驗證形結(jié)合,如混合模型檢查(Model Checking)或?qū)傩詸z查(Property Checking)的方法。

6.基于斷言的驗證
仿真驗證面臨的問題:可觀測性和可控制性
合適的輸入矢量能夠激活錯誤
錯誤要能夠以某種預(yù)期的形式輸出
采用斷言描述設(shè)計的行為,在仿真時起到監(jiān)控作用,當(dāng)監(jiān)控的屬性出現(xiàn)錯誤時,立刻觸發(fā)錯誤的產(chǎn)生,增加了設(shè)計在仿真時的可觀測性問題。
也可以用在形式屬性檢查中作為要驗證的屬性。屬性檢查(Property Check)時,是對整個狀態(tài)空間進行搜索,能夠控制到每一個信號并能指出錯誤的具體位置,解決了設(shè)計驗證時的可控制性和可觀察性問題。

驗證實現(xiàn)所花費的時間與驗證的質(zhì)量
斷言的作用


斷言語言及工具的使用
斷言語言
C or SystemC
SystemVerilog Assertion (SVA)
Property Specification Language (PSL) (IBM, based on Sugar)
Open Verification Library (OVL)
Verilog, VHDL
SVA(SystemVerilog Assertion)例子
用Verilog實現(xiàn)的檢查器:
always@(posedgeA) beginrepeat(1)@(posedgeclk); fork:A_to_B begin@(posedgeB) $display(“SUCCESS:Barrivedintime ”,$time); disableA_to_B; end begin repeat(1)@(posedgeclk) @(posedgeB) display(“SUCCESS:Barrivedintime ”,$time); disableA_to_B; end begin repeat(2)@(posedgeclk) display(“ERROR:Bdidn’tarriveintime ”,$time); disableA_to_B; end end
用SVA實現(xiàn)的檢查器:
assertproperty (@(posedgeclk)A|->##[1:2]B);
基于斷言的驗證
在屬性檢查中使用斷言
在屬性檢查中,最重要的就是屬性描述。

在仿真中使用斷言

審核編輯 :李倩
-
IC設(shè)計
+關(guān)注
關(guān)注
38文章
1369瀏覽量
107918 -
封裝
+關(guān)注
關(guān)注
128文章
9146瀏覽量
147903 -
soc
+關(guān)注
關(guān)注
38文章
4516瀏覽量
227645
原文標(biāo)題:SoC的功能驗證
文章出處:【微信號:數(shù)字ICer,微信公眾號:數(shù)字ICer】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
fpga嵌入e203內(nèi)核搭建soc如何實現(xiàn)通信功能?
利用蜂鳥E203搭建SoC【2】——外部中斷擴展與驗證
在Linux ubuntu上使用riscv-formal工具驗證蜂鳥E203 SoC的正確性
新思科技RTL與功能簽核助力低功耗SoC驗證
e203 DDR擴展功能驗證
Altera Agilex 3/5 FPGA和SoC的功能特性
AUDIO SoC的解決方案
電池保護板測試系統(tǒng)的功能驗證
愛芯元智M57 SoC如何滿足AEB強標(biāo)中的功能安全
編譯器功能安全驗證的關(guān)鍵要素
Veloce Primo補全完整的SoC驗證環(huán)境
新思科技VSO.ai如何顛覆芯片驗證

SoC的功能驗證
評論