
OrCAD 中怎么产生 Cadence Allegro 的第三方网表这次我们直接解决一个硬件工程师日常绕不开的问题在 OrCAD Capture 里画完原理图怎么生成一份能被 Cadence Allegro 正确识别的第三方网表。很多人第一次接触“第三方网表”这个词会以为是什么特殊格式。其实它就是“非第一方直接传递”的网表文件。在 OrCAD 和 Allegro 都属于 Cadence 生态的情况下仍然有两种常见传递方式一种是 Allegro 直接读取 OrCAD 的数据库另一种就是把原理图转换成一种中间文本网表再由 Allegro 导入。第二种方式就是今天的主角第三方网表。这篇文章会带你走完从原理图检查、配置 Other 网表格式、生成 .net 文件、到 Allegro Import Logic 导入的完整链路。顺手把最常见的报错、封装不匹配、网络丢失、导入无反应等问题一起讲掉。适合读者准备从 OrCAD Capture 往 Allegro 投板的 PCB 工程师、在校做电子设计的同学以及被网表报错折腾过但没系统整理过流程的硬件开发人员。1. 核心能力速览能力项说明解决的问题把 OrCAD Capture 原理图信息转换为 Allegro 可导入的第三方网表核心操作位置OrCAD Capture 菜单 Tools - Create Netlist - Other输出文件以 .net 为后缀的文本网表文件Allegro 导入入口File - Import - Logic选择 Third Party Netlist 类型输入依赖原理图中的位号、封装、引脚编号、Device 属性必须完整关键配置文件allegro.cfg用于定义原理图封装名到 Allegro 封装名的映射是否支持批量OrCAD 本身不支持一次批量输出多个原理图网表需逐页设计执行推荐版本以 Cadence 16.6、17.2、17.4、22.1 等常见版本为参考界面基本一致适用场景独立原理图与 PCB 协作、封装名需要统一映射、跨团队交付不适用场景如果只是 OrCAD 到 Allegro 直接传递优先考虑第一方导入流程这里的“第三方”是相对 OrCAD 而言的。OrCAD 输出的 Other 格式网表不只有 Allegro 一种还可以输出给 PADS、Protel、Mentor 等工具。本文只讲 Allegro 格式。2. 为什么需要第三方网表数据传递方式对比Allegro 导入网表本质上是读入一张“元器件清单 连接关系清单”。OrCAD 和 Allegro 虽然同属 Cadence但两者的数据库结构并不自动互通。要完成数据传递实际工程里常见三种路线。第一是直接使用 OrCAD Capture CIS 与 Allegro 的 Design Entry HDL 联动。这种方式最顺畅但前提是整个设计流程都基于 Cadence 完整工具链而且设计库、封装库、工程结构都要统一。很多公司出于流程规定或历史原因并不一定采用这种模式。第二是用 OrCAD Capture 生成 Allegro 的第一方网表也就是在 Create Netlist 对话框中直接勾选 Allegro 相关的直接选项。这种方式需要本机安装了 Allegro 组件由软件直接完成数据库映射。优点是不用手动管配置文件缺点是问题被“封装起来”出错了不容易看出来。第三就是本文要讲的第三方网表。操作上走 Tools - Create Netlist - OtherNetlist Format 选择 Allegro软件会根据配置文件生成一个纯文本的 .net 文件。之后在 Allegro 中手动导入。它的优势非常明显中间产物可见、可检查、可版本控制封装映射规则可以统一维护成一个 allegro.cfg 文件并且对 OrCAD 和 Allegro 是否位于同一台机器没有强制要求。很多公司在与外协 PCB 厂交接时会明确要求交付这种网络表文本目的就是让对方能在自己的封装库环境下完成导入。第三方网表也有代价。它完全依赖原理图中每个元件的属性是否规范。如果原理图里的封装名称写得不标准、位号重复、引脚编号不匹配生成的网表就会在 Allegro import 阶段报出一堆错误。所以下面先从原理图检查开始讲。3. 生成第三方网表前的环境与设计检查开始生成网表之前先确认几件事。这些检查如果漏掉后面 Allegro 导入时大概率会报错。操作系统与软件环境方面OrCAD Capture 和 Allegro 都运行在 Windows 环境下。版本建议保持一致或兼容。实际项目里17.2 生成的第三方网表拿到 17.4 或 22.1 下导入通常没有问题因为网表是文本格式Allegro 对版本兼容性处理得比较宽。但仍建议在项目开始时定好统一版本避免网表里出现新版本才支持的关键字。原理图检查方面需要确认以下项目每个元件必须有唯一的 Reference Designator也就是位号。重复位号会直接导致网表生成报错。每个元件必须填写 PCB Footprint 属性。在 Capture 属性编辑器中这个属性通常叫 PCB Footprint也有的库用 Footprint 或封装名。第三方网表输出时Allegro 会拿这个属性去匹配封装。元件引脚编号必须与 Allegro 封装焊盘编号一致。比如一个元件原理图符号的 Pin 1到 Allegro 封装里必须有 PAD1。如果编号类型不一致比如原理图是 A1、A2封装里是 1、2导入后网络就会乱掉。Device 属性也要检查这一项常被忽略。Device 属性描述的是元件的逻辑器件Allegro 在做某些检查时会引用它缺失时一般不会导致网表失败但会在后续 PCB 流程中埋坑。电源引脚和地引脚的名字要统一。OrCAD 里同一个电源网络如果用了两个不同的网络名比如 5V 和 5V实际在板子里是同一路电源那么网表生成时它们也会被当作两个网络处理。这是很多网络丢失问题的根源。库文件准备方面这一步不是 OrCAD 生成网表时必须的但 Allegro 导入网表的阶段必须用到。Allegro 导入时会根据网表里的封装名去搜索封装库路径。常见格式是 .psm 文件封装符号和 .pad 文件焊盘。导入前需要把相关库路径添加到 Allegro 的 User Preferences 中否则会报 Unable to load symbol。从工程管理角度建议在项目目录下建立清晰的层级D:\Project\01_SCH D:\Project\02_Footprint D:\Project\03_Netlist D:\Project\04_PCB D:\Project\05_Log原理图放在 01_SCH封装库放在 02_FootprintOrCAD 生成的第三方网表统一输出到 03_NetlistAllegro 工程放在 04_PCB。这样后续批量处理或者换人接手都能快速定位文件。网表文件的文本内容最好也提交到版本管理方便追溯改动。4. 在 OrCAD Capture 中配置第三方网表输出配置第三方网表输出是整个流程里最关键的一步。下面按常见版本的界面路径来说明。打开 OrCAD Capture加载原理图后点击菜单 Tools - Create Netlist。此时会弹出 Create Netlist 对话框里面有好几个选项卡PCB Editor、Other、PADS 等。生成第三方网表需要切换到 Other 选项卡。在 Other 选项卡中会看到如下几个关键设置Netlist Format下拉选择框。在这里选择 Allegro。这里注意不同版本的下拉列表显示名称略有区别。老版本会直接显示 Allegro新版本可能显示为 Allegro 或者 Other Allegro认准 Allegro 字样即可。Template File用于指定配置文件 allegro.cfg。如果为空OrCAD 会使用默认配置。实际项目中更推荐指定一个统一的 allegro.cfg把原理图封装名映射到库封装名的规则固定下来。Netlist File输出网表文件路径。默认情况下OrCAD 会自动生成与原理图设计名相同的 .net 文件。这里也可以手工指定绝对路径比如 D:\Project\03_Netlist\my_design.net。下方还有一些复选框例如 Create Programmer File、Create ASCII File 等。对于标准 Allegro 第三方网表通常只需要关注是否生成对应的辅助文件。保持默认即可。配置完成后点击 OKOrCAD 开始生成网表。这里需要特别说明一个点有些工程师在 Other 选项卡里选择了 Allegro但点击 OK 后提示找不到配置文件或者提示 Template File 错误。这通常是因为 allegro.cfg 的路径没有配置。解决方法是先让 OrCAD 用默认配置生成一次软件会在输出目录下生成一个默认的 allegro.cfg然后再用这份默认配置做基础修改。如果项目里还没有 allegro.cfg最稳的做法是在 Template File 中直接选择 OrCAD 安装目录自带的 Allegro 模板。不同版本的模板路径不同但通常位于 Capture 安装目录下文件名类似 allegro.cfg。allegro.cfg 这个文件的理解非常简单它做的是封装名映射。举个例子原理图里的电阻封装叫 R0603而 Allegro 封装库里叫 RES0603如果不做映射Allegro 就找不到对应的 .psm 文件。可以在 allegro.cfg 中加一行规则来实现对应。以下是一个示意写法# allegro.cfg 简化示意 # 左侧为 Allegro 封装库中的封装名 # 右侧为 OrCAD 原理图中填写的 PCB Footprint 属性值 RES0603 R0603 CAP0603 C0603 SOP-16 SOIC16 QFP-128 QFP128实际使用时需要根据公司封装库的真实命名去配置。如果原理图封装名与 Allegro 库封装名已经完全一致这行映射也不是非写不可但建议仍然维护一份配置文件因为大型项目里封装命名不统一太常见了。5. 生成第三方网表并检查输出结果点击 OK 后OrCAD 会在后台完成原理图编译和网表生成。这个过程中可能弹出提示框一般不涉及必须点击的选项直接确认即可。生成结束后到设置的输出目录查看文件。典型情况下会看到至少两类文件.net 文件网表主体内容是文本描述了元件清单和网络连接。.log 或类似日志文件记录网表生成过程中的错误和警告。打开生成的 .net 文件你会发现这个文件并不是一台 PCB 工具直接读取的二进制数据而是一种有一定格式要求的文本。由于不同版本生成的格式略有差异这里不贴完整网表只说明它内部通常包含的信息文件头部可能有注释行然后是元件位号与封装的信息块再往后是网络名与引脚连接的信息块。如果你想快速检查生成是否成功重点关注两个维度文件大小是否接近预期用文本编辑器搜索有没有 ERROR、WARNING 字样。如果 OrCAD 生成阶段就报错通常错误信息会直接写在 .log 文件里。下面是一个用命令行快速过滤日志中错误信息的示例在 Windows 环境下可以打开 cmd 执行findstr /i error warning D:\Project\03_Netlist\*.log执行后如果只有 warning 提示可以逐条判断是否影响导入。如果出现 error则先回去修改原理图属性再重新生成网表。切记不要带着 error 的网表强行导入 Allegro否则后面会在导入阶段反复排错浪费大量时间。为了排查多个网表文件的生成结果也可以用一段简单的 Python 脚本批量检查输出目录下的 .net 文件是否为空或者是否包含错误信息import os netlist_dir rD:\Project\03_Netlist for filename in os.listdir(netlist_dir): if filename.endswith(.net): filepath os.path.join(netlist_dir, filename) with open(filepath, encodinggbk, errorsignore) as f: content f.read() size os.path.getsize(filepath) print(f{filename}: {size} bytes) if ERROR in content.upper(): print(f {filename} 中存在 ERROR请检查原理图属性)这段脚本不替换人工判断但它能在你处理几十张分页原理图时快速筛掉那些明显的坏文件。脚本里的路径要按实际目录替换。还有一点要提醒生成的 .net 文件编码常见为系统本地 ANSI 编码。在中文操作系统下用文本编辑器打开时一般没问题。如果用 Python 读取注意指定 encodinggbk 或 errorsignore否则可能会因为编码问题误判内容。6. 在 Cadence Allegro 中导入第三方网表网表生成这一步做完接下来就是 Allegro 侧的导入。这里假设你已经有一个空的 Allegro 设计文件或者新建了一个板框文件。启动 Cadence Allegro PCB Designer打开目标 .brd 文件然后执行 File - Import - Logic。这一步调出导入逻辑对话框。在 Import Logic 对话框中有几个地方需要重点设置Logic type这里不要选择第一方的 Cadence 选项而是选择第三方网表类型也就是 Third Party Netlist。Netlist file点击右侧文件夹图标选择 OrCAD 生成的 .net 文件。路径不要含有中文字符和空格过多的情况否则可能出现读取异常。Reference designator 处理如果原理图位号含有特殊前缀Allegro 导入时可能自动做处理。保持默认即可除非你明确知道自己需要调整。库路径设置这是导入是否成功的关键。点击对话框中的 User Preferences 或 Setup 按钮进入封装库路径设置。需要把包含 .psm 和 .pad 文件的目录添加进去而且路径解析顺序要保证优先能找到常用封装目录。设置完成后点击 Import / ExecuteAllegro 开始读取网表。导入过程会在命令行窗口打印详细日志也会弹出进度窗口。导入结束后必须检查 Messages 窗口中的结果。如果全部通过会提示成功导入多少个元件、多少个网络。如果导入失败常见现象有两类一类是网络几乎全部没有进来说明网表文件选择错误或者格式配置不对另一类是部分元件没有导入说明有封装缺失或引脚不匹配。这两种情况的排查方法略有不同下面单独用一节来讲。导入成功后你可以执行 Design - Netlist 或者在菜单中打开 Place 面板看到所有元件已经映射到板内。后续就可以进入布局布线流程了。7. 常见问题与排查方法第三方网表导入的报错很多情况下与 OrCAD 生成阶段无关而是出在封装匹配和库路径配置上。下面把典型问题整理成表格。问题现象可能原因排查方式解决方案导入时提示 Unable to load symbolAllegro 封装库路径未添加或封装名不匹配检查 Messages 中提示的封装名去库目录查找是否有对应 .psm 文件添加正确的库路径或在 allegro.cfg 中补充封装名映射大量网络丢失元件却能导入网表文件没有选对或导入类型选成了第一方检查 Logic type 是否为 Third Party Netlist重新选择 Third Party Netlist 并加载正确的 .net 文件个别元件引脚网络对应错误原理图符号引脚编号与 Allegro 封装焊盘编号不一致打开原理图元件属性对比封装焊盘编号修改原理图封装符号的 Pin Number再重新生成网表导入时报重复位号错误原理图中存在两个相同位号打开 .log 文件查看重复位号列表修改其中一个位号重新生成网表OrCAD 生成网表时提示 Template File 错误allegro.cfg 路径配置错误或文件损坏检查 Template File 配置框改用 OrCAD 安装目录下的默认 allegro.cfg或在输出目录重新生成Allegro 无法识别 .net 文件报文件格式错误网表文件并非由 Other 选项卡生成确认生成方式是否为 Tools - Create Netlist - Other - Allegro按本文第 4 节方法重新生成网表数据库配置错误CIS 器件无法放置这个问题出现在原理图阶段OrCAD CIS 数据库配置有问题导致元件属性不全检查 ODBC 数据源、CIS 配置路径先修复原理图数据库配置再重新生成网表紧急情况下可用本地库替换导入后网络名出现乱码或字符替换网表中的网络名包含软件不支持的字符检查原理图网络名是否含有中文、空格、特殊符号统一使用字母、数字、下划线命名网络关于 OrCAD 数据库配置错误多说一句。这个问题经常发生在 Capture CIS 模式下症状是放置器件时提示无法连接数据库或者器件属性读取为空。如果出现这个问题生成的网表往往缺少 PCB Footprint 属性。解决办法是检查 Windows 的 ODBC 数据源配置确认数据库类型和路径无误然后在 Capture CIS 的 CIS Configuration 中重新配置。如果项目时间紧也可以用本地原理图库绕过 CIS 数据库先把网表发出去后续再统一补数据库配置但这样容易造成属性不完整不建议作为长期方案。8. 最佳实践与使用建议第三方网表流程在实际工程中已经非常成熟但从能用到用好还需要在工程管理上多做一些事。第一封装命名统一。这一条是所有网表问题的根源。请务必在项目开始时定一份封装命名规范比如电阻电容用尺寸代码IC 用封装类型加引脚数连接器用型号后缀。OrCAD 原理图上的 PCB Footprint 属性尽量与 Allegro 封装库里的实际封装名完全一致而不是依赖 allegro.cfg 反复做映射。映射可以解决短期问题但映射表维护多了必然出错。第二把 allegro.cfg 纳入项目管理。它不应该躺在某台电脑的临时目录里而应该和原理图库、封装库一起提交到服务器或版本管理。每次有人修改封装命名同步更新配置文件这样团队里任何一台机器都可以稳定生成第三方网表。第三生成网表前先导出 BOM 和 PDF 原理图。原理图能正确导出 BOM说明元件的属性基本完善能导出 PDF说明整张图纸没有明显的结构异常。这两个操作成本很低却能在网表生成之前拦下一批低级错误。很多工程师跳过这一步直接生成网表结果导入 Allegro 时报一堆封装缺失回头才发现原理图里一堆元件没填封装属性。这个习惯可以改一下。第四小模块先行验证。如果是第一次在项目里使用第三方网表流程不要直接拿整板原理图去生成。先抽一个模块包含常见电阻电容和一个稍微复杂的 IC生成网表并导入 Allegro确认封装、引脚、网络全部正确再铺开到全板。这样可以避免全板报错时很难定位是规则问题还是个别元件问题。第五注意版权与授权。OrCAD 与 Allegro 都是商业 EDA 软件需要有效的软件授权才能用于实际产品设计。公司内部使用时应遵循软件许可协议不推荐使用来路不明的破解版本以免带来法律和保密风险。协作交付时第三方网表文件本身也属于设计数据的一部分对外发送前应确认是否经过公司审批。9. 总结与下一步第三方网表是 OrCAD 与 Allegro 协同设计中比较可靠、可控的一条数据链路。它的核心优势是中间产物可检查、可归档封装映射规则可以用配置文件统一管理调试问题也有清晰日志。本文已经给出了从原理图检查、Other 网表配置、生成验证到 Allegro 导入和错误排查的完整流程。下一步建议你拿一个最简单的小板子在 OrCAD 里确认好 PCB Footprint 属性然后按文章第 4 节的步骤生成一次网表再用第 6 节的方法导入 Allegro。如果能一次通过再逐步增加模块复杂度。最容易踩的坑仍然是封装名不匹配和库路径缺失。只要这两个地方不出错第三方网表流程基本不会给你添麻烦。后续可以继续扩展的方向包括批量生成多个子板的网表、把 allegro.cfg 接入公司的封装库管理系统、在 CI 流程中加入网表文件的自动比对等。建议把这篇流程收藏备用下次换版本或换电脑时再回来看一眼。