国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

煙臺網(wǎng)站建設(shè) 制作 推廣百度一下1688

煙臺網(wǎng)站建設(shè) 制作 推廣,百度一下1688,小滿crm外貿(mào)系統(tǒng),出國看病網(wǎng)站開發(fā)🔥點擊查看精選 IC 技能樹系列文章🔥 🔥點擊進(jìn)入【芯片設(shè)計驗證】社區(qū),查看更多精彩內(nèi)容🔥 📢?聲明: 🥭 作者主頁:【MangoPapa的CSDN主頁】。?? 本文首發(fā)于CSDN&#…


🔥點擊查看精選 IC 技能樹系列文章🔥
🔥點擊進(jìn)入【芯片設(shè)計驗證】社區(qū),查看更多精彩內(nèi)容🔥


📢?聲明

  • 🥭 作者主頁:【MangoPapa的CSDN主頁】。
  • ?? 本文首發(fā)于CSDN,轉(zhuǎn)載或引用請注明出處【https://mangopapa.blog.csdn.net/article/details/129996971】。
  • ?? 本文目的為 個人學(xué)習(xí)記錄知識分享。因個人能力受限,存在協(xié)議解讀不正確的可能。若您參考本文進(jìn)行產(chǎn)品設(shè)計或進(jìn)行其他事項并造成了不良后果,本人不承擔(dān)相關(guān)法律責(zé)任。
  • ?? 若本文所采用圖片或相關(guān)引用侵犯了您的合法權(quán)益,請聯(lián)系我進(jìn)行刪除。
  • 😄 歡迎大家指出文章錯誤,歡迎同行與我交流 ~
  • 📧 郵箱:mangopapa@yeah.net
  • 💬 直達(dá)博主:loveic_lovelife 。(搜索或點擊掃碼)

文章目錄

  • 前言
  • 1. X 態(tài)是什么?
  • 2. X 態(tài)是由什么引起的?
  • 3. X 態(tài)有什么危害?
  • 4. 如何避免 X 態(tài)的產(chǎn)生?
    • 4.1 if-else/case Vs. assign
  • 5. 兩種 X 態(tài)模型:X-optimism 和 X-pessimism
  • 6. 如何檢測 X 態(tài)傳播?
    • 6.1 Merge Mode 介紹
    • 6.2 xprop 命令使用
      • 注意事項
    • 6.3 xprop 報告查看
  • 7. 什么階段進(jìn)行 xprop 檢測?
  • 8. 如何用 Verdi Trace X?Trace 到什么地方停止?
    • 8.1 Verdi GUI 內(nèi) Trace
      • 8.1.1 手動 Trace X
      • 8.1.2 自動 Trace X
    • 8.2 Verdi 的 traceX 工具
  • 9. X 態(tài)怎么處理?
  • 10. 其他注意事項
  • 11. 參考



前言


?? 簡單記錄下數(shù)字 IC 中的 X 態(tài) (不定態(tài)) 相關(guān)問題,包括 X 態(tài)的概念、出現(xiàn)原因、對待 X 態(tài)的觀念、vcs xprop 仿真、Debug 等等。以下討論涉及的設(shè)計代碼僅限 Verilog 及 SV,不針對 VHDL 進(jìn)行討論。


1. X 態(tài)是什么?


??Verilog 和 SV 定義了四種邏輯狀態(tài):0,1,Z 及 X:

  • 0 為低電平;
  • 1 為高電平;
  • Z 為高阻態(tài),可以理解為電路上的引腳懸空;
  • X 為不定態(tài)、亞穩(wěn)態(tài),可能為 0 可能為 1 也可能為 Z,常見于未復(fù)位的寄存器、鎖存器或 Memory。

??其中,X 只有在仿真時存在,真實電路中不存在。若仿真過程中出現(xiàn)了 X 態(tài),表明該處存在潛在的設(shè)計風(fēng)險,其有可能會掩蓋 RTL Bug。



2. X 態(tài)是由什么引起的?


??RTL 仿真、門仿真及低功耗仿真中均有可能出現(xiàn) X 態(tài)。X 態(tài)出現(xiàn)的原因大致總結(jié)如下:

  • 未初始化。未初始化的四態(tài)變量,比如 logic、wire、reg、integer、time 變量;未初始化的寄存器、鎖存器,在被復(fù)位或有確定的值被鎖定之前,保持 X 態(tài)。
  • 輸入信號未連接。外部輸入信號未設(shè)置初值(尤其 DFT 信號)時為 Z,Z 在模塊內(nèi)部經(jīng)過數(shù)字邏輯后變 X 態(tài)。
  • 信號多驅(qū)或總線爭用。SV 中允許將多個輸入驅(qū)動到同一 net 類型上,多多個驅(qū)動存在沖突時,net 即表現(xiàn)為 X 態(tài)。
  • 操作結(jié)果不定導(dǎo)致的 X 態(tài)。
  • 位選擇或數(shù)組索引超范圍返回 X 態(tài)
  • 邏輯門輸出的 X 態(tài)。SV 自帶原語或用戶自定義原語 (UDP) 支持四態(tài)操作,當(dāng)這些邏輯門輸入為 X 或 Z 時,輸出 X。
  • 后仿 setup 或 hold time 不滿足,存在 timing violation,使用 notifier 將輸出變?yōu)?X 態(tài)。若只看 timing violation 不輸出 X,則添加 vcs 編譯選項 +no_notifier
  • 主動引入的 X 態(tài)。設(shè)計人為引入的 X 態(tài),比如在 case 分支中,對于 don’t care 的默認(rèn)狀態(tài)中賦值為 X 態(tài);驗證平臺引入的 X 態(tài),比如存在四態(tài)變量 wire a, assign a = ‘bx。
  • 寄存器或鎖存器掉電后上電。在低功耗仿真中,若無特別設(shè)置,即便在 0 時刻對寄存器或鎖存器進(jìn)行了初始化,當(dāng)其所在的 Power Domain 掉電后重新上電,其仍然為 X 態(tài)未初始化狀態(tài),需要在 upf 中設(shè)置 reinit。

??若 RTL 仿真沒問題,但門仿出現(xiàn) X 態(tài),可能為以下原因:

  • 信號的輸入輸出方向聲明錯誤
  • 控制信號出現(xiàn) X 態(tài)


3. X 態(tài)有什么危害?


??所謂 X 態(tài)傳播,是指 X 態(tài)作為觸發(fā)/控制條件或邏輯輸入時,引起其他邏輯輸出為 X 態(tài)。不同情況下 X 態(tài)危害情況不同:

  • 若 X 態(tài)僅僅是存在,完全不傳播,其沒什么危害;
  • 若 X 態(tài)出現(xiàn)傳播,且電路中針對該 X 態(tài)傳播做了保護(hù),這種有限的 X 態(tài)傳播也沒有危害;
  • 若 X 態(tài)出現(xiàn)傳播但電路中針沒有針對該 X 態(tài)傳播進(jìn)行保護(hù),那么該 X 態(tài)傳播可能會影響到芯片的正常工作。


4. 如何避免 X 態(tài)的產(chǎn)生?


??確保引起 X 態(tài)的條件不成立即可避免 X 態(tài)產(chǎn)生,簡單列幾條:

  • 使用二態(tài)變量。
  • 設(shè)計上進(jìn)行復(fù)位操作,控制通路寄存器必選帶復(fù)位,數(shù)據(jù)通路寄存器可以不帶復(fù)位。
  • 驗證 TB 中接口輸入信號賦初值。
  • 仿真時利用 initreg initmem 選項對 reg 和 Memory 進(jìn)行初始化。
  • RTL model 中添加針對 X 的 assertion,以及時發(fā)現(xiàn) X 態(tài)并消除。
  • if-elsecase 中使用確定寫法,或使用 assign+表達(dá)式代替if-elsecase。

