3、原理图设计阶段常见错误(二):电源与地处理不当、ERC检查错误、层级设计问题

好,咱们接着聊原理图设计阶段的那些坑。上一章讲了器件属性和网络连接的问题,这一章我重点说说电源与地、ERC检查,还有层级设计。这三个地方,说实话,是新手翻车的高发区,也是老手偶尔会疏忽的地方。

3.1 电源与地处理不当

电源和地,说白了就是电路的“血管”和“骨架”。处理不好,整个板子就别想正常工作。我个人习惯,在画原理图之前,先把电源树理清楚,再动手。

3.1.1 电源网络命名混乱

很多工程师喜欢用VCC、VDD、VSS这种通用名字。嗯,这里要注意,在Cadence中,同名网络是物理连通的。你想想看,如果3.3V和1.8V都叫VCC,那不就短路了吗?

正确的做法:

  • 使用具体电压值命名:+3.3V+1.8VVCC_5V
  • 区分模拟和数字电源:AVDD_3.3VDVDD_1.2V
  • 电源地也要区分:GNDAGNDPGND

关键点:在Cadence中,VCCVDD是系统保留字,默认连接到全局电源网络。如果你不小心用了,可能会产生意想不到的连通性。

3.1.2 电源符号使用错误

我在项目中遇到过,有人把电源符号(Power Symbol)和端口(Port)搞混了。电源符号是给网络“供电”的,而端口是用来做层级连接的。用错了,ERC检查会报一堆错。

常见错误:

  • Port代替Power Symbol给芯片供电
  • 多个不同电压的电源网络共用一个电源符号
  • 电源符号没有正确关联到对应的网络别名(Alias)

我的建议:在原理图库中,为每个电压等级单独创建电源符号。比如VCC_3V3VCC_1V8,这样一目了然,不容易出错。

3.1.3 电源网络未正确连接

这个错误很隐蔽。有时候你看着原理图上画了线,但实际网络并没有连通。为什么会这样?

典型场景:

  1. 芯片的电源引脚使用了NC(Not Connected)属性,但实际上需要供电
  2. 电源引脚和去耦电容之间用了No Connect标记
  3. 多层原理图中,电源网络在某一页断了

注意:在Cadence中,如果电源引脚悬空,DRC检查会报UNCONNECTED PIN错误。但如果你手动加了No Connect标记,系统就认为你是故意的,不会报错。所以,加No Connect标记前,一定要确认。

3.2 ERC检查错误

ERC(Electrical Rule Check)是原理图设计的“体检报告”。我刚开始做设计时,总觉得ERC报错是小事,后来吃过亏才明白——ERC错误往往预示着严重的逻辑问题。

3.2.1 常见ERC错误类型

错误代码 含义 常见原因
WARNING(ORCAP-1589) 网络名不匹配 同名网络在不同页中使用了不同的别名
ERROR(ORCAP-1600) 输出引脚短路 两个输出类型的引脚直接连在一起
ERROR(ORCAP-1608) 电源引脚悬空 芯片的电源引脚没有连接
WARNING(ORCAP-1611) 未使用的引脚 芯片的某个功能引脚没有连接

3.2.2 如何高效排查ERC错误

我个人习惯,每次修改完原理图,都会跑一次ERC。不要等到画完PCB再回头改,那代价太大了。

排查步骤:

  1. 打开Tools → Design Rules Check
  2. 勾选Check all pinsCheck off-page connections
  3. 点击Run,查看输出窗口
  4. 双击错误信息,自动跳转到问题位置

避坑指南:我曾经遇到过一个案例,ERC报ORCAP-1589,找了半天没找到问题。后来发现,是两页原理图中,同一个网络用了不同的文本大小写——VCC_3.3Vvcc_3.3v。Cadence默认是区分大小写的,这点要记住。

3.2.3 设置合理的ERC规则

ERC规则不是越严格越好。太严格了,一堆假错误,反而掩盖了真问题。我一般这样设置:

  • 全局规则:所有引脚必须连接,除非明确标记为NC
  • 电源规则:不同电压的电源网络不能直接连接
  • 输出规则:两个输出引脚不能直接相连(除非是开漏输出)
  • 总线规则:总线中的信号必须匹配

小技巧:对于开漏输出的引脚,可以在引脚属性中设置为Passive类型,这样ERC就不会报输出短路了。

3.3 层级设计问题

层级设计是Cadence的一大特色,用好了能大幅提高效率。但用不好,那就是给自己挖坑。我记得刚学层级设计时,被“Hierarchical Port”和“Off-Page Connector”搞晕过。

3.3.1 层级端口与页间连接器混淆

这两个东西长得有点像,但用途完全不同:

类型 用途 连接范围
Hierarchical Port 在层级原理图中,连接上层和下层模块 跨层级
Off-Page Connector 在同一层级中,连接不同页的网络 同层级跨页

常见错误:

  • 在顶层原理图中使用Off-Page Connector连接子模块
  • 在子模块中使用Off-Page Connector代替Hierarchical Port
  • 层级端口名称与子模块内部网络名不匹配

注意:如果你在子模块中用了Off-Page Connector,Cadence会认为这是一个独立的网络,不会自动连接到上层模块。结果就是,你的信号“断”了。

3.3.2 层级深度不合理

层级不是越深越好。我见过有人把原理图分了七八层,结果自己都搞不清信号走到哪了。一般来说,我建议:

  • 层级深度不超过3层
  • 每个子模块的功能要单一、清晰
  • 顶层原理图只放模块框和主要连接

3.3.3 重复的模块实例化

这个功能很实用。比如一个电源模块,在板子上用了三次。你只需要画一次,然后实例化三次就行。但要注意:

  • 每个实例的Instance Name必须唯一
  • 如果修改了模块的原理图,所有实例都会同步更新
  • 实例化时,注意检查每个实例的配置参数是否一致

关键点:在Cadence中,重复模块的实例化是通过Place → Hierarchical → Block实现的。选择对应的原理图文件,系统会自动生成一个模块框。记得给每个框起不同的名字,比如U1U2U3

3.3.4 层级设计的最佳实践

嗯,这里我总结几条经验,供你参考:

  1. 先画顶层,再画底层。先确定模块之间的接口,再细化内部电路。
  2. 接口信号要规范。所有进出模块的信号,都要通过Hierarchical Port,不要偷偷从模块内部拉线出来。
  3. 做好文档。每个模块的功能、输入输出、注意事项,都写在原理图的注释里。
  4. 定期检查。每次修改后,跑一次Design Rules Check,确保层级连接正确。

我的习惯:在顶层原理图中,我会用不同颜色的框来区分不同类型的模块——电源模块用红色框,数字模块用蓝色框,模拟模块用绿色框。这样一眼就能看出板子的布局。

好了,这一章的内容就到这里。电源与地、ERC检查、层级设计,这三个问题看似独立,其实环环相扣。电源处理不好,ERC会报错;层级设计乱了,电源网络也容易出问题。你想想看,是不是这个道理?下一章,我们聊聊PCB布局阶段的常见错误,到时候见。