第四章:创建可复用模块——从现有设计中提取模块、设置模块原点与参考点、模块命名规范

各位工程师朋友,大家好。今天我们来聊聊模块复用里最基础也最关键的一步——怎么把一块已经调好的电路,变成可以随时调用的“乐高积木”。

说实话,我刚入行那会儿,觉得复用就是复制粘贴。结果呢?每次粘贴完都要改半天坐标、调半天原点,反而比重新画还慢。后来我才明白,真正的复用,是从创建模块的那一刻就开始规划的。

4.1 从现有设计中提取模块

提取模块,说白了就是把PCB上的一坨走线、过孔、器件,打包成一个独立的“子电路”。Allegro里叫它“Module”,也就是我们常说的复用模块。

操作其实不复杂,但有几个坑我得先提醒你。

4.1.1 提取前的准备工作

在动手提取之前,先问自己三个问题:

  • 这个模块是否完整? 电源、地、时钟、复位,一个都不能少。我曾经提取过一个DDR模块,结果忘了把端接电阻包进去,后面复用的时候补得我头皮发麻。
  • 模块边界是否清晰? 最好用Outline或Route Keepin把模块区域圈出来。我习惯在Board Geometry里画一个矩形,标注为“MODULE_BOUNDARY”。
  • 器件是否都在模块内? 检查一下,有没有器件半截在外面?如果有,要么挪进来,要么放弃它。
注意: 提取模块时,Allegro会把选中的器件、走线、过孔、铜皮全部打包。但不会包含未选中的网络连接。所以,如果模块有跨边界走线,记得把边界外的部分也选中,或者干脆在模块内部完成所有连接。

4.1.2 提取操作步骤

好,准备工作做完,我们开始动手。Allegro里提取模块的路径是:

菜单栏 → Place → Design Reuse → Module Definition → Create

然后会弹出一个对话框,让你选择要包含的对象。我建议你按这个顺序选:

  1. 先选器件(Symbols)—— 按住Ctrl键,逐个点选,或者用鼠标框选。
  2. 再选走线和过孔(Clines, Vias)—— 同样框选。
  3. 最后选铜皮(Shapes)—— 如果有的话。

选完之后,右键点击“Complete”。系统会让你给模块起个名字,并选择保存路径。嗯,这里就要说到命名规范了。

4.2 模块命名规范

命名这件事,看似简单,但我在项目里见过太多“test1”、“final_v2”、“真的不改了”这种名字。等到项目后期,想找个模块,翻半天不知道哪个是哪个。

我个人习惯的命名格式是这样的:

字段 说明 示例
项目代号 3-4位字母缩写 PJX
模块功能 英文缩写,清晰明了 DDR4
版本号 V+数字,从01开始 V01
修订状态 R(Released)或D(Draft) R

举个例子:PJX_DDR4_V01_R.mdd

你看,一眼就知道这是哪个项目、什么功能、第几版、是否发布。比“模块1.mdd”强太多了吧?

小技巧: 我建议在模块文件名里加上日期,比如 PJX_DDR4_V01_20250315_R.mdd。这样即使版本号忘了改,也能通过日期追溯。别问我怎么想到的——问就是吃过亏。

4.3 设置模块原点与参考点

这是复用模块里最容易出问题的地方。原点设不好,放模块的时候能把你逼疯。

4.3.1 原点的作用

模块原点,就是模块被放置时,鼠标抓取的那个点。你想想看,如果原点设在模块正中间,那放的时候鼠标指哪,模块中心就在哪。如果原点设在左下角,那鼠标指哪,模块左下角就在哪。

我个人强烈建议:把原点设在模块的几何中心。为什么?因为这样旋转、镜像的时候,模块不会“跑偏”。

4.3.2 设置原点的步骤

在Allegro里,设置模块原点是在提取模块之后做的:

菜单栏 → Setup → Change Drawing Origin

然后鼠标点在你想要设为原点的位置。我一般会先在模块中心画一个十字标记(用Line工具),然后捕捉那个十字的交点。

