劉林海 張 勇 曾 明
(中國電子科技集團公司第五十四研究所 河北 石家莊 050081)
數字集成電路仿真中不定態的消除方法
劉林海 張 勇 曾 明
(中國電子科技集團公司第五十四研究所 河北 石家莊 050081)
為了解決在仿真時由于不定態的傳播、擴散導致的仿真失敗的情況,首先介紹了不定態產生的原因,之后分析了仿真器對不定態的傳播,進而提出了在RTL級以及門級階段消除不定態的方法,最后結合工程實踐,介紹了利用VCS仿真工具在門級仿真過程中消除不定態的實現過程。實踐結果表明,合理運用該方法,可以在保證電路工作正常的前提下,確保門級仿真的順利進行,故具有重要的參考價值。
不定態 門級仿真 初始化 時序冒險
硬件描述語言(HDL)定義一個信號至少具有4種狀態,分別是0,1,x和z。其中x表示一種不確定狀態[1](既可能為0,也可能為1)。在電路仿真尤其是門級仿真過程中,經常遇到不定態產生并傳播和擴散,從而導致仿真失敗的情況。為了在仿真時去除不定態,使仿真順利進行,需要從不定態產生的實際電路機理入手,對仿真時不定態產生的原因以及傳播機制進行分析,從而找到有效去除不定態的方法。
硬件描述語言盡量描述數字電路的實際行為,其中1表示被電源直接驅動,0表示被地直接驅動,z表示沒有驅動源,而x則表示狀態不確定。產生不定態的原因[2,3]主要有3種:①多驅動源驅動同一節點;②時序器件(觸發器,鎖存器,隨機存儲器)未初始化;③仿真器檢測到時序器件上的時序冒險。仿真中出現的不定態,主要由②和③兩種情形構成。
數字集成電路中的時序器件主要有鎖存器(latch)、觸發器(filp-flop)和同步存儲器(SRAM)組成,他們的核心單元都是雙穩邏輯,在上電過程中存在競爭現象[4]。如圖1所示,2個與非門哪一個先輸出0是不確定的,而先輸出0的與非門決定了另一個與非門的狀態。因此未經過初始化的雙穩邏輯在上電后其輸出值是不確定的。

圖1 雙穩邏輯示意圖
為模擬實際情況,仿真器在仿真初始時使所有時序器件的輸出為不定態。通過初始化(復位觸發器或者寫RAM的所有單元),可以有效消除不定態,但是無法初始化的時序器件,將維持不定態直到電路開始工作,如果這些不定態被傳播,將導致仿真失敗。
時序冒險也可能導致不定態的產生[5]。當觸發器或鎖存器進行數據采樣時,數據處于不穩定狀態,就會發生時序冒險。時序冒險導致時序器件的輸出端口出現亞穩態,而亞穩態受電源噪聲的影響會發生衰變,隨機的進入穩定狀態。由于RTL較少使用時延和時序檢查,所以RTL仿真時一般不存在時序冒險[6]。在門級仿真時采用反向標注時間信息的技術,可以在門級單元中引入精確延時和時序檢查。如果在時序器件的采樣時間窗口,輸入數據發生翻轉,仿真器即發出警告信息,并將時序器件的輸出值置為不定態。同步電路中的時序違反,或2個異步時鐘域之間的數據傳遞,都會導致時序冒險,從而在門級仿真過程中出現不定態[7]。
仿真器基于實際電路對不定態進行模擬。但是對于實際電路而言,無論是否是不定態,某一個節點在某一時刻的邏輯其實是確定的,就像落地后的硬幣必然有確定的一面向上一樣;而仿真器中的不定態描述的是該節點的邏輯可能性,就像是落地后的硬幣某一面朝上的概率一樣。因此,仿真器對不定態的模擬,一定是比實際更加悲觀。
在RTL仿真時,采用抑制不定態的電路描述方式能夠避免不定態的傳播,可以使仿真順利進行[3]。考慮以下RTL代碼和其對應的真值表,當條件cond為不定態時,y值為b,如果b的值是確定的,那么cond的不定態就在傳播中被消除了,RTL仿真的真值表如表1所示。


表1 RTL仿真的真值表
描述方法對應的實際電路如圖2所示。實際電路在工作時,如果a不等于b,那么y的值為不確定(參見表2)。門級仿真則接近實際電路的行為,但是更加悲觀。只有a=0,b=0時,門級仿真才能夠阻止不定態的傳播。

圖2 與或門電路結構

表2 實際電路/門級仿真的真值表
因此,以2選1的邏輯為例,當選擇端為不定態,而2個數據輸入端為確定態時,實際電路輸出不定態的概率為50%,RTL級仿真時為0%,門級仿真時為75%。
在仿真時引入不定態,可以描述電路因初始態不確定或時序冒險導致的功能錯誤。RTL仿真消除了很大一部分不定態的傳播,因此仿真往往能夠順利進行。門級仿真則因為悲觀的傳播方式而失敗,因此必須要通過各種方法來消除掉仿真中的不定態[8]。
4.1 未初始化不定態的消除
如果不定態的產生是由未初始化的時序器件引起,那么最簡單的辦法是修改RTL代碼,增加初始化邏輯。但是這樣做不僅會導致設計周期的延長,并且使電路資源無法達到最優[9]。
另外的方法是去除仿真器中相對實際電路的悲觀性,即強制仿真器不要模擬邏輯可能性,而是模擬某一次上電穩定后的狀態,就從仿真器中消除了因為未初始化的時序器件導致的不定態。這樣做的問題是需要確保驗證完備性,模擬所有可能的初始狀態。如果未初始化的時序邏輯單元有32個,那么仿真需要進行232=4,294,967,296次,顯然是不現實的。一種修正的方法是分析未初始的時序邏輯及其下游邏輯是否為積分型邏輯,如圖3所示。

