☰
LEF/DEF语法解析与布局布线避坑实践
2026/10/27 13:32:32 网站建设 项目流程

简介:《LEF/DEF 5.8 Language Reference》是 Cadence 于 2017 年发布的语言参考手册,面向集成电路物理设计、版图规划及 EDA 工具开发人员,系统说明 LEF 与 DEF 两种 IC 描述语言的语法、元素定义和使用约束。LEF 侧重工艺技术、单元模型、层间规则与宏模型描述,DEF 则覆盖模块布局、网络连接、约束设置、物理分区及电源地等实现信息,可用于理解工具间数据交换与流程衔接。压缩包共 1 个 PDF 文件,大小约 2.48MB,单文档结构完整,便于按章节检索语法条目。已有 2177 人学习,说明其在物理实现与版图相关岗位中具有参考需求。手册偏工具语言规范与工程查表,适合日常设计、规则核对和跨工具数据一致性排查时查阅,也可帮助读者建立 LEF/DEF 在数字后端流程中的整体认识;文档受版权保护,仅限个人非商业用途。

1. 从一份压在硬盘角落的 5.8 版手册说起:LEF/DEF 到底卡在流程哪一环

真正让人头疼的从来不是不会写 LEF,而是明明语法没报错,到了布局布线阶段单元却对不上格点、间距表被工具按最保守的一档吃掉、增量加载后坐标整体偏移半个 site。翻遍手头资料找不到答案,最后在一份 2017 年 5 月发布、页数超过四百页的 5.8 版语言参考里,才发现答案写在「Order of LEF Statements」和附录 B 那几页里。这份文档不是教程,它是 LEF/DEF 两种 IC 描述语言的语法权威定义:LEF 定义工艺层、单元抽象视图、间距与通孔规则,DEF 定义设计的物理实现结果。做数字后端、标准单元库、PDK 交付、自研 EDA 工具解析器的人,绕不开它。搜 lefdefeda 这类词找到这里的大概率也是同一个处境:语法能抄,语义拿不准。

2. LEF 语法拆解:Layer、Macro、Site 三块骨头怎么啃

LEF 文件在一个项目里的角色,是把「工艺能做什么」和「单元长什么样」这两件事用纯文本固定下来。它不关心你最终布成什么样,只负责提供合法解空间。很多人读手册时习惯从 MACRO 章节开始,因为那里最像「单元」;但真正的坑几乎都在 LAYER 章节,尤其是间距规则那一段,一个参数写保守了,布线器直接少掉一层可用资源,时序收敛怎么调都差一口气。

读这份参考手册的正确顺序,我是按数据依赖来的:先看文件头(VERSION / BUSBITCHARS / DIVIDERCHAR / UNITS),再看 LAYER,然后 SITE,再 MACRO,最后 VIA 和 NONDEFAULTRULE。手册本身的章节是按字母序排的,方便查,但不适合顺读。下面三节按依赖顺序拆。

2.1 Routing Layer 里的五个必填参数,少一个都不算完整定义

一个可用的布线层定义,至少要把方向、宽度、间距、网格偏移、厚度这几件事说清楚。手册里 LAYER (Routing) 一节从第 50 页一直排到 112 页,参数极多,但日常真正影响结果的就那几个。我一般先写最小可用版本,再按工艺文档逐条补。

VERSION 5.8 ; # 语法版本,工具按这个选解析器 BUSBITCHARS "[]" ; # 总线位写法,M[0] 还是 M<0> DIVIDERCHAR "/" ; # 层次分隔符,影响 instance 路径 UNITS DATABASE MICRONS 1000 ; # 数据库单位,1 微米 = 1000 DBU END UNITS LAYER Metal1 TYPE ROUTING ; # 关键:ROUTING/CUT/MASTERSLICE/OVERLAP DIRECTION HORIZONTAL ; # 首选布线方向,交替才有意义 PITCH 0.28 ; # 布线节距,必须能被 track 整除 WIDTH 0.14 ; # 默认线宽 SPACING 0.14 ; # 默认边到边最小间距 OFFSET 0.14 ; # 第一条 track 相对原点的偏移 THICKNESS 0.32 ; # 用于寄生参数估算 HEIGHT 1.20 ; # 该层下表面到衬底的高度 RESISTANCE RPERSQ 0.08 ; # 方块电阻,抽取 RC 用 CAPACITANCE CPERSQDIST 0.00012 ; # 面积电容 EDGECAPACITANCE 0.00008 ; # 边缘电容 MINWIDTH 0.14 ; # 最小线宽,DRC 依据 END Metal1