4.1 if-else/case Vs. assign

??RTL 仿真中,if-else/case 及 assign 對 X 態(tài)有不同的行為,如下:

  • if(x) 會默認(rèn) x=0,走 else 分支,不傳播 X 態(tài)。
  • case(x),若存在 default 分支,則走 default 分支,否則不會匹配到任何分支。
  • assign c = sel ? a : b; sel=x,輸出 X,從而將 X 態(tài)傳播出去。

??也就是說,if-else 和 case 不能傳遞 X 態(tài),無法暴露 X 態(tài)傳播問題,這就導(dǎo)致無法在仿真時去發(fā)現(xiàn) X 態(tài)相關(guān)的 Bug。相比之下,assign + 條件表達(dá)式的方式能夠傳遞 X 態(tài)。此外,if-else/case 為帶有優(yōu)先級的選擇電路,不利于時序和面積,建議使用 assign 代替 if-else 和 case。

??有人有疑問:if-else/case 不傳播 X 態(tài),assign 傳播 X 態(tài),為什么還要用 assign?——我們不希望出現(xiàn) X 態(tài),但我們更不希望由于 RTL 寫法原因而掩蓋 X 態(tài)。使用 assign,能夠及時暴露 X 態(tài)問題,從而避免 X 態(tài)被掩蓋所導(dǎo)致的問題。



5. 兩種 X 態(tài)模型:X-optimism 和 X-pessimism


??在對待 X 態(tài)問題上有兩種模型:

  • X-optimism,樂觀派,其認(rèn)為 X 態(tài)不會被傳播。若檢測到邏輯輸出為 X 態(tài),將 X 轉(zhuǎn)換為 0 或 1。
  • X-pessimism,悲觀派,其認(rèn)為 X 態(tài)會一直被傳播下去。若檢測到邏輯輸入存在 X,即便輸出結(jié)果是確定的,也要輸出 X,從而將 X 態(tài)傳播出去。

??在仿真階段,RTL 仿真對 X 態(tài)過于樂觀,RTL 仿真時往往忽略 X 態(tài)并賦一個確定的值,從而無法檢測到 X 態(tài)傳播所引發(fā)的問題;門仿更接近硬件行為,會暴露出 X 傳播問題。



6. 如何檢測 X 態(tài)傳播?


??從設(shè)計角度,我們希望電路的邏輯輸出都是確定的,以避免非預(yù)期的功能缺陷。從驗證角度,我們不喜歡 X 態(tài),但我們希望能夠發(fā)現(xiàn)并評估電路中所有可能存在的 X 態(tài),尤其是能夠傳播的 X 態(tài)。

??前文提到,RTL 仿真往往對 X 態(tài)過于樂觀,在門仿階段才會暴露出 X 態(tài)傳播問題。相較于 RTL 仿真,門仿的 netlist 易讀性差、仿真速度慢且難以 Debug。鑒于此,vcs 提供了一種 Shift-Left 方案,通過在編譯仿真選項中添加 -xprop 相關(guān)選項即可在 RTL 仿真階段對 X 傳播進(jìn)行檢查。


6.1 Merge Mode 介紹

??vcs xprop 檢查有 3 種模式,按照從樂觀到悲觀的順序,分別為:vmerge -> tmerge -> xmerge。其中:

  • vmerge mode,對待 X 態(tài)最為樂觀,遵守 Verilog 或 VHDL 規(guī)定的 X 態(tài)處理規(guī)則,不存在 X 態(tài)傳播問題。
  • tmerge mode,處于樂觀與悲觀之間,接近實際硬件行為或門仿,X 態(tài)傳播一段路徑后終結(jié)。
  • xmerge mode,對待 X 態(tài)最為悲觀,比門仿還悲觀,X 態(tài)會一直傳播下去。

??不同 Merge Mode 時的 X 態(tài)傳播情況如下表所示:

