前言
有些电路原理图是固定的,PCB布局也大体固定。这时候就会想,如果能把原理图和PCB布局联合起来就好了,画好原理图后,画PCB时那部分电路的布局也能直接拖出来,这样能极大的提高效率。其实,Cadence提供了将原理图和PCB布局结合起来做成一个module(模块)的功能。module可以称为复用模块、模块 或者 复用电路。
下面将详细介绍如何做成module,以及如何使用module。
注意,将复用模块与PCB中的复制元器件布局
区分开,复用模块和原理图是绑定的
且可通过库来调用,而复制元器件布局是将画好的部分布局复制一份,和原理图无关。
一. 绘制Module的原理图
1.1 画好要复用的电路的原理图
注意输入输出要用port引出,此port就对应层次化电路图的端子。
1.2 给元器件增加reuse属性
Tool -> Annotate…,打开Annotate窗口。
在Annotate窗口的PCB Editor标签页中,勾选Generate Reuse module(生成复用模块),点击确定。
弹出以下两个窗口,点击确定。
按Ctrl + S保存设计,然后选择任意器件,右击 -> Edit Property,查看其属性。如下图,可以发现,当前属性增加了两项:REUSE_ANNOTATE 和 REUSE_ID。这两个属性就是原理图与PCB间器件一一对应的纽带。
1.3 导出网表
Tools -> Create Netlist…,打开创建网表窗口,导出网表。
二. 绘制Module的PCB
2.1 新建*.brd,导入网表,绘制好布局
如下图所示,不需要布线100%。
2.2 创建PCB module
Tools -> Create Module…,
然后,框选要生成Module的PCB部分,再单击选择原点,弹出保存*.mdd文件的对话框,如下图所示。
mdd文件名 = dsn文件名_原理图页名。
注意:1.文件名不区分大小写;2.mdd文件必须按此规则命名,否则在调用时Allegro会提示找不到对应mdd。
这里的dsn文件名为getmdd,加上下划线_,再加上原理图页名12Vto24V。当然你这里随便取个名字,然后在资源管理器中对*.mdd重命名也可以,效果一样。
保存mdd文件,在资源管理器中可以看到*.mdd文件前的图标与brd文件相同,其实mdd文件可以用Allegro进行编辑,就像操作brd一样。当然,你如果直接把brd文件后缀改为mdd是不行的,Allegro打不开。
所以。在2.1那一步直接新建*.mdd文件就可以了,然后导入网表进行布局布线,就无需从brd文件中create module了。
推荐直接建立mdd文件,如下图,而不是建立brd文件后Create Module。
2.4 设置modulepath
Allegro要调用mdd文件,会去modulepath指定的路径中搜索,所以要先设置modulepath,然后将生成的mdd文件放入modulepath指定路径。
Setup -> User Preferences…,打开用户首选项设置,搜索module即可找到modulepath。
三. 使用Module
新建一个原理图工程,在此工程中试验复用module,步骤如下。
3.1 放置层次化BLOCK
Place -> Hierarchical Block…,放置层次化块,设置如下。
点击OK后,用鼠标绘制出方框,我这里绘制了一个,又复制了一个。可以双击进入BLOCK内部查看电路。
特别注意:这里的BLOCK是引用而不是复制,也就是说,BLOCK绘制好后,如果BLOCK指向的dsn文件发生更改,BLOCK会跟着变化,如果dsn文件改名了或者被删除了,BLOCK就会找不到dsn导致错误。所以,上图的两个BLOCK,你双击任意一个进入修改电路,保存,双击另一个BLOCK进去查看,电路也被修改了,这就说明了这里的BLOCK是引用,两个BLOCK只是名字不同(BLK1,BLK2),指向的电路是同一个。
可进行任意设计,像正常画原理图一样。
3.2 Annotate位号重排与指定mark
原理图画完后,Tool -> Annotate…,打开Annotate窗口。如下图设置,点击OK。会执行位号重排,同时指定好BLOCK对应的module。
3.3 导出网表
Tools -> Create Netlist…。同1.3节一样。
3.4 新建brd,试试复用效果
导入网表后,Place -> Manually…,打开Placement窗口,如下图所示。可以看到Components by refdes中,BLOCK内的元器件呈黄色,BLOCK外的呈粉红色。再看Module instances,可以看到两个BLOCK对应的mdd。
放置两个Module instances(模块实例),效果如下图所示。
可以看到,元器件位号会跟随原理图自动变化,原本的布局布线包括丝印等与mdd保持一致。mdd有个外框框住,表示这是一个group,find中选中groups,可以整体移动,选中symbles可以移动单个器件,很灵活。
四. Module原理说明
为什么module中的器件原理图和PCB能对应上?一是mdd文件的名字,是dsn名_原理图页名,这让软件可以找到那个原理图;二是复用的原理图执行了pcb editor reuse,添加了REUSE_ID这个属性,软件能根据这个属性准备对应每个器件,所以原理图中的位号变了,mdd布局还是不会乱,可以知道mdd并不像brd一样依赖位号确定元器件,而是利用REUSE_ID。
五. 更新Module原理图与PCB
1)复用的原理图内部修改后,只要port 口没有变,则使用它的原理图中的BLOCK不用手动同步,因为BLOCK是引用,同步是自动的,实时的。而如果port口变化了,则需要右击BLOCK -> Synchronize Up;
2)做好的模块文件用在 pcb 中后,若需要修改这部分文件,可以打开对应的mdd文件,然后在原 pcb 中使用 update symbol 功能,选相应的 moddle进行更新。当然,你也可以直接修改复用PCB模块的单个器件,不过这时你如果update modules,布局又会回到mdd的布局了。
如果本文对你有所帮助,欢迎点赞、转发、收藏、评论让更多人看到,赞赏支持就更好了。
如果对文章内容有疑问,请务必清楚描述问题,留言评论或私信告知我,我看到会回复。
徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。