EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
附件是结合网上的资料总结的模块复用相关的笔记,以免以后忘记。希望也能对想了解相关的朋友有所帮助。
' @$ X: U% r8 z: C i E* b, D. B5 ^
J9 J$ x# ^( w' K: V$ f时间:2017年3月15日
2 {# s$ f/ o! G0 E) [思路:
# u. r% j4 ]+ a" w# g3 N模块的建立:首先建立模块的原理图(为单独的一个设计),导出网表创建BRD文件,在BRD文件中创建MDD模块 3 v* [* u, R" N0 A! \3 k
模块的使用:在新设计(或者已有的设计)中放置层次框图BLOCK(将路径指定为模块的DSN文件),随后Annotate,生成网表并在Module instances中放置模块mdd
' t* F: u8 b% @
. a" R1 y/ {2 e$ f& _重要说明:
7 D5 C# J, c1 |, ?7 A1、在模块建立过程中,在导出网表前需进行生产reuse module操作(必须要做),参考下图
2 _3 x, S% O: sfile:///E:/Bak/YNote/kepo013@qq.com/b2a9271c70cc47a59a61198250096d5e/clipboard.png
, w/ Y0 w$ _1 y" q, v # `( V/ h X8 I
$ ^) b, [% y# o/ P
做完后器件会生成黄色的occurence属性,如下图 3 i1 g L# L7 b( U
file:///E:/Bak/YNote/kepo013@qq.com/6d24f2f80967416a944ed0fa3e9ddd0f/clipboard.png 8 Z a) e4 ?3 h! x: X/ p( o; d
如果不进行此操作而直接导出网表到brd中并生成mdd,会引起之后使用模块时位号对不上的问题。 & B" s7 E' S1 O& s3 @" i
7 F+ k3 [" S5 ]9 L5 a8 N9 o8 ^2、生成的mdd的名字有要求,一定是要dsn name_root sch name,否则在放置模块时会提示找不到模块。 4 i; \# U$ x' s2 }* z
比如,下图中的设计对应的模块名应该是sdram_module.mdd
4 K7 u" E& @4 ^$ j4 r8 T0 V! _file:///E:/Bak/YNote/kepo013@qq.com/fb35f124a4834a33838b8c1fa055fbf7/clipboard.png
7 B$ b/ H( R/ I1 k+ y) s0 b. ?8 c# _) P5 N; `
3、存放模块的路径需包含在allegro的modulepath中,而模块的DSN文件和BRD文件位置没有要求(dsn文件的路径会在使用模块时放置block中指定)
" ?1 c& ?+ @& q! S; c( N# s
8 c% N6 x s( j S- D4、BLOCK(模块设计里)中不要使用全局的NET,最好通过PORT引出,在BLOCK外和全局NET相连。
. S0 [$ ^: d" Q/ ^$ \file:///E:/Bak/YNote/kepo013@qq.com/640928a93ab74a63a34741ba2c99b504/clipboard.png 9 h: J! x# Y, n, U9 {4 n. u3 Y
file:///E:/Bak/YNote/kepo013@qq.com/e10c7098560f40cb827a5407a768a3e9/clipboard.png 3 ^9 \: t0 R6 J0 x$ a% C: ^9 P
+ h @% g( p" @+ x! U5、在使用模块的设计中,生产网标前的Annotate操作选项如下图,不需要勾选Generate Reuse module,和上面创建模块中的设置是相配对的。
$ M% A# |& J9 O+ n3 v+ jfile:///E:/Bak/YNote/kepo013@qq.com/eb20a047ad1d45488d2365b572cf1625/clipboard.png
; C6 r" w; y7 W( ]0 \( {7 F7 i. O' K* N6、关于为什么Block能够和mdd能够对应上的原因。不管是在创建模块的设计中还是在使用模块的设计中,在PCB Editor Reuse中进行Annotate后都会给器件添加一个occurence(黄色部分),是器件的在本设计中有效的实例属性(应该类似于C++中的类和对象),在一个旧的设计中添加模块block后,其block内的位号极大概率会和旧设计有冲突,在PCB Editor Reuse中进行Annotate后,会产生一个occurence位号,而Instance位号还和创建模块的设计是一样的,说明block和mdd之间的识别是通过instance属性来link的,这样模块不管是用在新设计、旧设计或者是使用多少个,都能识别并正确放置模块,因为instance属性没有变。(网上也有说是根据器件的Value和NET来识别的,不是很认同)
. ]) {. L3 s/ Z! X/ J5 ~# i6 E0 \5 N- R$ J2 }( G! X8 {; w2 ]
, w5 r( ^7 F4 U: _( H- Y
2 N. G& t) j, l4 d0 m' rfile:///E:/Bak/YNote/kepo013@qq.com/88fd6babf0d044ef8bb960766a51b832/clipboard.png / z5 G$ K( N1 U) _
从使用模块的BLOCK中进入查看 9 k8 i* ?" }) F6 ]! C
/ J" n; f8 t+ Dfile:///E:/Bak/YNote/kepo013@qq.com/972862b0735b4d1eb4483e938680b8c1/clipboard.png
4 F, C! w5 D1 U: ?7 ^% R# J! Q+ G# @; `9 n1 e" m' R
3 |& T4 s: S3 O4 ^
S- U! H# |2 x3 ?放置OK示意图(和其他设计的连接使用坐标定位)。 ' t$ p* ?$ \# F
file:///E:/Bak/YNote/kepo013@qq.com/97b98b6d94034e96a9b878c43389db01/clipboard.png
; ^1 i. `& Y k% \6 X4 yfile:///E:/Bak/YNote/kepo013@qq.com/d28eaec3074b4dd5958c5613e6ed3deb/clipboard.png - L+ t+ F$ Q0 c3 j1 y, d& k' v" [4 Q
7 {! V' U* Z) [% p: O) q5 p
|