1. Cadence设计流程全景解析
刚接触Cadence这套工具时,我完全被它的模块划分搞懵了——Design Entry CIS画原理图、Allegro做PCB布局、中间还要通过网表来传递数据。后来做了几个实际项目才发现,这套流程就像做木工活:原理图是设计图纸(Design Entry CIS),网表是材料清单(Netlist),Allegro就是实际操作的木工台。三者环环相扣,任何一个环节出错都会导致最终成品变形。
典型工作流是这样的:先用Design Entry CIS绘制电路原理图 → 生成网表文件 → 在Allegro中导入网表开始PCB设计。听起来简单,但新手常在这几个地方栽跟头:
- 原理图中元件属性不完整(比如缺少PCB封装)
- 网表生成时参数设置错误
- Allegro中封装库与原理图不匹配
我第一个项目就踩过连环坑:原理图画得挺漂亮,导出网表时也没报错,结果Allegro里一堆元件显示为红色问号。后来发现是电阻封装名称写成了"R0805"而库里只有"RES0805"。这种错误不会立即暴露,但会导致后期布局时元件无法放置。
2. 原理图设计实战技巧
2.1 Design Entry CIS高效操作
在Design Entry CIS中绘制原理图时,有几点特别影响效率:
- 元件库管理:建议创建公司/项目专属库。我习惯按功能分类:电源芯片放Power文件夹,接口芯片放Interface文件夹。千万别学我最初把所有元件堆在根目录,找颗电阻都得滚动半天。
- 网络标签使用:跨页信号一定要用Net Alias标注。有次我偷懒直接用导线连接,结果导出网表时报出几百个警告——软件把跨页连线识别成了未连接网络。
- 层次化设计:复杂电路一定要用Hierarchical Block。就像写代码要分函数一样,把电源模块、MCU核心板等拆分成子模块,后期维护能省50%时间。
推荐设置:在Options→Preferences里开启这些选项:
- 自动备份(Auto Backup)间隔设为15分钟
- 开启网络高亮(Highlight Nets)
- 网格显示设为Dots模式(比Lines模式更清晰)
2.2 元件属性关键检查项
生成网表前必须检查这些属性(选中元件按Ctrl+E查看):
- PCB Footprint:必须与Allegro库中名称完全一致(区分大小写!)
- Part Reference:位号格式要规范,比如电阻用R1/R2,芯片用U1/U2
- Value:阻容感元件的参数值(10kΩ、0.1uF等)
有个经典错误:复制元件时忘记修改位号,导致两个电阻都叫R1。这种错误DRC检查可能不会报错,但会导致PCB上元件错位。我现在的习惯是:完成原理图后,先用Tool→Annotate统一重新编号。
3. 网表生成深度指南
3.1 网表导出全流程
网表(Netlist)本质是元件连接关系的文本描述,包含:
- 元件列表(参考号、封装、值)
- 网络连接表(哪些引脚彼此相连)
在Design Entry CIS中导出步骤:
- 右键工程文件→Tools→Create Netlist
- 在Allegro选项卡保持默认设置(除非特别需求)
- 关键是要勾选"Create PCB Editor Netlist"
- 生成的allegro文件夹会包含.dat、.net等关键文件
常见报错处理:
- "Pin number missing":元件符号引脚未编号
- "Undefined footprint":封装名拼写错误或库未加载
- "Duplicate reference designator":位号重复
3.2 网表验证技巧
除了官方DRC检查,我必做这些手动验证:
- 用文本编辑器打开netrev.lst文件,搜索"ERROR"关键词
- 对比元件数量:原理图右下角显示的元件数 vs 网表首行PART COUNT
- 网络数量检查:复杂网络(如电源、地线)的连接点数是否合理
有次发现3.3V网络只有两个连接点,检查发现是忘记给某页的原理图添加电源端口。这种错误Allegro不会报错,但会导致PCB供电异常。
4. Allegro PCB布局准备
4.1 网表导入关键步骤
在Allegro中导入网表时(File→Import→Logic)要注意:
- 必须正确设置库路径:包括pad路径、psmpath路径等
- 建议勾选"Allow etch removal during ECO"
- 导入后立即查看netrev.lst日志文件
典型问题解决方案:
- 元件显示为红色:检查封装库路径或元件高度限制
- 网络缺失:确认原理图中网络名是否含非法字符(如空格)
- 引脚交换警告:检查原理图中引脚属性是否允许交换
4.2 封装库管理经验
Allegro对封装的管理非常严格,建议建立这样的目录结构:
Lib/ ├── Pad/ # 焊盘定义 ├── Symbol/ # 封装符号 └── Device/ # 元件设备文件焊盘设计要点(以Pad_design为例):
- 普通电阻电容:用矩形焊盘(Rectangle)
- QFN等芯片:需定义thermal relief(散热连接)
- BGA器件:注意反焊盘(Anti-pad)尺寸
我犯过的低级错误:给0402电阻用了圆形焊盘,贴片时元件总偏移。后来才知道矩形焊盘能提供更好的定位精度。
5. 工作流优化建议
5.1 版本控制策略
强烈建议用Git管理设计文件(虽然二进制文件diff不了,但可以记录变更)。我的仓库结构:
ProjectX/ ├── SCH/ # 原理图文件 ├── NETLIST/ # 网表文件 ├── PCB/ # Allegro设计文件 └── DOC/ # PDF原理图、BOM表等每次重大修改前打tag,比如"v1.0-pre-layout"、"v1.1-post-drc"。
5.2 团队协作要点
多人协作时特别注意:
- 库文件必须统一托管(建议用Git Submodule)
- 原理图修改后必须重新生成网表并通知PCB工程师
- 禁止直接修改网表文件(应该返回修改原理图)
曾经因为同事直接改网表里的封装名,导致原理图和PCB完全对不上,最后不得不从头开始布局。现在团队规定:任何网表错误必须溯源到原理图修正。
刚开始用Cadence时总觉得流程复杂,但熟悉后发现这种严谨性反而能减少后期返工。最近做的6层板项目,从原理图到PCB一次通过DRC检查,靠的就是严格执行这套工作流。