EDA圈子里的老话题了。每次有新人问“该学哪个”,老工程师们总会分成两派,吵得不可开交。我自己在两家公司的硬件岗位待过,早期做消费类板卡一直用Altium Designer,后来跳槽去通信设备公司,整个部门统一用Cadence Allegro,逼着我从零开始把整个流程过了一遍。今天不站队,就站在一个实际画过板、被封装坑过、被原理图改版折腾过的人的角度,把这两套工具在原理图与封装管理上的核心差异拆开揉碎讲清楚,顺带把我这些年踩过的坑和摸索出来的技巧一并交代了,希望对正在选型或者在工具切换期的朋友有点参考价值。
1. 整体定位与选型思路:你选的不是软件,是生产流程
先别急着对比按钮和菜单,这两款工具背后的设计哲学差异,直接决定了你以后几个月甚至几年的工作节奏。
1.1 Cadence Allegro的本质:一套严谨的分工协作体系
Cadence Allegro(严格来说应该是OrCAD Capture + Allegro PCB Editor这套组合),它的核心标签是“分工明确、流程严谨”。我记得第一次打开Allegro PCB Editor的时候,被那个密密麻麻的菜单栏和一堆需要手动配置的约束规则吓了一跳。界面谈不上友好,跟AD那种“所见即所得”的亲和力差距明显,但它每一个看似繁琐的设定背后,几乎都对应着大型硬件公司在实际生产中会遇到的管理问题。
比如Allegro的封装文件体系,它不是简简单单画一个外形加几个焊盘就完事,而是拆成独立的Padstack(焊盘堆叠)、Symbol(器件符号)、Flash(散热焊盘)等多个环节,每个环节又是独立管理的。为什么要这么干?因为在大公司里面,这三个环节往往由不同的人员或团队分别维护。有人专门负责焊盘库,有人专门负责器件库,还有人负责跟PCB工厂对接钻孔文件和钢网文件。这种分层设计其实就是把硬件设计当作软件工程来管理的思维,强调流程的可控性和可追溯性。
再比如Allegro的约束管理器(Constraint Manager),里面可以设置线宽、线距、差分对、等长,甚至精细到某个网络、某个区域。这套东西学习曲线陡峭,但一旦跑高速信号或者多层板的时候,优势就体现出来了——规则统一、不容易漏改。
1.2 Altium Designer的本质:一个人全流程干到底的效率工具
Altium Designer(简称AD)的定位恰恰相反,它就是冲着“一个人从原理图画到PCB搞定一切”这个使用场景来的。AD背后的理念是集成和统一,所有环节全部整合在一个平台里,原理图库、PCB封装库、元器件供应商链接、仿真、输出,全都塞在同一个界面体系下。你不需要关心什么Padstack文件放哪、Symbol库怎么调用,统统在一个工程里面搞定。
这种设计对中小规模项目、研发周期紧的团队、以及独立工程师来说,非常友好。一套流程学下来,从原理图到PCB产出、再到BOM表导出和Gerber输出,一个人就能轻量级地完成完整交付。AD在国内消费电子、小型工控、大学生竞赛、DIY领域拥有绝对的统治力,不是没有原因的。
1.3 怎么选?先看团队结构再看板子复杂度
我个人的判断标准很简单:如果你是一个人画板,或者团队规模10人以内、板子以中低速信号为主,就选AD;如果你在大型企业、画高速多层服务器/通信板、或者要做多人协同设计,就选Allegro。这不是说AD不能画复杂板,而是当你需要处理几十人的库管理、上千条设计规则、跨部门协作时,Allegro的分层体系会让你省心得多。
举一个我身边的真实例子。之前公司有个项目,四层板,BGA封装的主控芯片,差分信号和时钟线一大堆。AD那边也做了对应方案,但到了评审阶段,硬件总监要求把每条网络的阻抗约束和等长误差控制都写进设计文件里,AD的规则管理虽然也能做到,但要在好几个页面之间来回切换、核对哪条规则优先级更高,费了不少劲。而Allegro的约束管理器本身就是个完整的规则表格,直接导出Excel就能作为评审交付物。这就是流程协作上的本质差异。
2. 原理图绘制差异:画个框连线,背后是两套数据逻辑
很多人觉得原理图就是用连线把元器件连起来,画完之后生成网表就行。实际上,原理图阶段的数据组织方式,直接影响后续封装管理、物料整理、以及PCB布局的顺畅程度。这也是我切换工具之后感受最深的部分。
2.1 OrCAD Capture:层级清晰,属性驱动,适合大规模团队
Cadence方案里的原理图工具OrCAD Capture,表面上看是个很普通的原理图编辑器,但它的数据组织能力相当强。Capture的设计层级(Hierarchy)系统非常成熟,你可以把一块复杂系统拆成多个“平坦式”页面,或者用“阶层式”设计把重复模块(比如8路相同的电源滤波)统一做成一个子模块反复调用。
这里要说一个关键概念:Capture的器件属性(Property)系统非常强大,每个器件可以携带几十个自定义属性,比如厂商料号、价格、功耗、是否备选料,这些属性全部可以做成模板,在放置器件的时候自动带出。更关键的是,Capture里原理图符号(.olb文件)和PCB封装(Allegro的dra/psm文件)是两套独立的体系,靠“Footprint”字段关联。这听起来麻烦,但好处是器件库可以做得极其规范,专人维护原理图符号库,专人维护PCB封装库,通过一个统一的命名约定来对接。
在我用Capture的实际经验里,最常用的技巧是批量编辑属性。比如要一次性给50个电容加上“耐压值”属性,或者统一修改某个网络名称,直接全选器件,在Property Editor里像操作Excel一样编辑,非常高效。这一点AD也能做到,但在数据量大的时候,Capture的稳定性表现更好。
2.2 Altium Designer的原理图:集成库与实时同步是最大杀手锏
AD的原理图编辑器走的是另一条路,核心是“集成库”(Integrated Library,.IntLib)。它把原理图符号、PCB封装、3D模型、供应商链接、仿真模型全部打包在一个文件里。放置元器件的时候,所有信息自动关联好,不需要你手动维护什么“Footprint字段”,原理图符号引脚的哪个编号对应封装引脚的哪个编号,这一切都在库里面提前定义好了。
AD原理图最让人上瘾的,是它跟PCB编辑器之间的实时交互。在AD里面,你不需要生成网表(Netlist)再导入PCB——严格来说AD也有网表,但它是后台自动处理的,你只需在原理图里选中一个器件或网络,PCB编辑器里会立即高亮对应该器件或网络。反向同样可以,在PCB里选中器件,原理图同步高亮。这种双向交互在布局布线阶段简直救命,尤其是当你需要在一堆密密麻麻的走线中快速定位某个信号路径的时候。
不过AD这套实时同步体系也有个隐蔽的坑:如果你的原理图库和PCB库有哪怕一个引脚编号对不上,同步的时候就会报错,而且某些模糊错误不会立刻暴露,等到生成BOM或者PCB转Gerber的时候才突然跳出来。我遇到过一个倒霉情况,一个485接口芯片的原理图符号有8个引脚,封装实际上是10个引脚,AD的同步机制在放置的时候会把空引脚自动隐藏掉,结果就是8个引脚的网络连上了,另外两个NC引脚在库里明明存在却不报错,最后生产测试时板子有异常,排查了很久才发现是这个封装匹配问题。所以AD越方便,越要养成在画完原理图后检查“器件引脚与封装引脚一一对应”的习惯。
2.3 绘制效率技巧对比:那些文档里不会写的操作
先说说Capture。很多人画原理图的时候习惯一根线一根线地连,其实Capture里有个非常实用的“总线+网络标签”组合打法。比如画8位数据总线,你先把8根线拉出去,放上网络别名(Alias),然后用总线把它们束在一起,总线上标个D[0..7]或者D[0:7],这样整张原理图看起来干干净净。另外一个技巧是“Occurrence”和“Instance”这两个属性概念,乍看很绕,但理解了它对批量修改很有帮助。简单说Instance是设计层面的属性(比如逻辑器件类型),Occurrence是实际使用层面的属性(比如在某块PCB上的位置),改错了层级会导致改一处联动另一处的问题。
再来说AD。它的原理图里我最喜欢的功能是“交叉探测”和“智能粘贴”。交叉探测就是刚才说的原理图与PCB双向高亮,快捷键是T+C(Tools -> Cross Select),配合属性面板里的“Navigate”按钮,来回切换毫无压力。智能粘贴则是当你要在原理图里画多路完全相同的电路时,选中一段电路复制,再按E+A(Edit -> Smart Paste),可以自动递增网络标号和位号,例如R1复制后自动变成R2、R3、R4。这个功能看起来小,实际画阵列板、多路采集电路的时候省下的时间按小时计算。
这里顺便说一个AD让人头疼的组件——原理图元器件属性面板。很多人在AD newer版本(比如AD 21以后)打开原理图,发现元器件属性面板只显示simulation generic之类的默认属性,看不到自己想要的参数。这是因为新版本把属性显示精简了,需要在“属性”面板里点击“添加”按钮,手动选择要显示的字段,或者直接在面板右上角的齿轮图标里配置默认显示集合。第一次接触时满屏英文看着都发懵,但配置好之后就可以按自己的习惯只显示关键字段,反而比之前更清爽。
3. 封装管理:最能区分“业余”和“职业”的分水岭
封装管理真的是一块试金石。用AD画板子,两天就能出一个像模像样的封装;但你要让一个新手在Allegro里创建一个像样的封装,光是要理解Padstack、Symbol、RefDes、Assembly_top、Silkscreen_top这些概念,就够他喝一壶。但反过来,一旦你习惯Allegro的封装体系,再回头看AD那种“在封装库里画个框就完事”的做法,往往会被细节逼疯。
3.1 Allegro封装三件套:Padstack、DRA、PSM你必须分清楚
Cadence的封装体系是我认为它最值得学习的地方,也是跟AD差距最大的地方。很多人第一次打开Allegro都会被封装相关的一堆文件弄晕:.pad、.dra、.psm、.bsm、.fsm、.osm……这其实是一套逻辑严密的分层结构。
首先,焊盘堆叠(Padstack)是最底层的基础元件。它定义了焊盘的物理结构:顶层焊盘尺寸是多少、中间层是否需要连接、底层是不是跟顶层一样、钻孔尺寸多少、孔壁要不要镀铜。以贴片电阻0603为例,你需要建表贴焊盘,设定顶层焊盘长1.0mm宽1.2mm,确定阻焊层开口比焊盘大0.1mm,设置钢网层开口是1:1还是缩小5%防止虚焊,最后保存为一个.pad文件。如果是通孔器件,还需要定义钻孔参数和反焊盘(Anti-pad)。很多人一开始都会犯的低级错误,就是把通孔焊盘的“Regular Pad”和“Thermal Relief”(热释放焊盘)搞混,导致内层连接时要么散热太快不好焊接,要么大面积铜皮散热太慢形成“焊盘不热”的问题。
第二步是创建器件符号(Symbol),Allegro用.dra文件来编辑,常见类型有Package Symbol(封装符号,用于PCB)、Mechanical Symbol(机械符号,用于结构边框)、Format Symbol(格式符号,用于图纸模板)。编辑完之后生成的.psm文件(Package Symbol)才会被PCB编辑器调用。比如建一个SOIC-8的封装,你得先建好8个焊盘的Padstack(通常表贴,顶层引脚焊盘),然后在封装编辑器里放置这8个焊盘,根据数据手册标注好间距(0.65mm或者1.27mm)、调整RefDes丝印位号的位置、添加装配层外形和丝印层外形,然后保存生成.psm文件。
第三,还有一个容易忽略的文件叫Flash Symbol(散热焊盘符号),后缀是.fsm。它主要用于电源层或接地层上,配合Thermal Relief焊盘,形成带空隙的十字连接或花形连接,既保证电气连接,又限制热量过度传导到焊盘上。设计多层板时如果电源层需要连到某个通孔焊盘,通常就要关联一个Flash符号。
在Allegro里,封装管理的核心就是把这几个文件管理好、命名规范统一。比如我通常会用“类型_器件型号_尺寸”的命名方式:32_SMD_0603_CAP代表0603电容封装,32_TH_2P_5.08代表5.08mm间距的通孔2P端子。“32”是板厚或焊盘库系列号,这样连封装带焊盘就全绑定了。命名混乱的库,前期省事,后期一旦板子做大,找封装改封装的时候就是灾难现场。
3.2 Altium Designer的封装库:库文件全合一,但细节约束靠自觉
AD的库体系用起来爽,是在“无脑联动”这个层面爽,但真到精细化设计时,它的封装管理又会暴露出依赖个人自觉的隐患。
在AD里,建一个封装一般在PCB Library编辑器里做,可以新建PCB Library文件(.PcbLib),也可以直接创建集成的集成库(.IntLib)。每个库里可以放N多个封装。用IPC-Compliant Footprint Wizard向导,输入器件尺寸,自动生成符合IPC标准的封装——这个功能对新人和快速建库非常友好,比Allegro里一步步手工操作要快上一个量级。
不过AD封装库里有一个非常磨人的细节:丝印(Silkscreen)的线宽和参考位号(RefDes)的字体大小。Allegro在生成光绘文件(Gerber)的时候,会严格按照你设定的线宽和字高输出;而AD默认情况下,如果设置不当,打印出来的丝印可能忽粗忽细。更要命的是,AD的机械层有好多层,默认是Mechanical 1,但如果你从别的项目复制封装过来,机械层是13,那丝印标注可能跑到别的层去了,输出生产文件时没带上,板厂做出来的板子丝印缺失或错位,只能后续手工贴标签,十分尴尬。
所以我在用AD建封装时,一定会做以下动作:设置好默认丝印线宽(通常0.2mm或0.25mm)和字高(1mm左右)、把“器件中心点”放在原点、把禁布区(Keepout层)也画好,同时确认使用的是“Top Overlay”层而非其他乱七八糟的机械层、以及关键信息比如极性标识和第一引脚小圆点必须清晰。这些细节,AD官方文档不会反复强调,但实际生产一跑,问题全暴露了。
3.3 替换单个封装的神操作对比
再讲一个高频需求:单独替换PCB上某一个器件的封装,不重新走一遍原理图流程。
在Allegro里,这个操作用的是Tools -> Padstack -> Modify Design Padstack或者Symbol -> Replace命令。我习惯用Place -> Update Symbols,在弹出来的面板里勾选“Update symbol geometry”和“Update symbol text”,然后选择新的封装文件,再点选需要替换的器件。这么做前提是新旧封装的焊盘编号必须一致,否则网络关系会对不上。
在AD里,这个操作用Tools -> Replace,在PCB库列表里选中新封装确认替换就行,或者直接在PCB编辑器里右上角找到器件属性里的“Footprint”字段,点击浏览重新选择一个封装。因为AD是动态网表同步,替换完之后网络不会丢,原理图也不受影响。这就是AD的“爽点”。
不过要提醒的是,无论用哪个工具,替换封装后必须检查引脚网络是否完整、封装外框是否跟周边器件干涉。我在Allegro里替换过一个插件端子,选完封装后Copy了一个新Padstack到板内,结果发现旧散热焊盘的网络被带了过来,导致一个本应该接地的引脚变成了接12V,要不是后面对照原理图逐网络检查,直接就埋雷了。
4. 从原理图到PCB:网表传递、器件坐标与知识迁移
原理图画完只是第一步,真正决定项目进度的,是原理图数据能否准确、高效地传递到PCB编辑器中。
4.1 Cadence的网表流程:老派但极其稳定
Cadence历来强调网表(Netlist)的概念。在OrCAD Capture里,先放好所有器件,连好网络,然后Tools -> Annotate给所有器件编排序号,再Tools -> Generate Netlist,选择“Allegro”格式,生成一个.net文件。接下来打开Allegro PCB Editor,File -> Import -> Logic,选择刚才生成的网表文件,导入后器件就全部进来了。
这套流程看着古老,但每一步都有明确的节点,出了问题能准确定位。比如网表导入时报错“Database has improper footpointer”,说明原理图里某个器件的Footprint字段填了一个PCB库里不存在的封装名,那就去原理图里把对应的器件属性改掉再来。
还有一个操作几乎所有Allegro老手都会做,就是导入网表后先执行Tools -> Quick Report -> Unplaced Components,看哪些器件没放下来。原因一般是封装缺失或网络有问题,逐一修复。同时会对板框(Board Outline)进行最基础的检查——这步看起来不起眼,但很多新手直接把器件扔到无边界的画布里,到出光绘发现原点偏移或板框缺失,就得返工。
4.2 AD的同步流程:自动导入是舒服,但三步检查不能省
AD的逻辑完全不一样,原理图和PCB共享同一套数据源头。在原理图编辑器里Design -> Update PCB Document,点一下“Validate Changes”,点一下“Execute Changes”,器件和网络就一股脑同步到PCB里了。
这流程对新手极其友好,但对于过来人来说,越是方便越要警惕。我在实际项目里总结出三步强制检查:
- 检查“ECO”列表:同步时会弹出一个工程变更指令列表,挨个过一遍,看有没有异常的Remove/Add;
- 检查Room框:AD会在PCB里自动生成一个Room区域,默认把原理图的同一张sheet的器件放进同一个Room里。如果你的布局习惯是按模块摆放而不是按sheet摆放,记得把这些Room删掉,否则多出来的Room会干扰器件移动和自动布局;
- 检查位号重复:在原理图执行Tools -> Annotation -> Force Annotate All,然后再同步一次,确保PCB里没有任何重复位号。
4.3 关于“AD导出DXF”和“Allegro导出DXF”的差异
另外一个让人掉头发的场景是结构工程师要DXF结构图。AD导出DXF非常直接:File -> Save Copy As -> DXF,选择在哪个机械层导出,导出后线条都是按层区分的。Allegro导出稍微绕一些:File -> Export -> DXF,需要先设置好“Output Layer”映射表,把Board Geometry、Package Geometry、Manufacturing这些层映射到DXF的对应层上。不小心少映射了一层,结构工程师拿到的文件里就缺了关键孔位或定位边,容易产生误会。
经验之谈:无论是哪个工具,导出DXF给结构前,先确认单位是mm还是mil,绝对精度设置成0.01mm以上,并且跟结构工程师约定好原点位置,最好都在板框左下角或者某个定位孔中心。省得两个软件之间来回倒腾单位,最后谁都不认谁的尺寸。
5. 常见问题与排查技巧实录:这些坑我替你踩过了
不管用哪个工具,有一些问题几乎是每个硬件工程师都会碰到的,这里就把我在两套工具里实际踩过的坑和对应排查方法整理成表,照着查就行。
| 常见问题 | Cadence/Allegro场景 | Altium Designer场景 |
|---|---|---|
| 原理图器件无法关联封装 | 原理图器件Footprint字段填了PCB库里不存在的名称,报错“Couldn't find padstack”或封装缺失 | 集成库没装好或封装引脚编号和原理图符号引脚编号不匹配 |
| 部分网络净荷丢失 | 导入网表后部分铜皮/走线消失,检查是不是约束规则设置把该网络排除在外 | 检查是否误用了“No Net”属性,或原理图里网络标签有空格/特殊字符 |
| 丝印层输出错层 | 在Allegro出Gerber时忘记勾选Board Geometry/Silkscreen层,或者相应Class和Subclass映射错误 | AD默认导出时“Include Layers”没勾选Top Overlay,导致丝印缺失 |
| 焊盘连接异常 | Padstack的热释放焊盘没设置好,或者Flash符号缺失导致内层连接直接断裂 | 封装库里焊盘的热焊盘选项被误设为“None”,或阻焊层开口值过小 |
| 导出DXF后结构缺失 | 层映射没选全,尤其Manufacturing/Outline层被遗漏 | 导出DXF时选择的机械层不是结构工程师要的层 |
| 多人协作库混乱 | 不同工程师各自改了本地库,封装文件版本不一致,导入网表报错不断 | 不同工程师用不同的库文件,同一个位号在两个工程里封装不一样 |
再单独说几个高频且典型的场景,都是群里被提问的常客。
第一个,OrCAD怎么跟Allegro关联做反标。在OrCAD里设计完原理图、修改了位号后,必须生成网表再导入PCB,否则PCB里依然是旧位号。如果已经导入,需要在Allegro里Tools -> Logic -> Annotate,把新的位号反标(Back Annotation)导出一个.eco文件,然后在OrCAD里File -> Import -> Logic导入这个.eco,原理图和PCB位号才会一致。
第二个,AD原理图设计过程中内存占用越来越严重。这个其实不是玄学。AD的集成开发环境是.NET架构,长时间开着工程、反复开关文档、历史记录越堆越多,内存碎片化自然变高。我的处理方法是:每画一个小时就手动执行一次File -> Save All,然后关闭不用的标签页;同时把自动保存时间从默认的5分钟改成15分钟,否则频繁自动保存反而增加负担。如果还是卡,就把工程导出为PrjPcb副本再打开,一时之间清爽很多。
第三个,关于在AD里遇到“元器件属性只显示simulation generic”的问题。在AD 21之后的版本里,新放置的元器件默认属性面板可能只显示极少字段。这其实是一种界面精简策略,你需要在属性面板右上角的“Properties”里,把“General”、“Parameters”、“Footprint”等分组展开,或者点“Add”按钮手动添加你关心的字段。更高效的做法是给器件模板或原理图模板配置一套默认的可见属性集合,一劳永逸。
第四个,Allegro里替换单个封装后焊盘名对不上。我用Allegro替换封装时,系统会提示“Padstack name mismatch”,这是因为新旧焊盘名称不一致。这时不要直接用新封装,而是先执行Tools -> Padstack -> Modify Design Padstack,把旧的焊盘名改写成新的焊盘名,再替换封装,网络关系会比较稳定。
第五个,铜皮只有轮廓没有填充或者铜皮一切就散的问题。Allegro中确认了铜皮边界后,如果只显示轮廓不显示填充,多数时候是“Smooth”设置没开或还没执行生成铜皮形状,点一下Shape -> Select Shape or Void/Cavity,然后右键选择“Smooth”即可。另一个隐藏点在于局部铜皮优先级,如果你在重叠区域设置了多个负极性的铜皮,优先级不对就会互相吃掉,做电源平面分割的时候尤其要小心。建议每次铺完铜都跑一次Tools -> Database Check,重点检查“Unconnected Pads”和“Shape”相关项的报错。
第六个,Allegro text操作,移动文字、镜像文字的问题。在Allegro里点击文字,右键选择“Text edit”可以改内容,选择“Move”可以拖动,而镜像文字要用右健里的“Mirror”。很多新手第一次找不到Mirror按钮,以为只能删掉重建,其实在那个右键菜单深处。另外还有“Change”命令可以改文字的层和字体属性,比如把装配层文字改成顶层丝印大字,都是在这里完成的。
第七个,AD为什么越用越慢,内存不足。除了常规的关闭自动保存,还必须看看是不是加载了太多库文件,或者工程里嵌入了大量的3D模型。3D模型文件大的时候,每次旋转和缩放都会消耗大量内存。要是你从网上下载了一堆Step模型,最好做完机械干涉检查后就把模型文件跟封装解除关联,或者把模型文件压缩成通用轻量格式再挂载。
6. 两者的数据交换、转档与扩展生态
总有人问,A公司的板子用Allegro画的,B公司用AD,他们之间怎么传文件?这里必须把话说清楚:Allegro和AD的工程文件格式互不兼容,不能直接双击打开对方的工程。
6.1 Allegro到AD的转换方式
最稳妥的路径是“中间文件交换法”。如果对方给你的是Allegro的.brd文件,你让AD直接用Import向导去读(File -> Import -> Cadence Allegro),AD是能够直接读入.brd文件的,但复杂度高、多层板经常出现铜皮丢失、孔位偏移和文字错乱。除非是简单板,否则不推荐依赖这个方式作为方案主路径。
更通用的做法是让Allegro导出中间格式,比如IPC-2581或ODB++,然后AD用File -> Import -> ODB++ / IPC-2581导入。好处是层叠信息、钻孔文件和封装信息都在,坏处是铜皮和走线会被转成实体Shape,没法再像原生PCB那样方便编辑和重新布线。
6.2 Allegro转Pads文件的方法
这是很多人在网上搜的高频词。Allegro并不能导出一个Pads能直接打开的格式,行业内常用的法子里,最流行的是借助“PADS Translators”或者“PADS Layout转换器”。基本路径是:Allegro导出.asc文件(不同Pads版本有对应的.asc格式),再用Pads的Import功能导入。但问题也一样,复杂的铜皮和铺铜区域需要重新整理,网络和器件的映射偶尔会出bug,转完之后一定要跑一遍规则检查和开短路检查。
6.3 原理图格式和库格式的互换
原理图层面,Capture和AD也各自封闭。Capture可以把原理图导出成EDIF格式,AD能导入EDIF,但实际转换效果只能说是“能用,但很难看”。AD里转换过来的原理图,字体、位置、连线经常乱七八糟,需要大量手工整理。反过来,AD的原理图导出成.SchDoc格式之后Capture是打不开的,除非借助第三方转换工具,而第三方工具往往收费且效果一般。
所以在跨公司协作时,我通常的建议是:不要直接转原格式,而是用“PDF+Netlist+单个器件信息表”三件套来协作,一个供人阅读,一个供机读网表,一个供库核对。高效又不容易出错。
6.4 关于“Cadence安装”和“Cadence 16.6/115”的话题
安装Cadence往往是新人劝退的第一关。Allegro对License管理极其严格,环境变量需要设置CDSROOT、LM_LICENSE_FILE,安装包里通常要手动破解License服务,新手第一次装十有八九报错“Cannot Find License”。这里我只能说,安装包一定要找靠谱来源,并且按照教程一步步来,缺一个路径都起不来。
另外,网上经常提到的“cadence 16.6 115”,其实是Cadence 16.6这个小版本里的一个更新补丁(Hotfix),补丁号到115左右。懂得去看补丁号的,基本都对Allegro的稳定性有执念。实际使用中确实如此,16.6经过多次Hotfix修复后,稳定性和性能表现在行业内都极具口碑,现在很多公司还在沿用这个版本,也足以说明Cadence的“升级”并不总是让人愉快,很多做好的封装库和Skill脚本在旧版本上跑顺了就懒得动。
而AD的版本迭代仿佛跟Cadence是反着来的,每年一个大版本,新功能不少,但带来的Bug也不少。在AD 20、AD 21这些版本出来的时候,就有不少人反馈“打开工程重建PCB时内存崩了”,也是见怪不怪。我个人的建议是,能用稳定的长期支持版本就别盯新版本。
7. 扩展技巧与个人工作流沉淀
讲了这么多工具差异,最后分享一些我沉淀下来的跨工具技巧和经验。
7.1 无论用哪个工具,一律先统一设计规则
在画原理图之前,把项目设计规则文档写好:命名规则、位号分配规则、封装命名规则、线宽规则、丝印规则、拼版要求。也许有人觉得画个简单板子不用这么较真,但你只要经历过一次“因为两个工程师用两套命名体系,导致库合并后封装冲突”的阵痛,就再也不想偷懒了。Allegro的老手们都习惯在项目的早期就维护一个强大的本地/服务器共享库,并且配套Excel表格记录每个封装的来源、版本、修改日期。AD团队也可以用版本控制工具(比如SVN/Git)管理Altium工程的库和文件,实现基础协作。
7.2 用脚本和Skill提升效率是Allegro加分项
Allegro具备强大的Skill脚本系统,凡是跟我一样被重复机械操作折磨过的工程师,都会在某一天踏上写Skill的道路。比如批量设置通孔焊盘属性、批量替换Via、一键导出DXF层映射表、一键给所有网络加泪滴,这类脚本在网上能找到大量现成资源。我自己就收藏了不少吴川斌博客上的Allegro Skill工具包,其中的批量出光绘和规则检查脚本,实际使用效率提升非常明显。这套东西是AD的脚本系统暂时比不了的,AD虽然有Delphi Script和Python,但生态和社区成熟度差距明显。
7.3 AD的扩展生态和3D协同也别忽视
AD这边也有它的优势生态,比如Octopart在线器件库联动搜索、ActiveBOM整理BOM报价、MCAD Co-designer跟SolidWorks做结构协同。对于创业团队和单人工程师来说,这些一体化能力是真能省时间的。比如画一个带外壳的消费电子板子,用AD做原理图和PCB,配合3D导出,就能把板子装进结构图里检查干涉,过程行云流水,Allegro要达到这个程度需要额外配置好MCAD协同时限。
7.4 从项目管理的角度给两个工具做定位
在团队里,我建议这样分配角色:板子简单、人手少、周期短的,用AD;板子复杂、团队大、要求高可靠性的,用Allegro。还有一个比较现实的折中方案——一个小团队可以“用AD做前期方案验证、用Allegro做正式交付”,但代价是需要两套库、两套流程,对库管理员的要求很高,不太建议新人团队这么干。
最后再分享一个跨工具的小技巧
如果你实际上手后不得不同时接触两套工具,我强烈建议你把精力先放在“理解数据流”而不是背快捷键。快捷键只是肌肉记忆,今天记了明天忘了也无所谓,真正值钱的是你理解“A工具里封装是怎么被调用的、B工具里网表是怎么传递的”。我在切换工具的阵痛期,就是靠着不断问自己“这个操作在另一个工具里对应是什么概念”,才把两套知识体系串起来的。比如Allegro里的Padstack其实就是AD封装库里的一个焊盘,只是AD把它们塞在了一个环境里,没让你单独管而已。一旦你建立起了这种概念映射,任何EDA工具对你来说都只是皮囊,内里的设计逻辑才是共通的。
画板子是一条漫长的路,有人喜欢Allegro的严谨,有人依赖AD的效率,这都很正常。真正决定你走多远的,永远是你对原理图、封装和信号完整性的理解深度。工具切换的阵痛,总会随着经验的积累而消解,希望这篇对比能帮你缩短那段阵痛,也欢迎在评论区聊一聊你平时用哪个工具、踩过哪些奇葩的封装的坑。