EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
附件是结合网上的资料总结的模块复用相关的笔记,以免以后忘记。希望也能对想了解相关的朋友有所帮助。. |, e2 h5 h/ V1 I& I+ q0 Z2 ]. D
* j- d+ L/ T- w- X ?
时间:2017年3月15日
5 J, a$ e: e0 x3 l. d思路:
# I4 j) B0 G* b- Y1 ~模块的建立:首先建立模块的原理图(为单独的一个设计),导出网表创建BRD文件,在BRD文件中创建MDD模块
. C: p; r+ z. O模块的使用:在新设计(或者已有的设计)中放置层次框图BLOCK(将路径指定为模块的DSN文件),随后Annotate,生成网表并在Module instances中放置模块mdd
0 M3 N1 W5 ~: q6 [, I% y$ ?0 N9 a. I+ S. q& Q7 n
重要说明:
; m8 |( f9 x# ?1、在模块建立过程中,在导出网表前需进行生产reuse module操作(必须要做),参考下图
Y% B/ _4 s) rfile:///E:/Bak/YNote/kepo013@qq.com/b2a9271c70cc47a59a61198250096d5e/clipboard.png& p5 s$ Q5 a0 z5 |, F
$ B, O; i; x; I# B
" h; W; M4 @3 r& H
做完后器件会生成黄色的occurence属性,如下图
8 b# h- _/ L- d$ Y; @8 wfile:///E:/Bak/YNote/kepo013@qq.com/6d24f2f80967416a944ed0fa3e9ddd0f/clipboard.png 7 z+ @0 \! i1 B- ? l
如果不进行此操作而直接导出网表到brd中并生成mdd,会引起之后使用模块时位号对不上的问题。 ( H& Z: {* M0 @, t
# f4 }% G' K' F, O6 R% p- O
2、生成的mdd的名字有要求,一定是要dsn name_root sch name,否则在放置模块时会提示找不到模块。 * Q$ j' Q0 H% \7 E' n
比如,下图中的设计对应的模块名应该是sdram_module.mdd
: V: h+ ?1 b7 C# ~& \+ Mfile:///E:/Bak/YNote/kepo013@qq.com/fb35f124a4834a33838b8c1fa055fbf7/clipboard.png
6 n1 D& J6 F- |* G0 d5 O" x/ V u; y: n1 u3 F$ y2 [/ z2 {' x
3、存放模块的路径需包含在allegro的modulepath中,而模块的DSN文件和BRD文件位置没有要求(dsn文件的路径会在使用模块时放置block中指定) * b' @+ P. t1 x/ q1 P1 S; w
, z! ~8 ?% C" b! y4、BLOCK(模块设计里)中不要使用全局的NET,最好通过PORT引出,在BLOCK外和全局NET相连。
- R. m8 q8 ^* U8 O' vfile:///E:/Bak/YNote/kepo013@qq.com/640928a93ab74a63a34741ba2c99b504/clipboard.png
0 J2 j& C2 l1 u# l: Ofile:///E:/Bak/YNote/kepo013@qq.com/e10c7098560f40cb827a5407a768a3e9/clipboard.png 8 G% @: |) D3 A0 A2 L# ^
; C' l& b9 o! y4 m
5、在使用模块的设计中,生产网标前的Annotate操作选项如下图,不需要勾选Generate Reuse module,和上面创建模块中的设置是相配对的。
* y5 O! M0 P7 h9 s. Ifile:///E:/Bak/YNote/kepo013@qq.com/eb20a047ad1d45488d2365b572cf1625/clipboard.png
6 _1 F9 @! n1 Y& ?4 T! E6、关于为什么Block能够和mdd能够对应上的原因。不管是在创建模块的设计中还是在使用模块的设计中,在PCB Editor Reuse中进行Annotate后都会给器件添加一个occurence(黄色部分),是器件的在本设计中有效的实例属性(应该类似于C++中的类和对象),在一个旧的设计中添加模块block后,其block内的位号极大概率会和旧设计有冲突,在PCB Editor Reuse中进行Annotate后,会产生一个occurence位号,而Instance位号还和创建模块的设计是一样的,说明block和mdd之间的识别是通过instance属性来link的,这样模块不管是用在新设计、旧设计或者是使用多少个,都能识别并正确放置模块,因为instance属性没有变。(网上也有说是根据器件的Value和NET来识别的,不是很认同) ) v6 J4 h7 Z; w8 w
* \5 U% [: R2 T! w
* M. W: i" s! j5 H$ C# k. Mfile:///E:/Bak/YNote/kepo013@qq.com/88fd6babf0d044ef8bb960766a51b832/clipboard.png % s5 S. C6 |# E: j; u0 _
从使用模块的BLOCK中进入查看 ) T7 v8 A) v( E+ S1 R
5 A8 O( x: J! w4 B$ |
file:///E:/Bak/YNote/kepo013@qq.com/972862b0735b4d1eb4483e938680b8c1/clipboard.png
# ]: V6 v# }8 Y9 ?3 y* H; l9 P6 [( N
: A$ f' w- Y) s7 b+ g! Z1 s7 H% w3 R* `
" t: n+ G$ W% T4 h放置OK示意图(和其他设计的连接使用坐标定位)。
: V Z m$ b% ^file:///E:/Bak/YNote/kepo013@qq.com/97b98b6d94034e96a9b878c43389db01/clipboard.png % h3 G8 z3 O- L$ v1 G& [1 O
file:///E:/Bak/YNote/kepo013@qq.com/d28eaec3074b4dd5958c5613e6ed3deb/clipboard.png 8 \ `! A4 R x& ?+ K
. [1 }% C0 c$ m/ c# f |