ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Allegro导出ODB++并在HyperLynx中跑DFF可制造性检查全流程

Allegro导出ODB++并在HyperLynx中跑DFF可制造性检查全流程 画完一块板子到了要投板的关键节点最担心的不是原理图对不对、布线通不通而是板厂回来一句“Gerber里面有些层我打不开”、“某个钻孔符号对不上”、“有一处丝印压焊盘了”。我在这个行业摸爬滚打这些年养成一个习惯投板之前先把PCB数据从Cadence Allegro导成ODB丢进HyperLynx里做一轮DFF可制造性检查和参数核对。这个流程不仅能把问题提前暴露还能让EDA工具之间数据交换少踩很多坑。这篇文章不打算讲那种到处都能搜到的“点File、选Export、点OK”式操作而是把Allegro导出ODB、HyperLynx导入的完整流程从为什么选这个格式、导出前要做什么准备、每一项参数怎么选到导入后能做什么检查、常见报错怎么处理一次性说透。适合正在做PCB设计、准备投板或者刚接触ODB工具链的硬件工程师、PCB Layout工程师参考。1. 为什么投板前要换ODB而不是继续用Gerber1.1 Gerber与ODB的核心差异很多朋友习惯用出光绘文件的方式交付板厂也就是Artwork生成一串Gerber.art、.pho或者274X格式再加上钻孔文件drill.art、drill_data。Gerber本身是一套成熟标准绝大多数板厂都认但它有个结构性问题每一层是独立文件层与层之间的关联关系、孔位与焊盘的从属关系、叠层顺序这些信息都“散装”在多个文件里。一旦层名命名不规范或者板厂拿到的版本和你的设计不是同一版就容易出现“图都对不上”的尴尬。ODB是Valor开发的一种单向数据库格式后来成为Mentor、Allegro、Board Station等工具通用的数据交换标准。它把板卡设计的所有信息打包进一个绝对路径的目录树里包括层叠定义、引脚与网络、钻孔符号、材料属性、助焊层、阻焊层、丝印以及铜皮数据。HyperLynx导入ODB后可以直接重建整板的物理模型不需要像Gerber那样逐层解析、合并。说得直白一点Gerber更像一串零件清单ODB像一辆组装好的整车。你要做DFF检查当然希望拿到整车而不是自己重新拼零件。1.2 HyperLynx能拿ODB做什么HyperLynx这名字听起来像信号完整性工具但它同时包含了DFFDesign for Fabrication和DFMDesign for Manufacturing分析模块。导入ODB之后除了能看叠层、铜皮、过孔和丝印还能自动检查走线与走线、走线与焊盘之间的间距是否满足板厂工艺能力过孔焊盘外侧是否满足最小环宽要求丝印是否误覆盖焊盘或开窗区域铜皮孤岛、铜皮尖角、狭长铜条等加工隐患钻孔孔径与最小孔径规则是否匹配这些检查如果等板厂开“EQ”再来改会浪费好几天。用ODB提前把问题揪出来是成熟工程师都会走的流程。2. 导出ODB前的板级准备2.1 先整理Design Rule Constraints导出ODB本身不要求你先设置什么规则但ODB会把Allegro里的约束规则一并带入。如果你的设计里“间距规则”只有默认值或者部分网络没有分配约束HyperLynx导入后在DFF模块里看到的规则就会缺失导致检查结果不准确。我一般会在导出前做三件事第一确认设置里的Spacing规则已经覆盖所有网络第二确认Physical规则里的线宽、过孔定义没有遗漏第三把不用的Constraint Set清掉免得ODB文件里带一堆无用规则导入HyperLynx还要挨个排查。这里特别说一下“铜皮优先级”的问题有网友在热搜里提到“allegro铜皮只有轮廓”、“铜皮优先级”这些关键词说明不少人在画动态铜皮时踩过坑。如果你板子上有负极性的动态铜皮又没有设置正确的Shape优先级导出的ODB里铜皮很容易变成只有外形轮廓、内部填充缺失。导出前一定要在Shape属性里检查Global Dynamic Shape Parameters的Void和Fill设置确认填充模式是Smooth而不是Rough。2.2 检查叠层与钻孔符号ODB最擅长的就是保存叠层信息。在Allegro里Cross-Section窗口每层都有一个Material类型和Thickness值。导出前我会把所有层面的介质厚度、铜厚、基材类型都填完整尤其是Embedded层或者特殊叠层比如HDI盲埋孔一定要在Borader栏里正确设置。钻孔符号Drill Symbol也是个容易被忽略的地方。如果图里使用了Legacy或自定义符号而Manufacturing的Drill Customize没有对应定义HyperLynx导入后可能识别不出孔径。投板前可以把Drill Legend放到板框外先跑一遍确认Legend上的钻孔符号表是完整的。2.3 板框与特殊情况处理板框层要闭合不能有缺线。Allegro里有些板框是从DXF转进来线段端点之间存在微小缝隙肉眼看不出来但ODB处理时会报“OUTLINE not closed”。我自己常用一个小办法用Shape - Compose Shape把板框线选一圈生成一个闭合铜皮如果能生成成功说明板框是闭合的。另外一个常见场景是从Allegro转PADS或反过来中间是否用ODB中转这里可以分享一个经验Allegro转PADS经常被问到很多教程让你用PADS自带的Translator去读Allegro的低版本ASCII文件操作麻烦还要装Translator工具。其实如果你单纯想转换几何数据和叠层Allegro导出ODBPADS Layout再通过ODB导入同样能实现格式迁移而且数据完整性更高。虽然PADS后期还要手工整理封装映射但至少不会出现“转换完一堆飞线”的情况。3. Allegro导出ODB实操步骤3.1 菜单路径与输出目录规划在Allegro PCB Design里顶层菜单选择File - Export - ODB。如果想带DFA、DFM相关的数据一起出去记得勾选“Include DFA Directory”这个开关会把与制造相关的检查文件也放进ODB目录里。输出目录建议单独建一个文件夹命名用“项目名_版本_日期”这种格式比如“VPX_backplane_V2.0_20250110”。ODB的目录结构对路径敏感如果输出目录层级太深或者路径里有中文、空格进入HyperLynx时可能出现读取异常。我在项目中遇到过几次这类情况稳定可靠的做法是把内存盘当作工作区导出到一个纯英文短路径目录比如“D:/ODB_OUT/projectA”等HyperLynx检查完再把整个目录归档到服务器或网盘。路径一长某些工具的底层库会截断路径这是很多导入问题的根源。3.2 面板参数项逐项拆解导出面板弹出来后会有一堆参数这里逐项说清楚ODB Version新版Allegro默认支持ODB 8.1但HyperLynx老版本可能只认7.0/7.1。我自己的习惯是优先8.1如果导入HyperLynx失败或提示无法识别再尝试7.0。这个选项影响的是ODB内部XML文件的版本号不影响图形数据精度所以不用纠结。Units毫米还是MIL。ODB数据结构里自带单位信息理论上用哪个都行但注意一定和Allegro当前的工作单位保持一致。如果你在Allegro里用MIL做设计导出时选了Metric后续在HyperLynx里看到的焊盘坐标、线宽会换算成mm看着别扭不说个别检查规则还会因为四舍五入出现边界误报。Decimal Places精度位数。一般保持默认3或4位即可投板精度绝对够。有些朋友喜欢调到5位6位反而会让文件变大没有实际意义。ASCII vs BinaryODB支持纯文本ASCII和二进制Binary两种数据表示。Binary版速度快、体积小但有些第三方的ODB阅读器只支持ASCII。HyperLynx两种都支持所以看个人偏好。如果你还想把ODB文件打包发给板厂建议用Binary文件小传输快如果做测试、调试选ASCII方便写脚本去后台分析层数据。Include DFA Directory这个是重点HyperLynx做可制造性检查时很多规则依赖DFA目录里的数据。勾选后Allegro会把DFA相关设置封装进ODB。Create Stacked Via Report如果你设计里有叠孔勾选这个会生成一个叠孔列表报告HyperLynx里检查是否符合制程时非常有用。叠孔会不会“露底”板厂通常有专门判定但EDA工具提前出一份报告对工程师来说能少走弯路。Separate Power/GND Planes把电源层和地层按网络拆分成单独铜皮再导出。如果板子上有内层负片开启这个选项后HyperLynx看到的平面会按网络划分DFF检查更准。参数选完后点ExportAllegro会运行一段时间速度取决于板子的复杂度。完成之后到输出目录下你会看到一堆文件和子文件夹包括steps、layers、matrix、stackup、nets等。这些目录结构不要手动去改任何改名或移动都会破坏ODB的整体关系。4. HyperLynx导入ODB与基础安全项核对4.1 打开ODB的几种方式HyperLynx界面里File - Open文件类型选择“ODB (*.tgz; *.tar; *directory)”。ODB可以是一个打包后的.tgz压缩包也可以是一个未压缩的目录。如果你在Allegro导出时得到的是一个文件夹HyperLynx可以直接定位到顶层目录。如果得到的是.tgz直接打开压缩包也行。我的习惯是不压缩直接选目录。原因很简单压缩包打开后HyperLynx会在后台解压到临时目录如果板子大解压过程又慢还容易因为临时目录空间不足失败。直接给目录路径加载快后续出问题时也很好排查是哪个子目录的数据不对。4.2 导入完成后最先检查的5项内容ODB导入成功后HyperLynx会重构出一个DDCDatabase工程。这时候先别急着跑DFF检查我建议按下面顺序确认数据没“变味”叠层厚度是否和Allegro里的Cross-Section一致。用Stackup Editor看每一层的介质厚度、铜厚。如果在这里发现厚度和设计不一致后面算出来的阻抗、时序都有问题。网络表完整性。用Net Inspector查看网络数量和Allegro里Tools - Report - Net List对比一下数量是否匹配。数字差太多说明导入过程中网表丢失常见原因是ODB导出时网络被合并了或者Power/GND Plane被单独拆出去后产生了New Nets。器件封装是否映射正确。HyperLynx会把ODB的Component和自身封装库做匹配。如果封装缺失会显示成未分配封装这时候可以补充映射但要知道封装信息一旦在这里被替换DFF检查结果会跟着变。盲埋孔信息。查看Via报告里的钻孔孔径、起始层、结束层是否和Allegro一致特别是HDI设计中用到Skip Via的重点看结束层有没有偏。板框尺寸。用2D视图量一下板子最长和最宽处的距离误差范围控制在0.1mm内算正常。ODB理论上不会引入缩放错误但如果Allegro里单位设置乱这里就可能出现10倍或25.4倍的缩放错误。4.3 可制造性检查的基本调用数据确认没问题后切换到Analysis - DFFDesign for Fabrication这里可以做引脚检查、焊盘检查、孔环检查、丝印检查等。不同版本的HyperLynx菜单名称略有差异但大致都是Setup DFF Rule然后Run。你在Allegro里设置的间距规则会带入规则表但板厂工艺能力往往和EDA默认规则不一样所以我会把DFF检查规则按目标板厂的工艺参数重新填一遍。比如最小线宽/最小间距如果板厂最小能做到0.1mm/0.1mm你就别用Allegro默认的0.2mm规则否则DFF把一堆本来就合规的线报成违例白白增加排查工作量。5. 常见问题与排查技巧实录5.1 Allegro导出时报错或输出目录异常“ODB Export failed with error”或“Cannot create directory”。这类报错大多和输出目录权限有关或者路径里包含了中文、空格、保留字符。排查时先在D盘根目录新建一个纯英文目录把输出路径指向那里再做一次导出。如果问题消失就是路径问题。“Some layers are empty or missing in the output”。一般是某些层在Allegro里没有内容但ODB也会为该层生成空目录。HyperLynx打开后看起来“少层”其实只是空层被折叠了。如果你确认Allegro里有内容但导出后不见了优先检查是不是层被定义为Non-Etch类型但你的ODB导出设置里忽略了这个层类型。“Copper appears only as outline in ODB viewer”。这就是前面提过的动态铜皮填充问题。Allegro里是Rough状态的话ODB里面可能只保留轮廓线没有填充数据。切到Smooth后重新导出即可。如果铜皮本身是Static Shape导出一般没问题但建议把Static Shape也顺手转成Dynamic再导出省得某些DFF规则不认。5.2 HyperLynx导入时卡死或数据读取不全导入大板时HyperLynx容易卡在“Building Matrix”这一步。原因是板子网络多、铜皮复杂工具要重新生成整板物理矩阵。这时候别急着关掉重开先等几分钟去看Windows任务管理器里的内存占用如果内存持续增长且CPU单核100%说明还在计算。如果内存到了上限还不动就要考虑是不是导出的ODB里包含了大量Novel层或者多余机械层。导入后网络数量不对多半是电源层、地层的网络因为使用了负片而没被解析出来。解决方法是回到Allegro把内电层改成“Positive”平面并填充动态铜皮后再导出虽然复杂度高一些但HyperLynx对正的铜皮网络解析兼容性最好。如果你的设计用了混合分割层导出前需要用Anti Etch和Split Plane创建好分割边界否则ODB里的网络会被工具猜错。5.3 单位与缩放问题速查ODB的单位记录在。matrix/units文件里。如果你怀疑HyperLynx显示的尺寸不对可以直接用文本编辑器打开该文件看看unit值是不是你预期的那种。常见问题设计单位是Mil但OdB内容换算成了mmHyperLynx显示数值和Allegro里差25.4倍。这种情况先确认导出时的Units选项和Allegro当前单位一致如果已经一致那就是ODB的文件属性被外部工具改过。板框不闭合导致导入后板框变成一条线这个只能回Allegro用Compose Shape方式修复板框后重新导出。钻孔符号解析错误报错“Drill symbol not found”去Allegro的Manufacturing - Drill Customize里把钻孔符号尺寸重新生成一次再导出。6. 与Gerber、ODB并行的交付建议6.1 投板时到底交哪种文件很多板厂现在既接收Gerber也接收ODB。我个人的经验是两种都交。Gerber作为板厂传统生产资料ODB作为可制造性分析数据。让板厂先用Gerber做常规生产流程用ODB做EV比对可以有效避免“文字描述不清”造成的沟通成本。如果你只打算交一种优先ODB。理由前面说了它是一个数据库所有层的关联、钻孔数据、叠层都打包在一起不会因为拷贝时漏文件而出问题。但要注意不是所有板厂都能直接处理ODB文件。交文件之前先和板厂确认他们的CAM软件是否能识别ODB。如果对方只管你要Gerber那你就老老实实出GerberODB只是作为互检用的参考。6.2 存档版本管理小技巧ODB打包后体积比Gerber大不少一个复杂的服务器主板能到200-300MB。我习惯每次投板前把ODB连同Gerber一起命名上版本号存到公司的SVN或Git LFS里。等板厂回EQ时直接说“按V2.0的ODB里matrix文件为准更新某一层铜皮”对方能快速定位问题比给一堆散装Gerber再解释半天省力得多。Git仓库里不要存压缩后的ODB存目录即可。这样每次修改后版本控制系统能自动比较目录间差异如果某层铜皮变了、某个孔位移动了看diff就能发现不用再花时间重新导出一遍去手动核对新旧版本。6.3 和光绘文件做交叉校验当你用HyperLynx检查过ODB但Allegro里又习惯性出了光绘文件准备交给板厂建议先做一步交叉校验把ODB导入HyperLynx之后把关键层的几张图导出一张BMP或PDF和Allegro里Artwork Preview截图对比一下铜皮外形、丝印位置、标记点坐标。这个动作虽然不能保证100%发现所有问题但能拦住绝大多数因为层设置错乱导致的批量性错误。有一次我遇到一块板子Allegro里看到的电源层分割是对的但导出ODB后在HyperLynx里发现电源层有一块铜皮不见了排查半天才发现Allegro里用的静电Shape的层设置是“Power”但该层在ODB映射表中被当成普通走线层处理了。如果没有做交叉校验这种问题很容易被遗漏。7. 投板前最后一次走查清单我每次投板前会按这套清单快速走一遍确认无误再发板厂Allegro里检查板框闭合确认Layer 1到Layer N的叠层命名没有多余空层出Gerber的同时再单独导出一次ODB不勾选“Binary”以方便调试输出目录为纯英文短路径打开HyperLynx导入ODB确认叠层、网络数、器件封装映射都正常跑一遍DFF检查规则规则里的线宽线距按目标板厂工艺能力填写不能只靠Allegro默认值检查报告里报出的每个违例项确认是误报还是真问题误报就调整DFF规则真问题就回Allegro修改如果这次板子使用了盲埋孔或背钻额外检查ODB里的钻孔报告确认起始层结束层正确全部确认后把ODB目录打包成ZIP或TGZ连同Gerber文件一起发给板厂并附带“ODB优先、Gerber作为参考”的说明这一套走查流程看起来多但熟练之后从Allegro导出到HyperLynx检查完毕一块中等复杂度板子半小时内就能完成。比起板厂EQ来一个来回动辄一两天这半个小时非常值。个人经验里ODB流程最折磨人的不是软件不会用而是“数据信任”问题。你看着HyperLynx里显示的铜皮形状和Allegro一致但总觉得哪里不对劲。这种时候别猜用文本编辑器去打开ODB目录下的stackup文件、matrix文件耐下心看几眼原始数据很多“玄学问题”都会瞬间变成“原来如此”的明牌问题。工具链越是复杂越要回到数据源头去找答案这是我这么多年在EDA工具之间来回倒数据得出的最实在的一条经验。
返回列表