劉林海 張 勇 曾 明
(中國電子科技集團(tuán)公司第五十四研究所 河北 石家莊 050081)
數(shù)字集成電路仿真中不定態(tài)的消除方法
劉林海 張 勇 曾 明
(中國電子科技集團(tuán)公司第五十四研究所 河北 石家莊 050081)
為了解決在仿真時由于不定態(tài)的傳播、擴(kuò)散導(dǎo)致的仿真失敗的情況,首先介紹了不定態(tài)產(chǎn)生的原因,之后分析了仿真器對不定態(tài)的傳播,進(jìn)而提出了在RTL級以及門級階段消除不定態(tài)的方法,最后結(jié)合工程實(shí)踐,介紹了利用VCS仿真工具在門級仿真過程中消除不定態(tài)的實(shí)現(xiàn)過程。實(shí)踐結(jié)果表明,合理運(yùn)用該方法,可以在保證電路工作正常的前提下,確保門級仿真的順利進(jìn)行,故具有重要的參考價值。
不定態(tài) 門級仿真 初始化 時序冒險
硬件描述語言(HDL)定義一個信號至少具有4種狀態(tài),分別是0,1,x和z。其中x表示一種不確定狀態(tài)[1](既可能為0,也可能為1)。在電路仿真尤其是門級仿真過程中,經(jīng)常遇到不定態(tài)產(chǎn)生并傳播和擴(kuò)散,從而導(dǎo)致仿真失敗的情況。為了在仿真時去除不定態(tài),使仿真順利進(jìn)行,需要從不定態(tài)產(chǎn)生的實(shí)際電路機(jī)理入手,對仿真時不定態(tài)產(chǎn)生的原因以及傳播機(jī)制進(jìn)行分析,從而找到有效去除不定態(tài)的方法。
硬件描述語言盡量描述數(shù)字電路的實(shí)際行為,其中1表示被電源直接驅(qū)動,0表示被地直接驅(qū)動,z表示沒有驅(qū)動源,而x則表示狀態(tài)不確定。產(chǎn)生不定態(tài)的原因[2,3]主要有3種:①多驅(qū)動源驅(qū)動同一節(jié)點(diǎn);②時序器件(觸發(fā)器,鎖存器,隨機(jī)存儲器)未初始化;③仿真器檢測到時序器件上的時序冒險。仿真中出現(xiàn)的不定態(tài),主要由②和③兩種情形構(gòu)成。
數(shù)字集成電路中的時序器件主要有鎖存器(latch)、觸發(fā)器(filp-flop)和同步存儲器(SRAM)組成,他們的核心單元都是雙穩(wěn)邏輯,在上電過程中存在競爭現(xiàn)象[4]。如圖1所示,2個與非門哪一個先輸出0是不確定的,而先輸出0的與非門決定了另一個與非門的狀態(tài)。因此未經(jīng)過初始化的雙穩(wěn)邏輯在上電后其輸出值是不確定的。
圖1 雙穩(wěn)邏輯示意圖
為模擬實(shí)際情況,仿真器在仿真初始時使所有時序器件的輸出為不定態(tài)。通過初始化(復(fù)位觸發(fā)器或者寫RAM的所有單元),可以有效消除不定態(tài),但是無法初始化的時序器件,將維持不定態(tài)直到電路開始工作,如果這些不定態(tài)被傳播,將導(dǎo)致仿真失敗。
時序冒險也可能導(dǎo)致不定態(tài)的產(chǎn)生[5]。當(dāng)觸發(fā)器或鎖存器進(jìn)行數(shù)據(jù)采樣時,數(shù)據(jù)處于不穩(wěn)定狀態(tài),就會發(fā)生時序冒險。時序冒險導(dǎo)致時序器件的輸出端口出現(xiàn)亞穩(wěn)態(tài),而亞穩(wěn)態(tài)受電源噪聲的影響會發(fā)生衰變,隨機(jī)的進(jìn)入穩(wěn)定狀態(tài)。由于RTL較少使用時延和時序檢查,所以RTL仿真時一般不存在時序冒險[6]。在門級仿真時采用反向標(biāo)注時間信息的技術(shù),可以在門級單元中引入精確延時和時序檢查。如果在時序器件的采樣時間窗口,輸入數(shù)據(jù)發(fā)生翻轉(zhuǎn),仿真器即發(fā)出警告信息,并將時序器件的輸出值置為不定態(tài)。同步電路中的時序違反,或2個異步時鐘域之間的數(shù)據(jù)傳遞,都會導(dǎo)致時序冒險,從而在門級仿真過程中出現(xiàn)不定態(tài)[7]。
仿真器基于實(shí)際電路對不定態(tài)進(jìn)行模擬。但是對于實(shí)際電路而言,無論是否是不定態(tài),某一個節(jié)點(diǎn)在某一時刻的邏輯其實(shí)是確定的,就像落地后的硬幣必然有確定的一面向上一樣;而仿真器中的不定態(tài)描述的是該節(jié)點(diǎn)的邏輯可能性,就像是落地后的硬幣某一面朝上的概率一樣。因此,仿真器對不定態(tài)的模擬,一定是比實(shí)際更加悲觀。
在RTL仿真時,采用抑制不定態(tài)的電路描述方式能夠避免不定態(tài)的傳播,可以使仿真順利進(jìn)行[3]。考慮以下RTL代碼和其對應(yīng)的真值表,當(dāng)條件cond為不定態(tài)時,y值為b,如果b的值是確定的,那么cond的不定態(tài)就在傳播中被消除了,RTL仿真的真值表如表1所示。
表1 RTL仿真的真值表
描述方法對應(yīng)的實(shí)際電路如圖2所示。實(shí)際電路在工作時,如果a不等于b,那么y的值為不確定(參見表2)。門級仿真則接近實(shí)際電路的行為,但是更加悲觀。只有a=0,b=0時,門級仿真才能夠阻止不定態(tài)的傳播。
圖2 與或門電路結(jié)構(gòu)
表2 實(shí)際電路/門級仿真的真值表
因此,以2選1的邏輯為例,當(dāng)選擇端為不定態(tài),而2個數(shù)據(jù)輸入端為確定態(tài)時,實(shí)際電路輸出不定態(tài)的概率為50%,RTL級仿真時為0%,門級仿真時為75%。
在仿真時引入不定態(tài),可以描述電路因初始態(tài)不確定或時序冒險導(dǎo)致的功能錯誤。RTL仿真消除了很大一部分不定態(tài)的傳播,因此仿真往往能夠順利進(jìn)行。門級仿真則因?yàn)楸^的傳播方式而失敗,因此必須要通過各種方法來消除掉仿真中的不定態(tài)[8]。
4.1 未初始化不定態(tài)的消除
如果不定態(tài)的產(chǎn)生是由未初始化的時序器件引起,那么最簡單的辦法是修改RTL代碼,增加初始化邏輯。但是這樣做不僅會導(dǎo)致設(shè)計周期的延長,并且使電路資源無法達(dá)到最優(yōu)[9]。
另外的方法是去除仿真器中相對實(shí)際電路的悲觀性,即強(qiáng)制仿真器不要模擬邏輯可能性,而是模擬某一次上電穩(wěn)定后的狀態(tài),就從仿真器中消除了因?yàn)槲闯跏蓟臅r序器件導(dǎo)致的不定態(tài)。這樣做的問題是需要確保驗(yàn)證完備性,模擬所有可能的初始狀態(tài)。如果未初始化的時序邏輯單元有32個,那么仿真需要進(jìn)行232=4,294,967,296次,顯然是不現(xiàn)實(shí)的。一種修正的方法是分析未初始的時序邏輯及其下游邏輯是否為積分型邏輯,如圖3所示。
圖3 積分型邏輯示意圖
對于確定的積分型邏輯,必須進(jìn)行完備的仿真或是直接修改源代碼,而對于非積分型電路邏輯,電路的狀態(tài)只與當(dāng)前輸入有關(guān),只要輸入邏輯確定,電路的不定態(tài)自然就會消除,因此仿真時無需考慮初始狀態(tài)的完備性,只要簡單進(jìn)行初始狀態(tài)的仿真即可。
4.2 時序冒險不定態(tài)的消除
如果不定態(tài)由時序冒險產(chǎn)生,則首先判斷產(chǎn)生點(diǎn)是否在時鐘域邊界。如果不是,而且仿真時的時鐘頻率又沒有超過設(shè)計指標(biāo),就說明存在時序違反,應(yīng)當(dāng)重新優(yōu)化電路[10]。
如果產(chǎn)生點(diǎn)處于時鐘域邊界,而且2個時鐘是異步的,那么時序冒險必然產(chǎn)生。此時應(yīng)當(dāng)分析接收數(shù)據(jù)的時鐘域是否使用了同步器,沒有同步器會導(dǎo)致實(shí)際電路隨機(jī)失效。這種情況下仿真器產(chǎn)生不定態(tài)就是合理的,唯一的解決方法就是修改電路。如果已經(jīng)采用了同步器電路,那么時序冒險產(chǎn)生的亞穩(wěn)態(tài)能夠被同步器消除,無法繼續(xù)傳播,也就不會產(chǎn)生不定態(tài),在仿真中是可以通過強(qiáng)制仿真器來消除不定態(tài)的[5]。
圖4 同步器電路
總之,可以通過修改RTL設(shè)計或者強(qiáng)制仿真器消除不定態(tài)。資源不敏感的設(shè)計,應(yīng)當(dāng)盡量在設(shè)計階段解決潛在問題,而使用強(qiáng)制仿真器處理未初始化時序器件的不定態(tài),存在一定潛在的風(fēng)險,但是能進(jìn)一步優(yōu)化資源。對于采用了同步器的異步時鐘之間的時序冒險,則強(qiáng)制仿真器消除不定態(tài)是很好的方法。
在某SoC設(shè)計中,使用了包括微處理器內(nèi)核的大量復(fù)雜IP模塊,并包含多個異步時鐘。仿真工具使用Synopsys公司的VCS MX,AHB主機(jī)總線信號正常翻轉(zhuǎn),RTL仿真能夠順利進(jìn)行;但是門級仿真進(jìn)行到4.5 μs后,AHB主機(jī)的地址總線信號HADDR由0xfd8變?yōu)榱瞬欢☉B(tài),沒有進(jìn)行正常的地址跳轉(zhuǎn),譯碼器及從機(jī)將無法獲得正確的地址信息;字節(jié)選通信號HBRSTB由0xff變?yōu)椴欢☉B(tài),從機(jī)將無法正常獲取數(shù)據(jù)總線數(shù)據(jù);突發(fā)類型信號HBURST由0x3變?yōu)椴欢☉B(tài),從機(jī)將無法判定下一傳輸是否為突發(fā)傳輸;傳輸類型信號HTRANS則由0x2變?yōu)椴欢☉B(tài),從機(jī)將無法判定下一傳輸是否連續(xù)、是否空閑;讀寫信號HWRITE也由低電平變?yōu)椴欢☉B(tài),導(dǎo)致從機(jī)無法判斷下一傳輸?shù)淖x寫類別;由于AHB總線的這些異常行為,AHB主機(jī)無法正常發(fā)起讀寫操作,從機(jī)也無法回應(yīng)正常的響應(yīng)信號,讀數(shù)據(jù)總線HRDATA、傳輸完成信號HREADY和傳輸響應(yīng)信號HRESP均轉(zhuǎn)變?yōu)椴欢☉B(tài),功能仿真無法繼續(xù)進(jìn)行,門級仿真失敗。
經(jīng)分析是AHB主機(jī)內(nèi)部的一些觸發(fā)器沒有被復(fù)位,因此仿真開始時會輸出一段不定態(tài),隨后才能夠進(jìn)入正常狀態(tài)。由于門級仿真的悲觀性,這些不定態(tài)在傳播過程中擴(kuò)散,導(dǎo)致全部電路處于不定態(tài)。而實(shí)際上,總線狀態(tài)沒有記憶效應(yīng),只與主機(jī)的當(dāng)前狀態(tài)有關(guān),當(dāng)主機(jī)進(jìn)入正常狀態(tài)時,總線上所有其他外設(shè)都應(yīng)當(dāng)正常工作,因此可以采用強(qiáng)制復(fù)位的方法消除不定態(tài)。
VCS MX中強(qiáng)制某仿真節(jié)點(diǎn)為特定值的指令為force,其選項(xiàng)-deposit用于設(shè)置信號為固定值直到該信號發(fā)生翻轉(zhuǎn)。使用的部分force指令如下:
使用force deposit指令初始化寄存器后,AHB主機(jī)的總線信號在4.5 μs后均正常翻轉(zhuǎn),地址總線HADDR由0xfd8跳轉(zhuǎn)到0x28;字節(jié)選通信號HBSTRB由0xff轉(zhuǎn)變?yōu)?x0f;突發(fā)類型信號HBURST信號保持0x3不變;傳輸類型信號HTRANS由0x2變?yōu)?x3;讀寫信號HWRITE維持低電平,以上信息表明下一時刻總線將發(fā)起一次讀傳輸;下一時鐘周期的從機(jī)響應(yīng)信號均正常翻轉(zhuǎn),傳輸完成信號HREADY維持高電平,讀數(shù)據(jù)總線HRDATA數(shù)據(jù)為0xE1500005E2460C01和傳輸響應(yīng)信號HRESP維持0x0不變,表明讀傳輸正常完成,讀數(shù)據(jù)為0x E2460C01,門級仿真順利進(jìn)行。
對于異步時鐘,使用的部分force指令如下:
該SoC芯片目前已順利通過實(shí)驗(yàn)室長期運(yùn)行測試,峰值處理能力達(dá)到400 MIPS,在其上運(yùn)行l(wèi)inux操作系統(tǒng)及視頻解碼,圖像清晰流暢。
由于門級仿真的特點(diǎn),在仿真中經(jīng)常會產(chǎn)生不合理的不定態(tài),使得仿真無法順利進(jìn)行,因此消除不合理的不定態(tài)是門級仿真中的重要步驟。深入了解不定態(tài)的產(chǎn)生、傳播機(jī)理,有助于使用合理的方法消除不定態(tài),使得仿真順利進(jìn)行。避免不合理不定態(tài)對仿真的干擾,才能夠更加有效地通過仿真發(fā)現(xiàn)可能存在的真正問題,從而提高設(shè)計質(zhì)量,并且能夠有效地提高設(shè)計效率,縮短設(shè)計周期。
[1](美)UYEMURA J P.超大規(guī)模集成電路與系統(tǒng)導(dǎo)論[M].周潤德,譯.北京:電子工業(yè)出版社,2004.
[2](美)SHARMA A K.先進(jìn)半導(dǎo)體存儲器[M].曾瑩等,譯.北京:電子工業(yè)出版社,2005.
[3]MILLS D,CUMMINGS E C.RTL Coding Styles That Yield Simulation and Synthesis Mismatches[M].Boston SNUG,1999
[4]TURPIN M.The Dangers of Living with an X(bugs hidden in your Verilog)[M].ARM Ltd,2003.
[5]BENING L.A Two-State Methodology for RTL Logic Simulation[C]//In Proceeding of 36th Design Automation Conference(DAC),1999:672-677.
[6]KEATING M,BRICAUD P.Reuse Methodology Manual for System-On-Chip Design.[M].Academic Publishers,2000.
[7]FITZPATRICK T.Verilog Modeling Style Guide for the Cobra Cycle Simulator[J].Cadence Design Systems, Chelmsford,1998:11-12.
[8]MCGEER P C,MCMILLAN K L,SALDANHA A,et al.Fast Discrete Function Evaluation using Decision Diagrams[J].IEEE ICCAD-95,1995:402-407.
[9]YIM J S,HWANG Y H,PARK C J,et al.A C-based RTL Design Verification Methodology for Complex Microprocessor[C]//DAC'97 Proceedings of the 34th annual Design Automation Conference,1997:83-88.
[10]TAYLOR S,QUINN M,BROWN D,et al.Functional Verification of A Multiple-Issue out-of-Order,Superscalar Alpha Processor–the DEC Alpha 21264 microprocessor[C] //DAC'98 Proceedings of the 35th annual Design Automation Conference,1998:638-643.
Elimination Method of Uncertain State in Digital IC Simulation
LIU Lin-hai ZHANG Yong ZENG Ming
(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)
To resolve the simulation failure caused by the propagation of uncertain state,the reason of uncertain state is introduced firstly.And the method of eliminating uncertain state in the RTL simulation and gate-level simulation is put forward based on analysis of uncertain states propagation.Lastly,combining with the engineering practice,the detailed implementation of this approach by using VCS simulator is introduced.The experimental results show that this method can make the gate-level simulation be implemented successfully when the circuit operating normally and it has significant reference value.
uncertain state;gate-level simulation;initialization;timing risk
TP391
A
1008-1739(2014)02-58-4
定稿日期:2013-12-26