☰
Cadence CIS 元器件库合并实战:3000+ 焊盘、156 个符号零冲突并入自有库
2026/10/5 2:31:27 网站建设 项目流程

Ultra Librarian / Altium 元器件包 → Cadence SPB 16.6 CIS 入库全流程

定位:本文档是"从厂商/立创/LCSC 下载的元器件数据包 → 本机 CIS 库可放置元器件"的完整作业指导书。
由 RTL8367N-VB-CG(UL 包,2026-09-23)和 RTL8367RB-CG(Altium 包,2026-10-03)两次全流程实战写成。


0. 环境事实(勿重新探索)

项值
Cadence 安装D:\Cadence\SPB_16.6(仅 16.6,无 17.x)
allegro.exeD:\Cadence\SPB_16.6\tools\pcb\bin\allegro.exe
create_sym.exe同目录(只能在真控制台跑,见 FAQ-5)
Capture/tclshD:\Cadence\SPB_16.6\tools\capture\Capture.exe;tools\tcltk\8.4\bin\tclsh84.exe(跑 Dbo Tcl 前把 tools\capture 加进 PATH)
符号库D:\CIS_LIBRARY\SCH\*.OLB
焊盘/封装库D:\CIS_LIBRARY\PCB\pad\*.pad、D:\CIS_LIBRARY\PCB\symbol\*.dra/.psm/.ssm
CIS 数据库D:\CIS_LIBRARY\CIS\Trent_CIS_2022.mdb(Access,pyodbc +{Microsoft Access Driver (*.mdb, *.accdb)})
生效 iniD:\Cadence\SPB_Data\cdssetup\OrCAD_Capture\16.6.0\Capture.ini([Part Management]→DBC;[Part Library Directories]→SCH;[Allegro Footprints]→PCB)
关键环境变量(用户级)CDSROOT=D:\Cadence\SPB_16.6、CDS_LIC_FILE=D:\Cadence\LicenseManager\license.dat、HOME=D:\Cadence\SPB_Data、PATH 含tools\pcb\bin
YC CODEIC 表前缀60501(另有60510段在用),Oscillator=60602;取同前缀 MAX+1,insert_part.py 自动做

1. 输入:认识三种原料

来源特征内容
Ultra Librarian 包文件名ul_*.zip,立创/LCSC 页 “Ultra Librarian” 按钮下载AllegroV17_2\*.xml(封装几何)、OrcadCaptureXML\*.xml(符号引脚)、*.step(3D)、builder.ile(17.2 专用,16.6 无用)
Altium 包Altium_*.zip,同页面 Altium 按钮下载*.schdoc(符号,ASCII 记录流)、*.pcbdoc(封装,ASCII 记录流)
只有 PDF 手册最苦的情况手工按 Land Pattern 画(走 cadence-new-part skill 路线 B)

选型建议:优先下载 UL 包(格式结构化最好);只有 Altium 包也行(本文档 §3 有转换器)。

2. 文件格式要点

2.1 UL Allegro XML(目标格式,一切以它为准)

<Footprintname="封装名"><Unitstype="mils"precision="3"/><ExtentsminXminYwidthheight/><Padstackname="..."type="single"><Layers><Layername="TOP|PASTEMASK_TOP|SOLDERMASK_TOP"><Padshape="rectangle|square|circle|oblong|octagon"widthheight/>
  • 等宽高焊盘必须shape="square"(含散热盘 EPAD)——rectangle 等宽高会被 axl 拒绝(FAQ-9)
  • <Pin number padName originX originY rotation>:坐标已相对封装原点,单位 mil
  • <Layer name="PACKAGE GEOMETRY/SILKSCREEN_TOP|ASSEMBLY_TOP|PLACE_BOUND_TOP" packageHeight>
    • Path type=“line”=线段(lineWidth 宽度);≥3 点闭合折线→按 shape 处理
    • <Label textBlock angle x y text justify>=文字
  • 层名对照:Altium TOPOVERLAY→SILKSCREEN_TOP;MECH7(courtyard)→PLACE_BOUND_TOP;本体→ASSEMBLY_TOP

