Verilog和SystemVerilog定義了4種描述信號(hào)狀態(tài): 1, 0, X, and Z。1和0無(wú)疑是真實(shí)存在的信號(hào)狀態(tài). 而Z用來表示高阻態(tài),X用來表示不確定的狀態(tài)。
X信號(hào)可以有意或無(wú)意地被創(chuàng)建,最常見的X信號(hào)存在于未被初始化的memory register,這里X用來表示這些memory在reset之前的的未知狀態(tài) 。其他一些可以產(chǎn)生X的場(chǎng)景包括了不同的driver驅(qū)動(dòng)同一塊邏輯到不同的邏輯值,或者是在low power中的關(guān)斷信號(hào),又或者是一些超過選擇范圍的多比特信號(hào)。 有些設(shè)計(jì)者會(huì)對(duì)design中那些dont care的信號(hào)設(shè)為X,讓綜合工具在做優(yōu)化的時(shí)候來隨機(jī)選擇0或者1進(jìn)行優(yōu)化。也有些設(shè)計(jì)者為了debug的目的在設(shè)計(jì)中對(duì)那些不會(huì)用到的邏輯值設(shè)X,這樣在做仿真的時(shí)候如果使用到這些邏輯,說明電路有問題,而仿真工具產(chǎn)生的X可以檢查到這些邏輯。有意地設(shè)置一些X信號(hào)是比較有爭(zhēng)議的做法。在做lint檢查的時(shí)候也會(huì)被標(biāo)識(shí)出來。但是有些X狀態(tài)由于仿真器識(shí)別的原因(verilog X optimism)會(huì)產(chǎn)生錯(cuò)誤的仿真結(jié)果。這就屬于RTl的bug了。
第一個(gè)verilog X optimism的例子來自if...else語(yǔ)句:
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),那么這個(gè)條件就會(huì)被當(dāng)作false處理,在這里只有else語(yǔ)句會(huì)被執(zhí)行。
在實(shí)際設(shè)計(jì)中有一種情況可能會(huì)產(chǎn)生這種問題:cond信號(hào)來自于memory。比如漢明碼SECDED(single error correction double error detection)解碼器,其檢測(cè)的序列是儲(chǔ)存漢明碼的寄存器,這段序列是否錯(cuò)誤的cond是由這些寄存器經(jīng)過一段組合邏輯產(chǎn)生,當(dāng)cond為TRUE時(shí)輸出錯(cuò)誤信號(hào)error=1。在reset之前這些寄存器都是X狀態(tài),原本錯(cuò)誤信號(hào)應(yīng)該是error=1,但是在仿真中由于verilog X optimism這種特性,寄存器的X經(jīng)過組合邏輯傳播到cond,導(dǎo)致最后將cond=X判斷為FALSE,輸出錯(cuò)誤信號(hào)為0,這就與實(shí)際電路行為相違背了。
Verilog X optimism的另外一個(gè)例子是case語(yǔ)句:
1 2 3 4 5 6 |
always_ff@(posedge clk)begin case(cond) 1'b0 : c = a; 1'b1 : c = b; endcase end |
在case語(yǔ)句中如果cond為X的話,c將會(huì)保留原值。這里原本是描述了一個(gè)mux的行為,但由于X optimism的原因,仿真行為與RTL描述不一致。
此外,Verilog X optimism還會(huì)影響到0/1->X/Z的處理。下面的這些狀態(tài)轉(zhuǎn)移都會(huì)被視為posedge:
0->1, 0->X, 0->Z, X->1, Z->1
0->X or X->1實(shí)際上不一定是posedge,但在仿真中,他們都會(huì)被當(dāng)作posedge處理。
-
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121162 -
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110393
原文標(biāo)題:verilog——X optimism
文章出處:【微信號(hào):ic_frontend,微信公眾號(hào):數(shù)字前端ic芯片設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論