針對集成電路設(shè)計(jì)中存在著不同類型、不同版本的多套庫(Library)信息,本文提出一種有效的庫單元組織結(jié)構(gòu)和檢查方法,可以多維度對設(shè)計(jì)庫進(jìn)行檢查和比較,提高設(shè)計(jì)質(zhì)量,保證設(shè)計(jì)的正確性。本發(fā)明屬于EDA設(shè)計(jì)領(lǐng)域。
背景技術(shù):
隨著制造工藝的發(fā)展和集成電路設(shè)計(jì)規(guī)模的擴(kuò)大,設(shè)計(jì)者在面對越來越多,越來越復(fù)雜的庫(Library)文件。這些庫文件可能是來源于不同的設(shè)計(jì)提供商,也可能是來源于不同的版本控制。庫的類型也會有很多,包括描述標(biāo)準(zhǔn)單元物理信息的LEF庫;描述版圖信息的GDS庫;描述網(wǎng)表信息的Verilog庫;描述仿真信息的CDL庫;描述時序信息的Timing liberty庫等。如果庫單元自身就有問題,或者不同類型的庫版本不匹配,會直接影響設(shè)計(jì)的正確性,帶來的問題也很難調(diào)試和定位錯誤。
現(xiàn)有的庫檢查的EDA工具,往往針對某一種類型檢查,缺乏不同類型庫單元之間的橫向檢查和比較。當(dāng)庫單元的數(shù)目非常多的時候,缺乏清晰有效的管理;成百上千條的規(guī)則很難讓使用者理解,從檢查結(jié)果中也不容易發(fā)現(xiàn)真正的問題。我們在這里提出了一種方法,層次化組織和管理不同類型、不同版本的眾多庫單元文件。通過詳細(xì)的檢查報告和圖形化結(jié)果顯示,幫助使用者方便地進(jìn)行庫單元的檢查與修正,以保證設(shè)計(jì)質(zhì)量。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提出一種檢查不同類型庫單元正確性及一致性的方法,這種方法利用workspace/ session/ view/ corner等概念,有效地層次化組織和管理不同類型、不同版本的多個庫文件。針對某一具體的庫單元,可以針對其正確性進(jìn)行自我檢查“self-check”;針對不同類型的庫單元之間,可以針對其一致性進(jìn)行對比檢查“cross-check”;針對相同類型的庫單元之間,可以比較其性能差異“compare”。規(guī)范化的檢查操作大大方便了設(shè)計(jì)者檢查和比較庫單元文件。
圖1顯示了庫單元文件的組織結(jié)構(gòu)圖。使用者首先在當(dāng)前工作目錄下創(chuàng)建“workspace”,以保存擁有的所有庫單元文件。其中可能會包括不同版本、不同類型的多套庫信息。然后在“workspace”下建立各個“session”,以保存一套庫的整體信息,對應(yīng)某一版本的庫。在“session”下面導(dǎo)入各個庫單元,并在單元下創(chuàng)建相應(yīng)的“view”,對應(yīng)庫的不同類型。例如LEF/ GDS /CDL /Verilog /Timing liberty等。在某一種庫單元類型“view”下包括了具體的庫文件,如果相同類型的不同庫單元還需要再分組,可以繼續(xù)在“view”下建立“corner”。例如,Timing liberty類型的庫,不同的設(shè)計(jì)場景下會有不同的庫文件與之對應(yīng);Verilog類型的庫,也經(jīng)常會分為包括和不包括電源及地信號接口的兩套庫信息。
這種層次化管理的好處是便于進(jìn)行庫單元的檢查和比較。當(dāng)設(shè)計(jì)者希望檢查同一套庫中不同類型的庫文件是否一致,例如GDS庫是否與LEF庫匹配,可以對同一session下的GDS view和LEF view進(jìn)行對比檢查。當(dāng)設(shè)計(jì)者希望比較兩套庫孰優(yōu)孰劣,例如兩個版本的Timing liberty庫,希望找出面積和功耗較小的,可以對不同session下的Timing view進(jìn)行性能比較。當(dāng)希望看到不同場景下時序庫的區(qū)別,可以比較同一session下的同一Timing view的不同corner。
定義: 自我檢查“self-check”是指針對某一具體類型的庫單元文件,按照該類型的設(shè)計(jì)規(guī)則進(jìn)行庫的正確性檢查。
定義: 對比檢查“cross-check”是指針對不同類型的庫單元文件,對比檢查庫所包含的內(nèi)容是否一致。
定義: 性能比較“compare”是指針對相同類型的不同庫單元文件,比較庫單元定義的指標(biāo)參數(shù)的優(yōu)劣(包括性能、功耗、面積等)。
圖2給出了針對GDS庫的自我檢查結(jié)果。通常來講,對一套庫會進(jìn)行單元類型定義是否正確,單元引腳(pin)名稱和方向是否正確,電源和地信號定義是否正確等通用性檢查。對于物理版圖類型的庫,例如LEF庫和GDS庫,還會檢查單元是否在邊界之內(nèi),形狀是否與網(wǎng)格對齊,布線層是否正確等針對性檢查。
圖3給出了針對Timing liberty庫和Verilog庫的對比檢查結(jié)果。對于某一個庫單元,其功能描述應(yīng)該在不同類型的庫里面定義一致。如果在不同類型的庫里面的定義不等價,那么會影響設(shè)計(jì)的正確性。通常來講,針對不同類型的庫,會檢查單元面積定義、單元邊界、單元數(shù)目、單元引腳名稱及方向是否一致等通用性檢查。對于網(wǎng)表Verilog庫和時序Timing liberty庫,還會進(jìn)行引腳功能是否一致,timing檢查定義是否一致等針對性檢查。
圖4給出了針對不同Timing liberty庫之間的比較結(jié)果。兩套庫在單元性能、功耗、面積、時序約束等各個性能參數(shù)方面進(jìn)行了比較,并給出歸一化的相對誤差值,圖形化的結(jié)果顯示方便使用者選擇、評判兩套庫的優(yōu)劣。
綜上所述,通過workspace/session/view/corner等概念,可以將眾多的庫單元文件進(jìn)行層次化管理。針對具體的庫單元文件,可以進(jìn)行自我檢查/對比檢查/性能比較等操作,并給出報告和圖形化顯示結(jié)果。方便使用者檢查庫單元設(shè)計(jì)的正確性、一致性和完整性。
附圖說明
圖1 庫單元的層次化組織結(jié)構(gòu)
圖2 庫單元的self-check檢查:GDS庫
圖3 庫單元的cross-check檢查:Timing庫與Verilog庫
圖4 庫單元的compare比較:Timing liberty庫之間
具體實(shí)施步驟:
結(jié)合一個具體的實(shí)例說明檢查庫單元正確性及一致性,保證庫設(shè)計(jì)質(zhì)量的處理方法,操作流程步驟如下:
1)準(zhǔn)備所有類型的庫文件作為輸入,可以包括描述標(biāo)準(zhǔn)單元物理信息的LEF庫;描述版圖信息的GDS庫;描述網(wǎng)表信息的Verilog庫;描述仿真信息的CDL庫;描述時序信息的Timing liberty庫等等;
2)打開EDA工具,在當(dāng)前工作目錄下建立workspace;
3)在workspace下建立各個session,以對應(yīng)不同的庫版本,例如session_v_0_1;
4)在session下導(dǎo)入各個單元并建立相應(yīng)的view,例如 LEF/GDS/CDL/Verilog/Timing liberty 等;
5)在某一view類型下建立不同的corner,例如在Timing liberty類型下建立corner_fast和corner_slow兩個corner;
6)導(dǎo)入所有輸入庫單元文件,運(yùn)行“self-check”檢查庫單元的正確性,運(yùn)行“cross-check”檢查庫單元之間的一致性,運(yùn)行“compare”比較庫單元之間的性能差異。
7)查看檢查報告。