邏輯代碼邏輯輸出真值表
if-elsealways@*
?if(s)
??r = a;
?else
??r = b;
在這里插入圖片描述
casecase (s)
?1’b0: r = a;
? 1’b1: r = b;
endcase
在這里插入圖片描述
edge sensitivealways@(posedge clk, negedge rst)
? if (! rst)
?? q <= 1’b0;
?else
?? q <= d;
在這里插入圖片描述
latchalways@(*)
? if(g)
?? q <= d;
在這里插入圖片描述

??說到底,-xprop=tmerge/vmerge 是為了擴(kuò)散 X 態(tài)傳播,把不傳播不定態(tài)的情形,強制傳播出去,從而盡早暴露 bug。


6.2 xprop 命令使用

??一般來講,可以在編譯或仿真任一階段指定 -xprop 選項即可開啟 xprop 檢測。-xprop 示例用法如下:

vcs ?xprop[=tmerge|xmerge|xprop_config_file]

。其中,xprop_config_file 用以針對特定 instance 進(jìn)行特定模式的 xprop 監(jiān)測或開關(guān)特定 instance 的 xprop 檢測,其示例用法如下:

tree        {top}
instance {top.A} {xpropOn};
instance {top.B} {xpropOff};
module   {C} {xpropOff};
merge = tmerge;

??使能 xprop 后發(fā)現(xiàn)的 X 態(tài)不一定都是 Bug,或者設(shè)計已經(jīng)針對 xprop 做了保護(hù)。這種情況下,可以采用 -xprop=xprop_config_file 對不同模塊施以不同的 xprop mode。


注意事項

  • -xprop 一般不能跟 +vcs+initreg+0/1/random 同時使用,因為 +vcs+initreg+0/1/random 會把 Verilog 的變量、寄存器及 Memory 初始值設(shè)置為 0 或 1 等非 X 狀態(tài),這樣就測不到初始 X 態(tài)了。
  • 若未指定 -xprop,默認(rèn)為 vmerge,即默認(rèn)不存在 X 態(tài)傳播問題,也不進(jìn)行檢查。
  • 若定義了 -xprop 但未指定具體模式,默認(rèn)為 tmerge,即采用接近真實電路的 X 態(tài)傳播模式并進(jìn)行檢查。

6.3 xprop 報告查看

??vcs 在編譯、仿真兩個階段均提供了相關(guān)手段來檢查相關(guān) instance 的 xprop 開關(guān)情況:

  • 若在編譯階段使能了 xprop,編譯完成之后會生成一個 xprop.log 來報告 if/case 狀態(tài)、always 邊沿觸發(fā)等條件的 xprop 檢查開關(guān)情況。
  • simv 仿真階段添加仿真選項 -report=xprop[+exit] 能生成 xprop_config.report,便于在仿真后對 xprop 檢查情況進(jìn)行確認(rèn)。若采用 -report=xprop+exit,在檢測完 xprop 狀態(tài)情況后后立即終止仿真。


7. 什么階段進(jìn)行 xprop 檢測?


??X 態(tài)傳播不能不做,但也不宜早做。一方面,在驗證初期調(diào) datapath 或 sanity 期間,我們并不想看到太多 X 態(tài)傳播,我們希望對待 X 態(tài)傳播更樂觀一點;另一方面,帶有 xprop 的仿真為 4 態(tài)仿真,毫無疑問,4 態(tài)仿真比不帶 xprop 的 2 態(tài)仿真更慢。

??那么應(yīng)該在什么階段開啟 xprop 檢測呢?以下是推薦的方案:

  • RTL 仿真前期不開啟 xprop,以盡快調(diào)通 sanity/smoke case 及主要 datapath。
  • RTL 仿真后期建議開啟 xprop,提前排除部分 X 態(tài)。

??網(wǎng)表中沒有 always 塊,xprop 對門仿不起作用。門仿的一大作用就是排除 X 態(tài)傳播導(dǎo)致的芯片功能問題,尤其是控制通路上的 X 態(tài)傳播。