2.2 Altium schdoc/pcbdoc(ASCII 记录流)

  • 文件头|HEADER=或|RECORD=,记录间以\x00或下一条|RECORD=分隔
  • 属性|KEY=VALUE竖线分隔;坐标带单位后缀如3028.7400mil
  • pcbdoc 关键记录:Component(原点=PATTERN 中心)、Pad(NAME/X/Y/XSIZE/YSIZE/SHAPE/ROTATION)、Track(X1 Y1 X2 Y2/LAYER/LINEWIDTH)、Region(VXn/VYn 顶点)
  • schdoc 引脚:RECORD=2记录里DESIGNATOR=脚号、NAME=脚名
  • 转换器:python altium2ul_xml.py <pcbdoc> <schdoc> <out.xml> <footprint_name>(在 workspace,可挪进 skill scripts)

2.3 Generate Part 的 PSpice Model(做 .olb 的唯一可行路线)

.subckt <PartName> 脚名1 脚名2 ... ← 每行约6个,续行以 "+ " 开头 .ends <PartName>
  • 不要用 Actel Pin File:格式不公开、HEADER 规则踩不出来(FAQ-7)
  • 生成器:python pins_pspice_lib.py <capture_xml> <PartName> <out.lib>(UL 包直接用;Altium 包从 pins.json 取名)

3. 完整操作流程(六步)

第 1 步 · 备料

解压到独立构建目录(如D:\Desktop\rb_build,目录名不能含空格以外的中文也可,但路径里别有空格更稳)。

  • UL 包:直接用AllegroV17_2\*.xml
  • Altium 包:先altium2ul_xml.py转成 UL 格式 XML;核验输出行pads=N、pins in sch but not pcb: [](引脚数与名称两边一致才算过)

第 2 步 · 生成 SKILL 构建脚本

python"C:\Users\38101\.agents\skills\cadence-ul-import\scripts\gen_dra_skill.py"<build_dir><xml...>

产物:ul_build.il(数据内联的 SKILL)、build.scr.txt、template.dra(空 Package 绘图模板,skill 核心资产,勿删)。

第 3 步 · Allegro 批量构建 .dra/.pad

cd<build_dir>&&("<allegro.exe>"-sbuild.scr.txt>allegro_run.log2>&1&)
  • 启动必弹Product Choices对话框 → computer-use:选Allegro PCB Librarian XL→ OK(每次都弹,没有免弹配置)
  • 轮询allegro.jrl里的ULBUILD行,验收标准:
    • drawing opened type=PACKAGE
    • pins created=N failed=0(N=总脚数含散热盘)
    • <name> saved
  • 结束后:记 PID 精确杀会话(taskkill /PID <pid> /F,严禁 /IM,会误杀用户开的工程!),rm -f *.lck
  • 产物:<name>.dra+pad*.pad

第 4 步 · 编译 .psm(用户手工,1 分钟)

把skill\scripts\make_psm.bat复制到构建目录,让用户双击,黑窗里依次输入:

Symbol Drawing (*.dra): → <name>.dra Package Symbol (*.psm): → <name>.psm

看到'xxx' saved to disk.即成功。

第 5 步 · 生成 .olb(用户在 Capture 里点,共 5 次点击)

先备料:python pins_pspice_lib.py ... <PartName>.lib(Altium 包从 pins.json 生成同名 .lib)。
用户在已打开的 Capture里:

Tools → Generate Part... Netlist/source file: <build_dir>\<PartName>.lib ← 文件名框手敲完整路径 Netlist/source file type: PSpice Model ← 改路径后会自动重置,必须重选! Part name: <PartName> Destination part library: D:\CIS_LIBRARY\SCH\<短名>.OLB → OK

生成后.OLB落在源 .lib 旁边 → 拷进D:\CIS_LIBRARY\SCH\。

第 6 步 · 入库登记 + 四查(全自动)