这段里最容易被忽略的是OFFSET和PITCH的配套关系。OFFSET定义的是第一条布线轨道相对坐标原点的位置,如果它和 PITCH 不构成整数关系,工具生成 track 时会产生累积舍入,最终表现为同一行单元在不同区域落点差一个 DBU。另一个隐蔽点是UNITS DATABASE MICRONS:它决定了整份 LEF 的数值精度,一旦和 DEF 里的UNITS DISTANCE MICRONS不一致,读取阶段就会整体缩放,坐标看起来「差不多但全偏了」,这类问题排查起来特别费时间,属于典型的黑匣子症状。

DIRECTION也不能随便填。工艺上金属层通常是横竖交替的,如果相邻两层都写成 HORIZONTAL,布线器在垂直方向会找不到可用层,报出来的往往是「无法完成布线」而不是「层定义有问题」,误导性很强。我见过有人为了省事把整个 LEF 复制一遍只改层名,方向忘了改,调了两天才回头怀疑库文件。

RESISTANCE、CAPACITANCE这几个参数只影响寄生抽取精度,不影响几何合法性。如果项目还在早期评估阶段,这几个值可以先用工艺文档的典型值填上,不必等完整 RC 数据,但量产前必须换成抽取值,否则时序报告的可信度会打折。

2.2 间距规则:一条 SPACING 打天下会在先进节点直接失效

手册在 LAYER (Routing) 里给了三种表达间距的方式,复杂度递增。用哪种不取决于个人偏好,取决于工艺厂给你的规则表长什么样。简单工艺一条SPACING就够;到了 28nm 以下,几乎必然要用SPACINGTABLE,因为间距随平行走线长度变化。

写法语法要点适用场景常见误用
SPACINGSPACING value单值规则、成熟工艺先进节点只写这一条,工具取最保守值,浪费资源
SPACINGTABLE 长度型PARALLELRUNLENGTH {l1 l2 ...}+WIDTH {w1 w2 ...}+ 二维间距矩阵长度相关规则矩阵行列数对不上,解析报错但定位困难
SPACINGTABLE 双宽度型WIDTH {w1 w2} SPACING {s11 s12 s21 s22}宽金属间距规则宽金属被当普通线处理,DRC 爆
WIDETHWIDETH value触发宽线规则的阈值阈值写小,正常线宽也按宽线加间距
SAMENETSPACING ... SAMENET同网络可以靠更近忘记写,同网络过孔阵列被拆开

手册对SPACINGTABLE的解释有一句容易被跳过:矩阵的行对应WIDTH列表,列对应PARALLELRUNLENGTH列表,填充顺序是先行后列。这里错一位,工具不会报语法错,只会按错误的组合查表,结果是某些区域间距偏小、某些区域偏大,DRC 报告里看起来毫无规律。

LAYER Metal3 TYPE ROUTING ; DIRECTION VERTICAL ; PITCH 0.28 ; WIDTH 0.14 ; SPACINGTABLE PARALLELRUNLENGTH 0.00 0.30 0.60 1.20 # 四档平行长度 WIDTH 0.00 0.14 0.30 0.60 # 四档线宽 SPACING 0.14 0.14 0.14 0.28 # 第一行:线宽 0 时的四个间距 0.14 0.14 0.28 0.42 # 第二行 0.14 0.28 0.42 0.56 # 第三行 0.28 0.42 0.56 0.84 ; # 第四行,收尾分号别漏 WIDETH 0.30 ; # 超过此宽度按宽金属规则走 END Metal3

这份代码块里的注释只是说明行列含义,实际文件里 LEF 用#作注释,多数解析器支持,但部分老版本工具对行尾注释容忍度低,交付前最好把注释清掉。参数设置的逻辑是:平行长度越长、线宽越宽,需要的间距越大,这是制造侧 Side-wall 电容和光刻邻近效应的直接结果。WIDETH则是一个开关阈值,超过它,工具会去查宽金属那一档间距,如果阈值定得比默认线宽还小,几乎所有走线都按宽金属处理,资源利用率立刻掉下来。

我的习惯是每写完一个层的间距表,用工具自带的 LEF 检查器跑一遍,再拿一个小规模测试设计布一次,看每层的利用率是否落在合理区间。单纯靠肉眼读矩阵,出错概率不低。

