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

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

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

Formal Verification (二) FPV、APPs介紹

rfdqdzdg ? 來源:IC Verification Club ? 2023-08-28 09:13 ? 次閱讀

SVA in Formal

FPV對不同的SVA Property,調(diào)用合適的算法engine進(jìn)行建模,依據(jù)算法模型從初始狀態(tài)Reset state對DUT所有的input自動施加激勵,隨著cycle的depth增加,逐漸窮盡狀態(tài)空間。

71b3f62c-4537-11ee-a2ef-92fbcf53809c.png

The full space of all possible RTL state values: 最外層的紫方框?yàn)镽TL的所有可能存在的狀態(tài)空間(input + state element(dff,latch))。

The reset states:初始狀態(tài),一般從reset復(fù)位開始。

The reachable states:從reset state可以,自動對input施加激勵,可以達(dá)到的狀態(tài)。(所以紫方框以內(nèi)綠橢圓以外的空間,是無法達(dá)到的空間,例如RTL中的dead code)Assumptions:使用SVA的assume對DUT進(jìn)行約束;橙色橢圓型,約束縮小了狀態(tài)空間。

Assertion: 使用SVA的assert對property進(jìn)行斷言;斷言屬性定義了模型的行為,例如assert property: ( @(posedge clk) clr |=> ((overfloat==0)&&(cnt==0)));斷言了在clk上升沿采樣時(shí),若clr為高(先行算子anteceden成功),下一個(gè)clk上升沿采樣到的overfloat和cnt都為0(后續(xù)算子consequent);而Formal工具要做的就是窮盡狀態(tài)空間找出一個(gè)counter-exampleCEX反例,進(jìn)行falsified證偽,例如overfloat和cnt都不為0或者只有一個(gè)為0;如果CEX出現(xiàn),而assertion為golden,則就說明DUT不滿足spec。

Asser1: pass,因?yàn)檫@個(gè)CEX不滿足assumptions的約束,不是一個(gè)有效狀態(tài)。

Assert2: pass,因?yàn)檫@個(gè)CEX本身不是可以達(dá)到的狀態(tài)。

Assert3: fail,有效狀態(tài)和約束內(nèi),出現(xiàn)了一個(gè)CEX。

Cover Points: 使用SVA的cover對property設(shè)置覆蓋點(diǎn);相當(dāng)于設(shè)置一個(gè)觀察點(diǎn),F(xiàn)ormal工具會窮盡狀態(tài)空間,找到一個(gè)滿足要求的狀態(tài);

Cover1: 該覆蓋點(diǎn)被cover

Cover2: 該覆蓋點(diǎn)在約束之外,unreachable

Cover3: 該覆蓋點(diǎn)在有效空間之外,unreachable

VC Formal定義了Assertion和Cover Points的結(jié)果如下:

Assertion:proven: assertion pass,窮盡狀態(tài)空間也找不到一個(gè)CEXfalsified:assertion fail,出現(xiàn)不滿足斷言的CEXinconclusive: Formal在N個(gè)cycle depth內(nèi),沒有找到CEX,屬于Bounded Proof,有界證明,這個(gè)"界“bounded (safe) depth就是N個(gè)cycle depth。vacuous:對于包含蘊(yùn)含操作符|->|=>的property,如果antecedent一直未被觸發(fā),也一定不會出現(xiàn)CEX,此時(shí)為空成功vacuous success。vacuous在Simulation中經(jīng)常出現(xiàn),因?yàn)槭┘拥挠邢藜?,沒有觸發(fā)antecedent成功。但是在Formal中,需要引起注意。

Cover Points:Covered: 覆蓋Uncovered: 未覆蓋

the SVA differences

在Simaltion和Formal中,SVA的使用略有不同:

71cf6470-4537-11ee-a2ef-92fbcf53809c.png

Simulation中的assume和assertion作用相同,不起到約束的作用;而Formal中,assume實(shí)現(xiàn)約束的作用;對于Simulation的vacuous success,并不會報(bào)錯(cuò)引起用戶注意,一般建議對property同時(shí)做assert和cover處理。

Sequential depth

Sequential depth:也就是上文提及到的Cycle depth;較大的Sequential depth,容易產(chǎn)生inconclusive的結(jié)果。

71fd7f5e-4537-11ee-a2ef-92fbcf53809c.png

Assertion Logic Contributes to State Space

COI

COI(CONES OF INFLUENCE):COI是Formal工具對property的邏輯電路映射,也被稱作Logic Cones邏輯錐。COI包含property的所有input和state element,這些決定了不同的輸出結(jié)果。

7212816a-4537-11ee-a2ef-92fbcf53809c.png

Formal工具對一個(gè)property解析生成的COI Schematic

72263d18-4537-11ee-a2ef-92fbcf53809c.png

從用戶角度,我們不必關(guān)心一個(gè)property的COI具體是什么樣子;用戶創(chuàng)建的所有property的COI集合對DUT RTL的覆蓋情況,類似于Simulation中的Code coverage,稱為Property Density。

The suggestion of SVA for Formal

formal model從SVA中提取,所以SVA的書寫方式,也會影響Formal的效率,推薦的SVA Coding Guidelines可以參考《VC_Formal_UGAppendix B。下面介紹一些常見的assertion”技巧“:

uniform format

assertion的書寫,需要遵循同一的格式,每條assertion有相應(yīng)的文檔記錄;每條property都有可讀性的lable標(biāo)注;可以采用一些宏定義,簡化assertion的書寫,參考:prim_assert.sv[4]當(dāng)assertion的clock,reset都是同一個(gè)時(shí),可以聲明default clocking和default disable iff,簡化書寫。

Immediate VS Concurrent

雖然立即斷言在一些情況下等效于并發(fā)斷言,如下:

//ConcurrentAssertion
assert_overfloat_func:assertproperty(`clk_rst$rose(overfloat)|->$past(cnt==4'hF));

//ImmediateAssertion
always@(posedgeclk)
if($rose(overfloat)&&(rstn==1))
assert_overfloat_func_2:assert($past(cnt==4'hF));

但是建議使用并發(fā)斷言,F(xiàn)ormal工具對蘊(yùn)含操作符的支持更好。

Try use implication

不建議直接對sequence進(jìn)行斷言,sequence會在每個(gè)cycle都被檢查;推薦使用蘊(yùn)含操作符的方式。

//BAD
propertysend_header_payload;
@(posedgeclk)disableiff(reset)
(enable##1header##1payload[*16]);
endproperty
//GOOD
propertysend_header_payload;
@(posedgeclk)disableiff(reset)
$rose(enable)|=>header##1payload[*16];
endproperty

SVA Modeling Layer Code

可以通過增加Auxiliary Code,簡化property的書寫難度;如下:

moduleassert_top(inputrstn,inputclk,inputA,
input,B,inputC,inputwr,inputrd);
//Requirement:inputsA,B,Caremutuallyexclusive
wire[2:0]my_bus={A,B,C};
a_abc_mutex:assertproperty(@(posedgeclk)$onehot0(my_bus));
//Requirement:Nomorethan5outstandingwr’s(withoutard)
//andnordbeforewr
reg[2:0]my_cnt;
always@(posedgeclkornegedgerstn)
if(!rstn)my_cnt<=?3’b000;
????????else
????????????if?(?wr?&&?!rd)?my_cnt?<=?my_cnt?+?1;
????????????else?if?(!wr?&&?rd)?my_cnt?<=?my_cnt?–?1;
????????????else?my_cnt?<=?my_cnt;
a_wr_outstand_le5:?assert?property?(@(posedge?clk)?my_cnt?<=?3’d5?);
a_no_rd_wo_wr:?assert?property?(@(posedge?clk)?!((my_cnt?==?3’d0)?&&?rd));
endmodule

use function

assertion中可以調(diào)用funciton。

//Computenextgrantforround-robinscheme
functionlogic[3:0]fv_rr_next(logic[3:0]req,logic[3:0]gnt);
fv_rr_next=0;
for(inti=1;(i<4);?i++)?begin
????????if?(req[(fv_which_bit(gnt)+i)%4])?begin
??????????fv_rr_next[(fv_which_bit(gnt)+i)%4]?=?1;
??????????break;
????????end
????end
endfunction

Page81_rr_next:??assert?property?(((opcode?==?NOP)?&&?
????(|gnt?==?1)?&&?(|req?==?1)?&&?(|(req&gnt)==4'b0))?|=>(gnt==fv_rr_next(req,gnt)))
else$error("Violationofroundrobingrantpolicy.");

as SIMPLE as possible

將一個(gè)大的assertion才分為多個(gè)小的assertion

$rose(START)|=>(ENABLE&&~START&&~STOP)[*7]
##1(ENABLE&&~START&&STOP)|=>
(~ENABLE&&~START&&~STOP);

$rose(START)|->~ENABLE##1ENABLE;
$rose(ENABLE)|->(~START&&~STOP)[*7];
$rose(STOP)|->ENABLE##1~ENABLE;
$fell(START)|=>##5$rose(STOP);

as SHORT as possible

盡量縮短Cycle Depth,使用[0:$]或者太大的時(shí)間delay不利于formal分析。

a5:assertproperty@(posedgeclk)a|->(##[0:$]b);
a6:assertproperty(@(posedgeclk)disableiff(~rst_n)A##1B|=>C##[1:100]D);

use Systemverilog

采用可綜合的systemvrilog語法,如interface,struct等,使用更便捷;像s_eventually, 在sv09才支持。

Formal Property Verification

以一個(gè)counter做簡單的演示:

modulecounter(
inputclk,
inputrstn,
inputen,
inputclr,
outputcnt,
outputoverfloat
);

reg[3:0]cnt;
regoverfloat;

always@(posedgeclk,negedgerstn)
begin
if(!rstn)
cnt<=?4'b0;
????else?if?(clr)
???????cnt?<=?0;
????else?if?(en?&?(cnt!=4'hF))
???????cnt?<=?cnt?+?1;
end


always@(posedge?clk,negedge?rstn)
begin
????if(!rstn)
???????overfloat?<=?1'b0;
????else?if?(clr)
???????overfloat?<=?1'b0;
????else?if?(cnt==15)
???????overfloat?<=?1'b1;
end

`ifdef?FPV

`define?clk_rst?@(posedge?clk)?disable?iff?(!rstn)


//ASSUME
assume_en_clr_conflit:?assume?property?(`clk_rst?!(en?&&?clr));

