Protel到Allegro图解步骤

protel到allegro图解步骤
常言道,工欲善其事,必先利其器,这也是越来越多的设计师放弃低端的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,%s\n, # allegro script);
fprintf(fp2,%s\n, version 13.6);
fprintf(fp2,%s\n, 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, rotate\n);
fprintf(fp2, iangle %f\n, rotation);
};
char yy=tb[0];
if (yy!='t') fprintf(fp2, pop mirror\n);
fprintf(fp2, pick %f %f \n, padx,pady);
fprintf(fp2, next \n);
};
fprintf(fp2, done);
fclose(fp1);
fclose(fp2);
以上简单介绍了protel到allegro转化的方法,希望能对读者的设计工作有所帮助。

荣耀20i官方渲染图被意外流出,预计将在4月17日发布
携手 MLCommons,制定有效且值得信赖的 AI 安全基准
loRa无线报警系统运用了哪一些物联网技术
全世界113家运营商公布将5G商用
智慧路灯的应用场景
Protel到Allegro图解步骤
EOSRL宣布在MicroLED芯片巨量转移技术上实现了重大突破
STM32 ILI9341驱动TFTLCD屏(四)
中国电信举办安全生态论坛,与业界人物同讨大数据时代安全发展蓝图
简述工业以太网与现场总线技术1
利用RFID技术与网络技术实现奶牛疫病监控和管理系统的设计
将智能技术融入健身房中,享受智能魔镜带来的便利
8软驱接口引脚定义图
TTCN测试模型及测试方法的研究分析
敏捷弹跳机器人SALTO
索尼人工智能语音助手专利曝光,或将应于下一代主机PlayStation 5中
汽车安全工程之“安全”概念的辨析
ATSC数字液晶电视系统单芯片SiS328
基于毫米波雷达的非接触人体心电图实时监测
基于CPCI的嵌入式系统的电源设计