2.3 Macro 与 Site:单元抽象视图的两条硬边界

SITE定义的是行高与行宽的基本单位,MACRO定义的是单元的几何外框和引脚位置。两者必须严格对齐,否则布局阶段会出现单元无法落格的问题。手册对SITE的定义很短,但它是整个布局栅格的基础。

SITE CORE CLASS CORE ; # CORE / PAD / VIRTUAL,类别决定放置行为 SYMMETRY Y ; # 单元可沿 Y 轴镜像 SIZE 0.56 BY 5.04 ; # 宽 0.56,高 5.04,必须等于行高 END CORE MACRO INV_X1 CLASS CORE ; ORIGIN 0 0 ; # 左下角原点,决定坐标基准 SIZE 0.56 BY 5.04 ; # 必须和 SITE 的宽高一致 SYMMETRY X Y ; SITE CORE ; PIN A DIRECTION INPUT ; PORT LAYER Metal1 ; RECT 0.07 0.70 0.21 0.98 ; # 引脚金属矩形,不含 via END END A PIN Y DIRECTION OUTPUT ; PORT LAYER Metal1 ; RECT 0.35 0.70 0.49 0.98 ; END END Y OBS LAYER Metal1 ; RECT 0.00 0.00 0.56 0.35 ; # 阻挡区,布线器不得穿越 END END INV_X1

这里有三条硬边界。第一,SIZE必须和SITE一致,宽度可以是 site 宽的整数倍,高度必须严格等于行高,差一个 DBU 就可能出现单元重叠或空隙。第二,ORIGIN决定坐标基准,如果ORIGIN不是0 0,所有引脚坐标都是相对这个原点的,工具在放置时会做一次平移,调试引脚连接时很容易看错位置。第三,OBS定义的阻挡区是布线器的禁区,写多了浪费资源,写少了会出短路,手册里对OBS与PIN的重叠处理有明确说明,重叠部分按引脚优先。

DIRECTION除了 INPUT/OUTPUT/INOUT,还有 FEEDTHRU 和 POWER/GROUND。电源引脚如果写成普通 INOUT,电源网络布线阶段会被当成信号网络处理,结果是电源轨连不上或者被强行加线。这类错误在库交付环节很常见,属于典型踩坑点。

3. DEF 语法拆解:顺序、耦合、增量三件事

DEF 描述的是「我确实这么做了」,它和 LEF 的关系类似实例与类。手册第 225 页往后是 DEF 语法主体,第 231 页的「Order of DEF Statements」是整章里最短却最有用的一节。DEF 是顺序敏感的,section 顺序错了,解析阶段直接失败,而且错误信息通常只报「unexpected token」,不给上下文,排查成本很高。

3.1 语句顺序不是建议而是强制

手册给出的顺序大致是:VERSION、DIVIDERCHAR、BUSBITCHARS、DESIGN、TECHNOLOGY、UNITS、DIEAREA、ROWS、TRACKS、GCELLGRID、VIAS、STYLES、NONDEFAULTRULES、REGIONS、COMPONENTMASKSHIFT、COMPONENTS、PINS、PINPROPERTIES、BLOCKAGES、SLOTS、FILLS、SPECIALNETS、NETS、SCANCHAINS、GROUPS、BEGINEXT...ENDEXT。实际工具会有一定宽容度,但依赖顺序写反一定出问题。

VERSION 5.8 ; # 必须第一行 DIVIDERCHAR "/" ; # 与 LEF 保持一致 BUSBITCHARS "[]" ; DESIGN top_block ; # 设计名,和文件名不必相同 UNITS DISTANCE MICRONS 1000 ; # 必须和 LEF 的 DATABASE MICRONS 一致 DIEAREA ( 0 0 ) ( 56000 50400 ) ; # 单位是 DBU,不是微米 ROW ROW_0 CORE 0 0 N DO 100 BY 1 STEP 560 0 ; # 行起点、site 名、方向、重复次数 TRACKS X 140 DO 200 STEP 280 LAYER Metal1 ; # 必须与 LEF 的 PITCH/OFFSET 对齐 COMPONENTS 2 ; - U1 INV_X1 + PLACED ( 1120 0 ) N ; - U2 INV_X1 + PLACED ( 1680 0 ) N ; END COMPONENTS PINS 1 ; - A + NET A + DIRECTION INPUT + USE SIGNAL + LAYER Metal1 ( -70 -140 ) ( 70 140 ) + PLACED ( 0 700 ) N ; END PINS NETS 1 ; - A ( U1 A ) ( PIN A ) ; END NETS END DESIGN

