国内精品伊人久久久影院_欧美日韩亚洲国内综合网香蕉_freehd女厕所vedio12_91精品啪在线看国产网站

登錄 注冊
購物車0
TOP
Imgs 技術中心

0

從PROTEL到ALLEGRO的過渡教程_高都電子PCB技術中心_pcb學

2019-08-27 19:20:00

隨著PCB設計的復雜程度和高速PCB設計需求的不斷增加,越來越多的PCB設計者、設計團隊選擇Cadence的設計平臺和工具。但是,由于沒有Protel數據到Cadence數據直接轉換工具,長期以來如何將現有的基于Protel平臺的設計數據轉化到Cadence平臺上來一直是處于平臺轉化期的設計者所面臨的難題。
在長期實際的基礎上,結合現有工具的特點,提供一種將Protel原理圖、PCB轉化到Cadence平臺上的方法。

1. 使用的工具


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

2. Protel 原理圖到Cadence Design Systems, Inc. Capture CIS


在Protel原理圖的轉化上我們可以利用Protel DXP SP2的新功能來實現。通過這一功能我們可以直接將Protel的原理圖轉化到Capture CIS中。
這里,我們僅提出幾點通過實踐總結出來的注意事項。

1) Protel DXP在輸出Capture DSN文件的時候,沒有輸出封裝信息,在Capture中我們會看到所以元件的PCB Footprint屬性都是空的。這就需要我們手工為元件添加封裝信息,這也是整個轉化過程中最耗時的工作。在添加封裝信息時要注意保持與Protel PCB設計中的封裝一致性,以及Cadence在封裝命名上的限制。例如一個電阻,在Protel中的封裝為AXIAL0.4,在后面介紹的封裝庫的轉化中,將被修改為AXIAL04,這是由于Cadence不允許封裝名中出現“.”;再比如DB9接插件的封裝在Protel中為DB9RA/F,將會被改為DB9RAF。因此我們在Capture中給元件添加封裝信息時,要考慮到這些命名的改變。

2) 一些器件的隱藏管腳或管腳號在轉化過程中會丟失,需要在Capture中使用庫編輯的方法添加上來。通常易丟失管腳號的器件時電阻電容等離散器件。

3) 在層次化設計中,模塊之間連接的總線需要在Capture中命名。即使在Protel中已經在父設計中對這樣的總線命名了,還是要在Capture中重新來過,以確保連接。

4) 對于一個封裝中有多個部分的器件,要注意修改其位號。例如一個74ls00,在protel中使用其中的兩個門,位號為U8A,U8B。這樣的信息在轉化中會丟失,需要重新添加。
基本上注意到上述幾點,借助Protel DXP,我們就可以將Protel的原理圖轉化到Capture中。進一步推廣,這也為現有的Protel原理圖符號庫轉化到Capture提供了一個途徑。

3. Protel 封裝庫的轉化


長期使用Protel作PCB設計,我們總會積累一個龐大的經過實踐檢驗的Protel封裝庫,當設計平臺轉換時,如何保留這個封裝庫總是令人頭痛。這里,我們將使用Orcad Layout,和免費的Cadence工具Layout2allegro來完成這項工作。

1) 在Protel中將PCB封裝放置到一張空的PCB中,并將這個PCB文件用Protel PCB 2.8 ASCII的格式輸出出來;
2) 使用Orcad Layout導入這個Protel PCB 2.8 ASCII文件;
3) 使用Layout2allegro將生成的Layout MAX文件轉化為Allegro的BRD文件;
4) 接下來,我們使用Allegro的Export功能將封裝庫,焊盤庫輸出出來,就完成了Protel封裝庫到Allegro轉化。

4. Protel PCB到Allegro的轉化


有了前面兩步的基礎,我們就可以進行Protel PCB到Allegro的轉化了。這個轉化過程更確切的說是一個設計重現過程,我們將在Allegro中重現Protel PCB的布局和布線。

