EDA365电子工程师网

标题: 【原创】介绍AD另外一种奇葩的多通道复用的方法; [打印本页]

作者: himonika    时间: 2015-7-9 23:41
标题: 【原创】介绍AD另外一种奇葩的多通道复用的方法;
在设计多组相同模块的板子的时候,我们经常会用到AD的多通道复用功能,
那么很多人都会在设计的时候,就把这个模块的原理图做成一个整体,这个时候进行简单设置之后,就可以运用复用功能实现我们要的效果;
不过在这里介绍另外一种方法,这种方法比较繁琐,奇葩,我觉得应该没人会想到吧(不过我真希望有人站出来跟我说我也是用这种方法);
既然繁琐,那为什么,我还会想出这招呢,这要说回一个话题,PCB工程师这个职位并不是在所有的公司,都有地位的,硬件工程师也许会认为你只是摆摆器件,连连线,顶多佩服你有耐心而已,为什么说这么多坏话呢,其实也不是坏话,确实有的,正因为如此,所以有些时候你即使知道怎么在原理图做好模块,方便PCB的复用,但是人家硬件工程师也没这个闲工夫去学你的方法画原理图;
所以很多时候,你要进行复用,你还得乖乖先将每一个模块当中,起着相同作用
的器件分配给相同的ID(也就是Channel Offset),然后在复用设置的时候选择依据Channel Offset进行匹配,才能进行复用,这个时候最最蛋疼的事情出现了,就是如何准确为这些器件分配Channel Offset;
说到这里,我真的想吐槽AD为啥不学学Allegro,能自动识别每个模块中拥有相同作用的器件,手工分配ChannelOffset有时候真的不现实,一个模块里面有10个器件,还可以接受,如果几百个上千个器件呢?
于是通过一些试验,我自己摸索出这种方法,来实现半自动分配ChannelOffset的方法,方法比较繁琐,不过至少对于我以前的那份工作,还是能很明显提示效率的,因为我接触的模块,动不动都就是几百个器件在里面的。
*********************************************************************************
首先我简单介绍一下AD的复用的操作:
1.  按照模块,把器件都一堆堆放好;
2.  给每一个模块当中,给器件分配ID(Channel Offset),相同模块中的器件ID是唯一的,但是不同模块中都含有相同ID的器件,也就是说,ID相同,表明在模块中起着相同作用;
3.  为每个模块套上一个room,并做一个class,这样AD才能知道哪几个模块是相同的
4.  摆好其中一个模块,走线走好;
5. 启用复用命令,并设置好按照ID进行匹配,然后执行即可。
*********************************************************************************
好那么我现在开始一步一步介绍这种方法:
/ U; R2 m% P) I% U
在原理图编辑界面,打开SCH list:

5 _- D; X: n( f
让其显示器件信息,显示设置如图:
7 ^$ u& H9 Z) r+ a9 A. H9 e
右键选项栏,调出设置窗口:
( M; S* @$ e* p. D9 e+ p
我们来设置一下,让SCH list只显示我们需要的元器件详情,并且适当排序下:
/ L- p5 Z: V8 J( i9 C) s
好了,现在我们就把SCH list调出来了,并且依照我们的需要列出了几项元器件信息:
0 i) j7 l! G+ D' |9 W: t
接下来我们切换到PCB界面,用类似的方法,调出并设置PCB list窗口:
" @$ m5 Y1 L( W6 E6 h1 ]
在PCB编辑界面,打开PCB list:
! o4 V4 _3 a* j$ V
让其显示器件信息,显示设置如图:
) H. W3 ]  l# i) U3 `% o, ^* T
右键选项栏,调出设置窗口:
- \5 }/ S1 t  l1 w
我们来设置一下,让PCB list只显示我们需要的元器件详情,并且适当排序下:

2 Z; Z/ S, A, i' b+ }
好了,现在我们就把PCB list调出来了,并且依照我们的需要列出了几项元器件信息:
  p' S# \4 _+ U6 x' @
好了,到了这一步,我们需要做的很简单,就是在SCH list和PCB list都按照位号把器件重新排序:

2 n$ C  Z4 h8 d3 N8 ?: S7 W0 Z
怎么排序?例如在PCB list中,我点击这个Name这选项,这个时候会出现箭头所指的小三角,表示现在PCB list是按照Name的顺序升序排列,SCH list排序方式也是类似;

" w# r! V  z3 W% x9 t4 j1 X4 U
然后把SCH list中器件的位置信息(也就是X与Y列),全选之后复制下来,并且粘贴到PCB list中X与Y列中(注意,PCB 编辑界面的单位应该选择mil),这个操作很容易理解,就是然后PCB器件的摆放与原理图器件的摆放相一致,虽然看起来好像是堆在一起,这没关系;

