Cadence SPB原理图复用和模块设计复用
原文链接:https://blog.csdn.net/weixin_39856630/article/details/113019074
在你遇到如上图所示的dsp阵列PCB时,如果你的layout软件支持模块复用,你会感觉到自己的心里比吃了蜜还要甜!下图是老牛的memory模块复用。
下面的复用内容来自网络,按照这个说明可以实现模块复用。
本人正在按照这个方法进行尝试,后续会写出带图的详细设计。show下本人的复用电路:

module生成
1、在orcad中画好模块的原理图,设定好封装,做好drc,做好元件编号。
2、检查元件属性是否设为current properties,其它设定可能出错。
2、在annotate–>allegro reuse中,选中generate reuse module,renumber design for
using modules,选中unconditional,其它不选。
3、生成netlist.
4、将netlist导入到allegro,布线,布局,若无rename等需要与orcad交互的动作,选tools–>creat modules生成mdd文件.mdd文件的文件名一定要定义为:DSN NAME_ROOT SCHEMATIC NAME.mdd。DSN NAME为你定义的orcad中的dsn文件名,ROOT SCHEMATIC NAME是这个文件中的页名字。这里若定义不对,在reuse时找不到mdd文件。之后跳到第6步。
5、在allegro中export logic,然后在orcad中back annotate,并再次drc。这一步很关键。
6、模块制作完成。
使用生成的模块
1、在新的orcad设计中,选place–>herarhical
block,reference中填入BLK?(注意,这里使用BLK是为了与原理图中的U?R?C?区别,保证BLK这个名字专用于moduel,不然在做完allegro后,rename 时,导回到orcad中出问题。) 在implementation type中选schematic view,在implementtation name中填入先前模块的页名称,在path and file name中选择相应的dsn文件,之后在你的原理图中出现一个block.
2、继续其它设计,之后在annotate–>packageing中,选中reset part name to “?”,同时选中update occurrences,执行一下,将所有的元件(包括module的name改为?),在annotate–>allegro reuse中,选中 renumber design for using modules,选中incremental,选中do not change the page number,选中select modules to mark for框里的内容。其它不选。
3、drc后,出netlist.
4、导入到allegro后,palce–>manually place,选mudule
instances,将module放入。注意一下mdd文件路径的设定,不正确会找不到mdd 文件的。
5、在allegro中布好线后,可以rename到arcad中,与正常设计无区别。
6、over.
做reuse时的几个注意事项
A 如果是多层板的reuse,那么因为生成的module是多层的,所以新的brd在module放入之前最好也设置成和module一样的层及plane网络设定。plane不一定要全部设,但像VCC gnd最好设定。
B 如果绘制大规模fpga\dsp\arm\powerpc等的电路,芯片symbol package往往含有多个part,这在reuse时会产生问题。建议在生成module部分在进行sch设定时,给多part的symbol package再添加一个属性,例如wzh,然后同一个芯片的package的这个值赋予相同值。在后续的annotate/pcb editor reuse/property combine 选型中加入{wzh}。
1:当reuse模块已经放在电路中使用,重新修改reuse模块的port口后,在使用的原理中右击这个模块,选synchronize up,则实现修改的同步。
2:在reuse模块中,不能使用room属性,不然可能与使用reuse的电路图混淆。
3: reuse模块中不能使用全局变量,特别是电源和地,使用port口传递数据。
4: reuse模块内部修改后,只要port口没有变,则在使用它的原理图不用同步。
5: 做好的模块文件用在pcb中后,若需要修改这部分文件,在修改完成后,在原pcb中使用update symbol功能,选相应的moddle,之后更新就行了,注意生成mdd文件时,原点的选择,这然更新后一些线会错位。
6:当导入到allegro的模块出现dummy net的错误时,怎么办?
出错的可能原因是由于模块的orcad文件造成的,可能是对原始的orcad取一部分进行修改,这些元件带有原来文件的一些属性。将相关orcad文件的所有元件和连线copy到一个新的页内,将当前页的内容删除,从刚才copy到新页的内容copy回来,这时看元件的属性时,没有黄色的部分,按正常步骤重新生成mdd文件,在调用这个模块的orcad文件中,重新编一次元件编号,生成网表,问题解决。
7:当含有reuse的设计导入到allegro并布线完成,若重新修改原理图,比如换一个10pin的IDC插座到16pin,不能用annotate–>allegro reuse命令,不然生成的网表会导入到allegro中会出错,不知是什么原因?
答:在原理图设计中,当使用reset to ?后,使用annotate–>allegro reuse命令,将netlist导出到allegro后,不能再使用使用reset to ?,新增的元件使用increase功能,不要将所有的元件reset to ?,不然会出错。
===================================================================================
关于allegro模块复用问题
孙海峰在使用Allegro PCB进行复杂电路设计时候,往往会遇到一部分电路被反复使用的情况,设计者可以按照之前的经验很快的做出相同的设计,但是这无疑浪费了不少时间。尤其对于大规模复杂设计,如果设计者浪费时间在反复的工作上,这是严重的损失。Allegro PCB允许设计者一开始就将复用模块设计好,以后只要直接调用复用模块就可以直接用以设计更复杂的电路板了。
这对于大规模集成设计无疑是非常好的选择,它不仅让设计者不必花费时间在相同模块反复设计上,更有利于电路的模块化设计和团队合作设计。
接下来我从Allegro PCB出发,详细阐述模块复用设计的具体步骤。
一、设计复用模块
首先在复杂设计之初,确定复用模块,然后对它进行设计。复用模块的设计与普通PCB设计流程相似,包括原理图设计,DRC检查,导出网表,PCB设计和原理图反标的整个流程。
原文链接:https://blog.csdn.net/weixin_39853892/article/details/113378187
Cadence中原理图模块化
原文链接:https://blog.csdn.net/dianji2015_/article/details/121136222
1. 前言
今天介绍一种原理图模块化的方式,初衷是为了省去多个简单原理图工程对应的PCB的设计费,将多个原理图转化为多个子模块,放在一个工程中。
使用的原理图软件:Cadence 16.6
使用的PCB软件:Allegro 16.6
2.实现方式
将多个原理图工程模块化使用,主要包括几个步骤:建立子模块原理图,生成子模块,调用子模块,生成原理图网表,导入PCB。
下面对这几个步骤分别说明。
2.1 建立子模块
2.2.1 建立单个子模块
在常规的原理图基础上加层级接口对外输出,下图中将电源芯片的输入输出GND接口引出。
对于这个层级接口,cadence中有三种:
三种对应的属性如下:
左右两边突出的是双向的(可输入也可输出),左边突出的是输入输出特性的,长方形的是无极性的。选择哪一种接口,取决于芯片的引脚特性,两者需要保持一致,否则在电气检查时会报错。
我个人建议选passive无极性类型的,比较通用,即使是芯片Vin/GND的属性是POWER也不会出错。
2.2.1 建立多个子模块
建立单个子模块时,有一个工程,一个模块名,一个原理图页面,如下图所示:
但是当要建立多个子模块时,若在一个工程下,就要建立多个模块名,每一个模块下分别建立原理图。下图中有三个模块,模块1,2是要使用的子模块,模块top是要调用1,2模块的顶层模块。
注意在调用子模块时,需要把顶层模块make root,否则在顶层模块的page页面找不到子模块。
2.2 生成子模块
建立子模块后,做如下操作生成子模块:
选中dsn-annotate-pcb editor reuse-generate reuse mode
2.3 调用子模块
在顶层原理图中,调用子模块:
place >> herarhical block
给添加的block命名,并且寻找子模块(下拉箭头中可选择),如选择子模块1。
对于path and filename这一行,若是在本工程中使用子模块,可不做选择,若是在新工程中使用子模块,选择子模块所在的工程的dsn文件。
多次重复操作,调用多个模块,下面是调用的1,2子模块的原理图。
2.4 生成原理图网表
在生成原理图网表之前,需要保证原理图电气检查时,没有错误。但前面步骤中,即使子模块原理图无误,也有可能出现一种错误,即子模块中元件命名一致,所以需要给子模块中的元件重命名。
选中工程后,先将原来的命名复位为?,后给其重命名,如下图所示。
PCB的使用中也要重新命名。
然后进行电气检查,无误后,生成网表。
2.5 导入PCB
将网表导入到新PCB中,若封装都无误,可以进行布局布线了,此时你会发现,子模块电源地都是按block分开的,实现了多个原理图模块化使用。
3. 补充
1)注意模块电源和地的区分
电源和地是全局变量,有两种方式将其分开
给每个模块的电源和地都加上接口端子,地包括信号地,大地,功率地等。
给模块的电源和地分别命名
2)原理图变更后同步更新模块端子
每个模块原理图更新后,在模块右键synchronize up,同步在模块顶层界面。
Cadence复用电路原理图及其PCB布局
https://blog.csdn.net/weixin_42837669/article/details/111712701
有些电路原理图是固定的,PCB布局也大体固定。这时候就会想,如果能把原理图和PCB布局联合起来就好了,画好原理图后,画PCB时那部分电路的布局也能直接拖出来,这样能极大的提高效率。其实,Cadence提供了将原理图和PCB布局结合起来做成一个module(模块)的功能。module可以称为复用模块、模块 或者 复用电路。
下面将详细介绍如何做成module,以及如何使用module。
1.绘制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…,打开创建网表窗口,导出网表。
2.绘制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。
3.使用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可以移动单个器件,很灵活。
4.Module原理说明
为什么module中的器件原理图和PCB能对应上?一是mdd文件的名字,是dsn名_原理图页名,这让软件可以找到那个原理图;二是复用的原理图执行了pcb editor reuse,添加了REUSE_ID这个属性,软件能根据这个属性准备对应每个器件,所以原理图中的位号变了,mdd布局还是不会乱,可以知道mdd并不像brd一样依赖位号确定元器件,而是利用REUSE_ID。
5.更新Module原理图与PCB
1)复用的原理图内部修改后,只要port 口没有变,则使用它的原理图中的BLOCK不用手动同步,因为BLOCK是引用,同步是自动的,实时的。而如果port口变化了,则需要右击BLOCK -> Synchronize Up;
2)做好的模块文件用在 pcb 中后,若需要修改这部分文件,可以打开对应的mdd文件,然后在原 pcb 中使用 update symbol 功能,选相应的 moddle进行更新。当然,你也可以直接修改复用PCB模块的单个器件,不过这时你如果update modules,布局又会回到mdd的布局了。