在Verilog中,IC設(shè)計(jì)工程師使用RTL構(gòu)造和描述硬件行為。但是RTL代碼中的一些語(yǔ)義,并不能夠準(zhǔn)確地為硬件行為建模。Verilog中定義了4種不同的邏輯值:1、0、X和Z,1和0是真實(shí)存在的邏輯電平,Z表示高阻態(tài),X表示未知態(tài)。
X態(tài)的存在使得仿真結(jié)果要么太過(guò)于樂(lè)觀,要么太過(guò)于悲觀。因此X態(tài)如何通過(guò)RTL級(jí)和門級(jí)仿真模型中的邏輯進(jìn)行傳播的,是需要特別關(guān)注的。為此,還產(chǎn)生了兩種觀念,X-optimism和X-pessimism。前者將X值轉(zhuǎn)換為0或1,后者將X值一直傳播出去。
X態(tài)產(chǎn)生的原因主要分為以下幾種情況:
四值變量、寄存器和鎖存器未初始化
模塊輸入端口未連接
總線爭(zhēng)用
超出范圍的位選擇和數(shù)組索引
setup/holdtiming violation
testbench中注入X態(tài)
VCS對(duì)于RTL仿真提供了支持X-Propagation的選項(xiàng),因?yàn)镽TL仿真偏向于樂(lè)觀,導(dǎo)致一些X態(tài)傳播的bug,無(wú)法在正常的RTL仿真階段發(fā)現(xiàn)。但是在Gate-level仿真時(shí)會(huì)暴露出來(lái),因?yàn)镚ate-level仿真也更接近實(shí)際硬件行為。
我們知道越早的發(fā)現(xiàn)bug,所消耗的成本也越低的,故VCS的X-Propagation功能可以更接近Gate-level的X態(tài)傳播行為,是一種在后仿之前debug的低成本仿真策略。
通常使用帶xprop的仿真選項(xiàng)為:
vcs -xprop[=tmerge|xmerge|xprop_config_file]
[-xprop=flowctrl]
[-xprop=nestLimit=
other_vcs_options
這里就不深入介紹各個(gè)選項(xiàng)了,而是介紹三種merge mode:
vmerge mode: 就是Verilog協(xié)議規(guī)定的X態(tài)處理行為;
tmerge mode: 更接近Gate-level仿真,也就是實(shí)際硬件行為;
xmerge mode: 相比tmerge mode,對(duì)于X態(tài)的處理更悲觀;
下面舉幾個(gè)實(shí)例來(lái)看看這三種mode的具體區(qū)別
if語(yǔ)句

在vmerge模式下,使用標(biāo)準(zhǔn)的HDL模擬語(yǔ)義。當(dāng)控制信號(hào)s未知時(shí),輸出信號(hào)r總是被賦給else語(yǔ)句的值。此時(shí)r的值與信號(hào)b相同。
在tmerge模式下,當(dāng)控制信號(hào)s未知時(shí),如果輸入信號(hào)a和b 同,則r的值與a(或b)相同。如果a和b不相同,則r的值為X。
在xmerge模式下,當(dāng)控制信號(hào)s未知時(shí),輸出信號(hào)r的值始終為X。
case語(yǔ)句
在vmerge模式中,使用標(biāo)準(zhǔn)的HDL模擬語(yǔ)義。當(dāng)控制信號(hào)s未知時(shí),輸出信號(hào)r的值與執(zhí)行case語(yǔ)句之前保持一致。
在tmerge模式中,當(dāng)控制信號(hào)s未知時(shí),如果a和b相同,r的合并和最終值與a和b 相同。如果a和b不相同,r的合并和最終值為X。
在xmerge模式下,當(dāng)控制信號(hào)s未知時(shí),輸出信號(hào)r的值始終為X。
邊沿敏感表達(dá)式
在標(biāo)準(zhǔn)的 Verilog 中,對(duì)于時(shí)鐘信號(hào)中以下值的變化會(huì)觸發(fā)上升沿轉(zhuǎn)換:
如果X被認(rèn)為是0或1值,那么在 0 -> X 轉(zhuǎn)換中,X可能表示0值,這表示沒(méi)有轉(zhuǎn)換。X可以表示1值,此時(shí)表示上升沿。Xprop仿真考慮了這兩種行為并合并了結(jié)果。
以下為一個(gè)低有效復(fù)位的D觸發(fā)器示例:
在三種模式中,如果時(shí)鐘信號(hào)clk從0變成1,即一個(gè)上升沿觸發(fā),D觸發(fā)器的輸出信號(hào)q被賦值為輸入信號(hào)d。
對(duì)于其余四種時(shí)鐘信號(hào)的變化,vmerge模式中,輸出信號(hào)q被賦值為輸入信號(hào)d;xmerge模式中,輸出信號(hào)q被賦值為X;tmerge模式中,q端的結(jié)果是當(dāng)前拍d端和上一拍q端值得merge的結(jié)果,如果兩者不同,則當(dāng)前拍鎖存X。
latch
在vmerge模式下,當(dāng)控制信號(hào)g未知時(shí),輸出信號(hào)q的值不變。
在tmerge模式下,當(dāng)控制信號(hào)g未知時(shí),分配給q的合并值取決于q和d的值。
在xmerge模式下,當(dāng)控制信號(hào)g未知時(shí),輸出信號(hào)q的值始終為X。
當(dāng)xprop仿真過(guò)程中出現(xiàn)X態(tài)報(bào)錯(cuò)時(shí),需要看波形以具體分析是寄存器沒(méi)有初始化值,存在X態(tài)導(dǎo)致的,還是代碼邏輯中存在問(wèn)題導(dǎo)致的。
審核編輯:劉清
-
Verilog
+關(guān)注
關(guān)注
29文章
1367瀏覽量
112228 -
RTL
+關(guān)注
關(guān)注
1文章
389瀏覽量
61054 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2039瀏覽量
62119 -
邏輯電平
+關(guān)注
關(guān)注
0文章
189瀏覽量
14762
原文標(biāo)題:什么是X態(tài)傳播?
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論