PCB文件PROTEL到ALLEGRO的轉換技巧
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文件,這個文件中包含了每個器件的位置、旋轉角度和放在PCB頂層還是底層等信息,可以通過這個文件很方便的生成一個Allegro的script文件,在Allegro中執(zhí)行這個script就能夠重現(xiàn)Protel中的布局了,下面給出了完成Place Pick文件到Allegro Script文件轉化的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);
評論