//COVER
cover_clr_overfloat:?cover?property?(`clk_rst?$fell(overfloat));
cover_cnt_value:?cover?property?(`clk_rst?(cnt==20));

//ASSERT
assert_clr_func:?assert?property(`clk_rst?clr?|=>((overfloat==0)&&(cnt==0)));


propertyp_en_func;
inttmp;
`clk_rst(en,tmp=cnt)|=>if(cnt!=4'hF)(tmp+1==cnt);
endproperty

assert_en_func:assertproperty(p_en_func);

assert_clr_overfloat:assertproperty(`clk_rst$fell(overfloat)|->$past(clr));
//PASS
assert_overfloat_func:assertproperty(`clk_rst$rose(overfloat)|->$past(cnt==4'hF));
//WRONGassertion
assert_overfloat_func_fail:assertproperty(`clk_rst(cnt==4'hF)|=>overfloat);

//ImmediateAssert
always@(posedgeclk)
if($rose(overfloat)&&(rstn==1))
assert_overfloat_func_2:assert($past(cnt==4'hF));

`endif
endmodule

Result:vacuity欄為property的先行算子成立的cycle depth。witness欄為property的后續(xù)算子成立的cycle depth。對于assert_overfloat_func這個(gè)property,witness早于vacuity1個(gè)cycle,是因?yàn)?past()是對過去的判斷。

723756d4-4537-11ee-a2ef-92fbcf53809c.png

Initial State定義clk,rstn;從復(fù)位狀態(tài)開始,F(xiàn)ormal工具自動對input信號灌入激勵。

#ClockDefinitions
create_clockclk-period100
#ResetDefinitions
create_resetrstn-senselow

#InitialisationCommands
sim_run-stable
sim_save_reset

ASSUME

增加了en和clr不可能同時(shí)為高的約束。

COVER

增加一些關(guān)心的cover point,工具可以快速地跑出對應(yīng)波形:例如$fell(overfloat)的cover:

726468e0-4537-11ee-a2ef-92fbcf53809c.png

200ns:完成復(fù)位2000ns:cover point match(注意采樣的上升沿前的數(shù)據(jù))

對于(cnt==20))則是uncover,cnt最大值為15。

ASSERT

assert_overfloat_func_fail: assert property (`clk_rst (cnt==4'hF) |=> overfloat);這個(gè)propery斷言失敗,被工具找到了一個(gè)CEX: 當(dāng)cnt==4'hF時(shí),同時(shí)拉高clr,overfloat就不會為高了。

727dad64-4537-11ee-a2ef-92fbcf53809c.png在這里插入圖片描述

assertion annotation:

72ad42ae-4537-11ee-a2ef-92fbcf53809c.png

**ENGINE** Type欄的e1,s6,t3為算法引擎的代號;工具會根據(jù)property的特性選擇合適的算法,調(diào)用相應(yīng)的引擎處理;VC Formal中的engines:

72c1d3cc-4537-11ee-a2ef-92fbcf53809c.png

常見算法為:

?Binary Decision Diagrams orBDD

?"SATisfiability" Proofs orSAT

?Bounded Model Checking orBMC

?Craig Interpolation, usually shortened to "Craig"

?Property Directed Reachability orPDR

一般使用工具默認(rèn)分配的engine,當(dāng)然用戶也可以自己指定;VC Formal提供了多種引擎編排的recipes,適用FPV不同的使用場景。

JasperGold Result

72f24fca-4537-11ee-a2ef-92fbcf53809c.png

CEX wave:

7309adc8-4537-11ee-a2ef-92fbcf53809c.png

JasperGold中的engines:

7323d892-4537-11ee-a2ef-92fbcf53809c.png

FPV的使用場景

design exercise FPV

FPV不需要搭建平臺和手動施加激勵,適合快速的在一些新設(shè)計(jì)的RTL上跑一些基礎(chǔ)功能;例如上一節(jié)$fell(overfloat))這個(gè)cover point,如果通過Simulatin,需要搭建testbench并詳盡地施加每一拍的激勵;而使用Formal,設(shè)計(jì)人員不需要關(guān)注整個(gè)過程,只關(guān)注最終結(jié)果,工具會自動施加相應(yīng)的激勵并達(dá)到你想要的結(jié)果。

所以當(dāng)你有以下需求時(shí),可以考慮使用design exercise FPV:

1.對于新設(shè)計(jì)的模塊,想要跑一些基礎(chǔ)功能進(jìn)行確認(rèn)

2.在驗(yàn)證人員的驗(yàn)證平臺還沒有準(zhǔn)備好時(shí),需要自己提前做一些簡略地驗(yàn)證

3.接手遺留的RTL代碼,可以跑一下FPV,結(jié)合波形加深對特定功能的理解

設(shè)計(jì)人員自己跑FPV,對RTL內(nèi)部細(xì)節(jié)很了解;思路一般是:首先增加感興趣的cover point;再添加一些assumption,可以過度約束;先跑出一些簡單功能的波形;增加一些assertion,做檢查;接著添加一些復(fù)雜功能的assertion和cover point,并逐漸放寬assumption;跑FPV并不是可以一次性把所有property都寫完備,需要"wiggle"幾輪,多次調(diào)試property;

有些公司對IP開發(fā)有額外的斷言標(biāo)準(zhǔn)要求,例如property應(yīng)該占RTL總代碼行數(shù)的三分之一;這些property既可以用于formal,也可以用于simulation?!禔ssertion-Based Design》,《Creating Assertion-Based IP》書籍中介紹了相關(guān)經(jīng)驗(yàn)。

Bug hunting FPV

當(dāng)你有以下需求時(shí),可以考慮使用Bug hunting FPV:

1.你所驗(yàn)證的模塊有很多corner cases,需要額外的FPV驗(yàn)證保證完備性

2.Simulation回歸random case時(shí),陸續(xù)發(fā)現(xiàn)新的error,需要額外的FPV驗(yàn)證提高置信度

3.對于一個(gè)成熟的模塊,加了一個(gè)新的feature,需要額外的FPV驗(yàn)證

Bug hunting FPV是Simulation的補(bǔ)充驗(yàn)證手段,采用更高層級的assertion,加入過約束,將注意力集中于某一個(gè)功能點(diǎn);

full proof FPV

對一個(gè)設(shè)計(jì)只采用FPV進(jìn)行驗(yàn)證,保證設(shè)計(jì)功能100%符合spec;這個(gè)從理論上是完全可行的,也是Formal Verification的初衷:只要property是完備的,正確的,相對于RTL,就可以建立一個(gè)golden model,遍歷RTL的所有狀態(tài)空間,保證100%正確。當(dāng)你滿足以下條件時(shí),可以采用full proof FPV:

1.待測設(shè)計(jì)有一個(gè)詳細(xì)的規(guī)格書或者一個(gè)包含所有功能點(diǎn)的表格

2.待測設(shè)計(jì)是一個(gè)標(biāo)準(zhǔn)接口,可以采用商業(yè)的AIP進(jìn)行驗(yàn)證

對于full proof FPV,每種Formal工具都有推薦的sign-off流程,來保證驗(yàn)證的完備。

VC Formal的推薦流程如下:

73365602-4537-11ee-a2ef-92fbcf53809c.png

JasperGold的推薦流程如下:

734ee550-4537-11ee-a2ef-92fbcf53809c.png

通過收集覆蓋率,保證property的完備,完成sign-off工作。具體后文介紹。

APPs

formal tool除了FPV,還提供了其他適用不同場景的APPs,如對于pinmux可以采用connectivity連通性檢查,對于寄存器的訪問采用register檢查,對于一塊mem,是否存在其他非法訪問路勁,可以才用security檢查;這一類app都是FPV的衍生,通過提供一文件或約束,工具自動產(chǎn)生property,調(diào)用最佳engine處理。相較于FPV,學(xué)習(xí)成本低。對于汽車產(chǎn)品,有額外的Functional Safety要求,工具會自動對rtl注錯(cuò)分析其影響結(jié)果。

VC Fomrla Apps:

7376437a-4537-11ee-a2ef-92fbcf53809c.png73a0b696-4537-11ee-a2ef-92fbcf53809c.png

對于以上Apps, 可能除了DPV, JasperGold都有對應(yīng)的Apps.






審核編輯:劉清

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

    關(guān)注

    68

    文章

    19103

    瀏覽量

    228824
  • 邏輯電路
    +關(guān)注

    關(guān)注

    13

    文章

    492

    瀏覽量

    42537
  • SVA
    SVA
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

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

    關(guān)注

    0

    文章

    189

    瀏覽量

    12309
  • FPV
    FPV
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    4469

原文標(biāo)題:Formal Verification (二) FPV、APPs

文章出處:【微信號:數(shù)字芯片設(shè)計(jì)工程師,微信公眾號:數(shù)字芯片設(shè)計(jì)工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    什么是FPV?怎樣去搭建FPV驗(yàn)證環(huán)境呢?

    、頂層連接、狀態(tài)機(jī)和門控等等。、搭建FPV驗(yàn)證環(huán)境(一)—編譯設(shè)計(jì)為了更好地說明FPV的實(shí)際應(yīng)用,本文首先基于一個(gè)密碼鎖的例子展示FPV驗(yàn)證的各個(gè)步驟。本文首先
    發(fā)表于 06-27 16:40

    搭建FPV驗(yàn)證環(huán)境之創(chuàng)建assert與執(zhí)行FPV簡析

    如果斷言FAIL了,我們還需要進(jìn)行2次定位以確定FAIL的根本原因。搭建FPV驗(yàn)證環(huán)境(四)—執(zhí)行FPV現(xiàn)在所有FPV需要的元素已經(jīng)在前面的文章依次介紹過了,我們可以開始真正執(zhí)行
    發(fā)表于 06-27 17:15

    一、什么是FPV

    一、什么是FPV?FPV是一種用來證明使用SVA或類似的語言描述的RTL屬性的方法。上圖說明了一個(gè)FPV工具執(zhí)行的框圖。FPV的輸入:1、RTL模型2、要證明的一組屬性:asserti
    發(fā)表于 06-28 14:35

    FPV設(shè)計(jì)的狀態(tài)空間主要由什么因素決定的

    ;1} ,第個(gè)周期后到達(dá)狀態(tài){2} ,直到達(dá)到最終狀態(tài)。FPV則會探索每個(gè)時(shí)鐘周期中所有可能的狀態(tài),如圖中不斷增長的橢圓所示。如果FPV工具達(dá)到
    發(fā)表于 09-14 14:11

    A Roadmap for Formal Property

    What is formal property verification? A natural language such as English allowsus to interpret
    發(fā)表于 07-18 08:27 ?0次下載
    A Roadmap for <b class='flag-5'>Formal</b> Property

    路線圖正式產(chǎn)權(quán)核查

    What is formal property verification? A natural language such as English allowsus to interpret
    發(fā)表于 07-18 08:28 ?0次下載
    路線圖正式產(chǎn)權(quán)核查

    Advanced Formal Verification

    been observed that verification becomes the major bottleneck in design flows, i.e. up to 80% of the overall design
    發(fā)表于 07-21 09:10 ?0次下載
    Advanced <b class='flag-5'>Formal</b> <b class='flag-5'>Verification</b>

    Functional Verification Coverage Measurement and Analysis

    What is functional verification? I introduce a formal definition for functional verification
    發(fā)表于 07-25 14:48 ?0次下載
    Functional <b class='flag-5'>Verification</b> Coverage Measurement and Analysis

    功能驗(yàn)證覆蓋測量與分析

    What is functional verification? I introduce a formal definition for functional verification
    發(fā)表于 07-25 14:49 ?0次下載
    功能驗(yàn)證覆蓋測量與分析

    AVM Based Unified Verification

    This paper addresses the problem of current SoC functional verification productivityby describing a
    發(fā)表于 07-04 11:39 ?17次下載

    FPV58口系列智能渦街流量計(jì)技術(shù)資料

    概述: FPV58□系列智能型渦街流量計(jì),由FPV580、FPV581、FPV582組成。 〖1〗FPV580=
    發(fā)表于 08-26 12:09 ?16次下載

    新思科技升級Verification Continuum平臺繼續(xù)引領(lǐng)技術(shù)

    新思科技近日發(fā)布新版Verification Continuum?平臺,將各種驗(yàn)證工具進(jìn)行新的原生集成,實(shí)現(xiàn)高達(dá)五倍的驗(yàn)證性能。Verification Continuum平臺基于新思科技開發(fā)的高速
    的頭像 發(fā)表于 06-11 08:42 ?4737次閱讀

    分享一些形式驗(yàn)證(Formal Verification)的經(jīng)典視頻

    前段時(shí)間很多朋友在微信群里討論Formal驗(yàn)證的視頻資料問題,今天整理好了,分享給大家。
    的頭像 發(fā)表于 02-11 13:15 ?787次閱讀
    分享一些形式驗(yàn)證(<b class='flag-5'>Formal</b> <b class='flag-5'>Verification</b>)的經(jīng)典視頻

    Formal Verification的基礎(chǔ)知識

    通過上一篇對Formal Verification有了基本的認(rèn)識;本篇將通過一個(gè)簡單的例子,感受一下Formal的“魅力”;目前Formal Tool主流的有Synopsys的VC
    的頭像 發(fā)表于 05-25 17:29 ?2414次閱讀
    <b class='flag-5'>Formal</b> <b class='flag-5'>Verification</b>的基礎(chǔ)知識

    數(shù)字驗(yàn)證中Formal Verification在國內(nèi)的應(yīng)用以及前景如何?

    這種中型規(guī)模的RTL如果用simulation,妥妥的一分鐘能跑十幾個(gè)sanity case,所以性價(jià)比實(shí)在太低。尤其是碰到帶memory的設(shè)計(jì),用formal簡直就是噩夢(不過工具好像可以替換掉memory的邏輯,你也可以dummy掉data payload,但控制邏輯的data path同樣不短)。
    的頭像 發(fā)表于 06-26 16:38 ?1220次閱讀