EDA365电子论坛网

标题: AD设计fpga的时候,在原理图里面改管脚名,有什么方便的方法吗? [打印本页]

作者: wxwxw    时间: 2015-2-25 07:10
标题: AD设计fpga的时候,在原理图里面改管脚名,有什么方便的方法吗?
AD设计的原理图,FPGA的管脚名要做一些改变,库里面的fpga symbol是通用的,不能改,只可以在原理图里面改。通过双击原件,改pin的话太痛苦了,上百个管脚,在edit pin的界面上不能一起copy和past,只能一个一个改。有没有什么快捷的方法一次改多个管脚?考虑用脚本,找到了个ad的读管脚名的脚本,修修改改可以用来读指定的某个原件的所有管脚,再在文本文件里面改,就可以大量的拷贝了,但是不知道怎么写回到ad里面,有高手指点一下?谢谢
- M% _4 W/ p& W, Q7 l4 E, }3 t, R{..............................................................................}
" p; ]4 i' p' O6 e4 r( W- r{ Summary Demo how to fetch pins of components.                                }* @' F' b) G5 _. c) u' V  ~
{                                                                              }
* T( @2 H1 k) E% b' W) a$ H: i- |{ Copyright (c) 2008 by Altium Limited                                         }" ]5 {9 j' y7 I- ~8 Z0 A
{..............................................................................}, Z4 y4 s7 ^4 v% y& S
1 L! B4 X' u3 }7 J& B2 B8 W
{..............................................................................}
/ k8 q! t, P! \8 pProcedure FetchPinsOfComponents_U1;3 l" o( P0 K7 W
Var
4 q/ [3 m8 c$ r) t    CurrentSch : ISch_Sheet;. b8 o5 [& Y( u$ m* t
    Iterator   : ISch_Iterator;; T. ^# ]6 V* |% L. z8 }% [. D
    PIterator  : ISch_Iterator;% `# {2 q5 A4 ~* N# s+ T
    AComponent : ISch_Component;
! n' E4 _! E+ m* x' u  B    AnIndex    : Integer;9 ~0 u7 R! V' X/ M+ n

7 ?4 N. X3 }' ^' R$ _    ReportList : TStringList;5 _' n! p& b7 J
    Pin        : ISch_Pin;( L! j3 C- _7 ~& {- v, C2 J% x
    Document   : IServerDocument;7 t: \5 L, J5 `( P8 ~
Begin) j$ @, D2 g4 A
    // Check if schematic server exists or not.% g1 X, `+ s- C5 m* v, q
    If SchServer = Nil Then Exit;6 s. g3 i$ N4 J; ~  b3 P( E

9 o+ D* {; V. _2 a" Y    // Obtain the current schematic document interface.* E1 M# x: ^$ z
    CurrentSch := SchServer.GetCurrentSchDocument;5 c$ W: `8 y5 N; J% [
    If CurrentSch = Nil Then Exit;
. T& q4 c6 v8 w% W9 s, q) N' k8 _
+ v% `. W+ }1 J* E+ Q' p' L0 }    // Look for components only6 x9 V$ S! q+ Y0 Z$ W
    Iterator := CurrentSch.SchIterator_Create;
/ c& ?4 t! {# H) Y    Iterator.AddFilter_ObjectSet(MkSet(eSchComponent));% v  j  E0 q1 g1 j9 m
6 W! l! F5 L# T5 E- _
    ReportList := TStringList.Create;
  v- s- l8 z9 p    Try. N/ j& q4 z% u
        AComponent := Iterator.FirstSchObject;( h+ ^& s3 s: s
        While AComponent <> Nil Do3 E6 p  W# D" v% H! ?; G
        Begin
; C) u+ j' l% {7 x" ~2 f# }  {/ H2 ?+ k            if AComponent.Designator.Text = 'U1' Then   // change to the designator number you want.....
4 ^; C. a9 s% z( h            Begin3 K, w: ~1 t7 H4 ?' r7 Y/ X5 h- `. T9 X3 m
            ReportList.Add(AComponent.Designator.Name + ' ' + AComponent.Designator.Text);
" d6 l! q, N: L0 N            ReportList.Add(' Pins');
  Z0 |2 Z. g3 [0 a7 s4 Z+ ]) C0 o+ I
            Try
7 A4 @1 [1 B. N6 F1 N4 N! I  n. C                PIterator := AComponent.SchIterator_Create;7 j% q' i' \# Q. _1 f5 ?3 I
                PIterator.AddFilter_ObjectSet(MkSet(ePin));1 Q* p* U" u5 P7 }8 }
; H) J3 d! x& K" V
                Pin := PIterator.FirstSchObject;
$ z! t3 z' W9 c" V( e: k+ V/ C                While Pin <> Nil Do
* W. Q2 d) _; l' u$ B* i                Begin6 ?6 F* F7 l: p. y4 R8 q
                    { ReportList.Add('  Name: ' + Pin.Name + ' Designator: ' + Pin.Designator); }, G& i" j7 v( g3 U, {8 b. c
                    ReportList.Add('  Name: ' + Pin.Name + ' Designator: ' + Pin.Designator);1 f3 Q8 w* Q2 a8 f
                    Pin := PIterator.NextSchObject;$ O# G# y3 ~! _, G/ }' }1 f  i* I3 Q- c
                End;2 N: z9 u: F& ~5 R/ k% u  C
            Finally1 W1 n3 d4 K$ a( y; i
                AComponent.SchIterator_Destroy(PIterator);
" o2 @3 a' T' ?3 f( D! S            End;
- B  O! p4 B% Q2 y: W( F; y' R  r' L# T+ A5 r- G
            ReportList.Add('');
# e( {, z4 {9 n) b) P  G, b
$ N2 t) z5 b& W' s2 o, d            End;
+ P) j8 Z$ W5 v5 ]$ z5 S9 {# Y0 Y$ x9 D- H" F/ C( @5 d  Y
            AComponent := Iterator.NextSchObject;
; q; v& H. z- _% L. O# ?& P        End;, m: Y- x- d9 D+ W4 }
    Finally( y2 @- c5 b& G/ B# s
        CurrentSch.SchIterator_Destroy(Iterator);* t: V/ g; f% F4 u& ^; |: Q. i3 Q
    End;
2 {/ V& X3 W# ?3 d  u+ a9 O1 w! N6 \% _& ^5 u# J) M; i, h2 _# n
    ReportList.SaveToFile('d:\PinReportU1.Txt');- y: w' }$ y6 \1 [# T/ g
    ReportList.Free;% K& _, ?. o9 G" w1 X

/ |: g+ b0 q9 D$ F7 P/ g; w    // Display the report for all components found and their associated pins.. _" J6 e+ s/ F8 \
    Document := Client.OpenDocument('Text','d:\PinReportU1.txt');0 y( L5 s' W/ V& ]8 G( _3 g/ e' Y
    If Document <> Nil Then6 Y5 ~" U1 V% j) Q2 j$ B
        Client.ShowDocument(Document);/ x  s' ?, {& l/ o
End;
$ d7 M1 O7 R8 y; j{..............................................................................}$ |/ L5 w, n- b7 P/ _
( j2 s( z8 R( K* j+ q! M- t
{..............................................................................}# P3 q5 C4 Q( R7 y
End.7 e  A& t! k5 m4 ]
5 J- m& _  u, A/ Q2 E( y4 E& J& }5 T- @

作者: jimmy    时间: 2015-2-25 09:20
我是用ORCAD来做这种多管脚的封装,ORCAD支持导入EXCEL表格。$ U* [# Y. P- H8 q: e

6 f, y' S2 M- {7 R5 X( J2 xAD做这种类似的封装,我一直没去尝试它。
作者: wanghanq    时间: 2015-2-25 14:02
altium 可以利用  datasheet 或 excel 来快速建立多管脚的器件库,具体的文档你可以查看altium相关的操作说明。5 W. M2 h$ t  q# a, k7 P4 f
类似的资料汇总  在  【给初学3-...】系列汇总帖中有过汇总,链接地址略,网上找不到时可到pcbbbs论坛找寻之前的资料汇总。
; }8 g! j$ v' Y  U9 T% a  n) k
- z0 N0 W& y& m+ m$ i/ A2 ^( z; Caltium不同的版本对某些字符的处理方式不同,仅提示: 比如某些版本 对  软回车 或硬回车 的处理(或者理解为兼容性)不同...
! {$ ]+ v2 W% Y3 k" {
作者: wxwxw    时间: 2015-2-26 01:14
说明一下,我语文是体育老师教的,没讲清楚啊,请谅解。: P' x9 Q+ u- W+ {
1. 已经建立了原件库了,用的是excel导入的方法,smart grid tool,搜一下这个关键词就可以找到。
. q* X1 ^0 C/ ]; `& v$ H2. 库里的原件各个管脚是通用名,直接就是从datasheet上来的。- O; ~; M' D0 v$ B: @  O8 I$ s
3. 做到具体不同的产品,fpga的管脚都有各自项目直接的管脚信号名。
/ x: y7 E+ d3 Z1 u4. 在原理图里面,直接改component的管脚名,这个改名只是在这个特定的altium project里面,就只是为了每个特定项目调试和测试方便,直接根据fpga内部的设计文件定义的各个信号命名直接用到原来图里面的管脚名上面。% o1 X1 x5 L# ?- {
5. 在原理图里面,直接双击一个器件,出porperties窗,左下角可以点edit pins,可以改管脚名,但是只能一个一个改,没办法选中一些管脚直接copy&paste。 一个fpga有几百个管脚,一个一个改要累死啊,所以想是不是用脚本直接自动改原理图里面的管脚名。不是要改库里面的管脚名,库里面的原件是不更改的。, n% c9 A: o0 g2 G9 m! E9 o
谢谢
作者: icm    时间: 2015-2-26 08:49
SCH List也支持Edit並將資料粘貼的功能1 O9 S( m: a/ w1 s0 F
1.雙擊器件,不勾選Lock Pins
. t) L; u2 h& i* y2 p3 W' R0 F7 E2.選中該器件其中一個pin來做Find Similar Object.! t: R5 i; r* s* Q" k) u& m
3.FSO條件將 Object Specific區段的Owner設置為Same.這樣可以選中該器件的全部Pin6 W' D5 H4 ]9 j  A6 W" w
4.開啟SCH List面板 上方左到右設置為Edit / Selected Objects / Current Document / Pin6 T& R! n. |3 i8 }0 K6 |# w4 P
5.你就可以針對下方用粘貼(EXCEL複製的資料)的方式將資料覆蓋過去
$ f8 G$ c7 p' t+ ]3 A3 ^( K; T建議粘貼前先做排序(Sort)確保粘貼的數據順序是一致的0 d' Q  D6 q" R! L2 e
6 h6 q$ e3 L9 G) ]

作者: wanghanq    时间: 2015-2-26 12:54
icm 发表于 2015-2-26 08:49( C& {. B- D$ m. n+ @/ C& k
SCH List也支持Edit並將資料粘貼的功能& v+ o& I' u" O
1.雙擊器件,不勾選Lock Pins) ?$ I8 T4 S2 a
2.選中該器件其中一個pin來做Find Si ...

& s* C8 k: C& T% N^_^ ^_^   春节快乐!# w5 X& E+ J+ O! s! e; r2 s
. J/ R. d9 M! ^: Q1 _: B
icm 的方法可以在 原理图 或 原理图库  界面 内进行,此时 altium 的器件名 不会因器件修改而自动改变,建议为了避免后期不必要的错误,通常可以将 需要进行管脚重分配的器件做更名处理(以区别和原始库文档中的初始库)。1 L! I$ i( y' A' T$ ^$ e' c7 D
6 P  z. |8 @7 B) H( \- C0 W9 o, S6 Z9 J
另外,FPGA的管脚调整 可参 其他的资料进行:关键字 如      “ FPGA-PCB管脚同步”     “管脚交换功能”
2 t1 N; U; g5 c' P- J) J - s. Z; R* m# u
建议楼主 在讨论类似话题时 给一个简单 的案例过来,这样 关注的网友可快速交互式的进行试操作和交流
4 m* j7 t% t5 Y8 S3 Y2 H
作者: wxwxw    时间: 2015-2-28 08:18
后来想想,其实可以改ad自己带的那个导入pin到lib的脚本文件。aD的脚本看着还是比较强大,就是对Delphiscript和vbscript不精通,也没找到什么好的教程。有人有好的推荐吗?谢谢
作者: wanghanq    时间: 2015-3-1 11:07
wxwxw 发表于 2015-2-28 08:18
; i. ]1 A0 E* d& G后来想想,其实可以改ad自己带的那个导入pin到lib的脚本文件。aD的脚本看着还是比较强大,就是对Delphiscri ...

0 c/ ~# A" b+ Y, M  Q4 H9 X% m脚本的学习和使用不妨 去 allegro  或 pads 论坛看看,里面有相关的脚本文档学习沟通(就看你能否搜索到之前沟通的内容了)! m. J' h. {/ ~! q; x$ @  \( u
altium脚本沟通见的比较少
1 g+ z0 U4 T! e) y2 w




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2