资讯详情

资讯详情

LEF/DEF 5.8 手册解读:芯片后端语法核心与避坑实战

简介《LEF/DEF 5.8 语言参考手册》是Cadence于2017年发布的官方规范文档聚焦数字IC后端设计、物理验证及EDA工具开发群体系统讲解LEF库交换格式与DEF设计交换格式两种描述语言的设计目的、语法规则和实际应用场景可帮助读者在一份文档中完整理解从工艺库到设计实现的数据接口规范。资源包仅包含1个PDF文件压缩包大小约2.48MB以文本格式为主页面组织适合按章节快速定位便于作为案头参考书随时查阅整体轻量易用。手册详细阐述了LEF中的技术层定义、单元模型几何、间距规则、填充隔离区以及宏模型具体涉及金属层、多晶硅层、接触层的电气特性描述以及单元引脚定义、布线阻塞区域等重要内容同时覆盖DEF中的模块布局、网络连接、物理分区、约束设置与物理属性包含设计名称、分线网格、电源域定义、约束路径等实现信息内容覆盖从工艺信息到设计实现的完整数据交换需求。阅读后读者能更准确地编写、解析和调试LEF/DEF文件确保工具间数据传递的一致性与可制造性对从事先进工艺节点设计规则分析、物理综合、布局布线以及签核验证的工程师均有直接参考价值。已有2174人学习下载适合需要深度掌握Cadence数据格式的IC设计工程师。1. 为什么后端工程师手里要常备一本 LEF/DEF 5.8 手册做数字后端的人基本都经历过这种场面从库里拿来一个 LEF 文件或者从布局工具导出 DEF 准备交给下一棒结果对端工具一读就报错提示某个关键字不存在、某个层找不到、某个值超出范围。这类问题十有八九不是工具坏了而是 LEF/DEF 文件本身的语法或者语义没有对上版本规范。LEF/DEF 5.8 语言参考手册就是这套格式的“最终解释权”它把 Library Exchange Format 和 Design Exchange Format 的每一个语句、每一个参数、每一条顺序约束都写清楚了。对芯片后端工程师、物理验证工程师和 EDA 脚本开发者来说这本手册既是排查语法报错的字典也是写 LEF/DEF 解析与生成代码时的依据值得放在手边随时翻。2. LEF 语法核心技术层、间距规则与 Macro 定义怎么读LEF 这一半描述的是“工艺和库长什么样”。它不关心你的芯片具体放了多少个实例只关心工艺里有哪几层金属、每层多宽、间距多少以及标准单元库里的每个 cell 长什么样、引脚在哪。读懂 LEF 是后续理解 DEF 的前提因为 DEF 里所有与物理规则相关的引用最终都要回到 LEF 的定义上。2.1 LEF 文件骨架从 VERSION 到 END LIBRARY 的顺序约束LEF 文件不是随便把语句堆在一起就能解析的。手册第 1 章明确规定了语句的排列顺序这算是新手最容易忽略、也最容易翻车的地方。一个标准 LEF 文件的基本顺序是 VERSION、BUSBITCHARS、DIVIDERCHAR、UNITS然后才是层定义、Via 定义、Site 定义、Macro 定义最后以 END LIBRARY 收尾。顺序错了轻则解析告警重则某些工具直接拒绝读入。VERSION 5.8 ; BUSBITCHARS [] ; DIVIDERCHAR / ; UNITS { DATABASE MICRONS 1000 ; } LAYER M1 { TYPE ROUTING ; DIRECTION HORIZONTAL ; WIDTH 0.09 ; SPACING 0.10 ; PITCH 0.20 ; } END M1 END LIBRARY这段代码里VERSION 声明了文件遵循的 LEF 版本5.8 这个版本号决定了解析器启用哪些新关键字。BUSBITCHARS 和 DIVIDERCHAR 分别定义了总线位选择符和层级分隔符[]和/是绝大多数工艺库的默认写法。UNITS 段里的 DATABASE MICRONS 1000 表示数据精度1000 意味着 1 微米被分成 1000 个数据库单位也就是单位精度为 0.001 微米。后面的 LAYER M1 是金属 1 层的定义TYPE ROUTING 表明它是布线层DIRECTION 指定主布线方向WIDTH 是默认线宽SPACING 是同层最小间距PITCH 是布线轨道间距。注意这里所有长度单位都是数据库单位也就是 0.09 实际代表 0.09 微米。关于顺序我一般会这样检查拿到一个陌生 LEF 文件后先不看内容直接搜一下 END LIBRARY 前面有没有 VERSION 和 UNITS再用脚本把 LAYER、VIA、SITE、MACRO 这四类关键字的出现顺序打印出来。如果发现 SITE 出现在 MACRO 之后那基本可以断定这个文件是手工拼出来的解析器大概率会报错。常见的做法是让工具自己重新导出一次 LEF格式会规范很多。2.2 ROUTING 层与 CUT 层主布线参数和通孔规则的差异工艺库的 LEF 里层定义类型不止一种。ROUTING 层用于走线CUT 层用于定义通孔切割两者在关键字上是完全不同的两套。如果把 CUT 层当成 ROUTING 层来读或者反过来解析器给出的错误信息往往让人摸不着头脑因为提示的关键字和参数完全对不上。LAYER VIA1 { TYPE CUT ; SPACING 0.10 ; WIDTH 0.04 ; } LAYER M2 { TYPE ROUTING ; DIRECTION VERTICAL ; WIDTH 0.09 ; SPACING 0.10 ; PITCH 0.20 ; }CUT 层的定义比 ROUTING 层简单很多核心是 SPACING 和 WIDTH。SPACING 是通孔之间的最小间距WIDTH 是通孔切割的最小尺寸。这里有个容易误解的点CUT 层没有 DIRECTION因为它是二维的切割形状没有主布线方向的概念。ROUTING 层的 DIRECTION 只有 HORIZONTAL 和 VERTICAL 两种值它决定布线器在该层上优先走横向还是纵向。对于 5.8 版本ROUTING 层还支持一些进阶关键字比如 ACCORDION、FIXEDMASK、OFFSET 等。FIXEDMASK 是 5.8 引入的用于标记某些金属层在制造时使用固定掩模不能在布线阶段自由使用。实际项目中如果某层被标记了 FIXEDMASK布线器不会自动避开需要在约束文件里额外处理这一点在 28nm 以下的工艺里特别重要因为 double patterning 的掩模限制会直接影响可布线性。2.3 SITE 与 MACRO单元模型的几何边界怎么定义SITE 定义了单元摆放的行距和高度基础MACRO 定义的是具体单元的边界和引脚。MACRO 里引用的 SITE 必须是 LEF 文件里已经定义过的否则解析器会报“site not found”。这个引用关系是 LEF 里最常见的耦合点之一。SITE CORE { CLASS CORE ; SIZE 0.56 BY 4.32 ; SYMMETRY X Y ; } MACRO INV_X1 { CLASS CORE ; ORIGIN 0 0 ; SIZE 0.56 BY 4.32 ; SITE CORE ; PIN A { DIRECTION INPUT ; LAYER M1 ; RECT 0.10 2.00 0.22 2.20 ; } PIN Y { DIRECTION OUTPUT ; LAYER M1 ; RECT 0.34 2.00 0.46 2.20 ; } OBS { LAYER M2 ; RECT 0.00 0.00 0.56 4.32 ; } } END INV_X1这段代码先定义了一个名为 CORE 的 SITESIZE 0.56 BY 4.32 表示 site 宽度 0.56 微米、高度 4.32 微米。SYMMETRY X Y 表示该 site 在水平和垂直方向都可以镜像翻转这对布局器优化单元朝向很重要。MACRO INV_X1 定义了一个反相器单元CLASS CORE 说明它是核心逻辑单元。PIN 段里DIRECTION 表示信号方向LAYER 指明引脚在哪一层RECT 给出引脚矩形在单元坐标系下的位置。OBS 段是单元的阻挡区告诉布线器这个区域内部不能走线。这里有一个容易忽略的细节MACRO 的 SIZE 必须与 SITE 的 SIZE 匹配或者说 MACRO 的宽度必须是 SITE 宽度的整数倍。如果 MACRO 尺寸与 SITE 不匹配布局器在摆放单元时会出现网格对不齐的问题报错信息通常会指向 PLACEMENT 阶段。我遇到过不少次这种情况原因是 library 生成工具更新后SITE 尺寸变了但 MACRO 里的 SIZE 没同步更新。2.4 非默认规则与 Via 定义什么时候用到 NONDEFAULTRULES除了默认规则LEF 里还有一种 NONDEFAULTRULES用于定义特殊的线宽、间距组合。比如时钟网络需要更宽的线和更大的间距以减少 RC 延迟和串扰就可以通过 NONDEFAULTRULES 实现。5.8 手册里对 NONDEFAULTRULE 的语法约束是它只能在 LAYER 定义之后出现且一个 NONDEFAULTRULE 里可以覆盖多个层的参数。NONDEFAULTRULE WIDE_CLK { LAYER M3 { WIDTH 0.18 ; SPACING 0.20 ; } LAYER M4 { WIDTH 0.18 ; SPACING 0.20 ; } VIARULE VIA1_4 ; }这段定义里WIDE_CLK 规则把 M3 和 M4 的线宽从默认的 0.09 加宽到 0.18间距从 0.10 加大到 0.20。VIARULE VIA1_4 指定了这条非默认规则下使用的通孔规则名称。这里要注意VIARULE 引用的名字必须在 LEF 文件里有对应的定义可以是显式的 VIA 定义也可以是 VIARULE GENERATE 自动生成的定义。如果名字对不上布线器在换层时会突然放弃这条规则而退回默认规则导致时钟树的线和普通信号线一样宽这是非常隐蔽的性能杀手。3. DEF 语法核心从组件到网络的物理描述顺序DEF 描述的是“设计长什么样”。它记录的是当前芯片里有哪些实例、放在什么位置、引脚怎么连、有哪些布线阻挡和区域约束。DEF 本身不带工艺规则所有与工艺相关的参数都要从 LEF 里查询。这也是 LEF 和 DEF 必须配合使用的原因单独看 DEF 只能看到坐标和连接关系但看不到这些坐标对应的物理规则。3.1 DEF 的声明段DESIGN、UNITS 与 DIEAREA 的配合DEF 文件的开头是 DESIGN 声明后面紧跟 UNITS 和 DIEAREA。UNITS 的语法与 LEF 略有不同DEF 用的是 DISTANCE MICRONS 而不是 DATABASE MICRONS。这里的差异在日常使用中很容易被忽略但后果非常严重如果写错关键字解析器默认使用 100 而不是 1000整个设计的坐标会被缩放 10 倍。DESIGN chip_top ; UNITS DISTANCE MICRONS 1000 ; DIEAREA ( 0 0 ) ( 2000 2000 ) ; COMPONENTS 12 ; - inst1 INV_X1 PLACED ( 100 100 ) N ; - inst2 INV_X1 PLACED ( 300 100 ) FN ; END COMPONENTS END DESIGN这段 DEF 声明了一个名为 chip_top 的设计坐标系原点在 (0,0)芯片尺寸为 2000×2000 数据库单位也就是 2 微米乘 2 微米在 1000 精度下。COMPONENTS 12 声明后面有 12 个实例这里只列出了两个。每个实例行的格式是实例名 单元名 PLACED 关键字 坐标 朝向。N 表示正向放置FN 表示垂直翻转。坐标都是相对于 DIEAREA 原点计算的。DIEAREA 的坐标单位由 UNITS 决定这一点在写 DEF 解析脚本时要特别注意。我一般会在解析脚本里先读 UNITS再读 DIEAREA最后才读 COMPONENTS顺序不能乱因为后面的所有坐标都要依赖前两段来换算。3.2 COMPONENTS 与 PINS实例与端口的语法细节COMPONENTS 段是 DEF 里最长的一段之一每个实例占一行。除了 PLACED 之外还有 FIXED 和 COVER 两种放置状态。FIXED 表示实例位置已经锁定布局器不能移动COVER 通常用于 decap 单元或 filler 单元。三者的语法差别只在关键字上但含义完全不同。COMPONENTS 5 ; - u1 NAND2_X1 PLACED ( 500 300 ) N ; - u2 NAND2_X1 FIXED ( 900 300 ) N ; - u3 BUF_X2 PLACED ( 1500 300 ) F S ; END COMPONENTSFIXED 实例在后续布局优化中不会被移动这在处理时钟树上的 buffer 时很常见。最后一个实例 u3 的朝向是 FS表示先水平翻转再垂直翻转。有些解析工具对朝向字符串的大小写敏感fs和FS可能被当成不同值所以最好统一用大写。PINS 段定义的是芯片级端口也就是顶层设计的输入输出引脚。它与 MACRO 里的 PIN 不是一个概念MACRO 的 PIN 是单元内部引脚DEF 的 PINS 是芯片边界上的端口。PINS 的语法包括 DIRECTION、LAYER、PORT 和 PLACED 信息PORT 里给出引脚几何形状的具体坐标。3.3 NETS 与 SPECIALNETS信号网络与电源网络的描述差异NETS 段描述信号网络SPECIALNETS 段描述电源和地网络。两者的语法结构相似但 SPECIALNETS 里多了对线宽和通孔的特殊要求。为什么要把电源网络单独分出来因为电源网络通常要承载大电流线宽远大于信号线而且往往需要手工指定布线路径。NETS 3 ; - n1 ( u1 A ) ( u2 A ) ( u3 A ) ROUTED M1 0.09 ( 600 300 ) ( 1500 300 ) ; - n2 ( u1 Y ) ( u2 Y ) ROUTED M1 0.09 ( 600 500 ) ( 900 500 ) ; SPECIALNETS 2 ; - VDD ! ( u1 VDD ) ( u2 VDD ) ROUTED M3 0.18 ( 500 100 ) ( 1500 100 ) ; - VSS ! ( u1 VSS ) ( u2 VSS ) ROUTED M3 0.18 ( 500 200 ) ( 1500 200 ) ; END SPECIALNETSNETS 里每个网络行以-开头网络名后跟引脚连接列表每个引脚连接用 ( 实例名 引脚名 ) 表示。ROUTED 关键字后面的 M1 是布线层0.09 是线宽后面的坐标对就是布线的路径。注意 SPECIALNETS 里网络名后跟了!符号这个感叹号表示该网络是电源网络工具会按照电源网络的特殊规则处理比如不检查信号完整性规则。在 5.8 手册里SPECIALNETS 还支持 USE POWER 和 USE GROUND 关键字来显式指定网络类型。如果网络名是一般的名字而不是 VDD/VSS解析器无法自动判断它是电源还是地时USE 关键字就是唯一的判断依据。3.4 BLOCKAGES、REGIONS 与 TRACKS物理约束的三个维度BLOCKAGES 定义布线阻挡区域REGIONS 定义分组区域TRACKS 定义布线轨道。三者分别从“不能去哪”“必须去哪”“默认往哪走”三个维度约束了布局布线的自由度。BLOCKAGES 2 ; - PLACEMENT ( 300 300 ) ( 800 800 ) ; - ROUTING M2 ( 100 100 ) ( 200 900 ) ; REGIONS 1 ; - region1 ( 500 500 ) ( 1500 1500 ) ; TRACKS M1 0.20 DO 100 STEP 0.20 ;PLACEMENT BLOCKAGES 表示这个矩形区域内不能摆放单元ROUTING BLOCKAGES 表示该矩形区域内 M2 层不能走线。REGIONS 定义了一个名为 region1 的区域之后可以在组件行里用 REGION region1 把实例约束到这个区域内。TRACKS 这一行定义 M1 层的布线轨道起点在 0.20共 100 条轨道步长 0.20。布线器在 M1 上走线时中心线必须落在这些轨道上。这里有个实际坑BLOCKAGES 的坐标用的是绝对坐标而 MACRO OBS 用的是单元内部相对坐标。在写脚本检查两者是否重叠时必须先把 OBS 坐标加上实例坐标换算成绝对坐标再与 BLOCKAGES 做交集运算。很多 DRC 违例就是从这里漏出来的。4. LEF 与 DEF 联调增量修改、错误检查与跨工具交换LEF 和 DEF 在实际项目中是成对出现的。LEF 描述工艺库信息DEF 描述设计实例信息两者靠层名称、单元名称、引脚名称建立关联。这一章从联调角度讲清楚增量 LEF 的用法、错误检查机制和版本兼容的边界。4.1 增量 LEF分层设计时的合并策略在大型芯片设计里LEF 文件往往不止一个基础工艺 LEF、单元库 LEF、IP 宏 LEF 分开提供最后在工具里按顺序读入。5.8 手册里对增量 LEF 的描述是后读入的 LEF 可以覆盖先读入的某些定义但不能新增已经被定义为固定值的关键字。这就是 Incremental LEF 的核心机制。常见的做法是基础工艺 LEF 定义所有层的 WIDTH、SPACING、PITCHIP 供应商的 LEF 只包含 IP 相关的 MACRO 定义和一个 LAYER OVERLAP 层用于布线阻挡。读入顺序错了比如先把 IP LEF 读进来再读基础工艺 LEF工具会因为 IP LEF 里的层定义不完整而报错或者更隐蔽的情况是基础工艺 LEF 里的层定义被 IP LEF 里的同名层定义覆盖了导致层参数错误。我一般会写一个脚本检查读入顺序先读工艺层完整的文件再读单元库最后读 IP 宏。判断标准很简单每个文件里出现的 LAYER 关键字后读的文件不应修改已经存在的层的 ROUTING 属性。如果确实需要覆盖就明确放在一个补丁文件里并注释标明原因。4.2 错误检查机制解析器报错码的含义LEF/DEF 解析器自带错误检查机制5.8 手册的第 3 章专门讲了 Message Facility 和 Error-Checking Facility。解析错误通常会以 LEFDEF-xxx 格式的代码输出。理解这些错误码的分类方式比记住每个具体错误码更有用。错误大致分三类语法错误、语义错误、警告。语法错误指关键字拼写或语法结构不对语义错误指关键字合法但值不合理比如 SPACING 为负数或者 MACRO 里引用了不存在的 SITE警告指文件合法但可能不符合预期比如某个层定义了但没有被任何 Via 使用。遇到 LEFDEF 报错时我最常用的排查方法是先看错误码后面的行号再往前找上下文。如果错误信息里带着 token 信息比如 unexpected token M2那多半是上一个语句没有正确闭合也就是缺了分号或 END。LEF/DEF 的语句闭合是非常严格的少一个分号可能会导致后面几十行全部被解析成同一个语句错误信息反而指向一个完全无辜的位置。4.3 版本兼容5.8 与旧版本工具混用的边界5.8 版本发布后新工具读旧文件通常没有问题但旧工具读 5.8 文件时会遇到不认的关键字。手册里明确说5.8 新增的关键字如果没有在 VERSION 5.8 声明之后使用旧工具会忽略它们但一旦声明了 VERSION 5.8旧工具就会按 5.8 规范解析遇到不认识的关键字直接报错。这意味着在实际流程里如果团队里还有没升级到 5.8 兼容版本的工具LEF 文件宁可保守一点版本号写成 5.7 或更早不要为了用 FIXEDMASK 等新功能而声明 5.8。新旧工具混在一个流程里时按最旧的工具支持的版本来写 VERSION 是最稳妥的做法。这个经验我在多个项目里反复验证过血泪教训不少。5. 避坑实战LEF/DEF 解析失败的五个高频问题这一章直接列出我在实际项目中反复踩过的五个高频问题每个都按“现象 → 原因 → 解决”的方式写清楚。如果你正被某个 LEF/DEF 报错折磨可以先到这里对号入座。5.1 坐标整体放大十倍或缩小十倍现象DEF 读入工具后所有实例坐标和芯片尺寸整体变成了预期值的十倍或十分之一。芯片面积看起来完全不对。原因DEF 的 UNITS 段写的是 DISTANCE MICRONS而 LEF 里是 DATABASE MICRONS。如果 DEF 文件里漏写了 UNITS 段解析器会按默认精度 100 处理也就是 1 微米等于 100 个数据库单位。而大部分 5.8 工艺库的 DEF 都是用 1000 生成的。坐标系换算基数一变所有坐标都跟着错。解决先检查 DEF 文件头部有没有 UNITS DISTANCE MICRONS 1000。如果是生成脚本输出的文件检查脚本里单位常量是否写成 1000。我习惯在解析脚本里加一个断言读取 UNITS 后立即检查值是否在预期范围内常见值是 100、1000、2000不在范围内就终止解析并打印警告。提示LEF 和 DEF 的 UNITS 关键字不同一个是 DATABASE一个是 DISTANCE混用后解析器不一定报错但结果必然错误。5.2 层名称大小写不一致导致引用丢失现象单元库 LEF 里定义的引脚层是 M1但 DEF 的 SPECIALNETS 里写的是 m1。工具读入时报错或警告接着电源网络全部丢失ECO 布线时电源引脚悬空。原因LEF/DEF 的层名称是大小写敏感的。M1 和 m1 是两个完全不同的层名。实际项目中DEF 文件可能是由脚本生成的脚本里对层名字符串做了大小写转换就会导致这种问题。解决写脚本时强制统一层名字符串不要依赖人工输入。我通常在生成 DEF 的脚本里维护一个层名映射表输入层名先查表再输出查不到就直接报错终止。这样可以把错误拦截在源头。5.3 EXTENSIONS 语法段被工具静默忽略现象LEF 文件里写了 EXTENSIONS 段工具读入时不报错但后续逻辑好像完全没有生效比如某些自定义属性查不到。原因EXTENSIONS 段是给未来扩展用的5.8 手册明确说明解析器遇到 EXTENSIONS 时会跳过内容并继续解析。如果工具不识别 EXTENSIONS 里的自定义关键字它不会有任何提示但也不会把内容加载到内存里。解决不要依赖 EXTENSIONS 段传递关键信息。如果确实需要自定义属性用 PROPERTYDEFINITIONS 定义属性然后在具体对象上赋值。这样属性会进入工具的数据库可以被查询和使用。EXTENSIONS 只适合放注释性质的说明文字。5.4 DEF 中 NET 引脚顺序写反导致连接错误现象布线完成后做 LVS发现某个标准单元的引脚连接关系与网表不一致但 DEF 文件里网络名和引脚名在文本上看都是对的。原因DEF 的 NETS 段里引脚连接列表的顺序在某些工具里会被解释为连接顺序尤其在有多个相同类型引脚比如多个 IN 引脚时更容易出错。如果生成脚本把引脚的顺序打乱了工具按顺序匹配引脚名时就会连错。解决检查生成脚本确保引脚连接列表的顺序与单元库网表定义的引脚顺序一致。最稳妥的验证方法是在布线后用工具导出一份标准 DEF与脚本生成的 DEF 做 diff重点比较组件行的顺序和每个 NET 行的引脚顺序。5.5 VIARULE GENERATE 生成的过孔尺寸不满足 DRC现象使用 VIARULE GENERATE 自动生成过孔后DRC 报出通孔间距违例但 LEF 文件里定义的 SPACING 看起来是满足规则的。原因VIARULE GENERATE 的语法里通孔的尺寸和间距是分上下两层分别指定的。如果只设置了上下两层的间距而没有设置 CUT 层的间距生成的过孔阵列中通孔之间的距离可能不符合工艺要求。解决在 VIARULE GENERATE 定义里显式指定 CUT 层的 SPACING 和 WIDTH。不要依赖工具的默认值。我一般会在生成完后把 Via 阵列拆成矩形坐标跑一遍简单的间距检查确认最小间距大于 CUT 层规则值。6. 进阶自查把 LEF 技术文件优化和天线比率验证变成习惯前面五章讲的都是怎么读、怎么用、怎么排错。最后一章聊一个更进阶的主题拿到一份 LEF 技术文件后除了确认它能被工具正常解析之外还应做哪些主动优化和验证。这部分内容来自手册附录 B 和附录 C 的实践总结我直接说结论。手册附录 B 的主题是“Optimizing LEF Technology for Place and Route”里面给出了若干条关于布线 Pitch、宽金属间距、过孔延伸和默认过孔的指导原则。其中我体会最深的是布线 Pitch 的设定Pitch 太大可布线资源不足拥塞度升高Pitch 太小信号串扰和 DRC 违例概率上升。常见做法是把 Pitch 设为该层最小布线间距加最小线宽的值也就是 Pitch Width Spacing。如果工艺允许Pitch 设为这个值的偶数倍可以更方便地布线。附录 C 的主题是“Calculating and Fixing Process Antenna Violations”讲的是天线效应的计算与修复。天线比率是栅极面积与周边导体面积的比值这个比值超过工艺上限时等离子体刻蚀过程中积累的电荷可能击穿栅氧化层。LEF 文件里与天线相关的关键字集中在 LAYER 段包括 ANTENNAAREARATIO、ANTENNADIFFAREA、ANTENNAGATEAREA 等。我每次拿到新工艺的 LEF 技术文件后都会强制走一遍这几步第一步检查所有 ROUTING 层的 Pitch 是否等于 Width 加 Spacing第二步检查是否存在 WIREEXTENSION 设置特别是 Via 附近没有线延伸的话天线效应风险会显著升高第三步把天线比率相关的关键字值列成一张表对照工艺文档里的上限值逐一核对。这三步走完之后我才会把这版 LEF 放进正式的流程里用。从那以后我每次换工艺节点或者更新 PDK 版本都会把这一套 LEF 自查流程走一遍大概花一个多小时但省下的排错时间远远超过这个数。这份 LEF/DEF 5.8 手册里值得深挖的细节还有很多希望这份手册资源能帮你在后端流程里少踩几个坑。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →