《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > PCB文件PROTEL到ALLEGRO的轉(zhuǎn)換技巧

PCB文件PROTEL到ALLEGRO的轉(zhuǎn)換技巧

2015-09-23
關(guān)鍵詞: PCB ALLEGRO的轉(zhuǎn)換技巧
  1. Protel 原理圖到Cadence Design Systems, Inc. Capture CIS
      在Protel原理圖的轉(zhuǎn)化上我們可以利用Protel DXP SP2的新功能來實(shí)現(xiàn),。通過這一功能我們可以直接將Protel的原理圖轉(zhuǎn)化到Capture CIS中,。
      注意事項(xiàng):
      1) Protel DXP在輸出Capture DSN文件的時候,沒有輸出封裝信息,,在Capture中我們會看到所以元件的PCB Footprint屬性都是空的,。這就需要我們手工為元件添加封裝信息,這也是整個轉(zhuǎn)化過程中最耗時的工作,。在添加封裝信息時要注意保持與Protel PCB設(shè)計(jì)中的封裝一致性,,以及Cadence在封裝命名上的限制。我們在Capture中給元件添加封裝信息時,,要考慮到這些命名的改變,。
      2) 一些器件的隱藏管腳或管腳號在轉(zhuǎn)化過程中會丟失,,需要在Capture中使用庫編輯的方法添加上來。
      3) 在層次化設(shè)計(jì)中,,模塊之間連接的總線需要在Capture中命名,。
      4) 對于一個封裝中有多個部分的器件,要注意修改其位號,。
      基本上注意到上述幾點(diǎn),,借助Protel DXP,可以將Protel的原理圖轉(zhuǎn)化到Capture中,。進(jìn)一步推廣,,這也為現(xiàn)有的Protel原理圖符號庫轉(zhuǎn)化到Capture提供了一個途徑。
      2. Protel 封裝庫的轉(zhuǎn)化
      長期使用Protel作PCB設(shè)計(jì),,我們總會積累一個龐大的經(jīng)過實(shí)踐檢驗(yàn)的Protel封裝庫,當(dāng)設(shè)計(jì)平臺轉(zhuǎn)換時,,如何保留這個封裝庫總是令人頭痛,。這里,我們將使用Orcad Layout,,和免費(fèi)的Cadence工具Layout2Allegro來完成這項(xiàng)工作,。
      1) 在Protel中將PCB封裝放置到一張空的PCB中,并將這個PCB文件用Protel PCB 2.8 ASCII的格式輸出出來;
      2) 使用Orcad Layout導(dǎo)入這個Protel PCB 2.8 ASCII文件;
      3) 使用Layout2Allegro將生成的Layout MAX文件轉(zhuǎn)化為Allegro的BRD文件;
      4) 接下來,,我們使用Allegro的Export功能將封裝庫,,焊盤庫輸出出來,就完成了Protel封裝庫到Allegro轉(zhuǎn)化,。
      3. Protel PCB到Allegro的轉(zhuǎn)化
      有了前面兩步的基礎(chǔ),,我們就可以進(jìn)行Protel PCB到Allegro的轉(zhuǎn)化了。這個轉(zhuǎn)化過程更確切的說是一個設(shè)計(jì)重現(xiàn)過程,,我們將在Allegro中重現(xiàn)Protel PCB的布局和布線,。
      1) 將第二步Capture生成的Allegro格式的網(wǎng)表傳遞到Allegro BRD中,作為我們重現(xiàn)工作的起點(diǎn);
      2) 首先,,我們要重現(xiàn)器件布局,。在Protel中輸出Place & Pick文件,這個文件中包含了完整的器件位置,,旋轉(zhuǎn)角度和放置層的信息,。我們通過簡單的手工修改,就可以將它轉(zhuǎn)化為Allegro的Placement文件,。在Allegro中導(dǎo)入這個Placement文件,,我們就可以得到布局了。
      3) 布線信息的恢復(fù),,要使用Specctra作為橋梁,。從Protel中輸出包含布線信息的Specctra DSN文件,。
      4) Protel中的層命名與Allegro中有所區(qū)別,要注意使用文本編輯器作適當(dāng)?shù)男薷摹?br/>  5) 注意在Specctra中查看過孔的定義,,并添加到Allegro的規(guī)則中,。在allegro中定義過孔從Specctra中輸出布線信息,可以使用session, wires, 和route文件,,建議使用route文件,,然后將布線信息導(dǎo)入到我們以及重現(xiàn)布局的Allegro PCB中,就完成了我們從Protel PCB到Allegro BRD的轉(zhuǎn)化工作,。
      Protel到Allegro轉(zhuǎn)化的方法
      在這過程當(dāng)中碰到的問題大致可分為兩種:一是設(shè)計(jì)不很復(fù)雜,,設(shè)計(jì)師只想借助Cadence CCT的強(qiáng)大自動布線功能完成布線工作;二是設(shè)計(jì)復(fù)雜,設(shè)計(jì)師需要借助信噪分析工具來對設(shè)計(jì)進(jìn)行信噪仿真,,設(shè)置線網(wǎng)的布線拓?fù)浣Y(jié)構(gòu)等工作,。
      對于第一種情況,要做的轉(zhuǎn)化工作比較簡單,,可以使用Protel或Cadence提供的Protel到CCT的轉(zhuǎn)換工具來完成這一工作,。對于第二種情況,要做的工作相對復(fù)雜一些,,下面將這種轉(zhuǎn)化的方法作一簡單的介紹,。
      Cadence信噪分析工具的分析對象是Cadence Allegro的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)表的方法解決這些問題,。

  2.   Allegro在注入第三方網(wǎng)表時還需要每種類型器件的設(shè)備描述文件Device.txt文件,,它的格式如下:
      Package: package type
      Class: classtype
      Pincount: total pinnumber
      Pinused: ...
      其中常用的是PACKAGE,CLASS,,PINCOUNT這幾項(xiàng),。PACKAGE描述了器件的封裝,但Allegro在注入網(wǎng)表時會用網(wǎng)表中的PACKAGE項(xiàng)而忽略設(shè)備描述文件中的這一項(xiàng),。CLASS確定器件的類型,,以便信噪分折,Cadence將器件分為IC,IO,DISCRETE三類,。PINCOUNT說明器件的管腳數(shù)目,。對于大多數(shù)器件,Device.txt文件中包含有這三項(xiàng)就足夠了,。
      有了第三方網(wǎng)表和設(shè)備描述文件,,我們就可以將Protel中原理圖設(shè)計(jì)以網(wǎng)表的形式代入到Cadence PCB設(shè)計(jì)軟件中,接下來,,設(shè)計(jì)師就可以借助Cadence PCB軟件在高速高密度PCB設(shè)計(jì)方面的強(qiáng)大功能完成自己的設(shè)計(jì),。
      如果已經(jīng)在Protel作了PCB布局的工作,Allegro的script功能可以將Protcl中的布局在Allegro中重現(xiàn)出來,。在Protel中,,設(shè)計(jì)師可以輸出一個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);

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。