<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > PROTEL到ALLEGRO的轉(zhuǎn)換技術

          PROTEL到ALLEGRO的轉(zhuǎn)換技術

          作者: 時間:2011-12-04 來源:網(wǎng)絡 收藏

          當今IT產(chǎn)業(yè)的發(fā)展日新月異,對硬件設備的要求也越來越高,硬件設計師們面臨如何設計高速高密度PCB的難題。常言道,工欲善其事,必先利其器,這也是越來越多的設計師放棄低端的PCB設計工具,進而選擇Cadence等公司提供的高性能PCB EDA軟件的原因。

          本文引用地址:http://www.ex-cimer.com/article/190947.htm

            但是這種變革必然會帶來這樣或那樣的問題。由于接觸和使用較早等原因,國內(nèi)的用戶為數(shù)眾多,他們在選擇Cadence高速PCB解決方案的同時,都面臨著如何將手頭的Protel設計移植到Cadence PCB設計軟件中的問題。

            在這個過程當中碰到的問題大致可分為兩種:一是設計不很復雜,設計師只想借助Cadence CCT的強大自動布線功能完成布線工作;二是設計復雜,設計師需要借助信噪分析工具來對設計進行信噪仿真,設置線網(wǎng)的布線拓撲結構等工作。

            對于第一種情況,要做的轉(zhuǎn)化工作比較簡單,可以使用Protel或Cadence提供的Protel到CCT的轉(zhuǎn)換工具來完成這一工作。對于第二種情況,要做的工作相對復雜一些,下面將這種轉(zhuǎn)化的方法作一簡單的介紹。

            Cadence信噪分析工具的分析對象是Cadence 的brd文件,而Allegro可以讀入合乎其要求的第三方網(wǎng)表,Protel輸出的Telexis格式的網(wǎng)表滿足Allegro對第三方網(wǎng)表的要求,這樣就可以將Protel文件注入Allegro。

            這里有兩點請讀者注意。首先,Allegro第三方網(wǎng)表在$PACKAGE段不允許有“.”;其次,在Protel中,我們用BasName[0:N]的形式表示總線,用BasName[x]表示總線中的一根信號,Allegro第三方網(wǎng)表中總線中的一根信號的表示形式為Bas NameX,讀者可以通過直接修改Protel輸出的Telexis網(wǎng)表的方法解決這些問題。

            Allegro在注入第三方網(wǎng)表時還需要每種類型器件的設備描述文件Device.txt文件,它的格式如下:

            Package: package type

            Class: classtype

            Pincount: total pinnumber

            Pinused: ...

            其中常用的是PACKAGE,CLASS,PINCOUNT這幾項。PACKAGE描述了器件的封裝,但Allegro在注入網(wǎng)表時會用網(wǎng)表中的 PACKAGE項而忽略設備描述文件中的這一項。CLASS確定器件的類型,以便信噪分折,Cadence將器件分為IC,IO,DISCRETE三類。 PINCOUNT說明器件的管腳數(shù)目。對于大多數(shù)器件,Device.txt文件中包含有這三項就足夠了。

            有了第三方網(wǎng)表和設備描述文件,我們就可以將Protel中原理圖設計以網(wǎng)表的形式代入到Cadence PCB設計軟件中,接下來,設計師就可以借助Cadence PCB軟件在高速高密度PCB設計方面的強大功能完成自己的設計。

            如果已經(jīng)在Protel作了PCB布局的工作,Allegro的script功能可以將Protcl中的布局在Allegro中重現(xiàn)出來。在 Protel中,設計師可以輸出一個Place Pick文件,這個文件中包含了每個器件的位置、旋轉(zhuǎn)角度和放在PCB頂層還是底層等信息,可以通過這個文件很方便的生成一個Allegro的 script文件,在Allegro中執(zhí)行這個script就能夠重現(xiàn)Protel中的布局了,下面給出了完成Place Pick文件到Allegro Script文件轉(zhuǎn)化的C++代碼,筆者使用這段代碼,僅用了數(shù)分鐘就將一個用戶有800多個器件的PCB板布局在Allegro重現(xiàn)出來。

            FILE *fp1, *fp2;

            ::AfxMessageBox(hello);

            fp1=fopen(pick.txt, rt);

            if (fp1==NULL) ::AfxMessageBox(Can not open the file!!!);

            fp2=fopen(place.txt,wt);

            if (fp2==NULL) ::AfxMessageBox(Can not create the file!!!);

            char refdes[5], Pattern[5];

            float midx,midy,refx,refy,padx,pady,rotation;

            char tb[1];

            char tmp='';

            fprintf(fp2,%sn, # Allegro script);

            fprintf(fp2,%sn, version 13.6);

            fprintf(fp2,%sn, place refdes);

           while (!feof(fp1)) {

            fscanf(fp1,%s, refdes);

            fscanf(fp1,%s, Pattern);

            fscanf(fp1,%f, midx);

            fscanf(fp1,%f, midy);

            fscanf(fp1,%f, refx);

            fscanf(fp1,%f, refy);

            fscanf(fp1,%f, padx);

            fscanf(fp1,%f, pady);

            fscanf(fp1,%s, tb);

            fscanf(fp1,%f, rotation);

            fprintf(fp2, fillin %c%s%c n,tmp,refdes,tmp);

            if (rotation!=0) {

            fprintf(fp2, rotaten);

            fprintf(fp2, iangle %fn, rotation);

            };

            char yy=tb[0];

            if (yy!='T') fprintf(fp2, pop mirrorn);

            fprintf(fp2, pick %f %f n, padx,pady);

            fprintf(fp2, next n);

            };

            fprintf(fp2, done);

            fclose(fp1);

            fclose(fp2);

            使用的工具

            a) DXP SP2

            b) Cadence Design Systems, Inc. Capture CIS

            c) Cadence Design Systems, Inc. Orcad Layout

            d) Cadence Design Systems, Inc. Layout2

            e) Cadence Design Systems, Inc. Allegro

            f) Cadence Design Systems, Inc. Specctra



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();