ROW语句里DO 100 BY 1 STEP 560 0的含义是:从起点开始,沿 X 方向重复 100 次,每次步进 560 DBU。这个步进必须等于 site 宽度,否则行内的 site 会错位。TRACKS的 STEP 必须等于 LEF 中该层的 PITCH,起点偏移则和 OFFSET 对应。这两处只要有一处对不上,布局布线阶段就会出现「单元漂移」或者「走线不在轨道上」的现象,而工具通常不会明确告诉你根因在 DEF 的 ROW 或 TRACKS 上。

UNITS DISTANCE MICRONS和 LEF 的DATABASE MICRONS必须一致,这是整个流程里最基础也最容易被忽略的一致性约束。第三方工具导出的 DEF 如果单位是 2000 而库是 1000,所有坐标会被放大一倍,读进去不报错,但版图整个变形。

3.2 COMPONENTS、PINS、NETS 的三角咬合

这三个 section 之间是引用关系:COMPONENTS里的实例名被NETS引用,PINS里的端口名也被NETS引用。任何一处名字拼错,工具在创建网络时会直接丢弃这个连接,而且默认不报错,只在日志里留一行警告。

COMPONENTS 3 ; - U1 INV_X1 + PLACED ( 1120 0 ) N + FIXED ; # FIXED 表示位置不可动 - U2 INV_X1 + PLACED ( 1680 0 ) N ; - U3 BUF_X2 + PLACED ( 2240 0 ) FS ; # FS = 翻转 + 镜像 END COMPONENTS NETS 2 ; - n1 ( U1 Y ) ( U2 A ) ; # 端口名必须与 LEF PIN 名一致 - n2 ( U2 Y ) ( U3 A ) + USE SIGNAL ; END NETS

留意状态关键字:PLACED、FIXED、COVER、UNPLACED。COVER和FIXED的区别在于前者连布局优化都不允许移动,后者允许在合法化阶段做微调。用错状态会导致布局工具对某些单元「视而不见」,位置优化结果和预期完全不符。这是物理实现里很常见的一类现象,可能要多跑几轮才能发现是状态位写错了。

NETS里的+ USE SIGNAL、+ USE POWER、+ USE GROUND也不只是标注。电源地网络如果被标成 SIGNAL,在电源规划阶段可能被当成普通信号线处理,导致 IR drop 分析漏掉这部分网络。手册在 NETS 一节对这些属性有完整列举,值得单独过一遍。

3.3 增量 DEF:先读全量,再用 -incremental 补差

手册第 219 页专门讲了 Incremental LEF,DEF 侧对应的做法是把变更部分写成独立的 DEF 片段。典型流程是:先加载全量 DEF 建立基线,再加载增量 DEF 覆盖变化的部分。坑在于增量文件里的COMPONENTS数量必须写实际新增或修改的条数,而不是总数。

# 全量加载基线 load_lef tech.lef load_lef stdcell.lef load_def top_full.def # 增量加载:ECO 后只改了 12 个实例位置 load_def top_eco.def -incremental # -incremental 是关键开关 check_design -type physical # 增量后必须做一次物理一致性检查

-incremental这个开关在不同工具里名字不完全一样,有的叫-merge,有的需要在读之前设置变量。核心逻辑是:解析器只更新指定对象,其余保持内存中的现状。风险点在于,如果增量 DEF 里的ROW或TRACKS与基线不一致,工具不会重新生成栅格,新位置会落在旧栅格上,表现为「部分单元偏移」。所以增量文件里我一般只保留COMPONENTS、NETS、SPECIALNETS三类内容,其余 section 一律不写。

BLOCKAGES和REGIONS在增量场景下要格外小心。REGIONS定义的是布局约束区域,增量文件里如果重复定义同名 region,部分工具是覆盖,部分是报错,行为不统一。稳妥做法是每次增量都换新名字,或者在加载前显式清空。

4. 把手册当查询工具:三条检索路径和两个附录

四百多页的参考手册,顺读一遍不现实,也不必要。真正高效的用法是把它当字典,配合固定路径检索。我常用的三条路径分别是按语句名查、按流程阶段查、按报错信息反查。

