EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
附件是结合网上的资料总结的模块复用相关的笔记,以免以后忘记。希望也能对想了解相关的朋友有所帮助。
% b6 c; K3 R) U- I, q7 g9 H, n2 x1 l6 J. _) l( G
时间:2017年3月15日
5 X# A& M* C8 j! f9 Z思路:
, `3 \7 x @+ {- C+ A模块的建立:首先建立模块的原理图(为单独的一个设计),导出网表创建BRD文件,在BRD文件中创建MDD模块
8 C/ W; u y s( P1 m/ b模块的使用:在新设计(或者已有的设计)中放置层次框图BLOCK(将路径指定为模块的DSN文件),随后Annotate,生成网表并在Module instances中放置模块mdd 9 t! N) z7 Y/ z/ M* s: k
S t& R4 l7 G6 T1 ?, f7 o$ S
重要说明: , Y& \! j/ Y1 N
1、在模块建立过程中,在导出网表前需进行生产reuse module操作(必须要做),参考下图
8 M7 t2 N: x( e* s) Lfile:///E:/Bak/YNote/kepo013@qq.com/b2a9271c70cc47a59a61198250096d5e/clipboard.png
) `2 d# \* [8 J! A; v
( _! q. N3 ]2 M$ n$ B, T; I3 P
做完后器件会生成黄色的occurence属性,如下图 # h( [/ }8 x3 g2 N4 j2 ]
file:///E:/Bak/YNote/kepo013@qq.com/6d24f2f80967416a944ed0fa3e9ddd0f/clipboard.png
2 }4 x+ y; D: t如果不进行此操作而直接导出网表到brd中并生成mdd,会引起之后使用模块时位号对不上的问题。 , @ ~# m0 n7 b. r6 o* v
5 m) Y" z; d* v Z+ A: W( w" X
2、生成的mdd的名字有要求,一定是要dsn name_root sch name,否则在放置模块时会提示找不到模块。
' K6 j+ O9 B- s! H: x比如,下图中的设计对应的模块名应该是sdram_module.mdd
! b( ~& J7 O! @! [& Qfile:///E:/Bak/YNote/kepo013@qq.com/fb35f124a4834a33838b8c1fa055fbf7/clipboard.png
2 @1 s5 k m- D4 ^+ `; }1 b% t$ U
5 d' ?3 b$ x0 a1 _4 ^8 P$ j0 M3、存放模块的路径需包含在allegro的modulepath中,而模块的DSN文件和BRD文件位置没有要求(dsn文件的路径会在使用模块时放置block中指定) : J& H2 e- m8 |9 h* c
) T/ L6 j& d5 M$ [
4、BLOCK(模块设计里)中不要使用全局的NET,最好通过PORT引出,在BLOCK外和全局NET相连。
; r0 Y! t7 p+ S1 t( Cfile:///E:/Bak/YNote/kepo013@qq.com/640928a93ab74a63a34741ba2c99b504/clipboard.png
$ ~5 w/ p# ^1 G+ d pfile:///E:/Bak/YNote/kepo013@qq.com/e10c7098560f40cb827a5407a768a3e9/clipboard.png
; j6 Q; _/ P* T1 c2 \2 U; j6 g/ w
5、在使用模块的设计中,生产网标前的Annotate操作选项如下图,不需要勾选Generate Reuse module,和上面创建模块中的设置是相配对的。 5 k8 \' s7 q- L: i% s2 z
file:///E:/Bak/YNote/kepo013@qq.com/eb20a047ad1d45488d2365b572cf1625/clipboard.png # a8 D. M0 X0 \ a9 D" N1 E
6、关于为什么Block能够和mdd能够对应上的原因。不管是在创建模块的设计中还是在使用模块的设计中,在PCB Editor Reuse中进行Annotate后都会给器件添加一个occurence(黄色部分),是器件的在本设计中有效的实例属性(应该类似于C++中的类和对象),在一个旧的设计中添加模块block后,其block内的位号极大概率会和旧设计有冲突,在PCB Editor Reuse中进行Annotate后,会产生一个occurence位号,而Instance位号还和创建模块的设计是一样的,说明block和mdd之间的识别是通过instance属性来link的,这样模块不管是用在新设计、旧设计或者是使用多少个,都能识别并正确放置模块,因为instance属性没有变。(网上也有说是根据器件的Value和NET来识别的,不是很认同)
- g2 y' F1 ^' I5 [, C8 i* W
3 G; V) z- ?" `9 V0 x% ^9 A" e2 ]! T2 ^0 u
file:///E:/Bak/YNote/kepo013@qq.com/88fd6babf0d044ef8bb960766a51b832/clipboard.png
: l0 J" s j g( M! l/ e从使用模块的BLOCK中进入查看 ! }9 U% l& _& T i( f. m2 r
' ]# ~# n5 ^( |* V" P+ h
file:///E:/Bak/YNote/kepo013@qq.com/972862b0735b4d1eb4483e938680b8c1/clipboard.png ' C0 A: @, @! l3 Z
1 g( h p) e& ]
1 I) x; a q" r% i+ `1 ^+ p7 A
# R7 g. [4 w+ m" W% c放置OK示意图(和其他设计的连接使用坐标定位)。 + R( S& s1 o& g
file:///E:/Bak/YNote/kepo013@qq.com/97b98b6d94034e96a9b878c43389db01/clipboard.png
' h( z1 }% C- R/ M% wfile:///E:/Bak/YNote/kepo013@qq.com/d28eaec3074b4dd5958c5613e6ed3deb/clipboard.png , O5 s' F i/ U8 i8 P4 _
! U0 M6 g4 u5 d! T
|