《Cadence 设计中的模块应用.pdf》由会员分享,可在线阅读,更多相关《Cadence 设计中的模块应用.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Cadence 设计中的模块应用 摘要摘要摘要摘要 本文介绍 cadence 中创建和调用模块的方法和技巧。重点介绍:1)在不需要调用 mdd 的前提下,如何取消使用模块带来的长位号 2)创建模块原理图是需要注意的一些问题 3)如何在主 PCB 中创建模块,使模块的布局布线更方便直观 关建词关建词关建词关建词 模块 正文正文正文正文 在用 cadence 进行 PCB 设计的过程中,我们在三种情况下有可能需要调用模块:一是原理图由多人设计,以模块的方式组合在一起;二是原理图中调用了标准库里现成的通用电路;三是原理图中有部分电路重复使用,采用模块节省设计时间。1 模块组合模块组合模块组合模块组合
2、 这种方式除了原理图为层次设计外,其他操作与通常的原理图没有什么区别,EDA 设计人员不需要进行任何特别操作。2 调用通用电路调用通用电路调用通用电路调用通用电路 2.1 原理图调用原理图调用原理图调用原理图调用 从标准库中调用通用电路有两种方式:直接指向服务器或拷到本地再调用,可按不同的情况分区别对待。2.1.1 直接调用标准库直接调用标准库直接调用标准库直接调用标准库 如果不打算对通用电路进行任何更改,如更改网络、元件命名等,可以直接调用,但在 cds.lib 文件中应加入如下语句,否则打开原理图时会有困难。ASSIGN modulelib TMP modulelibtmp 其中 modu
3、lelib 应为模块所在文件夹名称,如 zte_module_functionzte_module_functionzte_module_functionzte_module_function、zte_module_part 或zte_module_card modulelibtmp 模块的临时文件夹,取名可任意,与 cds.lib 在同一路径下,需手工新建。也可以以绝对路径的格式定义在任一路径下。2.1.2 将库拷到本地将库拷到本地将库拷到本地将库拷到本地,再行调用再行调用再行调用再行调用 如要对模块进行更改,则需将模块拷到本地,再行调用,因为我们的机器在服务器上没有存盘的权限,对所有指向服
4、务器的更改都是不能执行的。通常的做法是将模块拷到 worklib路径下。当然,如果 EDA 设计者接受的是 archive 文件,原理图库调用的问题就不必操心了。2.2 原理图打包原理图打包原理图打包原理图打包 EDA 设计者一般只进行主原理图的打包。通常的做法是在打包前在 Force Subdesign 或者 Use Subdesign 项里添加所用到的模块库名,并在 subdesign suffix 中填入字母“A”,如图:这样打包出来的模块内元件的位号会带有 A*的后缀,如 R234A2。在 allegro 中可以调入相应的 mdd 文件放入 PCB 中。由于目前 PCB 的空间一般都比
5、较紧张,通常情况下标准库的 mdd 模块的布局布线并不适用于当前的 PCB,EDA 设计人员不得不重新布局布线。对于 EDA 设计人员而言,调用通用电路,并不能节省时间,因为不能调有现成的 mdd 模块,反而在紧张拥挤的空间中还出现了很多长位号。对于这种模块,我们应该把它当做层次原理图处理(如 1),而不应该视为模块。怎么才能不出现不必要的长位号呢?首先将该模块删得只剩下如图三个文件夹:然后打包时要把该模块的名字从 Force Subdesign 或者 Use Subdesign 项中剔除,重打包就可以了。如果仍然出现不必要的长位号,可能是上一次不正确的打包留下的后遗症,可以将主原理图路径下的
6、 opf 和 packaged 删去,再重打包即可。注意:为保持位号的一致性,这种改动原则上应由原理图设计人员在他们的机器上进行,并将原理图反标后再发给 EDA。2.3 PCB 模块调用模块调用模块调用模块调用 在 allegro 中如要调用现成的 mdd 模块,有以下条件:1)正确设置环境变量指出 mdd 模块路径 如在 Allegro 环境中,Setup-user preference design_paths 里,设置如下:MODULEPATH=J:ztelibAllegroLibzte_modulefunc MODULEPATH=J:ztelibAllegroLibzte_module
7、card MODULEPATH=J:ztelibAllegroLibzte_modulepart 2)模块原理图要正确打包,模块 packaged 路径下应存在正确的 pxl_模块名.state 文件 3)主原理图要正确打包,模块名字要写入 Force Subdesign 或者 Use Subdesign 项中 4)PCB 与模块的叠层应该一致 满足以上条件,即可将模块经 Place Manually Module instances 一一调出。3 重复调用重复调用重复调用重复调用 当原理图里部分电路重复使用时,应该将这部分电路做成模块,这样既便于更新原理图,又能大量缩短 PCB 的设计时间。
8、通常这部分电路并非通用电路,所以库里一般是没有现成模块的,这就要求原理图及EDA 设计人员自建模块。3.1 创建原理图模块创建原理图模块创建原理图模块创建原理图模块 3.1.1 增加增加增加增加 cpm 文件文件文件文件 建议给每一个模块都建一个 cpm 文件(如下图),对模块进行更改或打包时都通过 cmp文件打开原理图,这样既方便也安全。尤其是模块打包时,不用每换一个原理图打包就要更改 subdesign 里的模块名称,而且元件位号也不容易打乱,同时还便于使模块位号最小化。特别提醒,不要通过主原理图进入模块原理图进行模块打包,极有可能会把位号打乱,比如最后出现 R123A1A2 这样带两层后
9、缀的元件位号。3.1.2 隐含管脚的处理隐含管脚的处理隐含管脚的处理隐含管脚的处理 原则上模块内是禁用全局变量的,模块内所有外接的信号都应通过 symbol 与主原理图相接。常见的全局变量有电源地的符号,元件隐含的电源地管脚。电源地符号推符用网络名代替,或使用用于模块的电源、地符号(命名带有_L)。元件隐含的电源地信号要加%改变其全局变量的属性。如下图红线指出的这几个网络,加了%后它们就变成了一个独立的变量。如果不做特别处理,哪怕主原理图和子原理图也都存在一个同名网络,这三者也是互不相连的。以 VN25 为例,我们研究一下这三者之间的关系。我们用 IC_VN25(元件隐含网络,在此例中为 VN
10、25),S_VN25(模块内未隐含网络,如去耦电容处,在此例中为 2.5VN),M_VN25(主原理图网络,在此例中为 2.5VN1)区分这三个网络。站在主原理图的立场来看,其调用模块内的 IC_VN25 和 S_VN25 无论是否重名,都是独立的两个网络,它们是否相连与模块没有关系,主要在于主原理图调用模块 symbol 的时候是否将它们接在同一个网络 M_VN25 上。S_VN25 必须用网标的形式给出外接 PORT 符号,这样在才能在调用模块的时候给相应的管脚加上 M_VN25 网络,使 S_VN25 和 M_VN25 相连,如图 模块内 主原理图 IC_VN25 如果 POWER_GR
11、OUP 的属性未使用%,是一个全局变量,只要与 M_VN25重名,不需做特别处理就是相连的(如上页图中蓝线所指网络);用%将其独立出来以后就要用 define symbol 将其定义为模块 symbol 的一个属性,才能将其与外部相连,具体操作如下:首先要在模块内增加一个 define symbol,并在其中增加一个 VN25 的变量,其 value 推荐与 S_VN25 相同(这样单独打包模块原理图的时候,IC_VN25 与 S_VN25 才能相连),如下图 然后在主原理图调用模块 symbol 时,在 symbol 中增加变量 VN25,在变量的 value 中填入“2.5VN1param
12、eter(也可简写成 param)”,IC_VN25 就和 M_VN25 连起来了。但是我们在做 mdd 文件的时候,是单独倒入模块原理图的,这时候不存在 M_VN25 这个网络,那在 mdd 文件中又怎么才能使 S_VN25 和 IC_VN25 相连呢?如果 IC_VN25 是个全局变量,那就跟普通的原理图一样,只要 IC_VN25 和 S_VN25 同名就可以了。如果 IC_VN25 是个独立变量,那么 define 中的 value 值必须等于 S_VN25,为免搞错,推荐 IC_VN25 与 S_VN25 同名。原理图的打包及创建 symbol 方法参见相关标准 3.2 创建创建创建创
13、建 mdd 模块模块模块模块 通常 mdd 模块的创建过程是,新建一个 PCB,倒入模块原理图,完成后用 Tools Create Module 工具输出 mdd 模块。这种方法的缺点在于布局时不够直观,不便于把握模块元件在整个 PCB 中的位置。为了改善这一点,我们可以在主 PCB 上创建 mdd 模块。例如PCB上调用了三个dm624_1模块,分别为dm624_1A1、dm624_1A2 和dm624_1A3。初始布局时,可以只布其中一个模块的元件,如 dm624_1A1,其他两个模块则利用拷贝这一个模块的形式占据空间,如不合适则调整 dm624_1A1 的布局。布局基本确定以后,用 To
14、ols Create Module 工具直接从主 PCB 选择 dm624_1A1 模块输出为 mdd 文件 dm642_1.mdd。打开 dm642_1.mdd,会发现其位号及网络都带有后缀 A1,这不能被调用,可以利用以下这个 skill 程序将位号的后缀 A1 去掉:defun(rename_molref()axlSetFindFilter(?enabled(noall components)?onButtons(all)axlAddSelectAll()comps=axlGetSelSet()foreach(x comps oldname=x-name l=strlen(oldname
15、)-2 newname=substring(oldname 1 l)axlRenameRefdes(oldname newname)axlClearSelSet()然后用 File Import Logic输入模块原理图信息,其网络名的后缀也被去掉了。再添加模块路径指向 mdd 所在的文件夹,即可调用。模块路径的设定见 2.3。如果模块较复杂,建议将 mdd 另存为 brd 文件,进行 valor 检查及更改后,再重新生成mdd 文件。再回到主原理图,为了更好地掌握网络的相互连接关系,我们可以把原来拷贝占位的元件都删去,调入做好的 mdd 模块,检查一下如果没有什么大的问题,就可以开始模块的布
16、线了。模块总会有一部分网络是与外部相连的,这部分飞线在单独的mdd文件里显示不出来,所以推荐模块的布线也在主 PCB 里进行,这样飞线不容易被忽略,也比较直观。为了充分的节省时间,建议模块布局布线测试点丝印等一切工作都完成后再生成 mdd模块,然后将 mdd 另存为 brd 文件,进行 valor 检查及更改后,再重新生成 mdd 文件 如果该模块中有部分元件的摆放不完全一致,不能重复调用,生成 mdd 时可以不选择该部分元件及相关连线。如果 mdd 中如部份元件不能调入 PCB,有可能是模块原理图打包时 REUSE_ID 属性值有重复,可以将模块路径下的 opf 和 packaged 删掉重新打包并生成新的 mdd 文件,主原理图及 PCB 也需要打包更新