4.1 三条检索路径各自适合什么场景

按语句名查是最直接的,目录里语句按字母序排列,LAYER (Cut)、LAYER (Implant)、LAYER (Masterslice or Overlap)、LAYER (Routing)分开成四个小节,这个拆分本身就说明不同类型层的参数集不通用。查SPACINGTABLE就直接翻到 LAYER (Routing) 里找,不要在其他层类型里浪费时间。

按流程阶段查适合排查跨语句问题。手册第 371 页附录 B 讲 LEF 技术文件如何为布局布线优化,第 389 页附录 C 讲工艺天线违例的计算与修复,这两处是少有的按「目的」而不是按「语法」组织的章节。遇到布线资源不足、天线比超标这类问题,从附录进比从语法章节进快得多。

按报错反查是最考验经验的一条。工具报「invalid spacing table dimension」时,根因可能在矩阵行列数、也可能在WIDTH列表长度,手册不会告诉你哪一行错了,只会告诉你语法接受的形式。这时候要拿 LEF 检查器做二分:先注释掉间距表跑一遍,再逐层加回来。

4.2 附录 B 和附录 C:两个最容易被跳过的实用章节

附录 B 的五个小节分别讲布线节距、宽金属间距、通孔处线端延伸、默认通孔、堆叠通孔与同网络间距。这些都是「工艺文件写得对不对」直接影响布线收敛的地方。比如布线节距那节明确指出,PITCH 应当是 track 间距的整数倍,且与单元引脚栅格对齐,否则布线器会在引脚出线处做额外绕行。

附录 C 讲天线效应,涉及的关键字在 LEF 里是ANTENNAAREARATIO、ANTENNADIFFAREARATIO、ANTENNAGATEAREARATIO及其累积版本,在 DEF 里则通过NETS的属性体现。手工算天线比容易漏掉累积项,手册里给了完整公式和示例,值得照着算一遍验证工具结果。

MACRO NAND2_X1 CLASS CORE ; SIZE 0.84 BY 5.04 ; SITE CORE ; PIN A DIRECTION INPUT ; ANTENNAGATEAREA 0.0525 ; # 栅面积,天线比分子 ANTENNADIFFAREA 0.1260 ; # 扩散区面积,用于二极管修正判断 PORT LAYER Metal1 ; RECT 0.07 0.70 0.21 0.98 ; END END A END NAND2_X1

这段里两个参数的含义不同:ANTENNAGATEAREA参与栅氧化层击穿风险计算,ANTENNADIFFAREA用于判断能否通过加二极管或者跳层修复。两个值单位是平方微米,写错量级会导致天线检查结果完全失真,但语法检查不会报错。我一般会用一个小脚本把库里所有单元的这两个值汇总出来,核对量级是否在同一数量级,这个动作能拦住大部分录入错误。

4.3 ALIAS、Extension、Property:三个扩展口子怎么用

手册第 215 页的 ALIAS 语句允许给长字符串起短名,主要解决字符数限制问题。写法是ALIAS 短名 长名 ;,展开在解析阶段完成。使用场景不多,但在某些老工具对名字长度有限制时是唯一的合规解法。

BEGINEXT ... ENDEXT是厂商扩展区,标准语法不解析里面的内容,工具可以自由定义。这带来一个现实问题:不同工具写的扩展区互不识别,跨工具传递时这部分信息会静默丢失。所以凡是影响物理结果的参数,都不应该只写在扩展区里。

PROPERTYDEFINITIONS是标准化的自定义属性机制,分 LEF 和 DEF 两侧,属性类型有 STRING、INTEGER、REAL 三种。相比扩展区,它至少是可解析的,工具不认识时会保留而不是丢弃。工程上如果需要传递工具特异性参数,优先选属性而不是扩展区。

5. 避坑现场:五类在 LEF/DEF 上翻车的情形

这一章按「现象 → 原因 → 解决」记录五条。都是我在实际流程里反复见到的,不是理论推演。

第一类:单元全部偏移半个 site。现象是布局完成后,一部分单元的左边界落在 track 中间,布线器出线时被迫绕行,时序比预期差一截。原因几乎总是 SITE 宽度与 ROW 的 STEP 值不一致,或者 LEF 里 MACRO 的 SIZE 宽度不是 SITE 宽度的整数倍。解决方式是先提取所有 SITE 的宽度列表,再对比 DEF 里每条 ROW 的 STEP,两者必须逐条相等;然后检查 MACRO 的 SIZE 是否满足整数倍约束,不满足的单元要回到库源头修,不要在 DEF 里手工挪位置掩盖问题。

