在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用abstrct model代替real model

rfdqdzdg ? 來源:CSDN ? 2023-08-29 14:17 ? 次閱讀

“空間爆炸”大大增加了formal工具處理的復雜度,在有限的資源內,難以達到收斂。所以采用一些abstraction的手段,是十分有效且必要的。正確的abstraction處理,使用abstrct model代替real model,不會影響目標結果,同時加速證明。

Abstraction vs. Reduction

abstraction不等同于簡單的reduction,如下示例:

43d602fa-4621-11ee-a2ef-92fbcf53809c.png

RTL中,當timer大于1000時,觸發timeout。需要運行1000個cycle才會觸發。

Reduction將閾值設置為5,縮減到5個cycle觸發。

因為原RTL中還有一個heartbeat,可以重置timer,此時reduction不可以實現原RTL的所有場景(如heartbeat是由另一個計數器控制,閾值是100,而timer每次在5個cycle后就報timeout了,已不滿足原有時序關系) Abstraction通過assume重寫了rtl:1. heartbeat拉高,重置timer 2. heartbeat為低,timer非0,則下個cycle timer非0 3. heartbeat為低,timer為0,則下個cycle timer非0 Abstraction的方式可以復現原RTL的所有場景,同時縮短cycle depth.

440af956-4621-11ee-a2ef-92fbcf53809c.png

采用Reduction還是Abstraction,需要case by case分析;有時Redcution也是Abstraction,理解RTL意圖才是關鍵。

Complexity Manager

有些需要abstraction處理的地方是顯而易見的,如較大的counter或者mem;我們也可以通過FPV工具自帶的復雜度分析功能來提取哪些地方是收斂瓶頸,然后針對此處做abstraction處理。

當然并不是所有東西都要盡善盡美,要綜合ROI考量;對于難以full proof的assertion,采用bounded的方式也是合理可取的,后節對bounded proof會補充介紹。

常見的abstraction策略總結如下幾種:

Case Splitting

通過assume區分不同場景的case,單獨運行。例如:assume property (mode == 2’b00); JasperGold也支持task分隔,更方便管理case splitting。

44373e3a-4621-11ee-a2ef-92fbcf53809c.png

Counter Abstraction (Design Reductions)

FPV工具支持自動識別counter,jaspergold中可以通過abstract -counter處理;當然也可以手動處理;

Constant Propagation and blackboxing

對于不關心的功能,可以設置為常量,如.scan_mode(0); 對于不關心的邏輯,可以設置為blackboxing;

Design Size (parameter) Reduction

對于參數化配置的rtl,縮減參數配置;對于較大的mem,過約束地址訪問空間;如下:

4451e168-4621-11ee-a2ef-92fbcf53809c.png

直接Reduction地址空間有一點不“安全”,這改變了原有RTL行為;需要配合simulation仿真加強驗證結果的置信度;或者采用abstraction的方式,FPV工具也提供常見的mem,fifo abstraction model供用戶快速部署;Jaspergold的abstraction model如下:

4467129a-4621-11ee-a2ef-92fbcf53809c.png

Cutpoints and Abstract Models

Cutpoint:切斷rtl中的某個信號,其輸出值不再受原有邏輯錐影響,FPV工具會賦值為任意值驅動后續邏輯。blackboxing的所有輸出端口其實就是每個cutpoint的node.

Cupoint在不同FPV工具設置語法不同,JG中Stopat設置,VC Formal中snip_drive設置

447788c8-4621-11ee-a2ef-92fbcf53809c.png

單獨cutpoint某個信號,不加約束,可能會assertion誤報;一般需要額外assumption處理;如果簡單幾行assumption無法準確描述,需要glue logic或者glue moduel提供abstract model建模描述;

Initial Value Abstractions (IVAs)

FPV工具每次從reset狀態開始,隨著cycle的深入,遍歷狀態空間。如果某些狀態需要較大的cycle depth,那么是否可以從一個中間狀態開始呢?答案是可以的,從某個中間狀態,而不是復位狀態開始,我們稱為“warm" state。Jaspergold可以通過abstrace -init_value約束一個初始值

