張卓先
摘 要:Calibre是業界流行的驗證工具,它提供了各個方面的驗證方法來確保芯片能順利流片。Calibre所具有的編程語言不僅僅是其規則文件的重要組成部分,更能提供很多優化驗證流程和效率的解決方案。該文以對Calibre編程語言的簡介開始,討論了一些能有效提高后端工作效率的語句編寫。
關鍵詞:Calibre 編程語言 后端
中圖分類號:TP391 文獻標識碼:A 文章編號:1674-098X(2017)03(b)-0120-02
Calibre是美國mentor公司開發的一款深亞微米集成電路驗證工具,它分為DRC(design rule check,用于檢測版圖圖形是否符合代工廠的工藝要求),LVS(Layout Versus Schematic,用于對比版圖和電路的一致性),ERC(Electronics Rule Checking,用于提取版圖中的寄生參數以便進行仿真),ANT(Antenna,用于檢查版圖中的天線效應),DFM(Design for Manufacturer,可制造性設計)等若干模塊,Calibre工具的驗證文件使用其獨有的編程語言編寫而成,這是一種具有高度函數化功能的語言,該文將從DRC和LVS規則驗證文件入手,介紹它們的一般框架結構以及對于驗證很有用處的一些語句的編寫。
1 Calibre驗證文件的基本框架結構
通常情況下,DRC與LVS的驗證文件是各自獨立編寫的,但也有極少數的工藝廠從方便角度考慮會將這兩種驗證功能集中于同一個文件之上。
在驗證文件的開頭,一般是開關定義語句,格式為:#DEDINE與#IFDEFINE。
如:#DEFINE mimcap_1p0,這個開關定義了是否使用某種電容,而如果后面將使用這種電容,則由#IFDEFINE mimcap_1p0語句來完成這項功能。
接下來是環境參數設置語句和DRC,LVS的一些特有設置,前者定義了參與驗證的文件類型、路徑,電容電阻度量單位等,而后者則規定了驗證過程中需要遵守的一些基本運行法則,如版圖是否檢查格點大小與銳角圖層,是否保證端口名稱與大小寫的精確匹配,是否濾去版圖中的DUMMY器件等。這之后,是定義版圖原生層次與產生衍生層次的語句。
整個驗證規則文件中最重要的檢查版圖繪制規則(DRC)和進行版圖與電路比較(LVS)的主體程序則在此之后編寫。
規則文件的最后是檢查版圖電氣連接的語句。
2 Calibre編程語言的命令簡介
Calibre具有一些高度函數化功能的命令,它的編程命令大致可以分為3類:命令型語句,如LVS FILTER,這條語句定義了在驗證過程中可以濾去的器件類型;邏輯運算語句,AND,OR,XOR,NOT,它們利用邏輯運算來生成圖形;圖形描述性語句,如length layer,它選定了長度符合要求的相應圖形的邊緣。Calibre利用后兩種命令語句的組合來產生衍生圖層或是進行復雜的圖形運算,這其中最常見的命令定義如下:
INT,EXT,ENC。
3 若干Calibre DRC和LVS驗證語句的編寫
大部分工藝廠提供的規則文件只有最基本的驗證命令,但很多對于提高電路流片成功率非常重要的的語句卻并不包含在內,接下來該文就將介紹一些能提高驗證效率和流片可靠性的語句編寫方法。
3.1 檢查懸浮線的語句
懸浮線指的是芯片上沒有與電源或地形成直流通路的懸空部分,一般分為兩種,金屬懸浮線以及多晶硅懸浮線,但不論是哪種懸浮線,在進行離子刻蝕的過程中,它們都可能吸引大量的電荷積聚其上,這樣就會產生很多危害,比如改變周邊器件的電學特性甚至擊穿柵氧結構。因此,在LVS文件中添加檢查懸浮線的驗證語句就顯得十分重要了,它既可以查找所有的懸浮線,又可以分門別類地查找各個圖層,命令如下:
PATHCHK !LABELED //查找一切懸浮線(包括為補充金屬密度而添加的DUMMY金屬)。
PATHCHK !LABELED poly //查找懸浮的多晶硅。
PATHCHK !LABELED m1 //查找懸浮的第一層金屬。
PATHCHK !LABELED m2 //查找懸浮的第二層金屬。
PATHCHK !LABELED NOFLOAT //查找不包含DUMMY金屬在內的其他一切懸浮線。
3.2 檢查金屬線寬度的語句
寬金屬線在各個工藝廠定義不盡相同,但一般認為寬度超過10 μm的金屬線就可以被視作寬線,這些線需要在沿著電流流動的方向上開槽,這些槽也被稱為SLOT。過寬的線一般存在幾個危害,一是增大了局部金屬的密度,容易造成刻蝕不干凈;二是寬線在進行平整化工藝時會比其他地方更易形成凹陷的區域,這樣就會改變線路寄生電容和電阻參數,影響芯片性能;三是電流具有趨膚效應,SLOT所形成的槽更容易分散電流,這樣也在某種程度上減小了電遷移發生的可能性。檢查寬金屬線的語句示例如下:
X = Metal WITH WIDTH > 10 //這條語句用于找出一切寬度大于10 μm的金屬線。
3.3 添加金屬DUMMY的語句
需要添加金屬DUMMY的場合一般發生在芯片中金屬密度不足的情況下。金屬密度不足是可能造成平整化工藝后芯片表面不平坦的原因之一,這種問題帶來的直接后果就是電路寄生電容和電阻電學參數的漂移。一般情況下,添加金屬DUMMY的工作是在提交了版圖數據之后由工藝廠代為完成的,不過,如果設計公司從電路性能考慮,對于芯片金屬密度有著更為特殊的要求,那么由自己完成金屬DUMMY的填充將是非常理想的。該文將以金屬層為例,介紹添加金屬DUMMY的語句。
Layer map layer1 [datatype] type1 layer2 // 映射語句layer map用來給gds或者database文件中的圖層號在驗證文件中分配一個新的層號,以方便后續的圖層運算,其中,layer1和type1分別是gds或database中的圖層號與數據類型號,layer2則是驗證文件中新生成的圖層號,比如:
Layer map 42 datatype 0 6163 //在驗證文件中給金屬層分配新的層。
Layer metal 6163 //號。
Layer map 64 datatype 0 8357 //給生成層分配層號,在此層次覆蓋Layer area 8357 //的區域內,DUMMY陣列將會產生。
//Variable命令用于定義變量,其格式為variable name value,該文用它來規定DUMMY金屬矩形的大小和間距。
Variable metaldummyW width //用于定義DUMMY矩形的寬度。
Variable metaldummyL length //用于定義DUMMY矩形的高度。
Variable offdummyX x //用于定義偏移量,以此來調整。
Variable offdummyY y // DUMMY陣列的松散度。
//最終芯片中生成的DUMMY將是依照上述各變量定義而成的金屬矩形所組成的陣列。陣列的定義由shift和rectangle命令共同完成。
//shift命令用來產生相對原圖層具有特定偏移量的新圖層,其格式如下:
Shift layer by x y //x y即為規定的偏移量。
//rectangles語句用于生成矩形陣列,它的定義如下所示:
Regtangles width length widthspace lengthspace inside of layer area_name
//width和length分別是生成的矩形的寬度和高度,widthspace和lengthspace則分別定義了陣列中矩形與矩形之間的橫向及縱向間距。利用之前variable命令所定義的各個變量和圖層映射命令定義的生成層,最終產生DUMMY陣列的語句如下:
Dummy = shift(Rectangles metaldummyW metaldummyL metaldummyW+ offdummyX metaldummyL+ offdummyY inside of area) by metaldummyW metaldummyL
//最后,利用copy和drc check map命令將之前生成的矩形陣列轉變為gds格式的數據并最終輸出。
Dummy{copy dummy}drc check map dummy 42 0 aref metaldummy metaldummyW metaldummyL
//copy命令的作用是把計算后的圖型轉變為gds格式,drc check map則規定了gds數據的輸出結構。上述命令中,42 0再次表明了金屬層在gds格式中的圖層號和數據類型號,aref是一種能有效減少數據占用空間的輸出格式,metaldummy則是最終輸出gds的文件名稱。
//利用DRC驗證的運行方式,將上文所述語句作為規則輸入,就能得到最終包含DUMMY金屬陣列的gds文件。
4 結語
該文介紹了mentor公司驗證工具Calibre所使用規則文件的組成結構和語言特點,提供了若干能有效提高后端工作效率和流片成功率的驗證語言的編寫方法,希望能對廣大后端工程師有所幫助。
參考文獻
[1] (美)黑斯廷斯.模擬電路版圖的藝術[M].2版.張為,譯.電子工業出版社,2007.
[2] Standard Verification Rule Format[Z].Mentor Graphics,2009.