核心要点: 原点一定要选在模块的对称中心关键接口上。比如电源模块,原点可以设在输入电容的正中心;DDR模块,原点可以设在颗粒阵列的几何中心。

4.3.3 参考点的妙用

除了原点,Allegro还允许你设置多个参考点(Reference Point)。这玩意儿有什么用呢?

举个例子。我有一个8层的DDR模块,每次放到板子上,都要确保它离板边至少5mm。如果我把参考点设在模块最左边沿,那放的时候直接让参考点对齐到板边+5mm的位置就行了。不用算来算去。

设置参考点的方法:

菜单栏 → Place → Design Reuse → Module Definition → Define Reference Point

然后点选你想要的位置。我一般会设3个参考点:

  • 左下角 —— 用于对齐板边
  • 中心 —— 用于常规放置
  • 关键接口 —— 比如连接器的第一个引脚

4.4 避坑指南:我踩过的那些坑

讲了这么多理论,来点实战经验吧。这些都是我这些年真金白银换来的教训。

4.4.1 坑一:模块里的网络名冲突

有一次,我把一个电源模块提取出来,放到另一个板子上。结果发现,模块里的“VCC”网络和板子上的“VCC”网络连到一起了——但这两个VCC电压不一样!

解决办法: 提取模块时,把模块内部的网络名加上前缀。比如电源模块的网络叫“PWR_VCC”,而不是“VCC”。这样放到任何板子上都不会冲突。

4.4.2 坑二:模块里的器件位号重复

这个更常见。你把模块A放到板子上,模块A里有个R1。然后你又放了一个模块B,模块B里也有个R1。好了,两个R1冲突了。

解决办法: 在提取模块时,勾选“Auto Rename Refdes”选项。Allegro会在放置模块时自动给器件重新编号。或者,你可以在模块里用“R_?”、“C_?”这样的通配符位号,放置时系统会自动分配。

4.4.3 坑三:模块里的走线层不一致

我曾经从一块6层板里提取了一个模块,放到另一块4层板里。结果模块里有些走线在5层、6层,而4层板根本没有这些层。走线直接消失了。

解决办法: 提取模块前,确认目标板子的层叠结构。如果层数不同,要么重新走线,要么在模块里只用前几层(比如TOP和BOTTOM),避开内层。

4.5 实战:完整提取一个模块

好,我们来走一遍完整的流程。假设我要从一块板子上提取一个USB转串口模块。

  1. 圈定范围: 在Board Geometry层画一个矩形,标注“USB_UART_MODULE”。
  2. 检查完整性: 确认模块包含FT232芯片、晶振、电容电阻、USB座子,以及所有连接走线。
  3. 提取模块: Place → Design Reuse → Module Definition → Create,选中所有对象。
  4. 命名: 保存为 PJX_USB_UART_V01_R.mdd
  5. 设置原点: Setup → Change Drawing Origin,点选模块几何中心。
  6. 设置参考点: 在USB座子的第一个引脚处设一个参考点。
  7. 验证: 新建一个空白PCB,Place → Design Reuse → Place Module,选择刚才保存的模块,看看能不能正常放置。
验证这一步千万别省! 我见过有人提取完模块,直接发给产线,结果放上去发现少了两根线。花5分钟验证一下,能省后面5小时。

4.6 小结

创建可复用模块,说白了就是三个步骤:提取、命名、设原点。但每一步都有细节,细节决定成败。

我个人觉得,模块复用最大的价值不是“省时间”,而是“保质量”。一个经过验证的模块,放到任何板子上都是可靠的。你不需要重新检查它的时序、阻抗、EMC——因为之前已经查过了。

嗯,下一章我们会讲怎么把这些模块组合起来,形成完整的布局。到时候你会发现,有了模块库,布局就像搭积木一样简单。

今天就到这里。有问题欢迎在群里讨论,或者直接找我。咱们下章见。