圖3 積分型邏輯示意圖
對于確定的積分型邏輯,必須進行完備的仿真或是直接修改源代碼,而對于非積分型電路邏輯,電路的狀態只與當前輸入有關,只要輸入邏輯確定,電路的不定態自然就會消除,因此仿真時無需考慮初始狀態的完備性,只要簡單進行初始狀態的仿真即可。
4.2 時序冒險不定態的消除
如果不定態由時序冒險產生,則首先判斷產生點是否在時鐘域邊界。如果不是,而且仿真時的時鐘頻率又沒有超過設計指標,就說明存在時序違反,應當重新優化電路[10]。
如果產生點處于時鐘域邊界,而且2個時鐘是異步的,那么時序冒險必然產生。此時應當分析接收數據的時鐘域是否使用了同步器,沒有同步器會導致實際電路隨機失效。這種情況下仿真器產生不定態就是合理的,唯一的解決方法就是修改電路。如果已經采用了同步器電路,那么時序冒險產生的亞穩態能夠被同步器消除,無法繼續傳播,也就不會產生不定態,在仿真中是可以通過強制仿真器來消除不定態的[5]。

圖4 同步器電路
總之,可以通過修改RTL設計或者強制仿真器消除不定態。資源不敏感的設計,應當盡量在設計階段解決潛在問題,而使用強制仿真器處理未初始化時序器件的不定態,存在一定潛在的風險,但是能進一步優化資源。對于采用了同步器的異步時鐘之間的時序冒險,則強制仿真器消除不定態是很好的方法。
在某SoC設計中,使用了包括微處理器內核的大量復雜IP模塊,并包含多個異步時鐘。仿真工具使用Synopsys公司的VCS MX,AHB主機總線信號正常翻轉,RTL仿真能夠順利進行;但是門級仿真進行到4.5 μs后,AHB主機的地址總線信號HADDR由0xfd8變為了不定態,沒有進行正常的地址跳轉,譯碼器及從機將無法獲得正確的地址信息;字節選通信號HBRSTB由0xff變為不定態,從機將無法正常獲取數據總線數據;突發類型信號HBURST由0x3變為不定態,從機將無法判定下一傳輸是否為突發傳輸;傳輸類型信號HTRANS則由0x2變為不定態,從機將無法判定下一傳輸是否連續、是否空閑;讀寫信號HWRITE也由低電平變為不定態,導致從機無法判斷下一傳輸的讀寫類別;由于AHB總線的這些異常行為,AHB主機無法正常發起讀寫操作,從機也無法回應正常的響應信號,讀數據總線HRDATA、傳輸完成信號HREADY和傳輸響應信號HRESP均轉變為不定態,功能仿真無法繼續進行,門級仿真失敗。
經分析是AHB主機內部的一些觸發器沒有被復位,因此仿真開始時會輸出一段不定態,隨后才能夠進入正常狀態。由于門級仿真的悲觀性,這些不定態在傳播過程中擴散,導致全部電路處于不定態。而實際上,總線狀態沒有記憶效應,只與主機的當前狀態有關,當主機進入正常狀態時,總線上所有其他外設都應當正常工作,因此可以采用強制復位的方法消除不定態。
VCS MX中強制某仿真節點為特定值的指令為force,其選項-deposit用于設置信號為固定值直到該信號發生翻轉。使用的部分force指令如下:

使用force deposit指令初始化寄存器后,AHB主機的總線信號在4.5 μs后均正常翻轉,地址總線HADDR由0xfd8跳轉到0x28;字節選通信號HBSTRB由0xff轉變為0x0f;突發類型信號HBURST信號保持0x3不變;傳輸類型信號HTRANS由0x2變為0x3;讀寫信號HWRITE維持低電平,以上信息表明下一時刻總線將發起一次讀傳輸;下一時鐘周期的從機響應信號均正常翻轉,傳輸完成信號HREADY維持高電平,讀數據總線HRDATA數據為0xE1500005E2460C01和傳輸響應信號HRESP維持0x0不變,表明讀傳輸正常完成,讀數據為0x E2460C01,門級仿真順利進行。
對于異步時鐘,使用的部分force指令如下:

該SoC芯片目前已順利通過實驗室長期運行測試,峰值處理能力達到400 MIPS,在其上運行linux操作系統及視頻解碼,圖像清晰流暢。
由于門級仿真的特點,在仿真中經常會產生不合理的不定態,使得仿真無法順利進行,因此消除不合理的不定態是門級仿真中的重要步驟。深入了解不定態的產生、傳播機理,有助于使用合理的方法消除不定態,使得仿真順利進行。避免不合理不定態對仿真的干擾,才能夠更加有效地通過仿真發現可能存在的真正問題,從而提高設計質量,并且能夠有效地提高設計效率,縮短設計周期。
[1](美)UYEMURA J P.超大規模集成電路與系統導論[M].周潤德,譯.北京:電子工業出版社,2004.
[2](美)SHARMA A K.先進半導體存儲器[M].曾瑩等,譯.北京:電子工業出版社,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