# 拷贝正本cp<name>.dra<name>.psm<name>.step → D:\CIS_LIBRARY\PCB\symbol\cppad*.pad → D:\CIS_LIBRARY\PCB\pad\# 大小写与登记名统一cp<PartName>.OLB → D:\CIS_LIBRARY\SCH\<短名>.OLB# 验证符号名(输出 PART: 行,逐字符用于登记)PATH=".../tools/capture:$PATH"tclsh84.exe dump_olb.tcl"D:/CIS_LIBRARY/SCH/<短名>.OLB"# 写库(自动备份 mdb + 分配 YC CODE + 回查)python insert_part.py parts.json# cadence-new-part skill scripts 下

parts.json 字段(IC 表示例):

[{"table":"IC","Part Type":"Transceiver","Value":"RTL8367RB-CG","Description":"Realtek RTL8367RB 5口千兆交换 LQFP-128 0.4mm","Schematic Part":"RTL8367RB-CG",← dump_olb 输出的符号名,一字不差"Allegro PCB Footprint":"QFP128_RTL8367RB",←=.psm 文件名,一字不差"Manufacturer Part Number":"RTL8367RB-CG","Manufacturer":"Realtek"}]

Part Type 必须复用表内已有词汇(SELECT DISTINCT [Part Type] FROM [IC]:ADC/DAC, Amplifier, Clock, Logic, MISC, Power, Processor&Controller, Programmable IC, Storage, Transceiver)。

四查(全过才算完)

  1. dump_olb输出含目标符号名
  2. insert_part.py回查行内容正确
  3. ls PCB\symbol\<footprint>.*同时有 .dra 和 .psm
  4. ini 三项指向 D:\CIS_LIBRARY

放置验证(教用户)

Capture 原理图页右键 →Place Database Part→ 搜 Value → 双击放置。
CIS Explorer 是登记前开的话要重开才刷新。

4. 常见问题清单(全部实战踩过)

#报错/现象根因解决
1UL 官方 .bat 弹 “Allegro 17.2 or later is required”builder.ile 检查版本,16.6 不支持放弃官方流程,用 gen_dra_skill.py 自建
2阿狸狗降版本工具无法使用它只转 17.x 二进制(.dra/.psm/.brd),UL 包里只有 XML 源数据同上,XML 直接生成 16.6 数据,无需降版本
3allegro -s 启动后一直卡住不动每次启动必弹 Product Choices 对话框等人工点computer-use 点掉(选 Librarian XL → OK)
4pins created=0 failed=N+ “can only be applied to symbol drawings”打开的是 BOARD/SHAPE 绘图;axlSetSymbolType/axlSetDesignType/newdraw/newsym/gensym在 16.6 全都不可用用 skill 的template\probe_pkg.dra+axlOpenDesignForBatch;库里 flash*.dra/c1r20_d/aspad20 都是 SHAPE 类型不能当模板
5Unable to start program; create_symallegro 会话内拉不起子进程(补齐 CDSROOT/PATH 也无效)用make_psm.bat在真控制台编译 .psm
6axlSaveDesign后没有 .psm16.6 保存只写 .dra正常,走 FAQ-5 的 bat
7Generate Part 报 ORCAP-1541/1516(Actel Pin File)Actel 格式不公开,HEADER 规则构造不出换PSpice Model路线(.subckt 端口=引脚),实测稳定
8Generate Part 的 Browse 看不到 .lib/.txt文件类型过滤文件名框手敲完整路径;且每次改路径后 type 会自动重置,必须重选 PSpice Model
9WARNING(SPMHA1-102): Illegal figure size(焊盘建不出)RECTANGLE 图形等宽高被拒,等宽高必须用 SQUAREgen_dra_skill.py 已内置转换(rectangle 等宽高→SQUARE);手写 XML 时注意
10(axlDBCreatePin): Invalid Text Block - 17模板绘图没有 17 号文字块引脚号文字块统一用3
11WARNING(SPMHA1-102)连带ERROR(SPMH1-161) dbdoctor焊盘失败后的连锁反应修根因(多半是 FAQ-9)即可消失
12ERROR(SPMHDB-184): Unfilled SHAPE may not exist on PLACE_BOUND_TOPplace bound 用了不填充的 shapeOpenShape 第二参传t(填充)
13WARNING(SPMHA1-108): Illegal line segment ... end pointsXML 里有起止点相同的零长度退化线段生成器已过滤连续重复点
14保存时卡 “Do you want to save the changes … unnamed?”会话退出前的保存提示computer-use 点"否"(产物已单独存过)
15启动弹 “…is being edited by user… override the lock?”上次强杀进程留下 .lckrm -f *.lck后重试
16误杀用户的 Allegro 工程用了taskkill /IM allegro.exe铁律:只允许taskkill /PID;启动会话先记 PID
17SKILL sprintf 崩溃too many format specs生成器把 %%s 按字面写入SKILL 里 % 是字面量不需转义;修生成器(已修)
18sprintf 报 argument incompatibleSKILL 的 %d/%g 对浮点/整数挑剔调试消息统一用%L(打印任意 Lisp 数据)
19Capture 16.6 找不到 XML 导入该功能 16.6 没有(olb.xsd 无脚本引用)走 Generate Part(FAQ-7 路线)
20写 mdb 报锁定失败Capture/Access 开着库文件关 CIS 浏览窗/Access 再写

