從PROTEL到ALLEGRO電路板改板設(shè)計(jì)的轉(zhuǎn)換技術(shù)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在PCB抄板、PCB設(shè)計(jì)等過程中,由于不同軟件平臺之間的數(shù)據(jù)或文件格式不同,常常需要借助其他的工具進(jìn)行平臺或文件格式的轉(zhuǎn)換,本文我們將為大家介紹從PROTEL到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中。
這里,我們僅提出幾點(diǎn)通過實(shí)踐總結(jié)出來的注意事項(xiàng)。
1) Protel DXP在輸出Capture DSN文件的時(shí)候,沒有輸出封裝信息,在Capture中我們會(huì)看到所以元件的PCB Footprint屬性都是空的。這就需要我們手工為元件添加封裝信息,這也是整個(gè)轉(zhuǎn)化過程中最耗時(shí)的工作。在添加封裝信息時(shí)要注意保持與Protel PCB設(shè)計(jì)中的封裝一致性,以及Cadence在封裝命名上的限制。例如一個(gè)電阻,在Protel中的封裝為AXIAL0.4,在后面介紹的封裝庫的轉(zhuǎn)化中,將被修改為AXIAL04,這是由于Cadence不允許封裝名中出現(xiàn)“.”;再比如DB9接插件的封裝在Protel中為DB9RA/F,將會(huì)被改為DB9RAF。因此我們在Capture中給元件添加封裝信息時(shí),要考慮到這些命名的改變。
2) 一些器件的隱藏管腳或管腳號在轉(zhuǎn)化過程中會(huì)丟失,需要在Capture中使用庫編輯的方法添加上來。通常易丟失管腳號的器件時(shí)電阻電容等離散器件。
3) 在層次化設(shè)計(jì)中,模塊之間連接的總線需要在Capture中命名。即使在Protel中已經(jīng)在父設(shè)計(jì)中對這樣的總線命名了,還是要在Capture中重新來過,以確保連接。
4) 對于一個(gè)封裝中有多個(gè)部分的器件,要注意修改其位號。例如一個(gè)74ls00,在protel中使用其中的兩個(gè)門,位號為U8A,U8B。這樣的信息在轉(zhuǎn)化中會(huì)丟失,需要重新添加。
基本上注意到上述幾點(diǎn),借助Protel DXP,我們就可以將Protel的原理圖轉(zhuǎn)化到Capture中。進(jìn)一步推廣,這也為現(xiàn)有的Protel原理圖符號庫轉(zhuǎn)化到Capture提供了一個(gè)途徑。
2. Protel 封裝庫的轉(zhuǎn)化
長期使用Protel作PCB設(shè)計(jì),我們總會(huì)積累一個(gè)龐大的經(jīng)過實(shí)踐檢驗(yàn)的Protel封裝庫,當(dāng)設(shè)計(jì)平臺轉(zhuǎn)換時(shí),如何保留這個(gè)封裝庫總是令人頭痛。這里,我們將使用Orcad Layout,和免費(fèi)的Cadence工具Layout2allegro來完成這項(xiàng)工作。
1) 在Protel中將PCB封裝放置到一張空的PCB中,并將這個(gè)PCB文件用Protel PCB 2.8 ASCII的格式輸出出來;
2) 使用Orcad Layout導(dǎo)入這個(gè)Protel PCB 2.8 ASCII文件;
3) 使用Layout2allegro將生成的Layout MAX文件轉(zhuǎn)化為Allegro的BRD文件;
4) 接下來,我們使用Allegro的Export功能將封裝庫,焊盤庫輸出出來,就完成了Protel封裝庫到Allegro轉(zhuǎn)化。
4. Protel PCB到Allegro的轉(zhuǎn)化
有了前面兩步的基礎(chǔ),我們就可以進(jìn)行Protel PCB到Allegro的轉(zhuǎn)化了。這個(gè)轉(zhuǎn)化過程更確切的說是一個(gè)設(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文件,這個(gè)文件中包含了完整的器件位置,旋轉(zhuǎn)角度和放置層的信息。我們通過簡單的手工修改,就可以將它轉(zhuǎn)化為Allegro的Placement文件。在Allegro中導(dǎo)入這個(gè)Placement文件,我們就可以得到布局了。
3) 布線信息的恢復(fù),要使用Specctra作為橋梁。首先,從Protel中輸出包含布線信息的Specctra DSN文件。對于這個(gè)DSN文件我們要注意以下2點(diǎn):
4) Protel中的層命名與Allegro中有所區(qū)別,要注意使用文本編輯器作適當(dāng)?shù)男薷?,例如Protel中頂層底層分別為Toplayer和Bottomlayer,而在Allegro中這兩層曾稱為TOP和BOTTOM;
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)今IT產(chǎn)業(yè)的發(fā)展日新月異,對硬件設(shè)備的要求也越來越高,硬件設(shè)計(jì)師們面臨如何設(shè)計(jì)高速高密度PCB的難題。常言道,工欲善其事,必先利其器,這也是越來越多的設(shè)計(jì)師放棄低端的PCB設(shè)計(jì)工具,進(jìn)而選擇Cadence等公司提供的高性能PCB EDA軟件的原因。
但是這種變革必然會(huì)帶來這樣或那樣的問題。由于接觸和使用較早等原因,國內(nèi)的Protel用戶為數(shù)眾多,他們在選擇Cadence高速PCB解決方案的同時(shí),都面臨著如何將手頭的Protel設(shè)計(jì)移植到Cadence PCB設(shè)計(jì)軟件中的問題。
在這個(gè)過程當(dāng)中碰到的問題大致可分為兩種:一是設(shè)計(jì)不很復(fù)雜,設(shè)計(jì)師只想借助Cadence CCT的強(qiáng)大自動(dò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。
這里有兩點(diǎn)請讀者注意。首先,Allegro第三方網(wǎng)表在$PACKAGE段不允許有“.”;其次,在Protel中,我們用BasName[0:N]的形式表示總線,用BasName[x]表示總線中的一根信號,Allegro第三方網(wǎng)表中總線中的一根信號的表示形式為Bas NameX,讀者可以通過直接修改Protel輸出的Telexis網(wǎng)表的方法解決這些問題。
Allegro在注入第三方網(wǎng)表時(shí)還需要每種類型器件的設(shè)備描述文件Device.txt文件,它的格式如下:
Package: package type
Class: classtype
Pincount: total pinnumber
Pinused: ...
其中常用的是PACKAGE,CLASS,PINCOUNT這幾項(xiàng)。PACKAGE描述了器件的封裝,但Allegro在注入網(wǎng)表時(shí)會(huì)用網(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ì)師可以輸出一個(gè)Place & Pick文件,這個(gè)文件中包含了每個(gè)器件的位置、旋轉(zhuǎn)角度和放在PCB頂層還是底層等信息,可以通過這個(gè)文件很方便的生成一個(gè)Allegro的script文件,在Allegro中執(zhí)行這個(gè)script就能夠重現(xiàn)Protel中的布局了,下面給出了完成Place & Pick文件到Allegro Script文件轉(zhuǎn)化的C++代碼,筆者使用這段代碼,僅用了數(shù)分鐘就將一個(gè)用戶有800多個(gè)器件的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);
3. 使用的工具
a) Protel DXP SP2
b) Cadence Design Systems, Inc. Capture CIS
c) Cadence Design Systems, Inc. Orcad Layout
d) Cadence Design Systems, Inc. Layout2allegro
e) Cadence Design Systems, Inc. Allegro
f) Cadence Design Systems, Inc. Specctra