第二类:间距表被解析但没有生效。现象是布线结果看起来正常,DRC 却报出大量间距违例,且集中在长平行走线区域。原因通常是SPACINGTABLE的矩阵维度与WIDTH、PARALLELRUNLENGTH列表长度不匹配,解析器遇到维度异常时会退回默认SPACING值,而不是报错退出。解决方式是写一个小校验脚本,读 LEF 后核对每个间距表的行列数,不匹配直接失败退出,不要让它悄悄退化。

第三类:增量加载后坐标整体错位。现象是 ECO 之后,只有新改动的单元位置异常,其余正常。原因是增量 DEF 里带了UNITS DISTANCE MICRONS且值和基线不同,解析器在合并时按新单位换算,导致局部坐标系混用。解决方式是增量文件里永远不写UNITS、DIEAREA、ROW、TRACKS这四类 section,只写变更对象;加载后强制跑一次物理一致性检查,检查项至少包括栅格对齐和实例重叠。

第四类:电源引脚按信号处理。现象是电源网络布线阶段,某些标准单元的电源引脚没有被连上,但工具不报开路。原因是 MACRO 里 PIN 的DIRECTION写成了INOUT或者USE属性缺失,工具按信号引脚处理,电源网络生成时跳过。解决方法是在库交付检查里加一条规则:所有名字匹配电源地命名约定的 PIN,其USE必须是POWER或GROUND,DIRECTION必须是INOUT,三者缺一不可。

第五类:天线比检查结果和手工算的差一个数量级。现象是工具报天线违例,但按公式手算远低于阈值。原因是ANTENNAGATEAREA的单位写成了平方纳米而不是平方微米,或者漏写了累积层的ANTENNACUM*系列参数。解决方式是把库里所有天线相关参数导出成表,按数量级分组核对,量级离群的一律回查;同时在修复阶段优先用跳层而不是加二极管,跳层对面积和时序的影响更可控。

6. 落地技巧:用 LEF 里三个参数把布线收敛提前一轮

如果只从这份手册里带走三个能立刻用上的参数,我选PITCH、OFFSET和WIDETH。这三个决定了布线器的解空间形状和规模,改它们的收益比在 DEF 里做后期优化大得多。

PITCH和OFFSET的配套关系决定 track 是否均匀。写完之后做一件事:用 PITCH 和 OFFSET 反算前 20 条 track 的坐标,看是否单调递增且间隔一致,同时确认这些坐标能覆盖所有标准单元引脚矩形的中心。如果某个引脚中心落在两条 track 正中间,这个单元的出线必然要绕,一层绕一层,累积起来就是时序上的差距。我的习惯是拿最小的反相器单元做基准,因为它的引脚通常最窄,能对上它基本就能对上大部分单元。

WIDETH决定宽金属规则的触发边界。定得太小,普通走线也被按宽金属加间距,资源利用率下降;定得太大,宽线漏检,DRC 在最后阶段集中爆发。合理值一般取默认线宽的 2 到 3 倍,具体要看工艺文档里宽金属规则的实际阈值。定完之后跑一个只有几百个单元的小设计,看每层利用率和 DRC 数量的组合是否合理,这个前置验证花不了多少时间,但能省掉后面几轮全流程返工。

下面这份自检清单我每次交付库文件前都会走一遍:

检查项判据失败后果
UNITS 一致性LEF 的 DATABASE MICRONS 与 DEF 的 DISTANCE MICRONS 相等坐标整体缩放
SITE 与 ROW 对齐所有 ROW 的 STEP 等于对应 SITE 宽度单元偏移半格
MACRO SIZE 整数倍宽度为 SITE 宽度整数倍,高度等于行高无法合法化
间距表维度矩阵行列数与 WIDTH、PARALLELRUNLENGTH 列表长度一致静默退回保守值
引脚方向电源地引脚 USE 为 POWER/GROUND电源网络漏连
天线参数量级所有 ANTENNA* 值落在同一数量级天线检查失真
OBS 覆盖阻挡区不与引脚区大面积重叠资源浪费或短路

这份表不复杂,但每一条都对应过一次真实的返工。从那以后我每次拿到新库,都强制先跑一遍这张表再开始布局,哪怕时间再紧也不跳。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询