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

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

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

Verilog和SystemVerilog定義了4種描述信號狀態(tài)

數(shù)字前端ic芯片設(shè)計 ? 來源:未知 ? 作者:李倩 ? 2018-03-29 15:40 ? 次閱讀

Verilog和SystemVerilog定義了4種描述信號狀態(tài): 1, 0, X, and Z。1和0無疑是真實存在的信號狀態(tài). 而Z用來表示高阻態(tài),X用來表示不確定的狀態(tài)。

X信號可以有意或無意地被創(chuàng)建,最常見的X信號存在于未被初始化的memory register,這里X用來表示這些memory在reset之前的的未知狀態(tài) 。其他一些可以產(chǎn)生X的場景包括了不同的driver驅(qū)動同一塊邏輯到不同的邏輯值,或者是在low power中的關(guān)斷信號,又或者是一些超過選擇范圍的多比特信號。 有些設(shè)計者會對design中那些dont care的信號設(shè)為X,讓綜合工具在做優(yōu)化的時候來隨機(jī)選擇0或者1進(jìn)行優(yōu)化。也有些設(shè)計者為了debug的目的在設(shè)計中對那些不會用到的邏輯值設(shè)X,這樣在做仿真的時候如果使用到這些邏輯,說明電路有問題,而仿真工具產(chǎn)生的X可以檢查到這些邏輯。有意地設(shè)置一些X信號是比較有爭議的做法。在做lint檢查的時候也會被標(biāo)識出來。但是有些X狀態(tài)由于仿真器識別的原因(verilog X optimism)會產(chǎn)生錯誤的仿真結(jié)果。這就屬于RTl的bug了。

第一個verilog X optimism的例子來自if...else語句:

1
2
3
4
5
6
always_ff@(posedge clk)begin
if(cond)
c <= a;
else
c <= b;
end

Verilog LRM 指出如果if...else的條件是X狀態(tài),那么這個條件就會被當(dāng)作false處理,在這里只有else語句會被執(zhí)行。

在實際設(shè)計中有一種情況可能會產(chǎn)生這種問題:cond信號來自于memory。比如漢明碼SECDED(single error correction double error detection)解碼器,其檢測的序列是儲存漢明碼的寄存器,這段序列是否錯誤的cond是由這些寄存器經(jīng)過一段組合邏輯產(chǎn)生,當(dāng)cond為TRUE時輸出錯誤信號error=1。在reset之前這些寄存器都是X狀態(tài),原本錯誤信號應(yīng)該是error=1,但是在仿真中由于verilog X optimism這種特性,寄存器的X經(jīng)過組合邏輯傳播到cond,導(dǎo)致最后將cond=X判斷為FALSE,輸出錯誤信號為0,這就與實際電路行為相違背了。

Verilog X optimism的另外一個例子是case語句:

1
2
3
4
5
6
always_ff@(posedge clk)begin
case(cond)
1'b0 : c = a;
1'b1 : c = b;
endcase
end

在case語句中如果cond為X的話,c將會保留原值。這里原本是描述了一個mux的行為,但由于X optimism的原因,仿真行為與RTL描述不一致。

此外,Verilog X optimism還會影響到0/1->X/Z的處理。下面的這些狀態(tài)轉(zhuǎn)移都會被視為posedge:

0->1, 0->X, 0->Z, X->1, Z->1

0->X or X->1實際上不一定是posedge,但在仿真中,他們都會被當(dāng)作posedge處理。

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

    關(guān)注

    31

    文章

    5271

    瀏覽量

    119654
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1335

    瀏覽量

    109860

原文標(biāo)題:verilog——X optimism

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