1) 將第二步Capture生成的Allegro格式的網表傳遞到Allegro BRD中,作為我們重現工作的起點;
2) 首先,我們要重現器件布局。在Protel中輸出Place & Pick文件,這個文件中包含了完整的器件位置,旋轉角度和放置層的信息。我們通過簡單的手工修改,就可以將它轉化為Allegro的Placement文件。在Allegro中導入這個Placement文件,我們就可以得到布局了。
3) 布線信息的恢復,要使用Specctra作為橋梁。首先,從Protel中輸出包含布線信息的Specctra DSN文件。對于這個DSN文件我們要注意以下2點:
4) Protel中的層命名與Allegro中有所區別,要注意使用文本編輯器作適當的修改,例如Protel中頂層底層分別為Toplayer和Bottomlayer,而在Allegro中這兩層曾稱為TOP和BOTTOM;
5) 注意在Specctra中查看過孔的定義,并添加到Allegro的規則中。在allegro中定義過孔從Specctra中輸出布線信息,可以使用session, wires, 和route文件,建議使用route文件,然后將布線信息導入到我們以及重現布局的Allegro PCB中,就完成了我們從Protel PCB到Allegro BRD的轉化工作。
Protel到Allegro轉化的方法

當今IT產業的發展日新月異,對硬件設備的要求也越來越高,硬件設計師們面臨如何設計高速高密度PCB的難題。常言道,工欲善其事,必先利其器,這也是越來越多的設計師放棄低端的PCB設計工具,進而選擇Cadence等公司提供的高性能PCB EDA軟件的原因。 
  但是這種變革必然會帶來這樣或那樣的問題。由于接觸和使用較早等原因,國內的Protel用戶為數眾多,他們在選擇Cadence高速PCB解決方案的同時,都面臨著如何將手頭的Protel設計移植到Cadence PCB設計軟件中的問題。
  在這個過程當中碰到的問題大致可分為兩種:一是設計不很復雜,設計師只想借助Cadence CCT的強大自動布線功能完成布線工作;二是設計復雜,設計師需要借助信噪分析工具來對設計進行信噪仿真,設置線網的布線拓撲結構等工作。
  對于第一種情況,要做的轉化工作比較簡單,可以使用Protel或Cadence提供的Protel到CCT的轉換工具來完成這一工作。對于第二種情況,要做的工作相對復雜一些,下面將這種轉化的方法作一簡單的介紹。
  Cadence信噪分析工具的分析對象是Cadence Allegro的brd文件,而Allegro可以讀入合乎其要求的第三方網表,Protel輸出的Telexis格式的網表滿足Allegro對第三方網表的要求,這樣就可以將Protel文件注入Allegro。
  這里有兩點請讀者注意。首先,Allegro第三方網表在$PACKAGE段不允許有“.”;其次,在Protel中,我們用BasName[0:N]的形式表示總線,用BasName[x]表示總線中的一根信號,Allegro第三方網表中總線中的一根信號的表示形式為Bas NameX,讀者可以通過直接修改Protel輸出的Telexis網表的方法解決這些問題。
  Allegro在注入第三方網表時還需要每種類型器件的設備描述文件Device.txt文件,它的格式如下:
Package: package type
Class: classtype
Pincount: total pinnumber
Pinused: ...
  其中常用的是PACKAGE,CLASS,PINCOUNT這幾項。PACKAGE描述了器件的封裝,但Allegro在注入網表時會用網表中的PACKAGE項而忽略設備描述文件中的這一項。CLASS確定器件的類型,以便信噪分折,Cadence將器件分為IC,IO,DISCRETE三類。PINCOUNT說明器件的管腳數目。對于大多數器件,Device.txt文件中包含有這三項就足夠了。
  有了第三方網表和設備描述文件,我們就可以將Protel中原理圖設計以網表的形式代入到Cadence PCB設計軟件中,接下來,設計師就可以借助Cadence PCB軟件在高速高密度PCB設計方面的強大功能完成自己的設計。
  如果已經在Protel作了PCB布局的工作,Allegro的script功能可以將Protcl中的布局在Allegro中重現出來。在Protel中,設計師可以輸出一個Place & Pick文件,這個文件中包含了每個器件的位置、旋轉角度和放在PCB頂層還是底層等信息,可以通過這個文件很方便的生成一個Allegro的script文件,在Allegro中執行這個script就能夠重現Protel中的布局了,下面給出了完成Place & Pick文件到Allegro Script文件轉化的C++代碼,筆者使用這段代碼,僅用了數分鐘就將一個用戶有800多個器件的PCB板布局在Allegro重現出來。
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);
以上簡單介紹了Protel到Allegro轉化的方法,希望能對讀者的設計工作有所幫助。

高都電子,為客戶創造價值!

雙面板免費加費,四層板加急打樣,厚銅電路板打樣

Xcm