我是 雪天鱼,一名FPGA爱好者,钻研方向是FPGA架构摸索。

关注公众号,拉你进“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 masterslicecut01 cutmetal1 routingcut12 cutmetal2 routingcut23 cutmetal3 routing

这个对做过幅员的敌人而言应该很容易了解,就是 poly + via + metal1 + via1 + metal2 + via2 +...多层叠加,cut 层实际上就是用来定义 vias的。

语法:

LAYER layerNameTYPE 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 = 90oCEND mcon

这里因为波及的语法很多,就不一一解说了,等前面用到时,再进行更新,先对下面的实例进行解说。

语句形容
WIDTH通孔宽度(正方形)
SPACING通孔之间最小间距
ENCLOSURE
BELOW :指定通孔边界与下方相邻金属层边界的最小间距
ABOVE:指定通孔边界与上方相邻金属层边界的最小间距

看图解释,通孔宽度也就是指的上图两头方块(这里有点像长方形了)的宽度,overhang1 是指的通孔左右两边间隔金属边界的间距,overhang2 是指的通孔高低两边间隔金属边界的间距。

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

三、Layer(Masterslice or Overlap)

在设计中定义 MasterSlice(非布线)或 overlap layers。 Masterslice layers 通常是多晶硅层,只有在宏单元在多晶硅层上有 pins 时才会定义。

语法:

LAYER layerNameTYPE {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 nwellLAYER pwell  TYPE MASTERSLICE ;  PROPERTY LEF58_TYPE "TYPE PWELL ;" ;END pwell
  • 更多技术文章和学习材料,请关注我的公众号:【集成电路设计教程】
  • 全平台对立:【雪天鱼】