找回密码
 注册
关于网站域名变更的通知
查看: 13223|回复: 48
打印 上一主题 下一主题

【原创】介绍AD另外一种奇葩的多通道复用的方法;

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-7-9 23:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在设计多组相同模块的板子的时候,我们经常会用到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进行匹配,然后执行即可。
*********************************************************************************
好那么我现在开始一步一步介绍这种方法:

) @1 H& Z+ y2 R6 \
在原理图编辑界面,打开SCH list:

; |6 {" ?5 O. L9 J2 Q( [
让其显示器件信息,显示设置如图:
4 l$ H8 _, m  K! t* K- h
右键选项栏,调出设置窗口:

0 m  z! c% c0 t/ u
我们来设置一下,让SCH list只显示我们需要的元器件详情,并且适当排序下:

5 z- C. V& E* V4 }1 g7 v% s
好了,现在我们就把SCH list调出来了,并且依照我们的需要列出了几项元器件信息:
; x* z7 x8 u7 E! |+ x, x5 K
接下来我们切换到PCB界面,用类似的方法,调出并设置PCB list窗口:
1 B) u- _. Y9 U* R, L# V
在PCB编辑界面,打开PCB list:
, ]* m" @# K8 j7 D  s& f
让其显示器件信息,显示设置如图:
$ Y0 j2 e+ E" t6 V4 J3 Q2 L
右键选项栏,调出设置窗口:

