欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

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

sanyue7758 ? 來(lái)源:驗(yàn)證工程師的自我修養(yǎng) ? 2023-06-14 09:31 ? 次閱讀

一、序言

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

二、一個(gè)簡(jiǎn)單的例子

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

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

interface代碼如下:

wKgZomSJGIWAA2AHAACGStX_-jQ053.jpg

三、基本概念

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

3.1 Assertion

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

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語(yǔ)句來(lái)進(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)行效果一樣,都是用來(lái)檢查輸入。但在Formal里面,二者則有很多的區(qū)別。對(duì)于上面那個(gè)assumption,在simulation中,不斷的檢測(cè)opcode,不在這些數(shù)里面則報(bào)一個(gè)assertion failure。在Formal里面,這是表示opcode激勵(lì)只能在這些數(shù)里面取值,大家可以將其理解成一個(gè)輸入的constraint。

3.3 COVER POINTS

這個(gè)沒(méi)什么好說(shuō)的,在simulation和formal里面都是一致,用來(lái)表征覆蓋率。

不過(guò)需要注意的是,F(xiàn)V通常可以全覆蓋。但是因?yàn)橛衋ssumption,我們有時(shí)候會(huì)overconstraint ,這樣有些東西就可能被漏掉。所以coverpoint在FV里面至關(guān)重要。

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

四、SVA 語(yǔ)法介紹

SVA Asssertion 語(yǔ)言分為幾個(gè)等級(jí),自下而上,可以分成四個(gè)等級(jí),即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á)式的序列,也就是說(shuō)一段時(shí)間(幾個(gè)cycle)的booleans的組合,以來(lái)與clock event來(lái)定義這個(gè)區(qū)間,例如req0有效兩個(gè)cycle后gnt0有效

req[0] ##2 gnt[0]

Properties

Properties 則是進(jìn)一步將sequences和一些操作符組合起來(lái),表示一個(gè)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]);

另外還有兩個(gè)概念需要明確:

immediate assertions

Immediate assertion 簡(jiǎn)單的assertion語(yǔ)句,只能用于procedural 語(yǔ)句里面。只支持booleans,不能有clock, reset或者property語(yǔ)句。

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

concurrent assertions

Concurrent assertion 語(yǔ)句則一般用于檢查多個(gè)cycle期間段的一些property,一般我們說(shuō)SVA基本代指Concurrent assertion

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

五、CONCURRENT 語(yǔ)法

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語(yǔ)句

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)語(yǔ)句,顧名思義就是在某個(gè)條件成立的時(shí)候?qū)ssertion語(yǔ)句disable掉。但這里有點(diǎn)需要特別注意的是,diasable iff里面的邏輯采樣不是基于clock的,或者說(shuō)相對(duì)clock來(lái)說(shuō)是異步的。建議里面只放reset邏輯,不要放其他的邏輯。我們舉個(gè)例子,如果有g(shù)nt,那么鐵定有個(gè)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,整個(gè)assertion直接被disable,我們也就沒(méi)法檢測(cè)出上一個(gè)cycle的failure。

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

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

六、SEQUENCE 語(yǔ)法

6.1 delay

sequence 基本的操作符是#,即delay,##n (延時(shí)特定個(gè)cycle) or ##[a:b] (延時(shí) a 到b 個(gè)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 可以通過(guò)and 或者or組合起來(lái)。

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

or: 兩個(gè)sequence至少有一個(gè)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。

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

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

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

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

6.5 Implication

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

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

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

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

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

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

還有一些SVA語(yǔ)法,不是很常用,可以用到時(shí)候翻閱手冊(cè)查詢

六、MULTITHREADING

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

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

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

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

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

七、總結(jié)

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





審核編輯:劉清

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

    關(guān)注

    1

    文章

    19

    瀏覽量

    10154
  • Verilog語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

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

    關(guān)注

    0

    文章

    189

    瀏覽量

    12501

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

    驗(yàn)證的沒(méi)有驗(yàn)證到。這類問(wèn)題表現(xiàn)在驗(yàn)證環(huán)境可能有bug,自己沒(méi)發(fā)現(xiàn),或是 第三條提到的驗(yàn)證架構(gòu)的局限性,導(dǎo)致bug沒(méi)有驗(yàn)證到。第六個(gè),忽視了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)證方法,它的主要思想是通過(guò)使用形式證明的方式來(lái)驗(yàn)證一個(gè)設(shè)計(jì)的功能是否
    發(fā)表于 08-06 10:05 ?4019次閱讀
    深層解析<b class='flag-5'>形式</b><b class='flag-5'>驗(yàn)證</b>

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

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

    形式驗(yàn)證簡(jiǎn)介

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

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

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

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

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

    介紹使用SVA的幾個(gè)優(yōu)勢(shì)

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

    使用SVA的幾個(gè)好處

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

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

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