年前换工作电脑,把常用的 Cadence Allegro 16.6 重新装了一遍,又老老实实把那些散落在各处的小设置一个个找了回来。说实话,Allegro 这个软件功能强大是强大,但很多好用的配置藏得深,不常折腾的人根本不会去翻。我当年刚接触的时候,光一个快捷键设置就折腾了一下午,后来用得时间长了,才发现这些设置一旦配好,效率的提升是肉眼可见的。这篇东西就把我在 16.6 上摸爬滚打攒下来的一些设置和排坑经验整理出来,主要写给正在用 Allegro 画板、或者从其他 EDA 工具转过来的工程师、学生朋友,按着操作一遍,至少能让你的 Allegro 顺眼一半。
1. 装完软件第一步:环境变量、快捷键与脚本路径,先把“顺手”配好
很多人装完 Allegro 16.6 就直接开始画板,结果用半天就觉得别扭,其实问题往往出在环境没有配好。Allegro 跟 AD 这种“开箱即用”的软件不一样,它的用户配置是高度文件化的,也就是一切设置都写在环境目录里,搞清楚这个机制,才算真正入门。
1.1 HOME路径与env文件:改之前先搞清楚改的是哪个文件
Allegro 16.6 的启动逻辑是读 HOME 环境变量,然后在 HOME 目录下找pcbenv文件夹,再从这个文件夹里读取env文件。默认安装时,HOME 一般被指向C:\SPB_Data,也就是说你的所有用户配置都在C:\SPB_Data\pcbenv\env这个文件里。
这里我强烈建议在重装系统或者换电脑后,第一件事就是把 HOME 改到一个你自己好找、方便备份的地方。右键“此电脑” → 属性 → 高级系统设置 → 环境变量,添加一个系统变量 HOME,指向比如D:\Cadence\Home。改完之后,记得在D:\Cadence\Home下手动建一个pcbenv文件夹,不然 Allegro 启动时会因为找不到用户目录而报错或者干脆不加载你的配置。
env 文件是纯文本格式,里面可以写很多东西,最常用的就是快捷键别名、skill 脚本路径、以及一些启动参数。新手改 env 前一定要先备份一份,万一写错了还能恢复。另外注意,Allegro 16.6 对路径里的空格和中文支持不太友好,HOME 路径和后续所有工程路径尽量都用英文、不要带空格。
1.2 funckey和alias:快捷键设置的正确姿势
Allegro 的快捷键不像 AD 那样有图形化配置界面,你得直接改 env 文件。env 文件里定义快捷键有两种方式,alias和funckey,很多新手搞不清区别。
alias定义的是“按快捷键后还需要回车才执行”的命令;funckey定义的是“按下立即执行”的命令,不用回车。
所以实际使用中我们绝大多数都会用funckey,操作更跟手。我个人的常用配置是这样一段:
alias F2 done alias F3 cancel alias F4 oops alias F5 undo funckey F6 'add connect' funckey F7 'add arc' funckey F8 'add text' funckey F9 'pop ribbon' funckey F10 'zoom fit' funckey PGUP 'zoom in' funckey PGDN 'zoom out'比如funckey F6 'add connect'意思就是按 F6 立即启动走线命令。这些命令名在 Allegro 的 command 窗口里都有对应名称,你输入命令时命令栏右下角会显示名字,熟了之后就可以自己往 env 里加。这里提醒一下,编辑 env 时命令名和引号一定用英文半角,中文输入法状态会让人白折腾半天。
1.3 skill脚本加载:allegro.ilinit与自动启动项
Allegro 的强大一半在于它能跑 skill 脚本。很多效率工具、自动检查脚本都是 .il 格式的 skill 程序,比如自动生成测试点、批量修改封装、检查 90° 折角走线等等。
16.6 默认在pcbenv目录下会有一个allegro.ilinit文件,你可以新建或编辑这个文件,在启动时自动加载你常用目录下的所有 skill 脚本。比如:
load("D:/Cadence/skill/tools/xxx.il")如果是批量加载,还可以在 env 文件里设置set skillPath来指定 skill 搜索路径,这样在命令栏执行skill my_func()就能调用。这里有一个坑:skill 文件路径同样不要带中文,有些 skill 对路径编码判断很死,带中文直接 load 失败。
1.4 单位与设计参数模板:把新项目起点统一起来
每个公司、每个项目对 PCB 的要求都不同,但如果每次新建板子都要重新去设置单位、格点、设计参数,那就太浪费时间了。Allegro 支持把一套设计参数保存为模板,在Setup → Design Parameters里设置好线宽单位、角度模式、走线模式之后,直接在空白板子上另存为template.brd,以后新建工程时在 File → New 里选这个模板文件,所有参数就自动带上了。
我习惯把单位固定为 mil,角度固定为 45°(男45),这些基础参数直接影响后续所有走线效率,尤其是从毫米思维切到 mil 思维,刚开始会不适应,但 PCB 行业的标准封装基本上都是 mil,让工具适配行业规范是最省心的。
2. 显示与编辑设置:铜皮、栅格、颜色和飞线,别让眼睛受罪
显示设置是我见到抱怨最多的一块,尤其是铜皮只显示轮廓这个问题,几乎每隔几天就会有人在群里问一次。其实这些问题大多不是软件坏了,而是显示配置被切换了,或者某些显示选项处在非预期状态。
2.1 铜皮只有轮廓?先查shape fill再查OpenGL
打开一个旧项目,发现所有铜皮只剩一个边框,看起来像被掏空了一样,这不是文件损坏,极大概率是显示设置为“无填充”了。在菜单栏进入Display → Shape Fill,可以看到有 No Fill、Static Solid Fill、Dynamic Solid Fill 等选项,如果当前选的 No Fill,所有 shape 自然只剩轮廓。
如果你是做动态铜皮,还可能出现轮廓都正常、但怎么刷新都不显示填充的情况,这时候建议先执行一次Setup → User Preferences → Display,找到shape_fill相关选项确认外层 fill 是开着的,然后再用Display → Update Shapes(快捷键一般是 U)刷新全部 shape。如果还是不行,八成是 16.6 在 Win10/Win11 下 OpenGL 渲染兼容性的老毛病,可以在 User Preferences 里把enable_opengl关掉,图形会回到传统 GDI 渲染,虽然流畅度略降,但显示稳定很多。
2.2 颜色方案备份与快速切换:Color View的作用
很多从 AD 过来的人,一到 Allegro 就被各种层颜色搞晕。Allegro 的层颜色非常细,单是一个 TOP 层就分 Etch、Pin、Via、Silkscreen 等子类,每种子类都可以单独设置颜色和可见性。
配色方案是可以用文件带走的,路径在Display → Color/Visibility,配置完后点Display → Color View Save,保存为.color文件。我一般把常用的一套配色存成my.color,放在pcbenv目录下,换电脑后直接命令栏输入colorview load my.color就能秒恢复。这里分享一个习惯:我把所有走线层(Etch)统一配色,内层电源层用紫红色区分,机械层如 Outline、Dimension 用灰色,丝印层用白色/黄色,这些看似不起眼的习惯,在查阅高密度板时能省不少眼力。
2.3 栅格、设计格点和走线角度锁定
Allegro 的格点设置在Setup → Grids,但这个菜单下有多个标签,很多人只看 Etch 那一页。实际使用时要注意区分:走线层格点控制走线时的捕捉步进,非走线层格点控制光标移动的粒度。
我常用的一套参数是这样:
| 场景 | 非走线层 | 走线层 |
|---|---|---|
| 布局阶段 | 25mil / 25mil | 5mil / 1mil |
| 布线阶段 | 25mil / 25mil | 5mil / 5mil |
| 精细调整 | 5mil / 5mil | 1mil / 1mil |
布局阶段非走线层用大格点,方便对齐元件;布线阶段走线层用小格点,走线更精细。另外在Setup → Design Parameters → Route页面里,可以把默认角度锁定为 45°。很多人画板画到一半发现折角变成 90°,就是因为这里的角度设置被改成了 90 或 Any,锁定 45 能帮你从源头避免后期检查一堆 90° 折角。
2.4 飞线的显示/隐藏与网络高亮设置
布局时飞线满天飞,挡住底层丝印或者元件位号是常有的事。Allegro 的飞线控制入口在Display → Blank Rats(隐藏)和Display → Show Rats(显示)。
- 隐藏全部飞线:
Display → Blank Rats → All - 显示选中器件飞线:先选中器件,再执行
Display → Show Rats → Component - 只看某个网络的飞线:右键选
Rats → Show Rats → Net,然后点网络
布线阶段我通常把电源网络和地被特殊颜色高亮,再配合飞线显示,方便快速观察哪些引脚连过来了。高亮颜色在Display → Color/Visibility的 Highlight 标签里设置,注意高亮颜色和层颜色尽量避开相同的色系,不然会觉得画面很乱。
3. 规则、封装与焊盘:设计到一半最常遇到的那几个“卡壳”
规则和封装这两个东西,是 Allegro 学习曲线里最陡的一段,也是实际工程里最容易卡壳的地方。很多人画板画到一半,突然说某个封装不能替换、某个焊盘删不掉,其实大部分问题都出在配置或者文件属性上。
3.1 设计规则设置:从线宽/线距到区域规则的配置链路
Allegro 的规则系统在Setup → Constraints → Constraint Manager里管理,分为 Physical(物理规则)和 Spacing(间距规则)两大类。
Physical 里最重要的一块是 Net Class 和线宽。你可以在Physical → Net → All Layers页面里定义一个 class,比如PWR,然后把 5V、3.3V、GND 这些网络归进去,设置线宽 Minimum 10mil、Default 20mil、Maximum 100mil。这个“Default”很重要,它是你走线时默认使用的线宽,也是修改线宽后(比如临时改细)恢复正常走线的依据。
Spacing 规则里,我一般会为差分网络单独建立一个 Net Class 并设置对间间距,或者使用 Region 规则:在板边特殊区域(比如BGA出线区)用Shape → Add Rect画一个区域,然后在 Constraint Manager → Region 里分配规则,这样同一层不同区域可以有不同的间距。补充一个常用经验:在 PCB 设计中,走线到板边的间距建议统一设为 0.5mm(约 20mil),这在 Allegro 里要到 Spacing → Same Net 或 Design Modes 的相关项里设置,具体位置和你的规则模板有关,但思路是一样的。
3.2 替换封装与更新Symbol:cell read-only问题的根源
原理图里把电容封装从 0603 改成 0402,导入网表后 PCB 上封装却不更新,这是很多新手都会遇到的事。Allegro 的库管理逻辑是:PCB 文件里的封装(symbol)是独立于库文件的一份拷贝,网表导入不会自动触发封装更新,你必须手动执行Tools → Update Symbols → Package Symbols,然后选择要更新的封装名,勾选“Update symbol padstacks”,这样 PCB 上的封装才会和库一致。
但如果你在更新时遇到提示 symbol 或者 cell 是 read-only,先不要急着删掉重画,这个问题的常见根因是库文件或设计文件本身是只读属性。尤其是从同事或服务器上拷贝过来的项目,Windows 的文件只读属性经常还保留着;右键.brd文件或封装库目录,把只读勾选去掉再打开即可。还有一种情况是封装被设置了 Fixed 属性锁在板上,这时要先用Edit → Properties选中器件,在属性表里把Fixed删除,才能执行替换操作。
3.3 无用焊盘去不掉?问题多半不在“删除”这个动作
PCB 上出现无用的焊盘,常见有两种情况:一种是封装创建时带进来的多余焊盘,另一种是导入网表后元件引脚映射错误产生的冗余焊盘。如果右键选中焊盘后发现 Delete 选项是灰的,或者在执行Tools → Padstack → Modify Design Padstack后无法删除对应焊盘,先检查一下焊盘所属的 symbol 有没有被锁定。
另外注意一个容易被忽略的点:Allegro 里删除焊盘不等于删除“一个 pad”,而是删除这个焊盘符号在 design 里的引用。如果你在一个封装里放了 10 个焊盘,但实际连接只有 8 个,这时应该回到封装编辑器里修改 symbol,删除多余的焊盘,保存后回 PCB 用Tools → Update Symbols更新。直接在 PCB 上删焊盘,会导致 Symbol 的引脚编号和网表匹配不上,后续产生一堆 DRC 报错。
3.4 线宽临时修改与Net Class管理
实际画板中经常遇到“这一段走线要加粗到50mil”的需求,而不是整个网络都要变粗。最直接的操作是用Edit → Change选中线段后在 Options 里改线宽,但这个操作需要当前设计参数允许该网络使用 50mil 的线宽,所以如果你的 Net Class 的 Maximum 值设小了,就会报错。
更规范的做法是,在 Constraint Manager 里把该网络的 Maximum 调大(比如 100mil),然后执行 Change 修改线宽。如果你希望同一网络在某些区域用粗线、其他区域用默认细线,可以用区域规则(Region Assign)的方式,这样 DRC 检查时才不会产生误报。另外我自己的习惯是,给线宽设置一个快捷键宏,比如一键切换到 10mil、15mil、20mil,用 skill 写起来很简单,也能极大提高调线宽时的操作速度。
4. 数据导入导出:网表、Gerber、坐标、BOM与格式转换的配置细节
Allegro 是一个极其擅长“产生数据”的工具,但它的导入导出设置如果不仔细,很容易出现网表导不进、Gerber 缺层、坐标对不上、转换乱码之类的问题。这个章节我按常用文件的进出场景,把容易踩的坑逐个说一遍。
4.1 网表导入前的选项设置与常见失败原因
从 OrCAD Capture 向导出的流程是:在 Capture 里Tools → Create Netlist,切换到 Allegro 选项卡,勾选“Create Allegro Netlist”,生成.net和.dat文件。然后在 Allegro 里执行File → Import → Logic,方式选择 Cadence,在 Netlist File 处指定生成的.dat文件。
这个地方常常遇到的一个报错是“Netlist file not found”,但不是文件不存在,而是路径里带了中文或空格,Allegro 的 Netlist 导入对路径解析很弱,尤其是中文编码不匹配时根本读不到。所以工程路径从一开始就养成习惯全部用英文字母、数字和下划线,能省掉后面一大堆诡异问题。
另一个常见问题是网表导入后一大堆器件没进来,报错“Component not found”。这通常是因为 Allegro 的器件库路径没有配置好,在Setup → User Preferences → Design Paths → padpath和psmpath里把封装库路径加进去,确保Library指向的目录下有对应封装。
4.2 Gerber光绘文件导出的分层与格式配置
光绘文件是交给板厂的关键文件,Allegro 里在Manufacture → Artwork里配置。这里我建议从新板子开始就建一套自己的 film 模板,不要每次手动加层。Film 的顺序和 Subclass 对应关系要准确,下面是我常用的列表:
| Film Name | PCB 对应内容 | 备注 |
|---|---|---|
| TOP | ETCH/TOP, PIN/TOP, VIA CLASS/TOP | 顶层走线+焊盘 |
| BOTTOM | ETCH/BOTTOM, PIN/BOTTOM, VIA CLASS/BOTTOM | 底层走线+焊盘 |
| GND | ETCH/GND, PIN/GND, VIA CLASS/GND | 内层负片或正片按实际 |
| SILKSCREEN_TOP | BOARD GEOMETRY/SILKSCREEN_TOP, REF DES/SILKSCREEN_TOP | 顶层丝印 |
| SOLDERMASK_TOP | BOARD GEOMETRY/SOLDERMASK_TOP, PIN/SOLDERMASK_TOP, VIA CLASS/SOLDERMASK_TOP | 顶层开窗 |
| PASTEMASK_TOP | BOARD GEOMETRY/PASTEMASK_TOP, PIN/PASTEMASK_TOP | 顶层钢网(贴片用) |
| DRILL | 钻孔符号层 | 注意 drill legend |
光绘格式统一用 RS-274-X(也就是 Gerber 274X),它把 D 码内嵌在文件里,板厂不需要额外 D 码表。输出前一定记得在Manufacture → Artwork → Film Control里点击“Create Artwork”,把所有层一次性输出,再去 CAM350 里叠加检查一遍,这是我不论多急都不跳过的步骤。补充一个小经验:如果板厂说开短路有问题,先检查是不是 Film 里没有把“UNFILLED SHAPE”或“Thermal Relief”相关选项设置对,很多内层电源层的问题都出在负片/正片设置和光绘填充方式不一致。
4.3 坐标文件与BOM导出的字段设置
SMT 贴片需要的坐标文件在 Allegro 里通过File → Export → Placement导出,文件格式选 CSV,里面包含 RefDes、X、Y、Rotation、Layer 等字段。导出的坐标单位一定要跟板厂确认,一般用 mil 或 mm,不过 Allegro 默认经常是 mil。
BOM 导出一般不从 Allegro 做,直接在 OrCAD Capture 里Tools → Bill of Materials,可以按需要勾选分组方式,比如按 Value 合并、按 Footprint 合并。如果你的 BOM 还需要包含位号、数量、封装、厂家等字段,可以在 Capture 的属性编辑里统一维护这些自定义属性,导出的模板用 Open in Excel 方式生成 CSV,方便后续处理。我自己的习惯是在导出前先对所有元件做一次属性核对,避免 BOM 里出现“C?”这种非法位号,这在板厂贴片时会非常麻烦。
4.4 转PADS、转AD的几种路径与版本坑
先聊 Allegro 转 PADS。PADS(现在叫 Mentor PADS)自带一个转换器,常见的操作是:打开 PADS Layout,File → Import → Allegro Design,选择.brd文件,PADS 会调用自带的 translator 进行转换,16.6 的文件一般可以直接转。
如果你的 PADS 版本比较老,不支持直接读.brd,另一条路径是在 Allegro 里File → Export → IPC-2581(需要安装对应补丁),生成一个通用的 IPC 格式压缩包,再用 PADS VX 以上版本导入。但无论哪种方式,转完之后一定要抽查内层铜皮、过孔和网络连接情况,这种跨工具转换十次有八次要丢点东西,尤其是动态铜皮转过去后经常变成一大块静态填充或者干脆消失。
再聊 Allegro 转 AD(Altium Designer)。AD 的导入器对 Allegro 的版本识别非常挑剔,常见的报错是“not recognized or version is too old”。如果遇到这种情况,最稳妥的办法是在 Allegro 里先把版本降下来:File → Export → Downrev Design,把设计保存为 16.6 或更低版本,再由 AD 导入。AD 导入后,网络、封装基本能保留,但 3D body、部分自定义属性可能会丢失,转换后的板子同样要做 DRC 全套复查。
4.5 ODBC数据源与CIS的配置衔接
跟数据库相关的设置可能是最容易被忽略的。如果你的公司用 Capture CIS 做元件库管理,就一定会遇到 ODBC 数据源的配置问题。Allegro 16.6 是 32 位程序,所以 ODBC 数据源必须配置成 32 位版本的。在 Windows 10/11 里,打开“控制面板 → 管理工具 → ODBC 数据源(32位)”——注意不是 64 位那个,16.6 读取不了 64 位 DSN。
新建一个“用户DSN”,驱动类型根据你的库选择,比如 Access、Excel 或 SQL Server,填好数据库路径后,再回到 Capture 的Options → CIS Configuration里指定该数据源。配置完可以打开 CIS Explorer 验证能否正常浏览元件库。这个环节报错最多的就是“找不到数据源”,九成原因是配了 64 位 ODBC 或数据源名称对不上。
5. 原理图与仿真联动:从Capture到Allegro之间容易被忽略的设置
很多画板工程师只关心 PCB 编辑器里的操作,但 Allegro 生态里原理图和仿真部分同样有大量“隐藏开关”,尤其是那些看起来无关紧要的报警,处理不好会影响整个设计流程。
5.1 引脚类型报Power报警的处理
用 OrCAD Capture 做原理图时,经常会在 DRC 检查里看到类似“Pin type is power”的报警,很多人一看就慌了,以为是电源接错了。这个报警的含义是说某个器件引脚的类型是 Power,但它当前连接的网络不是一个电源网络(或者反过来,引脚类型非 Power 却连到了电源网络)。
处理方法主要有两种:一是修改原理图符号里引脚的属性,进入Edit Part,选中引脚后在属性框里把 Pin Type 改成 Power 或 Passive,存盘后返回原理图更新;二是确认该引脚是否确实应该连电源,如果确实没问题可以忽略这条 DRC。但我不建议一上来就忽略,尤其是项目中所有人共用一套库,引脚类型定义混乱会影响多人协作时的检查效率,建议统一库里的引脚类型规范。
5.2 Intersheet References报错与跨页参考设置
多页原理图里生成网表或做打印输出时,经常会用到 intersheet references(跨页参考),它可以在 off-page connector 旁边自动标出目标网络所在的页面。如果在 Capture 的Options → Preferences → Miscellaneous → Intersheet References中启用这一功能后生成报错,绝大多数情况是 off-page connector 的网络名前后不一致,比如一页叫“PWR_5V”,另一页叫“PWR5V”,Allegro 在匹配时会因为找不到同名网络而中断。
处理思路是:先用网络表检查工具把所有 off-page connector 的网络名列出来,逐一比对拼写是否完全一致,包括下划线、大小写。另外一个容易被忽略的点是,重新生成 intersheet references 之前,先删除旧的参考标记,否则会报“duplicate reference”的错误。
5.3 PSpice仿真器件未定义与瞬态不收敛的典型设置问题
虽然这是仿真模块的内容,但既然用 Cadence 生态,总会碰到。仿真时最常报的“Model ... not defined”,意思是器件没有指定 PSpice 模型。一种情况是原理图里放的元件只有 PCB 封装属性,没有 PSpice 模型属性;另一种情况是模型库文件.lib没有加载。打开PSpice → Edit Simulation Profile → Configuration Files → Library,把对应的库文件添加进去,如果报模型缺失但库已加载,检查库文件里的模型名是否和器件属性里的“PSpice Template”一致。
瞬态仿真不收敛是另一个高频问题。在Analysis Type里选择 Time Domain(Transient) 后,把“Maximum Step Size”设置得足够小非常关键。比如一个 1MHz 的时钟信号,最大步长建议不要超过 100ns(周期十分之一),如果是高速边沿,还要更小。另外把“Skip initial transient bias point calculation”勾选上,很多由于初始工作点计算发散导致的不收敛问题都能绕过去。如果还是不收敛,可以试着把相对误差容限从默认的 0.001 放宽到 0.01,但注意这会牺牲一定精度,只能作为排查手段而非最终方案。
5.4 90°走线检查:默认DRC里没有,怎么处理?
这个话题值得单独拿出来说。很多从 AD 转过来的工程师会习惯性去 DRC 设置里找“禁止 90° 折角”选项,但 Allegro 16.6 的 DRC 体系里确实没有一个显式的“90 degree check”开关,这个功能在更新的版本里才被直接做进界面。那老版本怎么查?我自己的做法是分三步:
第一,源头控制。走线时默认角度锁定 45°,并在Setup → Design Parameters → Route里把 Line Lock 设置为 45,这样新画的线天然不会有 90° 折角。第二,板子画完后用 skill 脚本检查。社区里有不少现成的 skill 脚本,比如遍历所有 cline segments,计算相邻线段夹角,如果夹角为 90°(允许一定容差),就高亮并输出坐标。我没有固定推荐某一份脚本,因为各家库不一样,重点是理解脚本逻辑:读取线段两端坐标,用向量点积算出夹角,超过阈值就标记。第三,如果项目比较急、脚本又不方便装,可以用笨办法:在Display → Highlight里选择网络类的 Cline Seg 后,再按 45° 方向视觉扫一遍,高密度板确实累,但总比漏掉强。
这里也提醒一个反差认知:有些板子,比如射频板或高密度 BGA 区域,局部确实需要 90° 折角走线,这是设计需求,不是错误。所以检查的目的不是“消灭所有 90°”,而是“找到所有 90°,然后一个一个确认它们该不该存在”。
从环境变量到显示设置,从封装焊盘到文件转换,这篇文章里写的每一个点都是我在实际项目里真金白银踩出来的。如果你也在用 Allegro 16.6,建议先从快捷键和颜色方案入手,把最常用的操作调到顺手,再慢慢深入规则和转换这些高级设置。配置这种东西没有绝对的对错,适合自己的项目习惯就是最好的。我每次给新同事配环境时都会强调,把这些小设置当成你自己的工具箱,每次换电脑都想着带它们走,而不是重新开始习惯默认界面。最后再唠叨一句:改 env 文件之前记得备份,转文件格式之前记得另存,这两个习惯能让你在 Allegro 世界里走得安稳很多。