5. 硬性规矩(违反会翻车)

  1. 杀进程只按 PID(见 FAQ-16)。
  2. 写 mdb 前必备份(insert_part.py 自动做,别绕过它手写 SQL)。
  3. Schematic Part与 OLB 内符号名一字不差;Allegro PCB Footprint与 .psm 文件名一字不差(变体后缀 -M/-L 放 Alt_Symbols 或 Description,不放主名)。
  4. Capture 运行中不改 Capture.ini(退出时会覆盖你的修改)。
  5. 调试产物只放构建目录;入库正本只认D:\CIS_LIBRARY里的拷贝。
  6. template\probe_pkg.dra是唯一可用的 Package 模板来源,删了就要用 UI 手工重建(File→New→Package symbol→命名→Ctrl+S)。

6. 两次实战记录(可对照排错)

RTL8367N-VB-CGRTL8367RB-CG
原料ul_*.zip(UL 格式)Altium_*.zip(schdoc+pcbdoc)
封装QFN88_RTL8367_RTK,89 脚(88+EPAD)QFP128_RTL8367RB,129 脚(128+EPAD 5.6mm)
YC CODE605010018(待登记)
特有坑FAQ-4/5/7/8/10/16FAQ-9(SQUARE)+ Altium 格式转换

7. 增补 FAQ(2026-10-03 RB 实战第二轮)

#报错/现象根因解决
21Generate Part 后同会话Place Database Part 报 ORCIS-6085生成的 OLB 被自动挂进当前工程(工程树 Library 下出现该 olb),Capture 持有 .OLBlck 锁,CIS 读取冲突工程树右键该 olb → Remove From Project 释放锁;锁文件消失后重开 CIS Explorer 放置
22.psm 也能全自动编译bash 管道喂 stdin 会触发 create_sym 批处理模式(SPMHUT-39)PowerShellStart-Process cmd /c make_psm.bat开真控制台 + computer-use 键盘输入两行文件名
23Generate Part 对话框可远程驱动活动文档是**项目管理器(.opj)**时 Tools 菜单项才可用(原理图页激活时全灰)computer-use:AXExpand Tools → AXPress Generate Part…;对话框字段用 setValue 按 window_id 固定绑定填写
24符号太丑(Generate Part 单列长条)自动生成的固有布局抄参考设计:课程/同事的 .dsn 用 export_to_olb.tcl 抽符号(路线 A),名字一致则数据库零改动直接换 OLB 文件

RB 实战结论:参考工程02_千兆5口交换机项目\01-工程文件\SCH\RTL8367RB_5PORT_SWITCH.DSN
一次抽出 15 个可用符号(RTL8367RB-CG、RJ45_053_5、HX5084NL、TMI3253SH、XTAL2 等),
换入D:\CIS_LIBRARY\SCH\RTL8367RB.OLB(原自动版备份为 _auto_backup.OLB)。

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

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

立即咨询