巧用軟體之讓你轉到linux下做PCB(轉)
巧用軟體之讓你轉到linux下做PCB(轉)[@more@] 我的bashrc如下
# Cadence PSD environment icq 111290069
CDS_INST_DIR=/opt/psd
CDS_LIC_FILE=$CDS_INST_DIR/share/cadence.license
CDS_DIR=$CDS_INST_DIR
CONCEPT_INST_DIR=$CDS_DIR
CDS_SITE=$CDS_DIR/share/local/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONCEPT_INST_DIR/tools/lib
CDSDOC_PROJECT=/CDS_INST_DIR/doc
PATH=$PATH:$CONCEPT_INST_DIR/tools/bin
PATH=$PATH:$CONCEPT_INST_DIR/tools/pcb/bin
PATH=$PATH:$CONCEPT_INST_DIR/tools/fet/bin
export CONCEPT_INST_DIR
export CDSDOC_PROJECT
export CDS_SITE
export CDS_LIC_FILE
export CDS_INST_DIR
export LD_LIBRARY_PATH
export PATH
由於接觸和使用較早等原因,國內的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,"%s ", "# Allegro script");
fprintf(fp2,"%s ", "version 13.6");
fprintf(fp2,"%s ", "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 ",tmp,refdes,tmp);
if (rotation!=0) {
fprintf(fp2, "rotate ");
fprintf(fp2, "iangle %f ", rotation);
};
char yy=tb[0];
if (yy!='T') fprintf(fp2, "pop mirror ");
fprintf(fp2, "pick %f %f ", padx,pady);
fprintf(fp2, "next ");
};
fprintf(fp2, "done");
fclose(fp1);
fclose(fp2);
以上簡單介紹了Protel到 SPB152轉化的方法,希望能對讀者的設計工作有所幫助。
# Cadence PSD environment icq 111290069
CDS_INST_DIR=/opt/psd
CDS_LIC_FILE=$CDS_INST_DIR/share/cadence.license
CDS_DIR=$CDS_INST_DIR
CONCEPT_INST_DIR=$CDS_DIR
CDS_SITE=$CDS_DIR/share/local/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONCEPT_INST_DIR/tools/lib
CDSDOC_PROJECT=/CDS_INST_DIR/doc
PATH=$PATH:$CONCEPT_INST_DIR/tools/bin
PATH=$PATH:$CONCEPT_INST_DIR/tools/pcb/bin
PATH=$PATH:$CONCEPT_INST_DIR/tools/fet/bin
export CONCEPT_INST_DIR
export CDSDOC_PROJECT
export CDS_SITE
export CDS_LIC_FILE
export CDS_INST_DIR
export LD_LIBRARY_PATH
export PATH
由於接觸和使用較早等原因,國內的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,"%s ", "# Allegro script");
fprintf(fp2,"%s ", "version 13.6");
fprintf(fp2,"%s ", "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 ",tmp,refdes,tmp);
if (rotation!=0) {
fprintf(fp2, "rotate ");
fprintf(fp2, "iangle %f ", rotation);
};
char yy=tb[0];
if (yy!='T') fprintf(fp2, "pop mirror ");
fprintf(fp2, "pick %f %f ", padx,pady);
fprintf(fp2, "next ");
};
fprintf(fp2, "done");
fclose(fp1);
fclose(fp2);
以上簡單介紹了Protel到 SPB152轉化的方法,希望能對讀者的設計工作有所幫助。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947212/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 你做不做? 做什麼啊——軟體工程 (轉)軟體工程
- Linux下的多媒體軟體(轉)Linux
- linux 下實用軟體組合 -- 為你的 linux 減肥!(轉)Linux
- Linux下的常用軟體列表(轉)Linux
- Linux下的軟體安裝(轉)Linux
- Linux下的軟體開發(轉)Linux
- 讀書軟體做自己的 (轉)
- Linux轉向下一代 讓青少年知道國產軟體(轉)Linux
- Linux下軟體RAID的實現 (轉)LinuxAI
- Linux下vi 文書處理軟體(轉)Linux
- 從音樂到軟體 (轉)
- fedora 下常用軟體——轉
- gnome下的軟體(轉)
- kde下的軟體(轉)
- 巧用Linux字元終端命令(轉)Linux字元
- Linux下安裝和使用防毒軟體AntiVir(轉)Linux防毒
- Linux下軟體應用的相關命令(轉)Linux
- 循序漸進教你LINUX之軟體配置方法(轉)Linux
- Linux下軟體的安裝與解除安裝(轉)Linux
- 搞定Linux軟體安裝(轉)Linux
- 讓linux支援你的DMA66硬碟(轉)Linux硬碟
- Linux漢化之讓MandrakeLinux支援中文(轉)Linux
- 讓LINUX成功支援Cirrus Logic軟貓(轉)Linux
- 共享軟體之勇士義旅 (轉)
- 軟體測試之我見 (轉)
- linux下軟體的基本安裝和解除安裝(轉)Linux
- 多媒體:讓Quake3在Linux下順利執行(轉)Linux
- 讓駭客無處藏身的軟體將面世 (轉)
- Redhat linux 9下讓PHP支援java類(轉)RedhatLinuxPHPJava
- linux與windows軟體對照(轉)LinuxWindows
- Linux軟體包轉換-deb與rpm互轉Linux
- 做linux釋出(轉)Linux
- 做一個成功的軟體專案經理(轉)
- 軟體專案的“管理之癢”(轉)
- 將 DEB 軟體包轉換成 Arch Linux 軟體包Linux
- [個體軟體過程]之時間管理 (轉)
- 讓Linux命令加速(轉)Linux
- Catalyst 6509軟體從CatOS到IOS方法(轉)iOS