关于区块链:Cadence物理库-LEF-文件语法学习持续更新

我是 雪天鱼,一名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 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
  • 更多技术文章和学习材料,请关注我的公众号:【集成电路设计教程】
  • 全平台对立:【雪天鱼】

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理