日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > EDA > 電子設計自動化
[導讀]1. Protel 原理圖到Cadence Design Systems, Inc. Capture CIS在Protel原理圖的轉化上我們可以利用Protel DXP SP2的新功能來實現。通過這一功能我們可以直接將Protel的原理圖轉化到Capture CIS中。注意事項:1) Prot

1. 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在封裝命名上的限制。我們在Capture中給元件添加封裝信息時,要考慮到這些命名的改變。

2) 一些器件的隱藏管腳或管腳號在轉化過程中會丟失,需要在Capture中使用庫編輯的方法添加上來。

3) 在層次化設計中,模塊之間連接的總線需要在Capture中命名。

4) 對于一個封裝中有多個部分的器件,要注意修改其位號。

基本上注意到上述幾點,借助Protel DXP,可以將Protel的原理圖轉化到Capture中。進一步推廣,這也為現有的Protel原理圖符號庫轉化到Capture提供了一個途徑。

2. 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轉化。

3. 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文件。

4) Protel中的層命名與Allegro中有所區(qū)別,要注意使用文本編輯器作適當的修改。

5) 注意在Specctra中查看過孔的定義,并添加到Allegro的規(guī)則中。在allegro中定義過孔從Specctra中輸出布線信息,可以使用session, wires, 和route文件,建議使用route文件,然后將布線信息導入到我們以及重現布局的Allegro PCB中,就完成了我們從Protel PCB到Allegro BRD的轉化工作。

Protel到Allegro轉化的方法

在這過程當中碰到的問題大致可分為兩種:一是設計不很復雜,設計師只想借助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中執(zhí)行這個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);

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