3 g5 P0 R% ?. E+ z7 ]6 [. {; m
我们来设置一下,让PCB list只显示我们需要的元器件详情,并且适当排序下:

: q! |$ ~6 |! V9 }7 e) g7 a
好了,现在我们就把PCB list调出来了,并且依照我们的需要列出了几项元器件信息:
4 |4 A; Z7 [/ o% M* H/ V
好了,到了这一步,我们需要做的很简单,就是在SCH list和PCB list都按照位号把器件重新排序:
3 |) Z  [# M, v6 K' a1 Y! _
怎么排序?例如在PCB list中,我点击这个Name这选项,这个时候会出现箭头所指的小三角,表示现在PCB list是按照Name的顺序升序排列,SCH list排序方式也是类似;
' J% v7 Q  ^0 D- k1 I; F; t- Z) |% J
然后把SCH list中器件的位置信息(也就是X与Y列),全选之后复制下来,并且粘贴到PCB list中X与Y列中(注意,PCB 编辑界面的单位应该选择mil),这个操作很容易理解,就是然后PCB器件的摆放与原理图器件的摆放相一致,虽然看起来好像是堆在一起,这没关系;

# q: y2 [6 z7 h) P9 l# u; J
(因为别人在绘制原理图的时候,一般是先画好一个模块,然后复制出n个出来,这意味着其实原理图各个模块器件的摆放位置是一样的,而且原理图中器件是没有重叠的,也就是说器件的位置信息是唯一的,所以我们就能用利用器件位置唯一这个信息,给每个器件分配一个唯一的Channel Offset,我就是利用这种特点想出了这个方法,经过刚才的复制粘贴操作,PCB中每个模块的器件摆放情况应该是一样的了)

& o1 r5 g  F/ Q8 B' O) m

; d# q) _+ l- I# ^; T& r
接下来我们需要重新设置一下PCB list窗口,让其只是显示选中的器件而不是PCB所有器件,方法很简单,可以看到,列表下面会提示你选中了多少个器件,我们可以每个模块都框选一遍,看看是不是各个模块都有同数量的器件;

! V7 K$ N0 p# e5 k2 D3 H! u
接下来就是为各个模块,起到相同作用的器件,分配相同的Channel Offset,之前已经说过,Channel Offset是软件完成复用的关键,问题来了,我们按照什么规则来分配呢,就是按照器件的位置信息来分配。
接下来我们要对所有的模块都做一遍这样的操作了:

! \" K4 y' X7 A; S# T
1.把原点移动到当前模块的一个特定位置,比如这次我们选模块中这个大电感的pin脚:
7 q. M  i! @+ o  |- o
2.创建一份EXCEL;
: A% @7 O3 \" B2 ?! J) [
3.确认已经选中模块中的所有器件:
4.在PCB list中按照位号排序,然后将前四列都复制到EXCEL中:

8 Q  J6 R$ }+ ~8 ^
5. 在EXCEL的任意空列中,将目前的排序编一个号,如箭头显示,因为等下我们要打乱这个表的顺序,处理之后再还原排序:
- a; }- {1 D" V
6.我们按照先B列,后C列的方式进行排序(其实先C后B都可以的),然后在D列中,重新填写Channel Offset数值,比如有37个器件,那我们就从1填写到37:

: s/ Q. d2 e8 `2 D  A. z1 G) G
7.完成之后,我们重新还原排序,并且复制Channel Offset数值所在的列,粘贴到PCB list中的Channel Offset列中,请注意,粘贴前需要确认PCB list是不是依然按照位号排序:
0 ~$ z1 i6 U* ?7 P8 L4 k
好,接下来我们安装这7步,把其他模块这么操作:
2 ^, S" q. |* s
完成之后,我们可以检验一下,比如我们选中每个模块的相同的器件,
3 U# `' o4 n7 c9 I7 U
确认其ChannelOffset是不是一致的:

! U3 r0 `! [1 ^7 G; t; c/ u* |3 ]
完成之后就接近成功了,
) e0 `; k, R4 p
首先给每个模块添加一个room:
- C4 i8 h7 P. S* A, J. m+ \6 ^, g
然后双击每个room,把Name改为跟InComponentClass一样的名字:
0 y  j9 e9 U: k- M
完成之后,我们在Classer Explorer中,新建一个DesignChannel Class,并将这几个room设置为同属于相同的Design Channel Class:

/ e3 ^; Q  G5 v4 h
接下来我们选择任意模块,布局布线好;
& N  G* Z) o( J& M( {$ s6 b3 A
好戏上演:我们开始执行复用的命令,冰冻三尺非一日之寒啊,启用命令后点击摆好模块的room,然后再点击另外任意一个room:

5 }6 E2 |; X2 A9 m' Y& e3 M3 [9 `

6 C9 I+ l9 [. ]8 z8 A1 O
弹出了一个设置窗口,如下设置,看到左边下面的选项没有,因为我们在原理图没有把模块电路做成一个模块,所以我们只能选择按照Channel Offset进行匹配:

6 h+ ]+ p8 ~: O4 R
点击确定,我们看看效果:

. `& x$ s0 L+ U# Z' d: `
搞定了啊啊。。。
****************************************************************

: F) U' p3 C0 ]8 q0 K# G
我们再把方法回顾一下:
首先是将PCB里面的器件,按照原理图的器件位置进行摆放;
其次利用每个模块中器件相对位置是一样这个规律,分配Channel Offset;
第三,进行必要的复用前设置,然后执行复用;
第四,顶帖啊!哈
****************************************************************
5 j  |+ s8 n5 T) x6 ]) z; c0 a
其实就这么简单,只要你理解了每一步操作的意图之后,你会把这种繁琐的操作牢牢记住,我已经快三年没用到了,想起为大家写这份东西的时候,还是能够准确的进行操作并且一次成功;
当遇见每个模块里面有几百上千个器件,你们就会知道这方法能在Channel Offset分配这一关键步骤剩下非常多的时间,而且又准确;
4 c5 W. _5 v/ X5 X% d, S. `
谨以此帖,献给广大EDA365 的小伙伴特别是仍然奋斗在PCB设计前线的人们。
  h) r0 j5 ~0 K' @9 x/ L" m1 Q

  j$ D6 n, y5 l# v, X

: X$ P2 L/ H1 ^  q
; Z2 h8 {1 T* z2 o2 K

) Y9 T: W5 |* A/ ?  C2 \
* v  F& V, ^7 D

该用户从未签到

推荐
发表于 2024-6-11 09:28 | 只看该作者
ad可真是极品垃圾
8 ^' N: Z! \! @) A& q/ e. v. k

该用户从未签到

推荐
 楼主| 发表于 2015-8-31 19:33 | 只看该作者
xyz133355555 发表于 2015-8-30 10:47- o( v) f) M) s  J0 C0 k3 Z9 c& s
再多看了几遍你的截图,发现答案就在里面,是我开始没留意到那点 现在已搞定。另外好像只要按照标号顺序/位 ...
7 {# E3 P9 P5 d  n& w
步骤5是刚从AD复制出来的数据,AD6是在EXCEL里面,按照先X坐标,后Y坐标的顺序进行排列后的截图;
5 Y  D& a3 ]4 W: r( j8 h# q' {7 _按照坐标完成排序后,就从上到下给每个器件编一个数字,比如从1编到37;
; T/ f5 p1 V& b
- W' G( P1 r" K: y4 g然后就按照同样的办法,处理第二个模块了,关键是,在处理新模块之前,要把原点设置在该模块的同一个位置,我的文章里面有强调的。
' w, D$ c# f6 d

该用户从未签到

推荐
发表于 2015-11-9 15:31 | 只看该作者
楼主,我遇到问题了“然后把SCH list中器件的位置信息(也就是X与Y列),全选之后复制下来,并且粘贴到PCB list中X与Y列中(注意,PCB 编辑界面的单位应该选择mil),这个操作很容易理解,就是然后PCB器件的摆放与原理图器件的摆放相一致,虽然看起来好像是堆在一起,这没关系;”这一步中我从sch list复制了到PCB list这里粘贴不上去(就是粘贴功能是灰色不可用的),这怎么办?

点评

你试试用Ctrl c然后Ctrl V,记得在Pcb list里面要切换成edit状态,否则无法进行参数更改的。  详情 回复 发表于 2015-11-9 20:20

该用户从未签到

5#
 楼主| 发表于 2015-7-9 23:42 | 只看该作者
累了,今晚睡沙发,晚安各位。

该用户从未签到

6#
发表于 2015-7-10 00:00 | 只看该作者
楼主辛苦了,这招很实用

该用户从未签到

7#
发表于 2015-7-10 08:33 | 只看该作者
很详细,顶一个!

该用户从未签到

8#
发表于 2015-7-10 08:34 | 只看该作者
不过说句实话,这么复杂的操作在Allegro里面一个命令就搞定了。

点评

确实如此,allegro会分析网络与器件信息,自动匹配,无法匹配,才进行手动匹配。  详情 回复 发表于 2015-7-10 08:59

该用户从未签到

9#
 楼主| 发表于 2015-7-10 08:59 来自手机 | 只看该作者
Hifun 发表于 2015-7-10 08:34
8 T: h, y: F0 N4 G  B5 P# x- a不过说句实话,这么复杂的操作在Allegro里面一个命令就搞定了。

/ l: D9 a1 U0 g8 T- ]9 }确实如此,allegro会分析网络与器件信息,自动匹配,无法匹配,才进行手动匹配。

点评

是啊,搞得如此复杂,实在是不太智能  详情 回复 发表于 2018-7-1 17:35
  • TA的每日心情
    奋斗
    2022-11-26 15:28
  • 签到天数: 1 天

    [LV.1]初来乍到

    10#
    发表于 2015-7-10 09:41 | 只看该作者
    谢谢分享,用心了!

    该用户从未签到

    11#
    发表于 2015-7-10 17:34 来自手机 | 只看该作者
    嗯,很实用的

    该用户从未签到

    12#
    发表于 2015-7-13 13:43 | 只看该作者
    ,顶,谢谢分享

    该用户从未签到

    14#
    发表于 2015-7-13 17:20 | 只看该作者
    也不知道AD咋想的,这么实用的功能竟然弄得这么复杂。mentor跟allegro都是一步而已。
  • TA的每日心情
    开心
    2024-8-6 15:00
  • 签到天数: 765 天

    [LV.10]以坛为家III

    15#
    发表于 2015-7-14 08:36 | 只看该作者
    楼主讲的很详细啊,赞一下,这个真不错!
    " t' h4 c5 E2 U5 a! g; F% D之前无法用room复制PCB布局,主要是物料编号不符合公司规定,下次可以试试LZ的方法了
    ' K' A; _" r+ H. c) ^& y- m7 I% `

    点评

    谢谢,欢迎使用,有什么可以优化的地方记得也告知一下。 用这方法要仔细准确,特别要注意在excel与Pcb list中相互复制粘贴时候的排序一致还有数量的一致。  详情 回复 发表于 2015-7-14 14:00

    该用户从未签到

    16#
     楼主| 发表于 2015-7-14 14:00 来自手机 | 只看该作者
    qiantan 发表于 2015-7-14 08:36
    / k) Q* Q" T9 G/ V楼主讲的很详细啊,赞一下,这个真不错!0 A1 k- T1 U+ }) E* x
    之前无法用room复制PCB布局,主要是物料编号不符合公司规定,下 ...
    ; I( W& u  t7 j9 _) |
    谢谢,欢迎使用,有什么可以优化的地方记得也告知一下。
    ! t: I) E6 {/ @4 b2 v2 ]2 I, K用这方法要仔细准确,特别要注意在excel与Pcb list中相互复制粘贴时候的排序一致还有数量的一致。

    该用户从未签到

    17#
    发表于 2015-7-14 17:00 | 只看该作者
    哪天试用一下
    . x' A; h5 m8 k3 U
  • TA的每日心情
    开心
    2019-11-18 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    18#
    发表于 2015-7-15 14:26 | 只看该作者
    不错的方法
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-30 00:00 , Processed in 0.187500 second(s), 29 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表