99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

聊聊形式驗(yàn)證中的SVA

sanyue7758 ? 來源:驗(yàn)證工程師的自我修養(yǎng) ? 2023-06-14 09:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、序言

SVA,即SystemVerilog Assertion,在simulation和Formal都有極為廣泛的應(yīng)用,這里介紹一些基本的概念和常用的語法。

二、一個簡單的例子

以一個arbiter仲裁器 作為例子來闡述一些概念,這個仲裁器有4個request來自不同的agent,req的每個bit表示相應(yīng)的仲裁請求發(fā)起。gnt信號每個bit表示相應(yīng)的請求被允許。同時,這里還有一個opcode輸入,用來override正常的請求,例如強(qiáng)制某個agent獲得grant,或者讓所有的gnt都無效一段時間。error信號表示一些錯誤的輸入序列或者錯誤的opcode。模塊框圖如下所示:

f1a08290-0a01-11ee-962d-dac502259ad0.png

interface代碼如下:

wKgZomSJGIWAA2AHAACGStX_-jQ053.jpg

三、基本概念

在介紹SVA之前,我們先來澄清幾個容易混淆的概念,尤其是assertion和assumption,傻傻分不清。

3.1 Assertion

assertion一般用來表示一個表達(dá)式恒為True,比如agent0未發(fā)起request,則gnt[0]不應(yīng)該被拉起來。這種情形我們可以用assertion來加以檢查。

check_grant: assert property (!(gnt[0] && !req[0])) else $error(“Grant
without request for agent 0!”);

3.2 Assumption

assertion一般用于檢查DUT內(nèi)部的狀態(tài),而Assumption則主要用于約束驗(yàn)證環(huán)境,主要用于約束輸入。例如我們期望opcode應(yīng)該是合法的一些參數(shù),就可以用assumption語句來進(jìn)行約束。

good_opcode: assume property (opcode inside {FORCE0,FORCE1,FORCE2,
FORCE3,ACCESS_OFF,ACCESS_ON}) else $error(“Illegal opcode.”);

在simulation中,assumption跟assertion運(yùn)行效果一樣,都是用來檢查輸入。但在Formal里面,二者則有很多的區(qū)別。對于上面那個assumption,在simulation中,不斷的檢測opcode,不在這些數(shù)里面則報一個assertion failure。在Formal里面,這是表示opcode激勵只能在這些數(shù)里面取值,大家可以將其理解成一個輸入的constraint。

3.3 COVER POINTS

這個沒什么好說的,在simulation和formal里面都是一致,用來表征覆蓋率。

不過需要注意的是,F(xiàn)V通??梢匀采w。但是因?yàn)橛衋ssumption,我們有時候會overconstraint ,這樣有些東西就可能被漏掉。所以coverpoint在FV里面至關(guān)重要。

一般來說,F(xiàn)V上來就先寫coverpoint,先規(guī)劃好哪些點(diǎn)需要覆蓋。其次還是assertion和assumption。這樣就不會出現(xiàn)過overconstraint而不自知的情形。

四、SVA 語法介紹

SVA Asssertion 語言分為幾個等級,自下而上,可以分成四個等級,即boolean、sequence、property和assertion statement,如下圖所示:

f1c62a86-0a01-11ee-962d-dac502259ad0.png

Booleans

Booleans 即布爾表達(dá)式,一些與或非的邏輯,例如:

(req[0]&&req[1]&&req[2]&&req[3])

Sequences

Sequences 顧名思義,就是boolean 表達(dá)式的序列,也就是說一段時間(幾個cycle)的booleans的組合,以來與clock event來定義這個區(qū)間,例如req0有效兩個cycle后gnt0有效

req[0] ##2 gnt[0]

Properties

Properties 則是進(jìn)一步將sequences和一些操作符組合起來,表示一個implication或者其他的。比如:

req[0] ##2 gnt[0] |-> ##1 !gnt[0]

Assertion Statements

Assertion Statements 則是用assert, assume, cover等關(guān)鍵詞將properties例化,把SVA property 轉(zhuǎn)換成真正意義的assertion, assumption, cover point. 例如:

gnt_falls: assert property(req[0] ##2 gnt[0] |-> ##1 !gnt[0]);

另外還有兩個概念需要明確:

immediate assertions

Immediate assertion 簡單的assertion語句,只能用于procedural 語句里面。只支持booleans,不能有clock, reset或者property語句。

imm1: assert (!(gnt[0] && !req[0]))

concurrent assertions

Concurrent assertion 語句則一般用于檢查多個cycle期間段的一些property,一般我們說SVA基本代指Concurrent assertion

conc1: assert property (!(gnt[0] && !req[0]))

五、CONCURRENT 語法

concurrent assertion的一般寫法如下例所示:

safe_opcode: assert property (
@(posedge clk)
disable iff (rst)
(opcode inside {FORCE0,FORCE1,FORCE2,FORCE3,ACCESS_OFF,ACCESS_ON}))
else $error(“Illegal opcode.”);

一般包含下面幾點(diǎn):

帶關(guān)鍵詞assert property.

帶clock

可選的disable iff語句

5.1 常用函數(shù)

SVA自帶了一些系統(tǒng)函數(shù),這里列出一些常用的供參考。

f1f5a40a-0a01-11ee-962d-dac502259ad0.png

f22b9010-0a01-11ee-962d-dac502259ad0.png

5.2 Disable iff

Disable iff (iff表示if and only if)語句,顧名思義就是在某個條件成立的時候?qū)ssertion語句disable掉。但這里有點(diǎn)需要特別注意的是,diasable iff里面的邏輯采樣不是基于clock的,或者說相對clock來說是異步的。建議里面只放reset邏輯,不要放其他的邏輯。我們舉個例子,如果有g(shù)nt,那么鐵定有個req,兩種寫法:

bad_assert: assert property (@(posedge clk)
disable iff
(real_rst || ($countones(gnt) == 0))
($countones(req) > 0));
good_assert: assert property (@(posedge clk)
disable iff (real_rst)
(($countones(req) > 0) ||
($countones(gnt) == 0)));

表面上看,二者似乎一樣。仔細(xì)分析下,在clock 8的phase,由于gnt=0,整個assertion直接被disable,我們也就沒法檢測出上一個cycle的failure。

這里其實(shí)是涉及到SVA的采樣時間問題,或者說systemverilog的region問題,建議翻閱<> 這本書,里面有非常詳細(xì)的解讀。

f2762058-0a01-11ee-962d-dac502259ad0.png

六、SEQUENCE 語法

6.1 delay

sequence 基本的操作符是#,即delay,##n (延時特定個cycle) or ##[a:b] (延時 a 到b 個cycle) 。

f2a7e746-0a01-11ee-962d-dac502259ad0.png

6.2 repetition

repetition 操作符 [*m:n] ,表示subsequence 重復(fù)多少次。

f2d2d3e8-0a01-11ee-962d-dac502259ad0.png

6.3 logical ops

Sequences 可以通過and 或者or組合起來。

and: 兩個sequence同時start,但它們的結(jié)束點(diǎn)未必相同。

or: 兩個sequence至少有一個match

throughout : Boolean expression remains true for the whole execution of a sequence

within: one sequence occurs within the execution of another

f312bada-0a01-11ee-962d-dac502259ad0.png

f3575b4a-0a01-11ee-962d-dac502259ad0.png

f38eb7c0-0a01-11ee-962d-dac502259ad0.png

6.4 go to repetetion

goto repetition 操作符,即 [- > n] 和 [ =n] ,表示有value重復(fù)了正好n次,未必是連續(xù)的cycle。

這兩個操作符如果后面不接其他的東西的話,是等價的。如果后面帶有其他的sequence的話,意義有點(diǎn)不一樣:

[->n]: goto repetition, 下一個sequence必須緊接著。

[=n]: nonconsecutive goto repetition, 下一個seuquece出現(xiàn)前允許插入若干個cycle的空閑

f3ca41a0-0a01-11ee-962d-dac502259ad0.png