, R% D+ D4 }. X& q+ f& o6 L" _# D
(因为别人在绘制原理图的时候,一般是先画好一个模块,然后复制出n个出来,这意味着其实原理图各个模块器件的摆放位置是一样的,而且原理图中器件是没有重叠的,也就是说器件的位置信息是唯一的,所以我们就能用利用器件位置唯一这个信息,给每个器件分配一个唯一的Channel Offset,我就是利用这种特点想出了这个方法,经过刚才的复制粘贴操作,PCB中每个模块的器件摆放情况应该是一样的了)
% ^% h) C" ?* Q6 F2 L9 d7 C
; M# p7 H* j' I
接下来我们需要重新设置一下PCB list窗口,让其只是显示选中的器件而不是PCB所有器件,方法很简单,可以看到,列表下面会提示你选中了多少个器件,我们可以每个模块都框选一遍,看看是不是各个模块都有同数量的器件;
$ N' x/ I1 S) K& ^; P! i$ ]
接下来就是为各个模块,起到相同作用的器件,分配相同的Channel Offset,之前已经说过,Channel Offset是软件完成复用的关键,问题来了,我们按照什么规则来分配呢,就是按照器件的位置信息来分配。
接下来我们要对所有的模块都做一遍这样的操作了:
, F: c! X* L. I3 q: i( i
1.把原点移动到当前模块的一个特定位置,比如这次我们选模块中这个大电感的pin脚:

% L* B6 g( G1 l" m7 A' i1 C
2.创建一份EXCEL;
$ H# n$ f. S+ A4 h) J
3.确认已经选中模块中的所有器件:
4.在PCB list中按照位号排序,然后将前四列都复制到EXCEL中:

; a( b6 g. b' H% y8 ]! z! ~
5. 在EXCEL的任意空列中,将目前的排序编一个号,如箭头显示,因为等下我们要打乱这个表的顺序,处理之后再还原排序:
. J# p  M) V7 t: d/ i
6.我们按照先B列,后C列的方式进行排序(其实先C后B都可以的),然后在D列中,重新填写Channel Offset数值,比如有37个器件,那我们就从1填写到37:
' H+ c! c- T. J. {9 _
7.完成之后,我们重新还原排序,并且复制Channel Offset数值所在的列,粘贴到PCB list中的Channel Offset列中,请注意,粘贴前需要确认PCB list是不是依然按照位号排序:

$ B2 {8 M) A: {9 k% l* n6 ~4 d1 x; l
好,接下来我们安装这7步,把其他模块这么操作:
" V' O2 Q' V- h5 U
完成之后,我们可以检验一下,比如我们选中每个模块的相同的器件,

& G2 M) o4 f$ }; c
确认其ChannelOffset是不是一致的:

  w+ l! S- @! d; I& X% k
完成之后就接近成功了,

, B4 ]4 ?3 M( A. l
首先给每个模块添加一个room:

! q+ h$ g: n4 ^6 z+ |  t+ l$ Y
然后双击每个room,把Name改为跟InComponentClass一样的名字:

0 J0 @0 T) v( c* x8 L  u
完成之后,我们在Classer Explorer中,新建一个DesignChannel Class,并将这几个room设置为同属于相同的Design Channel Class:

9 h' g% q; F: ^) D% u, d# P  N
接下来我们选择任意模块,布局布线好;

0 l* [* L! V; j5 T
好戏上演:我们开始执行复用的命令,冰冻三尺非一日之寒啊,启用命令后点击摆好模块的room,然后再点击另外任意一个room:

* J  z% p* y2 }2 W
2 V7 b. i7 H7 a" P# T4 D
弹出了一个设置窗口,如下设置,看到左边下面的选项没有,因为我们在原理图没有把模块电路做成一个模块,所以我们只能选择按照Channel Offset进行匹配:

' W) l) L" {& p9 p; a
点击确定,我们看看效果:

5 P" F" p# g6 I4 s# h3 V
搞定了啊啊。。。
****************************************************************

- z( \9 }9 t$ ~" F, G# q- N- L; _
我们再把方法回顾一下:
首先是将PCB里面的器件,按照原理图的器件位置进行摆放;
其次利用每个模块中器件相对位置是一样这个规律,分配Channel Offset;
第三,进行必要的复用前设置,然后执行复用;
第四,顶帖啊!哈
****************************************************************

/ G5 ~% D3 w2 M" t. i0 ^6 R5 }
其实就这么简单,只要你理解了每一步操作的意图之后,你会把这种繁琐的操作牢牢记住,我已经快三年没用到了,想起为大家写这份东西的时候,还是能够准确的进行操作并且一次成功;
当遇见每个模块里面有几百上千个器件,你们就会知道这方法能在Channel Offset分配这一关键步骤剩下非常多的时间,而且又准确;
0 K- k8 m2 o7 h. j+ b$ }! ?' S5 i
谨以此帖,献给广大EDA365 的小伙伴特别是仍然奋斗在PCB设计前线的人们。

1 b4 X8 ^& o' ^. h0 Y
+ {. R+ y6 W8 J" f/ B
$ h2 G+ C4 U+ T9 s, [: T( Q
6 O& `9 V  t+ {3 Z4 h! d9 M" M
" q+ o( x2 n' |1 i, `" [6 ~0 P

) Z7 A9 D* f1 X: ~' [. M! w( D
作者: himonika    时间: 2015-7-9 23:42
累了,今晚睡沙发,晚安各位。
作者: sunnan2008    时间: 2015-7-10 00:00
楼主辛苦了,这招很实用
作者: Hifun    时间: 2015-7-10 08:33
很详细,顶一个!
作者: Hifun    时间: 2015-7-10 08:34
不过说句实话,这么复杂的操作在Allegro里面一个命令就搞定了。
作者: himonika    时间: 2015-7-10 08:59
Hifun 发表于 2015-7-10 08:34
1 P1 T9 H  x5 ]+ d0 X8 }6 p$ H不过说句实话,这么复杂的操作在Allegro里面一个命令就搞定了。
$ J. r4 G( X% B9 A  E1 v! X& w2 ]
确实如此,allegro会分析网络与器件信息,自动匹配,无法匹配,才进行手动匹配。
作者: Randy1022    时间: 2015-7-10 09:41
谢谢分享,用心了!
作者: SENA    时间: 2015-7-10 17:34
嗯,很实用的
作者: 加拿大    时间: 2015-7-13 13:43
,顶,谢谢分享
作者: aesther    时间: 2015-7-13 15:05
这个不错
作者: 张湘岳    时间: 2015-7-13 17:20
也不知道AD咋想的,这么实用的功能竟然弄得这么复杂。mentor跟allegro都是一步而已。
作者: qiantan    时间: 2015-7-14 08:36
楼主讲的很详细啊,赞一下,这个真不错!6 y3 k. @7 Y+ A& D
之前无法用room复制PCB布局,主要是物料编号不符合公司规定,下次可以试试LZ的方法了2 N' @# _! H1 v* ^

作者: himonika    时间: 2015-7-14 14:00
qiantan 发表于 2015-7-14 08:36
7 [9 u  U; b9 f7 |# N& K* \楼主讲的很详细啊,赞一下,这个真不错!, K( O9 {3 z( W
之前无法用room复制PCB布局,主要是物料编号不符合公司规定,下 ...
( W" ?3 R9 I! @3 ^3 z
谢谢,欢迎使用,有什么可以优化的地方记得也告知一下。
- A0 r& C( {% N4 ^' ?! z( p用这方法要仔细准确,特别要注意在excel与Pcb list中相互复制粘贴时候的排序一致还有数量的一致。
作者: viviwhinny    时间: 2015-7-14 17:00
哪天试用一下; r" ]- w! z- x; B: R5 d5 Q

作者: yaolee    时间: 2015-7-15 14:26
不错的方法
作者: liuyang_0509    时间: 2015-8-3 22:56
明天就试试
作者: ernest.yy    时间: 2015-8-26 17:03
楼主用的是ad多少?
作者: jch120610661    时间: 2015-8-26 17:11
:hug:终于解决了我的问题
作者: xyz133355555    时间: 2015-8-30 09:15
你好,步骤六不是很明白,试了几次不知如何从步骤五到六,能否有更多截图或者说明?谢谢!
作者: xyz133355555    时间: 2015-8-30 10:47
再多看了几遍你的截图,发现答案就在里面,是我开始没留意到那点 现在已搞定。另外好像只要按照标号顺序/位置排列好一次CHANNEL OFFSET,其他相同模块的CHANNEL OFFSET应该是一样的,排列好元件编号,复制第一次重新设置排列好的CHANNEL OFFSET就好了?谢谢- \: I5 y8 t' s2 |0 l: ]

作者: himonika    时间: 2015-8-31 19:28
ernest.yy 发表于 2015-8-26 17:037 j6 d" G- q6 p# j
楼主用的是ad多少?

, M. d; M8 ^/ W8 y3 S8 WAD winter09,很老了,相对稳定。
作者: himonika    时间: 2015-8-31 19:33
xyz133355555 发表于 2015-8-30 10:47( W: {" M/ r: d1 g, D, A5 t
再多看了几遍你的截图,发现答案就在里面,是我开始没留意到那点 现在已搞定。另外好像只要按照标号顺序/位 ...
3 C* [1 a0 V) d8 x5 N1 W, E2 W( X: r
步骤5是刚从AD复制出来的数据,AD6是在EXCEL里面,按照先X坐标,后Y坐标的顺序进行排列后的截图;
+ U) p+ M: n+ U! O6 G& a. N按照坐标完成排序后,就从上到下给每个器件编一个数字,比如从1编到37;! Z9 {7 x. U- g5 F

/ B1 K! n/ M* G% {3 x然后就按照同样的办法,处理第二个模块了,关键是,在处理新模块之前,要把原点设置在该模块的同一个位置,我的文章里面有强调的。
0 g! V) Q1 H3 c8 G) j
作者: himonika    时间: 2015-8-31 19:33
jch120610661 发表于 2015-8-26 17:118 N0 d# z* K( a. M+ _& @' Y
终于解决了我的问题

1 x2 W( S# o6 V) m/ A: R! N( j很好,看来不只是我觉得实用。
作者: ernest.yy    时间: 2015-9-1 16:43
ernest.yy 发表于 2015-8-26 17:03: T2 v& x  A/ q! {* A  v
楼主用的是ad多少?
9 m, a0 w1 j% n( ?2 \
我好想说,好麻烦。我用你的方法没有成功,估计我哪里操作没到位
# l8 e( z# x1 y: h2 u! N
作者: 2723498933    时间: 2015-11-4 21:19
写的真好!
作者: dwylin    时间: 2015-11-9 15:30
楼主,我遇到问题了“然后把SCH list中器件的位置信息(也就是X与Y列),全选之后复制下来,并且粘贴到PCB list中X与Y列中(注意,PCB 编辑界面的单位应该选择mil),这个操作很容易理解,就是然后PCB器件的摆放与原理图器件的摆放相一致,虽然看起来好像是堆在一起,这没关系;”这一步中我从sch list复制了到PCB list这里粘贴不上去(就是粘贴功能是灰色不可用的),这怎么办?
作者: dwylin    时间: 2015-11-9 15:31
楼主,我遇到问题了“然后把SCH list中器件的位置信息(也就是X与Y列),全选之后复制下来,并且粘贴到PCB list中X与Y列中(注意,PCB 编辑界面的单位应该选择mil),这个操作很容易理解,就是然后PCB器件的摆放与原理图器件的摆放相一致,虽然看起来好像是堆在一起,这没关系;”这一步中我从sch list复制了到PCB list这里粘贴不上去(就是粘贴功能是灰色不可用的),这怎么办?
作者: himonika    时间: 2015-11-9 20:20
dwylin 发表于 2015-11-9 15:31
2 j* |- G  l) D楼主,我遇到问题了“然后把SCH list中器件的位置信息(也就是X与Y列),全选之后复制下来,并且粘贴到PCB  ...

: v) H& I) O6 `( }; a你试试用Ctrl c然后Ctrl V,记得在Pcb list里面要切换成edit状态,否则无法进行参数更改的。' {( b# @  `, Z/ \9 s- j- [

作者: xyz133355555    时间: 2016-4-1 15:05
一段时间没用AD了,又重新试了下 现在操作熟练些 好像有些步骤可以稍微精简下?3 _+ O* X8 x. P4 G) t

QQ图片20160401150934.png (15.02 KB, 下载次数: 0)

QQ图片20160401150934.png

作者: bidinghong    时间: 2018-1-17 20:52

$ n6 e* }! P: I2 m5 N. _( u谢谢分享,用心了
作者: Ailacee    时间: 2018-5-16 23:21
今天用到了,来找资料,谢谢楼主耐心解答,辛苦了
作者: 619105617    时间: 2018-6-21 23:17
本帖最后由 619105617 于 2018-6-22 07:22 编辑 5 a: y" V  H2 T% ?0 k; A4 f

5 ^" l$ ]: T0 R/ G$ A. X& N感谢楼主的点拔
9 L/ \# ?0 Y; M2 W" ]0 z' W
( G9 Q7 ~  d3 ?4 Q" S
, g. B! \( y( r$ o5 z- \补充内容 (2018-7-3 22:38):
/ @) B, k" ?0 L* a8 q. o1 y" j经过测试,在excel中操作的那几个步骤可以省略,设置了参考原点后,只对X座标排序后就直接复制每个模块的offset为一致即可,没必要再去排序再回填,因为此时X座标已经是唯一的了,可以直接操作。
作者: huanghuaidong    时间: 2018-7-1 17:35
himonika 发表于 2015-7-10 08:59: v, T. F! Z4 g6 I: A" u
确实如此,allegro会分析网络与器件信息,自动匹配,无法匹配,才进行手动匹配。

& {) U; b+ w( r% \8 a- ]是啊,搞得如此复杂,实在是不太智能
! {6 W" m( F$ t/ I+ B- x




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2