最近看到行業(yè)群里面經(jīng)常有人問(wèn)什么是形式驗(yàn)證,今天的文章和大家介紹下形式驗(yàn)證(Formal verification)。
相信很多人已經(jīng)接觸過(guò)驗(yàn)證。如我前面有篇文章所寫(xiě)驗(yàn)證分為IP驗(yàn)證,FPGA驗(yàn)證,SOC驗(yàn)證和CPU驗(yàn)證,這其中大部分是采用動(dòng)態(tài)仿真(dynamic simulation)實(shí)現(xiàn),即通過(guò)給定設(shè)計(jì)(design)端口測(cè)試激勵(lì),結(jié)合時(shí)間消耗判斷設(shè)計(jì)的輸出結(jié)果是否符合預(yù)期。動(dòng)態(tài)仿真又分為定向測(cè)試和隨機(jī)測(cè)試。現(xiàn)在很多公司用的UVM驗(yàn)證方法學(xué)便是建立在動(dòng)態(tài)仿真的基礎(chǔ)上的。
形式驗(yàn)證不同于仿真驗(yàn)證,它是通過(guò)數(shù)學(xué)上完備地證明或驗(yàn)證電路的實(shí)現(xiàn)方法是否確實(shí)實(shí)現(xiàn)了電路設(shè)計(jì)所描述的功能。形式驗(yàn)證方法分為等價(jià)性檢查(equivalence checking)如Formality,LEC等和屬性檢查(Property checking)如Jasper gold,VC Formal 等。我們這里講的形式驗(yàn)證特指屬性的檢查(Property checking)。
如上圖所示,在一個(gè)簡(jiǎn)單的加法設(shè)計(jì)中,我們采用動(dòng)態(tài)仿真的方式去驗(yàn)證上述運(yùn)算是類(lèi)似一種丟飛鏢的過(guò)程,想要驗(yàn)到所有的場(chǎng)景要運(yùn)行2的64次方即18446744073709551616次,這只是簡(jiǎn)單的加法運(yùn)算,如果再加入其它稍微復(fù)雜的邏輯,想用動(dòng)態(tài)仿真的方式打完所有情況是非常困難的。
另外一種場(chǎng)景是當(dāng)信號(hào)從設(shè)計(jì)的端口輸入,信號(hào)流的走向會(huì)根據(jù)不同設(shè)定或者狀態(tài)選擇走向不同的路徑。如上圖所示,當(dāng)信號(hào)流可選擇的路徑很多時(shí),通過(guò)動(dòng)態(tài)仿真也是很難覆蓋到所有路徑的。
上述兩個(gè)問(wèn)題用Formal就可以很好的解決掉。
除了功能驗(yàn)證上的使用,F(xiàn)ormal也可以被用在coverage的收集上。在設(shè)計(jì)里面有不少代碼是無(wú)法執(zhí)行到的。如果用動(dòng)態(tài)仿真去找這些點(diǎn),一般的做法是跑大量的回歸測(cè)試(regression),收集coverage,然后針對(duì)沒(méi)打到的coverage hole找designer去review。整個(gè)過(guò)程走下來(lái)會(huì)花費(fèi)不少人力。而用formal可以比較輕松高效的找到其中的一些點(diǎn)。
介紹了這么多,那么Formal是怎么實(shí)現(xiàn)的呢?用Formal驗(yàn)證需要輸入設(shè)計(jì)(design),約束(constraint)和待驗(yàn)證的property。這里的設(shè)計(jì)一般是指RTL,約束指的是assumption,clock,reset等,propert是指assertion。
下面是一個(gè)簡(jiǎn)單的例子,當(dāng)設(shè)計(jì)如下
我們可以通過(guò)下面描述來(lái)驗(yàn)證該段邏輯,先驗(yàn)證req_valid 為高時(shí),dataout等于datain;
再驗(yàn)證req_valid 為低時(shí),dataout等于0。
Formal適合所有驗(yàn)證場(chǎng)景嗎?當(dāng)然不是,因?yàn)閒ormal是通過(guò)數(shù)學(xué)運(yùn)算去完成完備性驗(yàn)證,在一些簡(jiǎn)單的邏輯如arbiter,muxes,F(xiàn)SM,Control logic上比較適合用formal去驗(yàn)證,但是對(duì)一些復(fù)雜的場(chǎng)景,比如涉及到大量的memory,復(fù)雜的總線傳輸,多模塊協(xié)助工作等場(chǎng)景都不太適合用Formal。
審核編輯:劉清
-
FPGA
+關(guān)注
關(guān)注
1630文章
21796瀏覽量
606003 -
仿真器
+關(guān)注
關(guān)注
14文章
1019瀏覽量
83935 -
SoC芯片
+關(guān)注
關(guān)注
1文章
617瀏覽量
35040 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59950 -
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19227
原文標(biāo)題:什么是形式驗(yàn)證(Formal 驗(yàn)證)
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
淺析形式驗(yàn)證的分類(lèi)、發(fā)展、適用場(chǎng)景
![淺析<b class='flag-5'>形式</b><b class='flag-5'>驗(yàn)證</b>的分類(lèi)、發(fā)展、適用場(chǎng)景](https://file1.elecfans.com/web2/M00/9D/4E/wKgZomTn_n2AfqR0AAAXrapcfq8606.png)
EDA形式化驗(yàn)證漫談:仿真之外,驗(yàn)證之內(nèi)
A Roadmap for Formal Property
![A Roadmap for <b class='flag-5'>Formal</b> Property](https://file.elecfans.com/web2/M00/48/AE/pYYBAGKhtBeAO3SiAAA7osgh1do266.jpg)
深層解析形式驗(yàn)證
![深層解析<b class='flag-5'>形式</b><b class='flag-5'>驗(yàn)證</b>](https://file1.elecfans.com//web2/M00/A5/AA/wKgZomUMOYCAO8dJAADskvY_wwU546.jpg)
新思科技憑借突破性機(jī)器學(xué)習(xí)技術(shù)將形式屬性驗(yàn)證性能提高10倍
從C/C++到RTL,提速100倍的形式化驗(yàn)證加快AI算法到芯片的迭代
形式驗(yàn)證工具對(duì)系統(tǒng)功能的設(shè)計(jì)
Formal Verification:形式驗(yàn)證的分類(lèi)、發(fā)展、適用場(chǎng)景
分享一些形式驗(yàn)證(Formal Verification)的經(jīng)典視頻
![分享一些<b class='flag-5'>形式</b><b class='flag-5'>驗(yàn)證</b>(<b class='flag-5'>Formal</b> Verification)的經(jīng)典視頻](https://file.elecfans.com/web2/M00/90/0B/poYBAGPnItyABozMAAGCGbwQFvw444.png)
可以通過(guò)降低約束的復(fù)雜度來(lái)優(yōu)化Formal的執(zhí)行效率嗎?
談?wù)?b class='flag-5'>Formal驗(yàn)證中的Equivalence Checking
Formal Verification的基礎(chǔ)知識(shí)
![<b class='flag-5'>Formal</b> Verification的基礎(chǔ)知識(shí)](https://file1.elecfans.com/web2/M00/88/B3/wKgZomRvKm6ACbNIAAA_2ZnZkZM858.png)
聊聊形式驗(yàn)證中的SVA
![聊聊<b class='flag-5'>形式</b><b class='flag-5'>驗(yàn)證</b>中的SVA](https://file1.elecfans.com/web2/M00/89/9F/wKgaomSJGPGAD-k7AAAY49Ffl9s913.png)
數(shù)字驗(yàn)證中Formal Verification在國(guó)內(nèi)的應(yīng)用以及前景如何?
Formal Verify形式驗(yàn)證的流程概述
![<b class='flag-5'>Formal</b> Verify<b class='flag-5'>形式</b><b class='flag-5'>驗(yàn)證</b>的流程概述](https://file1.elecfans.com/web2/M00/A4/88/wKgaomUDxOKAeERNAACPKb6AyPE352.jpg)
評(píng)論