Cadence物理庫 LEF 檔案語法學習【持續更新】

雪天魚發表於2022-02-13

我是 雪天魚,一名FPGA愛好者,研究方向是FPGA架構探索。

file

關注公眾號,拉你進“IC設計交流群”。

@

一、LEF簡介

LEF是 Library Exchange Format 的縮寫,描述了設計的庫資訊,庫資料包括了 layer、via、placement site type 、macro cell 定義。

1.1 通用規則

  1. 識別符號如 net name 、cell name 都限制在2048字元以內
  2. 距離定義單位為微米。
  3. 距離精度由 UNITS 語句控制
  4. LEF語句以分號(;)結尾. 語句的最後一個字元與分號之間必須有一個空格。

1.2 管理 LEF 檔案

可以在一個 LEF 檔案中定義設計所需的所有的庫資訊;但這樣做將建立一個複雜且難以管理的大檔案。所以可以將庫資訊分成兩個檔案,一個是“technology”LEF檔案,另一個是“cell library”LEF檔案。

  • technology LEF file:工藝 LEF 檔案包含設計的所有工藝資訊,例如佈局佈線設計規則以及層的處理資訊。一個 technology LEF 檔案可以包括以下任何一個LEF語句:
[VERSION statement]
[BUSBITCHARS statement]
[DIVIDERCHAR statement]
[UNITS statement]
[MANUFACTURINGGRID statement]
[USEMINSPACING statement]
[CLEARANCEMEASURE statement ;]
[PROPERTYDEFINITIONS statement]
[FIXEDMASK ;]
[LAYER (Nonrouting) statement
 | LAYER (Routing) statement] ...
[MAXVIASTACK statement]
[VIA statement] ...
[VIARULE statement] ...
[VIARULE GENERATE statement] ...
[NONDEFAULTRULE statement] ...
[SITE statement] ...
[BEGINEXT statement] ...
[END LIBRARY]
  • cell library LEF file :單元庫LEF檔案包含設計所需的巨集和標準單元資訊。
    庫LEF檔案可以包含以下任何LEF語句:
[VERSION statement]
[BUSBITCHARS statement]
[DIVIDERCHAR statement]
[VIA statement] ...
[SITE statement]
[MACRO statement
  [PIN statement] ...
  [OBS statement ...] ] ...
[BEGINEXT statement] ...
[END LIBRARY]

注:讀取 LEF 檔案時,必須先讀取 technology LEF file,因為在 cell library LEF file 中會用到在
technology LEF file 定義的一些庫資訊。

二、Layer (Cut)

通過分配名稱和設計規則來定義每個 cut 層。每個 cut 層都必須分開定義。由低而上的順序中定義圖層。例如:

poly masterslice
cut01 cut
metal1 routing
cut12 cut
metal2 routing
cut23 cut
metal3 routing

這個對做過版圖的朋友而言應該很容易理解,就是 poly + via + metal1 + via1 + metal2 + via2 +...多層疊加,cut 層實際上就是用來定義 vias的。

語法:

LAYER layerName
TYPE CUT ;
[MASK maskNum ;]
[SPACING cutSpacing
   [CENTERTOCENTER]
   [SAMENET]
   [ LAYER secondLayerName [STACK]
    | ADJACENTCUTS {2 | 3 | 4} WITHIN cutWithin [EXCEPTSAMEPGNET]
    | PARALLELOVERLAP
    | AREA cutArea
   ]
;] ...
[SPACINGTABLE ORTHOGONAL
       {WITHIN cutWithin SPACING orthoSpacing} ... ;]
[ARRAYSPACING [LONGARRAY] [WIDTH viaWidth] CUTSPACING cutSpacing
   {ARRAYCUTS arrayCuts SPACING arraySpacing} ... ;]
[WIDTH minWidth ;]
[ENCLOSURE [ABOVE | BELOW] overhang1 overhang2
  [ WIDTH minWidth [EXCEPTEXTRACUT cutWithin]
  | LENGTH minLength]
;] ...
[PREFERENCLOSURE [ABOVE | BELOW] overhang1 overhang2 [WIDTH minWidth] ;] ...
[RESISTANCE resistancePerCut ;]
[PROPERTY propName propVal ;] ...
[ACCURRENTDENSITY {PEAK | AVERAGE | RMS}
  { value
  | FREQUENCY freq_1 freq_2 ... ;
      [CUTAREA cutArea_1 cutArea_2 ... ;]
      TABLEENTRIES
       v_freq_1_cutArea_1 v_freq_1_cutArea_2 ...
       v_freq_2_cutArea_1 v_freq_2_cutArea_2 ...
       ...
  } ;]
