精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

RTL仿真中X態行為的傳播—從xprop說起

冬至子 ? 來源:芯時代青年 ? 作者:尼德蘭的喵 ? 2023-12-04 16:20 ? 次閱讀

在使用VCS進行仿真時,工程師們常常會面對一個極為重要且充滿挑戰的問題——X態傳播行為。X態信號代表了未知或不確定的邏輯值(或者高阻Z態),可能會在設計中引入意想不到的問題,因此如何處理X態成為了芯片設計與仿真中的一個關鍵議題。

VCS提供了仿真選項-xprop=vmerge/tmerge/xmerge來處理和擴散X態傳播問題。本文將深入探討仿真中的X態傳播行為,著重于不同仿真選項對X態傳播的影響,以及應對X態隱匿和擴散的一些方法。

對于-xprop,官方給出的解釋是:

Verilog和VHDL常用于數字設計建模。設計人員使用RTL構造描述硬件行為。然而,某些RTL仿真語義不足以準確地為硬件行為建模。因此,相比實際硬件行為,仿真結果要么太過樂觀,要么太過悲觀。

因為這些語義限制,Verilog和VHDL仿真器會忽略掉控制信號上的X不定態,在輸出上會分配一個固定的數值。這樣造成的結果就是,由于缺少X的傳播,RTL仿真器往往無法檢測到和X態相關的設計問題。然而,同樣的設計問題可以在門級仿真中檢測出來,因此許多時候必須運行大量的門級仿真,只是為了調試X相關問題。現在VCS在RTL階段提供了的全新X傳播(X-propagation)支持,使用該技術,工程師可以節省大量用于調試RTL和門級仿真的X建模的差異上的時間和精力。

進一步查詢可以明確,不加入-xprop選項時默認的仿真行為是vmerge。從X態傳播的嚴重程度來看,xmerge>tmerge>vmerge,三個選項可以等價理解為悲觀預期>合理預期>樂觀預期。那么到底是需要X態傳播嚴重些呢還是樂觀些呢?單純從驗證的角度,通常我們是希望X態盡可能的傳播以便發現更多的隱藏問題;但是如果過于悲觀的行為預期又會和實際電路行為有所出入。因此根據個人的經驗,數據和運算通路的模塊應該能夠通過xmege測試,而控制通路的模塊至少通過tmerge測試。

好了言歸正傳,我們來探究下不同-xprop選項對仿真結果的影響,主要對三種常用語句繼續探究:assign/case/if-else,那么先上個省流版:

1.jpg

好了接下來咱們來展開聊聊,就從assign說起吧。

assign

assign是對xprop選項最不敏感的語法,無論是在哪種xprop配置反應都是一樣的(如有遺漏請不吝賜教)。對于邏輯運算,assign遵循合理X態規則: 如果能確定數值,則傳播確定值,否則傳播X態 。具體的規則如下:

x & 1 = x
x | 1 = 1
x & 0 = 0
x | 0 = x
x ^ 0 = x
x ^ 1 = x

參考如下代碼和波形:

//test0
logic t0_sel0, sel1;
initial begin
    t0_sel0 = 1'b0;
    `DELAY(20, clk);
    t0_sel0 = 1'bx;
end


wire t0_xend0 = t0_sel0 & 1'b1;
wire t0_xend1 = t0_sel0 | 1'b1;
wire t0_xend2 = t0_sel0 & 1'b0;
wire t0_xend3 = t0_sel0 | 1'b0;
wire t0_xend4 = t0_sel0 ^ 1'b1;
wire t0_xend5 = t0_sel0 ^ 1'b0;

-xprop=vmerge/tmerge/xmerge波形均一致:

圖片

但是呢,有一個assign語法不太合理(僅僅從RTL角度而不是仿真角度),會呈現X態:

wire t0_xend6 = (t0_sel0 == t0_sel0)

而對于===則會反饋為1,這個也算是很”著名“的==和===的區別,感興趣的可以自行查閱:

圖片

assign對于選擇邏輯,配置為vmerge和tmerge遵循的規則仍然是 如果能確定數值,則傳播確定值,否則傳播X態 ,比如下面這個代碼:

wire t2_en2 = t0_sel0 ? t2_data0 : t2_data1;

vmerge和tmerge的波形如下:

圖片

而xmerge的波形如下:

圖片

不過需要注意的是在xmerge配置下,如果X態出現在數據內那就不無腦X而是合理X了:

wire t2_en3 = t2_data0 ? t0_sel0 : t2_data1;

圖片

好的關于assign的X態傳播行為就說這么多吧。

case

對于case語句當判斷語句中出現X態時,會是什么行為呢?來看下面這段代碼:

always @* begin
    case(t0_sel0) 
        0 : t2_en1 = t2_data0;
        1 : t2_en1 = t2_data1;
        default: t2_en1 = t2_data0;
    endcase
end

vmerge仿真結果:

圖片

tmerge仿真結果:

圖片

xmerge仿真結果:

圖片

區別很明顯了,那我們總結一下規律,case(sel)選擇a or b:

1.jpg

通過表來看,個人認為tmerge是最為合理的策略。而對于X態在數據中的情況,無論什么配置case都是如實的將X態傳播出來,比如這個代碼:

always @* begin
    if(t2_data0)begin
        t2_en4 = t0_sel0;
    end
    else begin
        t2_en4 = t2_data1;
    end
end

哪怕xmerge的仿真結果也是這樣的:

圖片

所以大家也看出來了,X態傳播中我們真正需要擔心的是條件中的X態,數據里的X態一般都能如實的反饋出來。

if-else

直接上代碼:

always @* begin
    if(t0_sel0)begin
        t2_en0 = t2_data0;
    end
    else begin
        t2_en0 = t2_data1;
    end
end

vmerge仿真結果:

圖片

tmerge仿真結果:

圖片

xmerge仿真結果:

圖片

雖然vmerge下都沒有傳播X態,但是顯然行為和case時候又不一樣了。那么總結一下if(sel) a else b的選擇語句結果:

1.jpg

可以發現sel有X態時if-else語句中vmerge選擇的是else分支,而case是選擇"不變"策略;tmerge和xmerge的結果則是和case語句相同的。

當然了對于X態在數據內,無論什么配置if-else語句也是如實的將X態反饋出來:

always @* begin
    if(t2_data0)begin
        t2_en5 = t0_sel0;
    end
    else begin
        t2_en5 = t2_data1;
    end
end

圖片

好的,做了這么多實驗,最后還是匯總剛剛的那張表,對于條件有X態的場景,三種語法的規則如下:

1.jpg

對于數據有X態的場景,三種語法均會如實合理的傳播X態。本篇內容至此,下次來討論下如何快速高效的反饋和定位X態傳播問題。

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

    關注

    14

    文章

    1016

    瀏覽量

    83649
  • VHDL語言
    +關注

    關注

    1

    文章

    113

    瀏覽量

    17988
  • RTL
    RTL
    +關注

    關注

    1

    文章

    385

    瀏覽量

    59710
  • VCS
    VCS
    +關注

    關注

    0

    文章

    78

    瀏覽量

    9590
收藏 人收藏

    評論

    相關推薦

    基于樹莓派5的RTL仿真體驗

    《基于樹莓派5的RTL仿真體驗》 對于FPGA或者RTL愛好者來講,樹莓派5開發板可以運行RTL仿真仿
    發表于 04-30 17:35

    LM2903B仿真中,為什么運放Vcc電壓為0的時候,同相輸入端的電壓的電壓是負值?

    請問一下,下面的仿真中,為什么運放的Vcc電壓為0的時候,同相輸入端的電壓的電壓是負值? 并且在仿真中,LM2903B的供電電壓沒有時,比較器的輸出是呈現高阻還是低阻?實際當中,
    發表于 07-30 08:22

    時序仿真中怎么查看內部信號的變化

    quartus中調用modelsim進行gate level仿真,但是在sim窗口中的信號變得很怪,不能像rtl仿真中一樣往wave窗口中加信號
    發表于 08-27 16:14

    RTL仿真與門級仿真

    調用了modelsim進行門級仿真,發現有毛刺,后來才知道有RTL仿真,運行后波形很好。想問下如何消除門級仿真中出現的毛刺?通過時序約束可以嗎?上圖為
    發表于 08-08 22:57

    新手求助UPF低功耗設計能否在RTL仿真中實現呢?

    RTL設計完畢之后,如何來驗證設計的正確性?UPF低功耗設計能否在RTL仿真中實現呢?
    發表于 06-18 08:21

    關于modelsim后仿真鎖存器出現不定的問題

    未在延時鏈上傳遞時,鎖存結果是確定的。但是信號在演示鏈上傳播時,鎖存結果卻出現了不定。有的時候寫其他的程序時,用D觸發器鎖存組合邏輯的結果,在時序仿真中就會有不定,這該怎么解決?
    發表于 09-26 20:41

    FRED在背光板仿真中的應用

    FRED在背光板仿真中的應用
    發表于 12-22 16:02 ?34次下載
    FRED在背光板<b class='flag-5'>仿真中</b>的應用

    PSpice教程:PSpice仿真中收斂問題的研究

    PSpice教程:PSpice仿真中收斂問題的研究
    發表于 04-07 15:33 ?0次下載

    三菱PLC模擬仿真中文軟件

    三菱PLC模擬仿真中文軟件。
    發表于 01-14 16:46 ?60次下載

    X如何通過RTL級和門級仿真模型中的邏輯進行傳播呢?

    在Verilog中,IC設計工程師使用RTL構造和描述硬件行為。但是RTL代碼中的一些語義,并不能夠準確地為硬件行為建模。
    的頭像 發表于 04-20 09:12 ?1960次閱讀

    IC設計:接口X隔離設計

    雖然真實芯片中,寄存器初始狀態值只會為1或者為0。但是在RTL仿真過程中X傳播經常會給咱們造成很多麻煩,例如部分信號期望為0,但是
    發表于 09-20 10:47 ?644次閱讀
    IC設計:接口<b class='flag-5'>X</b><b class='flag-5'>態</b>隔離設計

    借助GPT4理解仿真中競爭處理的方法

    上周微信群里的一個小伙伴提到的一個關于仿真中不達預期的一個問題,其中牽涉到關于仿真中信號競爭等問題。這個問題之前算是不求甚解。
    的頭像 發表于 11-25 14:23 ?564次閱讀
    借助GPT4理解<b class='flag-5'>仿真中</b>競爭處理的方法

    X傳播在低功耗驗證中的作用

    隨著科技的發展和智能化設備的普及,我們對于高效能、低功耗的半導體設備需求愈加強烈,對低功耗仿真的需求成指數級增長。X傳播分析是低功耗仿真
    的頭像 發表于 01-24 09:34 ?699次閱讀
    <b class='flag-5'>X</b><b class='flag-5'>態</b><b class='flag-5'>傳播</b>在低功耗驗證中的作用

    MATLAB電路仿真中能講電流匯總的元件

    在MATLAB電路仿真中,可以使用許多元件來匯總電流。以下是一些常見的元件和它們在電路中的作用: 電阻(Resistor):電阻是電路中最基本的元件之一,用于限制電流的流動。在MATLAB電路仿真中
    的頭像 發表于 04-21 09:23 ?2747次閱讀

    為什么調試X值那么困難?

    能夠預示設計或驗證環境邏輯仿真中邏輯信號的不確定性。讓事情變得更加復雜的是,在RTL和Gate仿真中X的不確定性是各有不同。默認情況下,RTL
    的頭像 發表于 08-12 10:23 ?413次閱讀
    為什么調試<b class='flag-5'>X</b>值那么困難?