收藏 人收藏

    評論

    相關(guān)推薦

    使用Verilog/SystemVerilog硬件描述語言練習(xí)數(shù)字硬件設(shè)計

    在實例化模塊時,使用Verilog時有兩常用的方式來進(jìn)行模塊端口的信號連接:按端口順序以及按端口名稱連接端口。
    的頭像 發(fā)表于 09-08 09:04 ?1518次閱讀

    Verilog/SystemVerilog快速實現(xiàn)一個加法樹

    電路描述的差異考慮下下面兩電路的差異:sum=data_0+data_1+data_2+data_3其綜合電路為:sum=(data_0+data_1)+(data_2+data_3)其綜合
    發(fā)表于 08-01 14:29

    SystemVerilog 3.1a語言參考手冊

    本參考手冊詳細(xì)描述Accellera為使用Verilog硬件描述語言在更高的抽象層次上進(jìn)行系統(tǒng)的建模和驗證所作的擴(kuò)展。這些擴(kuò)展將Verilog
    發(fā)表于 07-22 12:14 ?187次下載

    基于Verilog的順序狀態(tài)邏輯FSM的設(shè)計與仿真

    基于Verilog的順序狀態(tài)邏輯FSM的設(shè)計與仿真  硬件描述語言Verilog為數(shù)字系統(tǒng)設(shè)計人員提供
    發(fā)表于 02-04 09:32 ?1837次閱讀
    基于<b class='flag-5'>Verilog</b>的順序<b class='flag-5'>狀態(tài)</b>邏輯FSM的設(shè)計與仿真

    SystemC 和SystemVerilog的比較

    就 SystemC 和 SystemVerilog 這兩語言而言, SystemC 是C++在硬件支持方面的擴(kuò)展,而 SystemVerilog 則繼承
    發(fā)表于 08-16 10:52 ?5334次閱讀

    Verilog HDL代碼描述狀態(tài)機(jī)綜合的研究

    有許多可綜合狀態(tài)機(jī)的Verilog代碼描述風(fēng)格,不同代碼描述風(fēng)格經(jīng)綜合后得到電路的物理實現(xiàn)在速度和面積上有很大差別。優(yōu)秀的代碼描述應(yīng)當(dāng)易于修
    發(fā)表于 12-24 00:52 ?30次下載
    <b class='flag-5'>Verilog</b> HDL代碼<b class='flag-5'>描述</b>對<b class='flag-5'>狀態(tài)</b>機(jī)綜合的研究

    基于Verilog硬件描述語言的IEEE標(biāo)準(zhǔn)硬件描述語言資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是基于Verilog硬件描述語言的IEEE標(biāo)準(zhǔn)硬件描述語言資料合集免費(fèi)下載:1995、2001、2005;SystemVerilog標(biāo)準(zhǔn):2005、2009
    發(fā)表于 06-18 08:00 ?10次下載

    System Verilogverilog的對比

    SystemVerilog語言簡介 SystemVerilog是一硬件描述和驗證語言(HDVL),它基于IEEE1364-2001 Verilog
    的頭像 發(fā)表于 09-28 17:12 ?3378次閱讀

    SystemVerilog語言介紹匯總

    作者:limanjihe ?https://blog.csdn.net/limanjihe/article/details/83005713 SystemVerilog是一硬件描述和驗證語言
    的頭像 發(fā)表于 10-11 10:35 ?2319次閱讀

    System Verilogverilog的概念有何不同

    SystemVerilog是一 硬件描述和驗證語言 (HDVL),它 基于IEEE1364-2001 Verilog硬件描述語言(HDL)
    的頭像 發(fā)表于 10-19 10:58 ?4318次閱讀

    使用Verilog/SystemVerilog硬件描述語言練習(xí)數(shù)字硬件設(shè)計

    HDLBits 是一組小型電路設(shè)計習(xí)題集,使用 Verilog/SystemVerilog 硬件描述語言 (HDL) 練習(xí)數(shù)字硬件設(shè)計~

    FPGA學(xué)習(xí)-SystemVerilog語言簡介

    SystemVerilog是一硬件描述和驗證語言(HDVL),它基于IEEE1364-2001 Verilog硬件描述語言(HDL),并對
    的頭像 發(fā)表于 12-08 10:35 ?2003次閱讀

    Verilog PLI到SystemVerilog DPI的演變過程

    寫過Verilogsystemverilog的人肯定都用過系統(tǒng)自定義的函數(shù)$display,這是預(yù)定好的,可以直接調(diào)用的功能。
    的頭像 發(fā)表于 05-16 09:27 ?826次閱讀
    從<b class='flag-5'>Verilog</b> PLI到<b class='flag-5'>SystemVerilog</b> DPI的演變過程

    verilog/systemverilog中隱藏的初始化說明

    VerilogSystemVerilog中經(jīng)常需要在使用變量或者線網(wǎng)之前,期望變量和線網(wǎng)有對應(yīng)的初始值
    的頭像 發(fā)表于 08-25 09:47 ?956次閱讀
    <b class='flag-5'>verilog</b>/<b class='flag-5'>systemverilog</b>中隱藏的初始化說明

    SystemVerilog相比于Verilog的優(yōu)勢

    我們再從對可綜合代碼的支持角度看看SystemVerilog相比于Verilog的優(yōu)勢。針對硬件設(shè)計,SystemVerilog引入了三進(jìn)程always_ff,always_comb
    的頭像 發(fā)表于 10-26 10:05 ?818次閱讀
    <b class='flag-5'>SystemVerilog</b>相比于<b class='flag-5'>Verilog</b>的優(yōu)勢