[DCCURRENTDENSITY AVERAGE
  { value
  | CUTAREA cutArea_1 cutArea_2 ... ;
      TABLEENTRIES value_1 value_2 ...
  } ;]
[ANTENNAMODEL {OXIDE1 | OXIDE2 | OXIDE3 | OXIDE4} ;] ...
[ANTENNAAREARATIO value ;] ...
[ANTENNADIFFAREARATIO {value | PWL ( ( d1 r1 ) ( d2 r2 ) ...)} ;] ...
[ANTENNACUMAREARATIO value ;] ...
[ANTENNACUMDIFFAREARATIO {value | PWL ( ( d1 r1 ) ( d2 r2 ) ...)} ;] ...
[ANTENNAAREAFACTOR value [DIFFUSEONLY] ;] ...
[ANTENNACUMROUTINGPLUSCUT ;]
[ANTENNAGATEPLUSDIFF plusDiffFactor ;]
[ANTENNAAREAMINUSDIFF minusDiffFactor ;]
[ANTENNAAREADIFFREDUCEPWL
   ( ( diffArea1 diffAreaFactor1 ) ( diffArea2 diffAreaFactor2 ) ...) ; ]
END layerName

例項:

LAYER mcon
  TYPE CUT ;

  WIDTH 0.17 ;                # Mcon 1
  SPACING 0.19 ;              # Mcon 2
  ENCLOSURE BELOW 0 0 ;       # Mcon 4
  ENCLOSURE ABOVE 0.03 0.06 ; # Met1 4 / Met1 5

  ANTENNADIFFAREARATIO PWL ( ( 0 3 ) ( 0.0125 3 ) ( 0.0225 3.405 ) ( 22.5 408 ) ) ;
  DCCURRENTDENSITY AVERAGE 0.36 ; # mA per via Iavg_max at Tj = 90oC

END mcon

這裡由於涉及的語法很多,就不一一講解了,等後面用到時,再進行更新,先對上面的例項進行講解。

語句 描述
WIDTH 通孔寬度(正方形)
SPACING 通孔之間最小間距
ENCLOSURE
BELOW :指定通孔邊界與下方相鄰金屬層邊界的最小間距
ABOVE:指定通孔邊界與上方相鄰金屬層邊界的最小間距

在這裡插入圖片描述

看圖解釋,通孔寬度也就是指的上圖中間方塊(這裡有點像長方形了)的寬度,overhang1 是指的通孔左右兩邊距離金屬邊界的間距,overhang2 是指的通孔上下兩邊距離金屬邊界的間距。

在這裡插入圖片描述

SPACING 就是指的通孔之間的間距。

三、Layer(Masterslice or Overlap)

在設計中定義 MasterSlice(非佈線)或 overlap layers。 Masterslice layers 通常是多晶矽層,只有在巨集單元在多晶矽層上有 pins 時才會定義。

語法:

LAYER layerName
TYPE {MASTERSLICE | OVERLAP} ;
[MASK maskNum ;]
[PROPERTY propName propVal ;] ...
[PROPERTY LEF58_TYPE
   "TYPE [NWELL | PWELL | ABOVEDIEEDGE | BELOWDIEEDGE | DIFFUSION | TRIMPOLY | TRIMMETAL | REGION]
   ];" ;
[PROPERTY LEF58_TRIMMEDMETAL
   "TRIMMEDMETAL metalLayer [MASK maskNum]
   ]; " ;
END layerName
語句 描述
LAYER layerName 指定該層的名稱。此名稱將在以後引用該層時使用。
TYPE 指定層的用途 ,有兩種
- MASTERSLICE : 層固定在基座陣列中。如果 pins 出現在 MASTERSLICE 層中,則必須定義 vias 以允許佈線器連線那些 pin 和第一個佈線層。Masterslice層不允許用來佈線。在 MASTERSLICE 層和相鄰佈線層之間必須定義一個 cut

- OVERLAP: 用於直線塊重疊檢查的圖層。

例項:

LAYER nwell
  TYPE MASTERSLICE ;
  PROPERTY LEF58_TYPE "TYPE NWELL ;" ;
END nwell

LAYER pwell
  TYPE MASTERSLICE ;
  PROPERTY LEF58_TYPE "TYPE PWELL ;" ;
END pwell
  • 更多技術文章和學習資料,請關注我的公眾號:【積體電路設計教程】
  • 全平臺統一:【雪天魚】

相關文章