EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
附件是结合网上的资料总结的模块复用相关的笔记,以免以后忘记。希望也能对想了解相关的朋友有所帮助。
% r9 Q7 l/ ?; a) q( p" i! o- b% p. Y. C
/ K! T- C7 o2 W2 o" o; X时间:2017年3月15日 7 h+ Y) i6 C+ g
思路:
5 _. A+ p' B; x3 z0 ]6 ~5 c模块的建立:首先建立模块的原理图(为单独的一个设计),导出网表创建BRD文件,在BRD文件中创建MDD模块
5 }8 c$ c7 T( ~模块的使用:在新设计(或者已有的设计)中放置层次框图BLOCK(将路径指定为模块的DSN文件),随后Annotate,生成网表并在Module instances中放置模块mdd
3 C- E t9 T: [( B( h2 [4 s* {5 [
3 [: I4 \. \! {( e" Q' Z重要说明:
" o7 J i# O) ^; _5 }1、在模块建立过程中,在导出网表前需进行生产reuse module操作(必须要做),参考下图
, s3 V. t; ~/ ~file:///E:/Bak/YNote/kepo013@qq.com/b2a9271c70cc47a59a61198250096d5e/clipboard.png* i- S+ M% O; _: V. c2 }. K
, h& W* d5 p. w+ e2 |
& v, F1 L; k' `; n% G做完后器件会生成黄色的occurence属性,如下图
) n$ I* d6 j1 Y4 p D1 K7 N9 @file:///E:/Bak/YNote/kepo013@qq.com/6d24f2f80967416a944ed0fa3e9ddd0f/clipboard.png + p4 u9 G! \/ Z N& ~
如果不进行此操作而直接导出网表到brd中并生成mdd,会引起之后使用模块时位号对不上的问题。
. e* d0 G! {( n! `% ~* j( v- O# O3 `' p$ O6 Q) A0 O1 M) K# O
2、生成的mdd的名字有要求,一定是要dsn name_root sch name,否则在放置模块时会提示找不到模块。
1 J5 ]9 D( S3 {" c& z, K6 u比如,下图中的设计对应的模块名应该是sdram_module.mdd
2 Y$ [4 I+ M2 V# [- {file:///E:/Bak/YNote/kepo013@qq.com/fb35f124a4834a33838b8c1fa055fbf7/clipboard.png 3 N& [% ~, Y$ ]
) G0 D- i: h) A( l
3、存放模块的路径需包含在allegro的modulepath中,而模块的DSN文件和BRD文件位置没有要求(dsn文件的路径会在使用模块时放置block中指定) $ [$ I8 [. g. e
$ E8 c' _# x% O& z7 o% k6 I4、BLOCK(模块设计里)中不要使用全局的NET,最好通过PORT引出,在BLOCK外和全局NET相连。 + Q: G- _7 o2 a, [/ Y4 Y
file:///E:/Bak/YNote/kepo013@qq.com/640928a93ab74a63a34741ba2c99b504/clipboard.png
. y+ _7 c9 y. s nfile:///E:/Bak/YNote/kepo013@qq.com/e10c7098560f40cb827a5407a768a3e9/clipboard.png
Y' F' s, z# w. `7 X4 M" j# S4 O7 a# S
5、在使用模块的设计中,生产网标前的Annotate操作选项如下图,不需要勾选Generate Reuse module,和上面创建模块中的设置是相配对的。
( Q8 M$ y: u( w% Q3 A- G) k4 l9 tfile:///E:/Bak/YNote/kepo013@qq.com/eb20a047ad1d45488d2365b572cf1625/clipboard.png - l3 T ?& ]# X2 T8 }$ x% u& W
6、关于为什么Block能够和mdd能够对应上的原因。不管是在创建模块的设计中还是在使用模块的设计中,在PCB Editor Reuse中进行Annotate后都会给器件添加一个occurence(黄色部分),是器件的在本设计中有效的实例属性(应该类似于C++中的类和对象),在一个旧的设计中添加模块block后,其block内的位号极大概率会和旧设计有冲突,在PCB Editor Reuse中进行Annotate后,会产生一个occurence位号,而Instance位号还和创建模块的设计是一样的,说明block和mdd之间的识别是通过instance属性来link的,这样模块不管是用在新设计、旧设计或者是使用多少个,都能识别并正确放置模块,因为instance属性没有变。(网上也有说是根据器件的Value和NET来识别的,不是很认同)
7 X; S' g( A4 E) {; x* X" F9 c& M1 D5 a% z( {
9 k% [3 B) m4 n
file:///E:/Bak/YNote/kepo013@qq.com/88fd6babf0d044ef8bb960766a51b832/clipboard.png 0 W$ | v- n$ R
从使用模块的BLOCK中进入查看
8 J; B( s( {: u0 t n$ X& o0 e 5 O2 _9 O9 p# \8 R( m0 m; S
file:///E:/Bak/YNote/kepo013@qq.com/972862b0735b4d1eb4483e938680b8c1/clipboard.png % d+ `3 `, N. ^* o7 |) e; J
6 o& c5 B* f/ A, U' s
! A' C" [8 A! ~5 m$ X9 Y: r8 j+ ^3 N7 Q
* `, w- r: o+ H! q+ D, n7 W) Q
4 S2 H, h! {2 j1 a% B! }. Z2 P放置OK示意图(和其他设计的连接使用坐标定位)。
* t F( k& a0 ^file:///E:/Bak/YNote/kepo013@qq.com/97b98b6d94034e96a9b878c43389db01/clipboard.png
/ \# Y# H$ E# }( xfile:///E:/Bak/YNote/kepo013@qq.com/d28eaec3074b4dd5958c5613e6ed3deb/clipboard.png & m y) c/ B; k u
3 d) @; |* P6 E& `& h" f' R2 J |