44980ab2-4621-11ee-a2ef-92fbcf53809c.png

Engine selection

fomal工具內置不同的算法引擎,每個App的適用場景不同,調用的engine不同;對于FPV app,不同類型的assertion,也和不同類型的engine相”友好“。每個engine的具體特性,驗證人員不需要特別了解(有些engine需要配合使用才能發揮最大效果;有些engine同時運行可能沖突;有些engine一次只能處理一個assertion,有些可以并行處理多個),一般使用工具的auto模式,由工具自動編排調度engines即可。

不同FPV tool的Engine selection不同,以JasperGold為例:第一次運行,工具并不知道哪個engine最適合哪個property;而是通過采用多個engine并行處理某一個assertion,如果其中一個engine求解成功,則這些engine會被安排處理下一個未處理的assertion。

相當于多個engine”競爭“; 如果多個engine在限定時間內都沒有求解出來,則會放棄當前assertion,安排處理下一個未處理的assertion。當第二次求解之前的assertion時,engine的求解時間會乘以一個系數,例如之前1min沒有求解出,第二次可能會10min,第三次可能會100min. JG提供ProofGrid,可以圖像化顯示engine調度和進展;JG還提供了Proof Profiling Database,可以記錄上次求解時的高效engien,下次運行優先調度此engien;Proof Cache則可以保留一些中間數據,如果rtl和env改動不大,下次運行可以使用這些中間數據,加速求解;

Property Writing

Formal Verification (二) FPV、APPs[1]在這一篇中講解如何書寫友好的property;本節再補充三點:

1.Cut assertion

如果一個end-to-end的assertion跨越的cycle很長,可以嘗試在中間分隔多個assertion

44b6176e-4621-11ee-a2ef-92fbcf53809c.png

2.livness assertion

對于livness assertion(含有[0:$],eventually等無限周期的),如果可以使用固定周期值,建議使用固定值,切換為safety assertion。

44dc8944-4621-11ee-a2ef-92fbcf53809c.png

livness assertion的求解,工具會在stem后尋找一個loop,當找到這個loop時,就相當于找個一CEX,此assertion被證偽。

engine對于loop的尋找是很艱難的,所以livness assertion一般很難被full proof。

當發現CEX時,也不一定是RTL的問題,可能是缺少fairness constraints. 例如兩個入口port(A,B), 一個出口port(C),C round-robin處理A,B的burst數據;斷言當A port接收數據后,無限期 s_eventually周期后,C port一定把A的數據送出;斷言當B port接收數據后,無限期 s_eventually周期后,C port一定把B的數據送出;此時兩個livness assertion fail。

CEX場景是A一直發送數據,C一直輸出A的數據,B發送的第一筆數據被無限期阻塞。實際情況是A不會無限期連續發送數據,總會停止發送??梢约由蟜airness constraints約束A的最大長度為某一個值。同理B也是。

44f47360-4621-11ee-a2ef-92fbcf53809c.png

1.Symbolic Variables

Symbolic Variables有很多叫法例如Pseudo-constants、Free variables,采用這總方式書寫assertion,不僅減少assertion數量,便于描述assertion,對工具也更友好。如下示例:

genvari;
generatefor(i=0;i
$past(rv_plic.le[i])||$past(intr_src_i[i]),clk_i,!rst_ni)
end

上述通過generate生成多個并行重復的assertion;而使用Symbolic Variables,聲明一個變量src_sel,并加上合理的約束,可以實現多個并行assertion的效果。

