ARTICLE DETAIL

资讯详情

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

AD原理图转OrCAD全流程实战:从洗图准备到转换检查

AD原理图转OrCAD全流程实战:从洗图准备到转换检查 前两天一个前同事给我打电话说客户那边要把产品维护权收回去自己做了结果对方的硬件部门用的是Cadence整个流程手里的资料却是一套Altium Designer工程。对方的问题很简单“能不能把原理图转成OrCAD能打开的格式”这话听着容易实际做过的人都知道中间全是细节。我第一次帮人做这种转换的时候偷懒直接另存为了事结果第二天对方发来一屏幕截图说元件全是灰的、封装对不上、还有好几个Value变成乱码。从那以后我老老实实把整套转换流程梳理了一遍才算是把“AD原理图转OrCAD”这件事做稳了。今天就把这条完整路线掰开揉碎讲一遍从什么时候该转、转之前怎么洗图、实际操作怎么做到转完以后怎么检查、怎么补救都写清楚。适合正在做EDA工具迁移、要给客户交付OrCAD格式资料、或者公司准备从AD切到Cadence体系的硬件工程师参考。内容尽量按实战来写不绕弯子。1. 为什么要把AD原理图转去OrCAD先想清楚再动手1.1 现实中遇到最多的四类转换场景第一类场景最普遍客户或合作方指定交付格式。一些企业级客户的硬件部门长期只用Cadence接收第三方资料时只认OrCAD的.dsn文件有的甚至在交付规范里直接写明“原理图必须是OrCAD Capture可编辑格式”。这时候不是你想不想转的问题而是合同要求你必须拿出这个东西。第二类是公司内部做EDA平台切换。这些年不少公司从Altium全家桶往Cadence体系迁移迁移过程最痛苦的就是历史项目积累。手里几百张AD原理图总不能全部重新画一遍所以“批量格式转换”就成了一条必经之路。第三类是设计流程需要。AD画好原理图但PCB部分要交给外面的板厂或合作伙伴用Allegro继续布板。这时候必须把原理图导成OrCAD再从OrCAD导网表给Allegro否则后端流程根本走不起来。第四类是长期维护需求。有些老产品年代久远原始设计环境早就没人维护了而客户那边还在用OrCAD做日常维护只有把资料转成他们的工具链才能继续修修改改。你可以对照自己的情况如果属于以上四类该转就转别犹豫如果你只是好奇两个软件能不能互通建议看完下面几节再做决定。1.2 两条转换路线直接导出DSN和网表中转从AD到OrCAD业内现在基本走两条路线。第一条也是最常用的一条用AD自带的“另存为”功能直接把原理图保存成OrCAD Capture的.dsn设计文件。AD从很老的版本开始就一直保留着这个导出选项操作路径在File - Save Copy As保存类型里选择“OrCAD Capture Design (*.dsn)”。这条路线的最大优点是图形信息保存完整原理图的摆放位置、网络连线、位号基本都能带过去转换以后在OrCAD里打开就是一份能被继续编辑的原理图。第二条是迂回路线先把AD原理图导出成EDIF 2.0或者Protel格式网表再导入OrCAD。这条路线最大的缺点是图形信息几乎全丢导入之后你看到的只是一堆元件和网络关系原理图连线全部需要重新拉。除非你要的只是拿网表做PCB否则我不推荐作为主方案使用。实操经验是能用DSN直接转就别绕网表。网表更适合做“验证手段”用来确认转换过程中有没有丢网络、丢管脚而不是作为交付格式。1.3 对转换结果先建立正确预期我在网上看到很多人问“能不能完美无损转换”说实话我的答案是能达到“能用”的概率很高但“完美无损”几乎不存在。原因不复杂两个软件的数据模型差异非常大。AD的元件封装模型、属性结构、图纸对象类型跟OrCAD Capture不是一一对应的导出转换的过程本质上是一种“翻译”。既然是翻译就一定会有信息损耗比如某些属性名会被改写、部分符号会变成通用符号、多Part器件可能出现变形。所以我在做转换之前一定会给同事、客户做一个预期管理我把“必须保留的内容”按优先级排成一张表第一优先网络连接关系。这是原理图的灵魂连接关系错一根线整个板子就废了。第二优先元件位号。位号错乱会导致BOM对不上后续调试极其痛苦。第三优先器件参数和Value。价值属性丢失会影响采购和仿真。第四优先图形排布和页面结构。这部分丢了最难看但通常不影响功能。只要前三项保住这次转换就是成功的。有了这个预期后面遇到问题就不会慌至少知道哪些问题必须停机处理、哪些问题可以睁一只眼闭一只眼。2. 转换前的准备工作原理图“洗图”比导出本身更重要2.1 位号、网络名和图纸尺寸的常规检查很多人一上来就点“另存为”结果导出一堆问题然后回来抱怨格式转换不可靠。根据我的经验至少有一半问题出在导出之前——原图本身就带着“病”转换只是把病带到了新环境里而已。第一个要检查的是位号唯一性。AD本身允许某些情况下位号不唯一或者出现空位号这在AD环境里可能不怎么报错但到OrCAD里就会导致元件匹配混乱。简单做法是在AD里跑一次Tools - Annotation - Force Annotate All强制重标所有位号确保每位号唯一。注意这个操作会改动图纸执行之前一定先另存一个副本。第二个是网络命名。AD的网络名允许包含一些特殊字符比如#、$、空格、中文等而OrCAD对网络名的字符集要求相对严格带特殊字符的网络名在导出后经常被改写或者直接报错。所以转换前可以打开AD的Netlist或者用Find功能搜一遍看到不常规的字符直接改掉。具体改法是把所有网络名统一成“字母开头、后面跟字母数字和下划线”的格式这是OrCAD系统最舒服的格式。第三个是图纸尺寸和标题栏。AD图纸可以是任意自定义尺寸OrCAD虽然也支持自定义但转换时经常遇到图纸边界不一致导致元件跑到图纸外面。建议转换前把AD的Sheet Size统一设置成OrCAD常用的A3、A4或自定义相近尺寸同时把图纸上放Title Block改成简单文字样式标题栏内容乱掉的问题会少很多。2.2 清理特殊字符和自定义参数这一条是两次踩坑换来的教训。AD原理图里很喜欢用Unicode字符比如“μF”的μ、“Ω”的欧姆符号、“±”的±号。这些字符在AD里看着没问题转到OrCAD之后经常变成一堆问号或者乱码。别指望OrCAD会自动识别它基本上会把它不认识的字符合并成一个乱码串。曾经有个项目的10uF电容转完之后Value栏直接变成“1?F”要不是BOM对比得仔细采购那边差点下单买成“1?F”这个神奇物料。还有中文字体问题。如果AD原理图里有中文注释、中文Title Block等导出到OrCAD后大概率会变成乱码即使个别系统能显示换一台电脑、换个字体库又可能花屏。所以我现在的做法是转换前把整个原理图里的特殊字符统一替换成ASCII字符μ写成u、Ω写成ohm、±写成/-中文注释要么删掉要么改成拼音或英文注释。改完之后才做导出。另外一项被很多人忽略的是自定义参数。AD的元件参数区里往往有一堆自定义列比如Supplier Part Number、Manufacturer、Price、库存编号等。这些自定义参数到了OrCAD里不一定能一一对应很多会变成“字符串追加”或者干脆丢失。转换前把必须在AndOrCAD里保留的参数统一复制到Value、Comment、PCB Footprint这几个标准属性里这样导出后至少能在属性表里找到。2.3 多Part元件和封装属性的统一多Part元件是格式转换里最容易翻车的一个点。AD里一个74HC00可以建模成包含4个Gate的单一逻辑元件你在原理图上是分四个位置摆放的但AD内部把它们当成同一个物理元件的4个部分。OrCAD Capture同样支持多Part但封装和门分配的规则跟AD不一样导出后经常出现的问题是多Part变成多个独立的普通符号位号变成U1A、U1B、U1C、U1D看起来好像没问题但在后面的PCB封装映射阶段就会冒出一堆“多余元件”报错。我的经验是转换前先在AD里把复杂多Part元件尽量换成简单模型或者干脆在OrCAD里重建一个标准的多Part符号转完以后再替换。如果元件数量不多这个工作量是完全可以接受的。再一个就是封装属性。AD里的PCB footprint写法跟Allegro不完全一样。AD可能是“DIP-8”“LQFP-48”这种带横杠的描述而Allegro的封装名通常就是“DIP8”“LQFP48”这样紧凑命名。导出到OrCAD时AD的Footprint字符串会如实搬过去但这不意味着Allegro能认。如果目标链路是OrCAD Allegro建议在转换前把AD的封装命名统一成Allegro风格或者准备好一份“AD封装名转Allegro封装名”的映射表后面在OrCAD里批量替换。2.4 给工程做一次完整备份这一步听着多余但其实特别重要。导出DSN的过程通常不会主动修改原工程但如果中间你手滑点错选项或者在AD里跑Force Annotate、批量属性修改这种操作没撤销回来原图被改掉的风险是真实存在的。我现在的习惯是在导出前复制一份完整的AD工程到另一个目录包括工程文件、原理图文件、库文件然后在这个副本上做所有转换前修改。这样即使转换翻车原始版本还在不至于连底牌都没了。这个副本除了安全性还有一个好处转换后做BOM对比、网络对比时你手里有一个未改动的基准版本出了问题能快速定位是转换造成的还是你洗图时改坏的。3. 从AD导出OrCAD格式的完整实操流程3.1 在AD中使用Save Copy As导出DSN文件前提条件确认无误后正式开始导出。打开AD原理图工程确认当前打开的是你想要转换的原理图Sheet然后进File - Save Copy As。在保存类型下拉框里找到“OrCAD Capture Design (*.dsn)”这一步在AD的几个主流版本里都有位置基本一致。选择之后系统会弹出一个关于DSN版本号的选项让你选择“Target Capture Version”这里会列出Capture的几个版本号。版本选择上我的原则是导低不导高。OrCAD Capture老版本打不开新版本DSN但新版本基本都能打开老版本DSN。所以如果你不确定对方的OrCAD版本就选一个比较低的版本比如16.6或者17.2。我自己现在统一选17.2兼容性最好打开速度也正常。另外还要注意一点AD一次只能导出一张Sheet还是能导出整个Project实际上这里用Save Copy As导出的是当前打开的Sheet或当前Project取决于AD版本和操作方式。稳妥做法是逐个打开需要转换的原理图Sheet多页设计逐一另存最后在OrCAD里合并到同一个设计中。如果你的AD版本支持一次导整个Project可以试一下但导完以后一定要去检查每一页是否都在。3.2 在OrCAD Capture中打开DSN文件导出完成后你手上有一个.dsn文件。先用OrCAD Capture打开路径是File - Open - Design选择刚才导出的.dsn文件。打开过程可能会有点慢因为AD转换出来的DSN经常带着一堆Design Cache元件和冗余属性。打开以后你会看到一个和AD图纸面貌基本相似的设计但注意元件和连线可能会出现部分漂移页面边界的定义也可能有偏差这些都是正常现象不用立刻慌。如果打开时弹出警告框提示某些元件无法识别或者某些属性不兼容先截图保留这些警告信息后面会非常有价值。不要点“忽略所有”然后继续我就曾经干过这事结果等图纸打开后密密麻麻一片灰色元件再想排查已经找不到原始提示了。打开后先把页面的结构确认一遍右下角Project窗口里有没有出现你预期的所有Schematic Page每个Page里的元件数量大概对得上吗如果明显少页别继续往下做先回去重新检查AD导出设置。3.3 转完以后系统性的核对检查清单打开之后不是结束是另一轮折磨的开始。我给自己列了一张检查清单每次转换完对照执行一遍基本能覆盖90%的问题页数核对OrCAD中的Schematic Page数量和AD工程里的Sheet数量完全一致。位号核对在OrCAD里打开元件属性编辑器导出一份位号清单和AD元件的位号清单比对R1、C2这些必须一一对应。网络核对在OrCAD里用Tools - Generate Netlist先导出一份网表再用同样方法从AD导出一份网表两边做文本对比重点看Net有没有缺失、有没有多出来的Net。Value核对抽查20个左右的元件打开属性表确认Value、Comment、PCB Footprint三项和AD里的值一致。图纸结构核对确认多Part元件分组是否正常确认电源地符号、Off-Page Connector等全局符号是否保留。这一套检查做完大概需要半小时到一小时。有人说太麻烦但比起后面PCB阶段发现少一根线再回头改这个时间成本其实很便宜。3.4 用报表交叉验证转换完整性人眼抽查永远会漏报表才是王道。先在AD工程里生成一份BOM报表和一份NetlistAD的Reports菜单里有现成的。然后到OrCAD里同样操作一遍Tools - Bill of Materials生成OrCAD版BOMTools - Generate Netlist生成网表。拿着四份文件做交叉对比重点不是看“一样不一样”而是看“有没有多、有没有少”。我自己比较习惯的做法是把两份BOM都导出到Excel里以位号为Key用VLOOKUP把两边的Value和Footprint匹配到一起。凡是匹配不上的位号就是这次转换需要重点关注的位置。网络对比则可以直接用Beyond Compare之类的文本对比工具把两份网表文件做文本级diff一眼就能看出哪些网络在OrCAD里丢失或者被改名。这一步做完你对这次转换的质量就有了量化认知后面修修补补也有据可循。4. 转换后高频问题与排查思路4.1 元件缺失、灰色无库符号的处理转换后最扎眼的问题是元件变成灰色或者显示成“Generic”符号。这是因为OrCAD找不到原来对应的原理图符号库只能用内部通用符号做占位。网络连接和位号一般还挂着但图形看起来非常粗糙也无法继续正常编辑。处理方法是在OrCAD里做“替换符号”操作。先选中这一类的元件右键选择Replace Cache把元件符号替换成你自己库里的标准符号或者OrCAD自带的库。如果工程里这一类元件数量特别多手动一个个替换显然不现实可以借用OrCAD的全局替换功能在Design Cache层面对同类符号做批量替换。具体操作是打开Design Cache列表找到原来进来时自动产生的缓存符号右键选择Replace Cache指定一个库里的标准符号整张图同名的缓存元件会一次性全部替换。这里有个小技巧如果转换前的AD库是完整且规范的建议在转换之前先把AD库里的符号一个个搬到OrCAD环境里做一个本地库工程。DSN打开后直接从这个本地库里做Replace Cache替换速度和成功率都远高于临时去网上找库。4.2 乱码、Value丢失、参数错位的排查这类问题通常是洗图没洗干净的后遗症但既然已经转出来了也有补救手段。乱码的处理看严重程度。如果只是Value里的个别字符比如μ变成了?直接用OrCAD的Edit - Properties配合右键Replace功能做全局字符替换把“?”批量改回“u”基本能救回来。如果大面积乱码已经影响到属性名本身就需要先导出BOM在Excel里把正确的属性值整理好再通过OrCAD的Import Properties功能把参数批量写回。Value丢失很可能是AD里把值放在了Comment属性而OrCAD读取时读的是Value属性。处理方式是在AD导出前用批量属性操作把Comment内容复制到Value如果已经转了就在OrCAD里利用属性编辑器的Copy功能把Comment列的内容合并到Value列。这个操作看起来很笨但在没有脚本的情况下是最稳的。参数错位最常见的原因是两个软件对属性名的匹配规则不同。比如AD里有“Manufacturer”OrCAD里可能映射成了“Manufacturer_1”之类。这种问题不建议在转换后慢慢改最好的处理方式是从源头统一在AD中把需要保留的参数合并进几个标准字段导出后在OrCAD里再把它们拆开。4.3 电源地符号和多Part器件的行为异常电源和地符号在AD里是特殊对象转到OrCAD后表现形式经常发生变化。最常见的是VCC/GND符号变成普通网络标签或者符号丢失但网络连接还在。这种情况对电气连接影响不大因为网络名还在但图纸读起来特别难受。我的习惯是转完以后在OrCAD里把所有Power符号统一重放一遍先删掉已经变形的VCC/GND符号然后从OrCAD的电源符号库中选择标准VCC、GND符号重新放置再手动连到对应网络上。你可能觉得这工作量不小但电源地符号在一张图里数量有限而且重放过程本身也是对电源网络的一次检查值得做。多Part器件的问题我在前面提过。转换后可能出现“一个74HC00在OrCAD里变成4个普通独立元件”的情况这种状态下如果直接导网表给Allegro会被识别成4个封装PCB环节立刻爆出一堆错误。解决思路是在OrCAD里重新确认这4个元件的“Package Group”属性把它们归到同一个Package Reference下再重新跑一次Annotate。如果实在搞不定就删掉这4个残缺符号从库里重新放置一个标准74HC00多Part元件手动恢复连接。4.4 网络名被改动之后的追踪与修复网络名被改动是转换里最隐蔽的问题因为不仔细看到处都正常直到PCB Layout阶段才发现某个网络该连的没连上。AD里如果有网络名包含非法字符比如“5V_#A”OrCAD在导入过程中会把它改写成系统允许的形式有时候会在后面补一串数字。这种改动通常不会破坏连接关系但如果AD里有“5V”和“5V_0”这种相似命名改来改去就容易粘在一起。追踪方法还是靠网表对比。AD导出一份网表OrCAD导出一份网表文本diff里所有不一致的网络名都要逐条确认。已经确认改了名的用OrCAD的全局网络重命名功能把它改回和AD一致的名字。别嫌多这一步做仔细了后面能省掉PCB阶段至少三天的时间。5. 什么时候别硬转更聪明的处理方式5.1 建议重画而不是转换的信号别误会我写这篇文章不是让大家遇到任何AD转OrCAD的需求都硬转。有几个信号出现的时候我强烈建议你评估一下重画的成本。元件数量不多且原图很乱的板子转换大概率是赔本买卖。如果一张原理图只有百来个元件而AD图里位号乱、网络乱、符号摆放也乱转完之后你要花在整理上的时间足够重新画一遍了。还有一个信号是工程里的自定义符号特别多而且OrCAD里根本没有对应库这种背景下转换后的替换工作量巨大不如直接用OrCAD的库重新画。最后一种情况是“只需要交付一次之后永远不再打开”。如果对方只是归档以后大概率以PDF和网表为准那直接把AD转成PDF和标准网表交出去比花一整天去转DSN要高效得多。做技术方案要算投入产出格式转换也一样。5.2 用AD导出的BOM、PDF和网表辅助重建决定重画之后别关掉AD就跑。AD里能导出的辅助资料每一个都价值连城。首先是PDF原理图。这个可以作为重画的视觉参考每一页怎么布线、怎么分区、怎么摆模块对照PDF画比对着AD软件来回切换省力得多。其次是BOM表这相当于重画时的物料清单哪些位号对应什么参数、什么封装照着往OrCAD里填就行。再就是网表重画完以后用这份网表做最终验证如果两边网表能对得上说明你重画没有漏线。重画听起来累但有一个隐藏好处你等于顺手把原图重新审查了一遍。很多老项目经手多次后里面残留了不少没有实际连接的废网络、没有用到的元件重画相当于一次版本净化后续维护反而更省事。5.3 流程化处理转换任务的小技巧最后分享几个流程层面的小技巧都是实践总结出来的。一是固定版本组合。我经过几次尝试后确定了自己这套环境组合AD版本固定、OrCAD版本固定每次转换都走同样版本。两个软件版本一变转换行为就会变固定版本能大幅减少不可预期的问题。二是建立转换记录。每次转换都写个简单的转换日志记录原始版本、目标版本、出现的问题、解决方式。用不了多长时间但下次遇到类似问题直接翻日志就能秒杀。三是每次转完都在OrCAD里重新跑一遍DRC。很多人以为DRC是画图时用的其实转换完成后跑DRC是最佳时机它能帮你快速定位悬空引脚、孤立网络、位号重复这类格式转换特有的问题。我接手的转换项目里有一次就是靠DRC发现了3个悬空电源引脚那是在AD里完全看不出来的隐患。把这个流程走顺之后AD转OrCAD就不再是什么惊心动魄的大工程了无非就是洗图、导出、打开、检查、修复五个步骤。说实话这个转换功能最大的价值不在于“能转”而在于逼着你把原理图重新检查了一遍。我见过很多人转完以后在OrCAD里重新走DRC反而找到了原图里隐藏多年的问题。最后再提一句转换不是一次性的操作如果你长期在两个平台之间来回切换一定要把两边的库和封装命名规范尽早统一起来这会让你少走很多弯路。
返回列表