6.5 Implication

sequence |-> property :sequence match后立即檢查property

sequence |=> property. :sequence match后delay一個cycle再檢查property

左邊稱為antecedent (先決條件),必須為sequence;右邊稱為consequence (結(jié)果) ,可以是squence或者property。

需要強(qiáng)調(diào)一點(diǎn),如果antecedent 在整個過程都不滿足的話,這個assertion也不會fail,這種情形在formal中稱為vacuously,即空的pass。

f406a852-0a01-11ee-962d-dac502259ad0.png

f42ea244-0a01-11ee-962d-dac502259ad0.png

還有一些SVA語法,不是很常用,可以用到時候翻閱手冊查詢

六、MULTITHREADING

MULTITHREADING,即多線程。這里需要強(qiáng)調(diào)下,assertion的多線程屬性;每次antecedent為真,工具都將新啟動一個線程來check,我們以一個例子來進(jìn)行說明。

req信號有效后,10個cycle之后gnt信號應(yīng)該有效。代碼如下:

delayed_gnt: assert property (req[0] |->##10 gnt[0])

由于req和gnt之前隔了10個cycle,很有可能在這中間req信號再次被拉起,如果這樣的話,工具會啟多個線程,每個線程檢查相應(yīng)的req和gnt對應(yīng)的關(guān)系。

f46ed134-0a01-11ee-962d-dac502259ad0.png

七、總結(jié)

SVA語法較多,需要反復(fù)練習(xí)才能掌握和精通。尤其是它的debug,需要反復(fù)實(shí)踐,加以體會。不建議寫很復(fù)雜的SVA,不方便debug。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SVA
    SVA
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

    10262
  • Verilog語言
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    8552
  • DUT
    DUT
    +關(guān)注

    關(guān)注

    0

    文章

    191

    瀏覽量

    12952

原文標(biāo)題:干貨,聊聊形式驗(yàn)證中的SVA

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    芯片開發(fā)形式化驗(yàn)證的是一個誤區(qū)

    今天的形式驗(yàn)證工具具有更大的容量,并且許多工具能夠在服務(wù)器或云上以分布式模式運(yùn)行。形式驗(yàn)證的技術(shù)和方法也得到了擴(kuò)展。
    的頭像 發(fā)表于 11-29 14:31 ?2375次閱讀

    關(guān)于功能驗(yàn)證、時序驗(yàn)證、形式驗(yàn)證、時序建模的論文

    半定制/全定制混合設(shè)計(jì)的特點(diǎn),提出并實(shí)現(xiàn)了一套半定制/全定制混合設(shè)計(jì)流程功能和時序驗(yàn)證的方法。論文從模擬驗(yàn)證、等價性驗(yàn)證和全定制設(shè)計(jì)的功能驗(yàn)證
    發(fā)表于 12-07 17:40

    SVA斷言是基于邊沿還是電平呢?

    SVA斷言是一個強(qiáng)時序的技術(shù),很多時候SVA的實(shí)際時序和驗(yàn)證工程師的期望可能不同,這種不同很難調(diào)試定位。下面是一個SVA斷言的示例,驗(yàn)證工程
    發(fā)表于 08-25 15:57

    聊聊芯片IC驗(yàn)證的風(fēng)險

    驗(yàn)證的沒有驗(yàn)證到。這類問題表現(xiàn)在驗(yàn)證環(huán)境可能有bug,自己沒發(fā)現(xiàn),或是 第三條提到的驗(yàn)證架構(gòu)的局限性,導(dǎo)致bug沒有驗(yàn)證到。第六個,忽視了l
    發(fā)表于 10-21 14:25

    SVA上廣電D2972-73系列彩電電路圖

    SVA上廣電D2972-73彩色電視機(jī)電路圖,SVA上廣電D2972-73彩電圖紙,SVA上廣電D2972-73原理圖。
    發(fā)表于 05-23 10:55 ?175次下載
    <b class='flag-5'>SVA</b>上廣電D2972-73系列彩電電路圖

    SVA系列(通用)彩電電路圖(1)

    SVA系列彩色電視機(jī)電路圖,SVA系列彩電圖紙,SVA系列原理圖。
    發(fā)表于 05-25 09:25 ?185次下載
    <b class='flag-5'>SVA</b>系列(通用)彩電電路圖(1)

    SVA系列(通用)彩電電路圖(2)

    SVA系列彩色電視機(jī)電路圖,SVA系列彩電圖紙,SVA系列原理圖。 
    發(fā)表于 05-25 09:28 ?90次下載
    <b class='flag-5'>SVA</b>系列(通用)彩電電路圖(2)

    深層解析形式驗(yàn)證

      形式驗(yàn)證(Formal Verification)是一種IC設(shè)計(jì)的驗(yàn)證方法,它的主要思想是通過使用形式證明的方式來驗(yàn)證一個設(shè)計(jì)的功能是否
    發(fā)表于 08-06 10:05 ?4197次閱讀
    深層解析<b class='flag-5'>形式</b><b class='flag-5'>驗(yàn)證</b>

    形式驗(yàn)證成為SoC模塊驗(yàn)證的主流

      以對以仿真為中心的工程師有意義的方式調(diào)試形式驗(yàn)證代碼,在很大程度上已被許多形式驗(yàn)證供應(yīng)商解決。大多數(shù)工具可以在斷言失敗的情況下輸出“見證”。也就是說,導(dǎo)致斷言失敗的仿真波形
    的頭像 發(fā)表于 06-13 10:25 ?1527次閱讀
    <b class='flag-5'>形式</b><b class='flag-5'>驗(yàn)證</b>成為SoC模塊<b class='flag-5'>驗(yàn)證</b>的主流

    形式驗(yàn)證簡介

    形式驗(yàn)證是一種自動檢查方法,可以捕捉許多常見的設(shè)計(jì)錯誤,并可以發(fā)現(xiàn)設(shè)計(jì)的歧義。
    的頭像 發(fā)表于 07-28 14:04 ?2880次閱讀

    16nm技術(shù)的形式驗(yàn)證流程、優(yōu)勢和調(diào)試

    必須優(yōu)化正式驗(yàn)證流程的初始網(wǎng)表,因此測試設(shè)計(jì)需要額外的邏輯。在這里,我們提供16 nm節(jié)點(diǎn)的形式驗(yàn)證流程和調(diào)試技術(shù)。
    的頭像 發(fā)表于 11-24 12:09 ?1669次閱讀
    16nm技術(shù)的<b class='flag-5'>形式</b><b class='flag-5'>驗(yàn)證</b>流程、優(yōu)勢和調(diào)試

    形式驗(yàn)證入門之基本概念和流程

    和靜態(tài)時序分析工具一起來完成對電路完備的驗(yàn)證。本文就以Synopsys公司的formality工具為例,來介紹形式驗(yàn)證的流程和基本概念,后續(xù)會詳細(xì)介紹使用formality做RTL2Gate流程
    的頭像 發(fā)表于 12-27 15:18 ?2908次閱讀

    介紹使用SVA的幾個優(yōu)勢

    SVA支持多時鐘域(clock domain crossing (CDC))邏輯,例如異步FIFO。
    的頭像 發(fā)表于 01-13 16:00 ?1199次閱讀

    使用SVA的幾個好處

    SVA支持多時鐘域(clock domain crossing (CDC))邏輯,例如異步FIFO。 2. SVA是一種描述語言,可讀性比較強(qiáng)。
    的頭像 發(fā)表于 03-21 14:49 ?958次閱讀

    形式驗(yàn)證及其在芯片工程的應(yīng)用

    形式驗(yàn)證不僅僅是芯片領(lǐng)域中的一個概念。正如文章開頭提到過,形式驗(yàn)證強(qiáng)調(diào)使用嚴(yán)格的數(shù)學(xué)推理和形式化技術(shù),以確保系統(tǒng)的行為是否符合預(yù)期的性質(zhì)和規(guī)
    的頭像 發(fā)表于 10-20 10:46 ?1571次閱讀