摘 要: 研究了Perl在ESD保護電路中的應(yīng)用?;赑erl語言的強大功能,在海量的數(shù)字電路仿真數(shù)據(jù)中準確地抓取需要的數(shù)據(jù),并生成文件報表。同時為數(shù)字仿真電路的驗證提供了一種全新、快速、準確的方式。
關(guān)鍵詞: Perl; ESD電路; 電路驗證
在一款電子產(chǎn)品投入生產(chǎn)前,數(shù)字后端設(shè)計工程師會對數(shù)字仿真電路進行驗證,對整個版圖的線寬、間距、短路等情況進行檢查,從而確保生產(chǎn)的產(chǎn)品都能夠正常工作。這些仿真電路驗證工作經(jīng)常需要面對海量的電路數(shù)據(jù)進行篩選,識別出設(shè)計參數(shù)不合格的電路并進行改善[1]。
數(shù)字仿真電路的設(shè)計離不開仿真驗證,仿真驗證過程是一個不斷重復(fù)的過程,它貫穿了整個仿真電路的設(shè)計。據(jù)統(tǒng)計,設(shè)計驗證會占用設(shè)計人員 70%以上的精力,而且對于大型的電路,驗證會更為繁瑣,例如門級規(guī)模上億的電路。
1 數(shù)字仿真電路驗證方法分析
作為可編程邏輯器件,FPGA(Field Programmable Gate Array)相比于ASIC(Application Specific Integrated Circuit)可以重復(fù)擦寫程序,通常用它來對現(xiàn)有的設(shè)計進行仿真驗證。在數(shù)字 ASIC 的設(shè)計中,由于測試向量的不完備,設(shè)計中很有可能存在相應(yīng)的Bug。因為每次 ASIC 的投片會花費較大代價,為規(guī)避風(fēng)險,通常會對設(shè)計進行 FPGA驗證,F(xiàn)PGA 驗證無誤后才進行投片、量產(chǎn)[2]。
目前FPGA數(shù)字后端驗證的方法主要是基于人工的選擇,通過Linux下的條件查找功能,逐個實現(xiàn)對電路參數(shù)的驗證功能。要驗證的電路數(shù)目和需要驗證的電路參數(shù)個數(shù)都是海量的,而且需要驗證的參數(shù)類型也是隨時變化的,因此這種人工驗證的方法,不僅效率低下,而且驗證準確度難以確保。
本文將介紹一種新的利用Perl(Practical Extraction and Reporting Language)進行數(shù)字仿真電路驗證的方式。
2 Perl介紹及其在ESD保護電路中的應(yīng)用
2.1 Perl簡介
Perl是解釋型的腳本語言,它具有出色的處理文本能力,是Windows和Linux跨平臺的編程語言,具備自主內(nèi)存管理功能,沒有內(nèi)存泄漏問題,且具有強大便捷的模塊化功能[3]。
Perl的解釋程序是開放源碼的免費軟件,使用Perl不必擔(dān)心費用;Perl能在絕大多數(shù)操作系統(tǒng)下運行,可以方便地向不同操作系統(tǒng)遷移;它可以作為用在不同系統(tǒng)環(huán)境編程的高級語言,為電路驗證提供了一種新的解決方式;其高效、準確的特點給設(shè)計人員帶來了很大的便利[4]。
2.2 ESD保護電路
靜電放電ESD(Electrostatic Discharge)會給電子器件環(huán)境帶來破壞性的后果,是造成集成電路失效的主要原因之一。
在正常工作情況下,NMOS橫向晶體管不會導(dǎo)通。當ESD發(fā)生時,漏極和襯底的耗盡區(qū)將發(fā)生雪崩,并伴隨之產(chǎn)生電子空穴對。一部分產(chǎn)生的空穴被源極吸收,其余的流過襯底。由于襯底電阻Rsub的存在,使襯底電壓提高。當襯底與源之間的PN結(jié)正偏時,電子就從源發(fā)射進入襯底。這些電子在源漏之間電場的作用下被加速,產(chǎn)生電子、空穴的碰撞電離,從而形成更多的電子空穴對,使流過n-p-n晶體管的電流不斷增加,最終使NMOS晶體管發(fā)生二次擊穿,此時的擊穿不再可逆,則NMOS管損壞[5]。
為了進一步降低輸出驅(qū)動上NMOS在ESD時兩端的電壓,可在ESD 保護器件與GGNMOS之間加一個電阻。這個電阻不能影響工作信號,因此不能太大。畫版圖時通常采用多晶硅(poly)電阻R1和R2。如圖1所示。
2.3 Perl在ESD保護電路驗證中的應(yīng)用
Perl在ESD保護電路驗證中可以實現(xiàn)抓取所需要的數(shù)據(jù)信息并生成文件報表。圖2所示為一款芯片的ESD保護電路報表中的一個小模塊仿真電路,其整個報告有上千個格式相同而R1、R2數(shù)字不同的電路小模塊。由圖1所示的電路說明,要實現(xiàn)對芯片的ESD保護,需要限定:R1或者R2不能大于某一個限定值Rm。因此需要在這個文件報表中實現(xiàn)不滿足此條件(即:R1或R2電阻值有一個大于3.5 Ω)的所有電路Location、Power和Ground的信息抓取。如果不用腳本程序,只能對電路模塊的R1和R2數(shù)值信息一個一個分析比較,這樣不僅準確率低,容易出錯,而且耗費大量后端工程師的精力。但是現(xiàn)在可以通過一個Perl程序?qū)崿F(xiàn)對此類文件報告進行條件抓取。這種方式不僅運行速度快,不會出錯,而且大大減少了后端驗證工程師的數(shù)據(jù)分析工作量?!?/p>
運行這個Perl腳本后,只需要輸入電源電阻所需要滿足的條件,不同系列的芯片對R1和R2要求不一樣。譬如,對于某一系列芯片需要查找出R1或者R2大于3.5 ?贅的所有電路location、power、ground信息(注:對于此系列芯片R1或者R2大于3.5 ?贅時的ESD保護電路都是不能通過檢查的,需要重新設(shè)計參數(shù))。Perl可以在Windows、Unix等多種平臺下運行,以在Windows系統(tǒng)下運行為例[7],如圖3所示。
最后的運行Perl腳本輸出為一個result文件名的文件報表,結(jié)果如圖4所示。
數(shù)字仿真電路驗證是其數(shù)字后端設(shè)計中極其重要的一部分,是保證每款芯片品質(zhì)的重要部分。Perl語言可以很好地實現(xiàn)所有不滿足ESD保護電路設(shè)計的電路參數(shù)抓取,方便數(shù)字仿真電路設(shè)計后端查錯。由此表明可以根據(jù)不同電路的實際仿真報告,用Perl編程實現(xiàn)不同數(shù)字仿真電路驗證的后端查錯,大大減少了驗證者的工作量??梢灶A(yù)見,以后的硬件電路設(shè)計中會越來越多地見到Perl的身影[8]。
參考文獻
[1] 余曉文,強英.Perl語言在電路設(shè)計中的應(yīng)用[J]. 微型機與應(yīng)用,2004, 23(1):24-25.
[2] 許川佩,唐海,胡聰.基于FPGA的NoC硬件系統(tǒng)設(shè)計[J]. 電子技術(shù)應(yīng)用,2012,38(2):117-119.
[3] (美)施瓦茨. Perl語言入門(第6版)[M].盛春,譯.南京:東南大學(xué)出版社,2012.
[4] (美)艾德爾曼.使用Perl實現(xiàn)系統(tǒng)管理自動化(第2版)[M].盛春,譯.南京:東南大學(xué)出版社,2011.
[5] 孫可平,劉勇.我國電子行業(yè)ESD防治技術(shù)現(xiàn)狀及對策[J].上海海運學(xué)院學(xué)報,1999(1):76-81.
[6] DEITEL H M. Perl編程金典[M]. 李晉宏,楊小平,譯.北京:清華大學(xué)出版社,2002.
[7] 華勝華,劉偉平. PERL在IC設(shè)計中的應(yīng)用[J].中國集成電路,2004(5):36-41.
[8] WALL L, CHRISTIANSEN T, ORWANT J. Programming Perl[M]. Third Edition, O′Reilly Media, 2000.