8. 如何用 Verdi Trace X?Trace 到什么地方停止?


??我們說的 Trace X 是指追蹤 X 態(tài)產(chǎn)生的源頭。利用 Verdi 能夠自動追蹤組合邏輯、鎖存器、觸發(fā)器等的 X 態(tài)傳播的源頭。Verdi Trace X 有兩種途徑:一種是在 Verdi GUI 內(nèi) Trace,一種是直接利用 Verdi 的 traceX 工具直接 Trace。


8.1 Verdi GUI 內(nèi) Trace

??若 X 態(tài)出現(xiàn)傳播,通常能在波形里找到很多 X 態(tài)信號。多個 X 態(tài)的源頭,此時我們可以選擇其中一個信號進(jìn)行跟蹤。

??假設(shè)在波形中已經(jīng)發(fā)現(xiàn)了 X 態(tài),該如何 Trace X 呢?兩種常用方式:


8.1.1 手動 Trace X

  1. 把出現(xiàn) X 態(tài)的信號 A 拖到 nWave 窗口
  2. nWave 窗口 Cursor 點在 X 態(tài)信號 0/1 -> X 跳變沿的地方
  3. 在源代碼窗口左鍵雙擊該信號 A,追蹤其 Driver
  4. 檢查 A 的 Driver (控制信號、觸發(fā)條件、邏輯輸入等) 是否存在 X 態(tài)
  5. 重復(fù)以上步驟,直到找到 X 態(tài)產(chǎn)生的源頭

8.1.2 自動 Trace X

  1. 把出現(xiàn) X 態(tài)信號 A 拖到 nWave 窗口
  2. nWave 窗口Cursor 點在 X 態(tài)信號 0/1 -> X 跳變沿的地方
  3. nWave 窗口右鍵單擊該信號的波形,或源代碼窗口右鍵單擊該信號
  4. 選擇 Trace X,彈出 Trace X Settings 窗口
  5. 窗口勾選所需的 Trace X 相關(guān)設(shè)置。默認(rèn) View Options 為 Flow View,此處我們也可以改為 nWave View
  6. 左鍵單擊 Trace,開始 Trace X,Trace 結(jié)果一方面顯示在 Flow/nWave 窗口內(nèi),一方面顯示在 tTraceXRst 窗口內(nèi)(Note 提示 X 的大致出現(xiàn)原因)

在這里插入圖片描述

8.2 Verdi 的 traceX 工具

??除了在 GUI 內(nèi)進(jìn)行 X 態(tài)追蹤,Verdi 還提供了 traceX 工具來追蹤 X 態(tài)。traceX 用法如下:

  1. 設(shè)置變量打開 traceX 工具,setenv VERDI_TRACEX_ENABLE
  2. 采用以下命令追蹤 X 態(tài)
    • 未提供 X 態(tài)信號列表:traceX -lca -ssf xxx.fsdb
    • 提供了 X 態(tài)信號列表:traceX -lca -ssf xxx.fsdb -signal_file signal.list
    • 若需要手段加載 database,還需要添加選項 -dbdir simv.daidir
  3. 查看 trx_report.txt 查看 Trace 結(jié)果


9. X 態(tài)怎么處理?


  • 如果 X 態(tài)沒有傳播,無需處理。
  • 如果 X 態(tài)發(fā)生傳播,但后續(xù)有 X 態(tài)保護(hù)電路,無需處理。
  • 如果 X 態(tài)發(fā)生傳播,且后續(xù)沒有 X 態(tài)保護(hù)電路,需要從根源上消除 X 態(tài)。


10. 其他注意事項

  • assertion 中應(yīng)規(guī)避 X -> 0/1 形成的跳變沿


11. 參考

  1. I’m Still In Love with My X
  2. X-Propagation : An Alternative to Gate Level Simulation
  3. Xprop User Guide
  4. 關(guān)于X-Propagation問題 – Wenhui’s Rotten Pen
  5. ?門級仿真中的X傳播現(xiàn)象 - 知乎 (zhihu.com)
  6. X態(tài)詳解與X態(tài)傳播VCS X-Propagation
  7. vcs xprop 仿真的一些理解
  8. SystemVerilog and Verilog X Optimism
  9. SystemVerilog and Verilog X Optimism – What About X Pessimism?
  10. Hardware-like X Propagation with Xprop - Verilog Pro
  11. 再見xprop
  12. Verilog RTL優(yōu)化策略(一):推薦使用assign語法替代if-else和case語法
  13. 提高與 X 態(tài)相關(guān)的仿真和調(diào)試的效率
  14. 學(xué)習(xí)一下simulation 仿真中的x態(tài)仿真
  15. Catching X-propagation related issues at RTL
  16. 在Assertion中規(guī)避信號從X態(tài)到0形成的negedge


— END —


🔥 精選往期 IC 技能樹相關(guān)博文,請查看【 數(shù)字 IC 技能樹】專欄🔥

?? 返回頂部 ??

http://m.aloenet.com.cn/news/1383.html

相關(guān)文章:

  • 怎么建設(shè)網(wǎng)站模板上傳站長交流平臺
  • 軟件推廣網(wǎng)站周口seo
  • 新建的wordpress沒有注冊站外seo是什么
  • wordpress產(chǎn)品傭金杭州百度整站優(yōu)化服務(wù)
  • h5 做的網(wǎng)站 價格怎么樣在百度上免費推廣
  • 北京網(wǎng)站制作官網(wǎng)分銷渠道
  • 網(wǎng)站怎么做移動端適配今天最新消息
  • tv做后綴的動漫網(wǎng)站百度廣告點擊軟件
  • 河南省住房和城鄉(xiāng)建設(shè)廳網(wǎng)站主頁鄭州最好的建站公司
  • 宣城市政建設(shè)集團(tuán)有限公司網(wǎng)站鄭州seo外包平臺
  • 銷售網(wǎng)站建設(shè)公司網(wǎng)絡(luò)營銷是以什么為基礎(chǔ)
  • 做的最成功的網(wǎng)站百度知道官網(wǎng)登錄入口
  • 網(wǎng)站宣傳方法有哪些營銷方法有哪些方式
  • 北京html5網(wǎng)站建設(shè)百度在線問答
  • 內(nèi)江住房和城鄉(xiāng)建設(shè)廳網(wǎng)站廣告軟文200字
  • 北京海淀區(qū)網(wǎng)站建設(shè)全網(wǎng)營銷整合營銷
  • 阿里云 建設(shè)網(wǎng)站佛山網(wǎng)站建設(shè)排名
  • 漂亮大氣的裝潢室內(nèi)設(shè)計網(wǎng)站模板 單頁式html5網(wǎng)頁模板包國內(nèi)搜索引擎排行榜
  • 方圓網(wǎng)站建設(shè)國內(nèi)seo公司排名
  • 百度自助網(wǎng)站建設(shè)南寧網(wǎng)站快速排名提升
  • 上海設(shè)計網(wǎng)站baidu百度
  • 梅林網(wǎng)站建設(shè)網(wǎng)站診斷工具
  • 做兼職的網(wǎng)站是不是真的嗎重慶整站seo
  • 西安做網(wǎng)站比較好的公司臺州seo排名外包
  • 怎樣做單頁銷售網(wǎng)站軟文范例大全100字
  • 站酷網(wǎng)站源碼永久免費域名注冊
  • 哪個網(wǎng)站可以做試卷上海牛巨微seo關(guān)鍵詞優(yōu)化
  • 番禺做網(wǎng)站哪家強北京seo公司網(wǎng)站
  • 新聞網(wǎng)站建設(shè)合同谷歌優(yōu)化師
  • 最新獲取網(wǎng)站訪客qq接口成人職業(yè)技術(shù)培訓(xùn)學(xué)校