logic[$clog2(N_SOURCE)-1:0]src_sel;
`ASSUME_FPV(IsrcRange_M,src_sel>=0&&src_sel
$past(rv_plic.le[src_sel])||$past(intr_src_i[src_sel]),clk_i,!rst_ni)

小結

上述介紹的多種方法,都是為了降低復雜度;需要case by case的分析采用哪一種;還有一些方法屬于更高階的使用,需要tool by tool。如JasperGold提供SST(State-Space Tunneling)功能,通過增加helper assertions加速求解。

FPV for cache

驗證cache采用FPV的手段,是一個典型的場景,會覆蓋上述提到的所有abstraction strategy。

以icache為例:icache大小32 KB,4路組相連,每個cache line大小是32B,一共有256組set;cache line size是32 Bytes,offset為5位;256組,index為8位,剩下的為tag部分,占用35位,其中tag的最高bit為valid flag;tam部分放在tag_mem存儲;data放在data_mem存儲;當發生cache evict時,根據LRU(least recently used)策略替換某一個way的cacheline,lru數據放在lru_mem存儲,下圖未畫出(Cache的基本原理[2]):

451844ac-4621-11ee-a2ef-92fbcf53809c.png

Case Splitting :將assertion歸為不同task分別運行;

Counter Abstraction :執行cache flush時,內部counter會遞增,依次flush 每個cacahe line。對整個空間做flush不現實,需要對counter做abstract;

Constant Propagation and blackboxing :測試function feature時,約束mbist為disabel constant;對不關心的邏輯blackboxing;

Design Size (parameter) Reduction :icache可能支持多bank,不同組相連,不同cache line size的配置,選取一個最小的特征配置;

Cutpoints and Abstract Models :為了減少mem空間,需要過約束取指端口命中的set數量,同時對tag_mem,data_mem,lru_mem做abstraction處理;

Initial Value Abstractions :FPV默認從復位開始,icache復位后自動flush cache,所有每次都是從invalid狀態開始 ”震蕩“ 狀態空間;可以利用IVAs給tag_mem,data_men,lru_mem使用約束賦合理的初始值,加速求解;

Cut assertion :對從取指到icache返回指令的斷言,可以看作一個end to end的斷言,如果cache miss, cycle-depth會增加,FPV求解難度加大,可以嘗試cut assertion;

livness assertion :上述end to end的assertion,一般也是livness的;可能需要添加一些fairness constraints;一般livness assertion都是bounded proof;

Symbolic Variables :對于同一set不可能出現相同tag的斷言,采用Symbolic Variables的方式書寫assertion;





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19833

    瀏覽量

    233959
  • 存儲器
    +關注

    關注

    38

    文章

    7641

    瀏覽量

    166676
  • 計數器
    +關注

    關注

    32

    文章

    2290

    瀏覽量

    96156
  • RTL
    RTL
    +關注

    關注

    1

    文章

    388

    瀏覽量

    60806
  • FPV
    FPV
    +關注

    關注

    0

    文章

    23

    瀏覽量

    4713

原文標題:Formal Verification (三) abstraction strategy、reduce complexity

文章出處:【微信號:數字芯片設計工程師,微信公眾號:數字芯片設計工程師】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    BLE MESH 智能開關開發 情景模式(睡眠、明亮) 藍牙model如何分配,如何配置model

    server 和 client model 再加上一個vendor model(對應阿里的那個vendor model),每個繼電器元素的模型有generic onoff server mo
    發表于 02-12 23:54

    PROTUES仿真no model specified for adc0809,誰有ADC0809的model?

    PROTUES仿真no model specified for adc0809,誰有ADC0809的model?
    發表于 05-09 13:24

    Java開發:Web開發模式——ModelⅠ#Java

    JAVAModel
    學習硬聲知識
    發布于 :2022年11月16日 13:25:45

    Java開發:Web開發模式——ModelⅡ#Java

    JAVAModel
    學習硬聲知識
    發布于 :2022年11月16日 13:26:13

    PSpice如何利用Model Editor建立模擬用的Model

    PSpice 提供Model Editor 建立組件的Model,從組件供貨商那邊拿該組件的Datasheet,透過描點的方式就可以簡單的建立組件的Model,來做電路的模擬。PSpice 如何利用
    發表于 03-31 11:38

    memory model選項

    keil編譯的時候,項目選項里的memory model怎么選擇?
    發表于 12-04 12:45

    PSpice Model Editor建模

    PSpice Model Editor建模參考資料
    發表于 06-21 11:02

    IC設計基礎:說說wire load model

    說起wire load model,IC設計EDA流程工程師就會想到DC的兩種工具模式:線負載模式(wire load mode)和拓撲模式(topographicalmode)。為什么基本所有深亞
    發表于 05-21 18:30

    使用Redis緩存model

    〈譯〉使用REDIS處理RAILS MODEL緩存
    發表于 04-18 17:07

    Model B的幾個PCB版本

    盡管樹莓派最新版的型號Model B+目前有著512 MB的內存和4個USB端口,但這些都不會是一成不變的。除了Model B+外,標準的Model B還有兩個變種的型號。如果你買到的是一個雙面的樹莓派
    發表于 08-08 07:17

    Model3電機是什么

    特斯拉的Model S、Model X都采用感應電機,而Model 3首次采用嵌入式永磁同步電機,今天我們就通過下面的視頻帶大家了解一下Model 3的心臟。 特斯拉加入永磁同步電機陣
    發表于 08-26 09:12

    Cycle Model Studio 9.2版用戶手冊

    Cycle Model Studio提供了一個集成環境,將系統驗證與硬件開發流程并行。Cycle Model Stu dio中的Cycle Model Compiler采用RTL硬件模型,并創建一個
    發表于 08-12 06:26

    Life Model of Florida Scrub Li

    We develop a model for the population dynamics of the Florida scrub lizards. Two parts compose
    發表于 09-30 18:51 ?39次下載

    Model Y車型類似Model3 但續航里程會低于Model3

    馬斯克在連續發布了Model3標準版上市、關閉線下門店等多項重大消息之后,繼續放大招,在Twitter上,馬斯克表示,將于3月14日在洛杉磯發布旗下跨界SUV Model Y純電動汽車根據馬斯克此前
    發表于 03-05 16:17 ?2367次閱讀
    <b class='flag-5'>Model</b> Y車型類似<b class='flag-5'>Model</b>3 但續航里程會低于<b class='flag-5'>Model</b>3

    仿真器與Model的本質區別

    ,對Schematic的加法得到:Critical Part Model、BA Model;對Schematic的減法得到:VerilogA;VerilogAMS;Real Number Mo
    的頭像 發表于 06-08 17:23 ?6971次閱讀
    主站蜘蛛池模板: ts视频在线观看 | 老师在办公室被躁得舒服小说 | 两性色视频 | 你懂的网址免费国产 | 人人爽天天爽夜夜爽qc | 国模私拍大尺度视频在线播放 | 国产成人教育视频在线观看 | 久久国产高清字幕中文 | 欧美97色| 久久夜夜肉肉热热日日 | 天天摸天天看天天做天天爽 | h视频在线观看网站 | 国产福利vr专区精品 | 91网站免费在线观看 | 天堂资源www天堂在线 | 中文字幕一精品亚洲无线一区 | 亚洲国产精品综合久久久 | 清纯唯美亚洲综合欧美色 | 亚洲综合激情另类专区 | 黄视频网站入口 | 男人的天堂一区二区视频在线观看 | aaa在线观看| 午夜香港三级在线观看网 | 特级无码毛片免费视频尤物 | 日本亚洲欧美美色 | 亚洲阿v天堂2018在线观看 | 毛片快播| 成年人看的黄色 | 欧美日韩一区二区三区视频在线观看 | 成人在色线视频在线观看免费大全 | 日本三级香港三级人妇99视 | 四虎国产在线观看 | 免费观看视频在线 | 男人在线网站 | 色妞女女女女女bbbb | 天天鲁天天爽天天视频 | 色女人在线| 亚洲我射 | 久久五月网| 69国产视频| 人人爱人人爽 |