Protel原理图PCB到Cadence的数据转换
Date: 2008/ 04 / 25
Author:周曙光
Version: v16.x
Keywords:数据转换AD6(Altium Designer 6)
Note: 任何两个EDA工具之间的数据转换都不是百分百的正确,都需要做一定修改。
随着PCB设计的复杂程度和高速PCB设计需求的不断增加,越来越多的PCB设计者、设计团队选择Cadence的设计平台和工具。但是,由于没有AD6数据到Cadence数据直接转换工具,长期以来如何将现有的基于AD6平台的设计数据转化到Cadence平台上来一直是处于平台转化期的设计者所面临的难题。
下面结合Cadence和Altium的PCB设计工具,提供一条比较合理的转换途径。
1、环境:转换中使用到的工具
a) Altium Designer 6
b) Cadence Capture CIS
c) Cadence Orcad Layout
d) Cadence PCB Editor
e) Cadence PCB Router(CCT)
2、Altium - AD6原理图到Cadence - Capture CIS
在Altium Designer 6原理图的转化上我们可以利用Altium Designer 6的Save Preject As来实现。通过这一功能我们可以直接将AD6的原理图转化到Capture CIS中。
然后直接保存为*.dsn文件。
注意事项:
这里,我们仅提出几点通过实践总结出来的注意事项。
a)封装信息
AD6在输出Capture DSN文件的时候,没有输出封装信息,在Capture中我们会看到所以元件的PCB Footprint属性都是空的。这就需要我们手工为元件添加封装信息,这也是整个转化过程中最耗时的工作。在添加封装信息时要注意保持与AD6 PCB设计中的封装一致性,以及Cadence在封装命名上的限制。
例如一个电阻,在AD6中的封装为AXIAL0.4,在后面介绍的封装库的转化中,将被修改为AXIAL04,这是由于Cadence不允许封装名中出现“.”;再比如DB9接插件的封装在AD6中为DB9RA/F,将会被改为DB9RAF。因此我们在Capture中给元件添加封装信息时,要考虑到这些命名的改变。当然,如果自己有一些标准的Cadence的PCB封装库,也可以直接输入对应的封装库名称。只是需要注意的就是在后面要导入器件的位置信息的时候,需要把AD6中的PCB封装名称修改为Cadence的PCB封装名称。当然两个软件中封装库的原点应该是一致的,否则后面导入PCB Editor时候,器件不在原来的位置。
给器件添加封装的时候,可以不用每个器件都添加一次,可以通过Capture的更新属性一次性进行操作。具体操作如下:
点击工程名称,然后在菜单tools->Updata properties,在这个属性更新界面里,需要选择一个自己编辑的UPD文件。
UPD文件格式如下:
"
CO." "" "DIP14"
"74LS00" "20-12345" "$1.20" "ABC
CO." "" "DIP14"
"7400" "20-12345" "$1.20" "ABC
"74F162" "20-67890" "$.90" "ABC
CO." "" "SO16"
".1UF" "30-10293" "$.25" "XYZ INC." "BOTTOM" "1206S"
b)原始设计要规范
AD6的原理图应该要规范,保证导出之后的错误尽可能的少,譬如,网络的连线最好不要直接连接到pin管脚,应该来出来一段线之后再去连接其他管脚。还有电源地符号,最好在AD6中引出一段线再接。
c)管脚信息
一些器件的隐藏管脚或管脚号在转化过程中会丢失,需要在Capture中使用库编辑的方法添加上来。通常易丢失管脚号的器件时电阻电容等离散器件。
d)层次化设计中的问题
在层次化设计中,模块之间连接的总线需要在Capture中命名。即使在AD6中已经在父设计中对这样的总线命名了,还是要在Capture中重新来过,以确保连接。
e)一个封装对应几个部分的器件
对于一个封装中有多个部分的器件,要注意修改其位号。例如一个74ls00,在AD6中使用其中的两个门,位号为U8A,U8B。这样的信息在转化中会丢失,需要重新添加。基本上注意到上述几点,借助AD6,我们就可以将AD6的原理图转化到Capture中。进一步推广,这也为现有的AD6原理图符号库转化到Capture提供了一个途径。
导入Capture CIS之后的效果:
总之,我们在转换完成之后还需要检查一下,尽可能满足CIS的原理图设计要求。
3、Altium - AD6的PCB封装库到Cadence – PCB Editor的转换
长期使用Protel作PCB设计,我们总会积累一个庞大的经过实践检验的Protel封装库,当设计平台转换时,如何保留这个封装库总是令人头痛。这里,我们将使用Orcad Layout,和PCB Eeitor来完成这项工作。在这里,我推荐大家使用一个免费的库制作工具:Allegro 封装生成器0.08(FPM),这个软件在http://www.wendangku.net/doc/cb050721aaea998fcc220ed9.html上可以去下载。这个免费软件可以生成几千个Allegro的封装库,满足我们大部分的需要,而且这个软件还有一个优点,它的封装库命名,都是按照国际标准-IPC 7531标准命名,我们任何一个PCB设计软件,都可以参考这个命名标准。所以,我们需要转换的库只是少部分了,只有那些形状异样的,需要我们从AD6转换到PCB Editor。
注意点:Allegro的建库,还需要建焊盘,所以工作量稍大。但有一点,繁琐的工作,
是为我们的设计更严谨,不那么随意。
下图的虚线框中是Allegro封装库的一些内容:
Flash 是用在负片时候,过孔(当然包括通孔焊盘)与平面连接的形状,后缀名:*.fsm和*.dra。
Shape 是做异型焊盘用的,后缀名:*.ssm和*.dra。
上面两项是为了做一个焊盘。
通过Cadence的Cadence SPB 16.0->PCB Editor Utilities-> pad designer来设计一个*.pad。
有了pad文件,我们才可以去创建我们的封装。
*.psm和*.dra这是器件封装的后缀名。
*.bsm和*.dra这是Mechanical封装的后缀名。
*.osm和*.dra这是图框符号的后缀名。
在这里,把Cadence的封装介绍的详细点,主要是因为做设计,我们的库一定要标准,这样才能完成一个好的PCB。
AD6 to PCB Editor的封装转换步骤:
a) 在AD6中将PCB封装放置(可以一次将所有需要转换的全部放置上来)到一张空的PCB中,并将这个PCB文件用Protel PCB 2.8 ASCII的格式导出,File->Save As;
b) 使用Cadence的Orcad Layout软件,导入(import)这个Protel PCB 2.8 ASCII文件并保存(.max);
Import->Protel PCB,选择我们刚才导出的PCB文件:
c) 使用Cadence的PCB Editor将生成的Layout .max文件import为Allegro的.brd文件;
d) 在PCB Editor里,把新生成的.brd文件打开,选择顶层菜单的Tools>Padstack>Modify Design Padstack,此时会在Options标签页里面看见当前pad的名称和数量(从24.pad开始逐一增加)。逐一选择一种,点选”Edit”,激活Padstack Designer对选中的.pad进行编辑。
e) 对于表贴pad,首先查看Layers标签页,检查此Pad是否已经存在库中或可以用库中已经存在的.pad替换, 用Tools->Padstack->Replace命令去替换焊盘。如果没有,那么就需要修改:
① Parameters标签页中Type选项由”Blind/Buried”改为”Single项”;
② Unit 部份:Units 选择Mils,Decimal places 输入0,表示使用单位为mil,
小数点后没有小数,即为整数;
③ Layers标签页中,删除Top~Bottom之间除Default Internal层之外其他的所有层;调整顶层的Regular Pad、Thermal Relief(比Regular Pad大6Mil) 、Anti Pad(比Regular Pad大6Mil);Soldermask_Top层的Regular Pad(比Top层Regular Pad大6Mil);Pastemask_Top层的Regular Pad(同Top层Regular Pad),确认其他不用层的数据为”Null”;(对于表贴pad,只需要设置Top、Soldermask_Top和Pastermask_Top三层即可)
④ 按照.pad文件的命名格式对新建立的这个pad进行保存,保存在环境变量里设置的allegro识别的路径内。Setup->User Preferences;
⑤ 选择顶层菜单的Tools> Padstack>Replace,点选刚刚修改的Pad,此时在Options标签页的Old选项里面里会出现未改之前的Pad名称;再点击New选项后面的按钮,选择新建立的Pad,最后点击下方的Replace按钮,完成对此Pad的更新。
对于过孔的pad,首先查看Layers标签页,检查此Pad是否已经存在库中或可以用库中已经存在的.pad替换, 用Tools->Padstack->Replace命令去替换焊盘。如果没有,那么就需要修改:
① 确认Parameters标签页中Type选项为”Through”(或者定义为”Blind/Buried”视设计需要而定);
② Unit 部份:Units 选择Mils,Decimal places 输入0,表示使用单位为mil,小数点后没有小数,即为整数;
③ Layers标签页中,删除Top~Bottom之间除Default Internal层之外其他的所有层;调整顶层的Regular Pad、Thermal Relief(比Regular Pad大10Mil) 、Anti Pad(比Regular Pad 大10Mil);复制Top层信息并且Copy to all ,即可设定Top、Default Internal和Bottom这3层;调整Soldermask_Top层的Regular Pad(比Top层Regular Pad大6Mil)并复制到Soldermask_Bottom层;(对于过孔pad,不需要设置Pastermask_Top层)
④ 按照.pad文件的命名格式对新建立的这个pad进行保存,保存在环境变量里面设置的allegro识别的路径内;
⑤ 选择顶层菜单的Tools> Padstack>Replace,点选刚刚修改的Pad,此时在Options标签页的Old选项里面里会出现未改之前的Pad名称;再点击New选项后面的按钮,选择新建立的Pad,最后点击下方的Replace按钮,完成对此Pad的更新。
f) 按照上面(e)项的方式将所有pad替换完成;
注:由于PCB Editor每生成一次库文件的时候,其.pad文件的名称都是从24.pad开始依次增加直至所有的pad输出完毕。如果进行2次或多次库文件生成操作,后面的操作产生的.pad 文件(从24.pad开始的)会覆盖前面的.pad文件从而导致在调用前面生成的库文件.dra时出现焊盘被更换的情况,所以在导出之后需要从.dra文件中重新建立.pad文件并将.dra中的pad用新生成的.pad文件replace才能保证库的正确使用!在这里我建议大家还是安装IPC标准为我们的焊盘命名,保证各个EDA工具统一,也保证我们设计团队的统一。
g) 接下来,我们使用PCB Editor的Export->libraries功能将封装库*.dra、*.psm等,焊盘
库*.pad输出出来,再经过h)操作,将ref等加上就完成了AD6封装库到PCB Editor转化;
h) A D6中的”Designator”转换为PCB Editor里Components 下Ref Des的Silkscreen_Top和Display_Top这2层;”Comment”转换为Geometry下Part Geometry的Silkscreen_Top和Display_Top这2层。此时将2个”Designator”与2个”Comment”删除(如果没有,不关注它),并在Ref Des的Silkscreen_Top层添加”REF”,在Device Type的Silkscreen_Top层添加”DEV”;
重点说明:位号REF必须是手动添加,软件转换的时候,这个属性丢失。
i) File>Save as按照元器件命名规则生成*.dra文件并保存至allegro元件库目录下;
j) File>Create Symbol生成*.psm文件并保存至*.dra的同一目录下。
至此AD6元器件导入PCB Editor的过程全部结束,在PCB Editor里面可以对新生成的库文件进行调用。在PCB Editor中通过*.pad文件组织*.dra文件,通过*.dra文件生成*.psm 等文件后才能对元器件进行调用,所以在元件的使用过程中要注意各个部分的对应关系避免出现*.pad的错误调用等不匹配现象的发生。
注意:库转换过程中,器件的原点不要去修改,如果修改,后面导入位置信息的时候,器件就会不在原来的位置。
4、AD6的PCB设计文件到PCB Editor中的转换
有了前面两步转换原理图和PCB封装库,我们可以进行AD6到PCB Editor的PCB转换了。这个转化过程更确切的说是一个设计重现过程,我们将在PCB Editor中重现AD6的PCB的布局和布线。
当然前面说过了可以从AD6另存为Protel PCB 2.8 ASCII的格式的PCB,然后从ORCAD Layout中Import这个PCB,save成一个*.max文件,再从PCB Editor中Import生成的*.max,存成一个*.brd文件。但这种方法转换的PCB不能和原理图(CIS原理图)同步,所以意义不是很大。
1传网表
把转换好的原理图(添加了封装信息之后的原理图),生成PCB Editor格式的网表传递到*.brd文件中。
这个过程主要是把我们的封装信息和网络信息以网表的形式传递给PCB软件。生成一个brd文件。
2重现布局
第一种方式
在AD6中输出Place & Pick文件,这个文件中包含了完整的器件位置,旋转角度和放置层的信息。输出格式用text格式,单位用imperial;
输出生成的Pick Place for xxx.txt文件,把有用的信息提取,生成一个cadence的PCB Editor软件认识的位置信息文件(如:place_txt.txt);
其中位号、X轴、Y轴、旋转角度、器件放置是top层还是bottom层,都可以从AD6输出的文件Pick Place for xxx.txt中提取,器件放在top不需要添加信息,放botoom层需要添加“m”。这些操作都可以通过UltraEdit来进行。封装名称由于AD6和PCB Editor中命名不同,我们可以通过批量替换的方式去替换,这个需要我们建立一张封装对应表格。
在这里,我用一个批量替换的软件,可以来做这个批量替换的工作。节省我们修改封装名称的时间。
我们通过修改,生成为PCB Editor能读入的Place_txt.txt文件(位置信息文件)。刚才从CIS导入网表后,生成的brd文件中,导入这个Place_txt.txt文件,我们就可以得到布局了。这步导入的时候,必须保证库是正确。
注意:这里需要保证我们的AD6中和PCB Editor中的库坐标原点是一致的。
在PCB Editor中导入位置信息文件Place_txt.txt。会把器件摆放到相对应的位置。
导入后,器件会自动摆放到相应的和AD6对应的位置。至于板卡的外框,可以通过AD6输出DXF格式,在PCB Editor中导入DXF,来直接引用,也可以重新画。保存为一个brd 文件,如:max.brd。
第二种方式
这种方式要建立在你能够顺利把PCB文件转换到PCB Editor中。
1.在ad6.8里打开一个PCB图后点文件- 另存为-protel pcb
2.8 ASCII 文件
2.点开始--所有程序---cadence spb16.0----Layout plus 启动ORCAD16.0
3.在orcad16.0点File---Import---protel pcb打开的对话框里的Input protel pcb后面点Browse 找到刚才在Protel里输出的文件点确定
就会在你输出protel pcb 2.8 ascll 的文件目录下生成一个相应MAX文件
4.启动SPB16.0 PCB Editor
点File---Import----orcad layout---找到刚才MAX文件
5.输出坐标文件,上面这些步骤,主要是得到我们的布局位置信息,也就是器件的坐标文件Place_txt.txt,得到这个文件之后,还是要象第一种方式一样,要去替换相应封装。
第三种方式
看重现布线章节。从AD6中输出DSN,PCB Router导入板卡。
在PCB Router中的Report->Specify->Placement:
得到:
把这个文件修改成符合Place_txt.txt文件格式的文本文件,然后在PCB Editor导入Place_txt.txt,完成PCB的布局。
注意:这里需要保证我们的AD6中和PCB Editor中的库坐标原点是一致的。
在PCB Editor中导入位置信息文件Place_txt.txt。会把器件摆放到相对应的位置。
导入AD6板卡的外框--通过DXF文件
在AD6软件中,我们打开PCB,save as我们的PCB文件
保存为DXF文件。
注意:存成DXF格式,然后单位一定要是Imperial,如果是存成米为单位,在PCB Editor 中,没有对应的尺寸,到时候不好转换。
在PCB Editor中,我们导入DXF文件之前,我们需要设计参数。
新建一个brd文件,这个时候设置参数:主要是与AD6输出的时候单位一致。
在PCB Editor中,file->import->dxf:
注意尺寸是INCH,导入AD6输出的DXF文件,编辑层对应。
选择我们需要的外框对应的层,与PCB Editor中的层去对应。对应到board geometry的outline。
导入后,接着输出sub-drawing。在file->export->sub-drawing,然后,用鼠标框选我们需要的外框,输入原点坐标,比如输入:x 0 0。也可以直接点击板卡的左下角,确定原点坐标,弹出一个对话框,存好sub-drawing文件。
重新打开开始我们存好的max.brd文件。
导入有外框的sub-drawing文件。
File->import->sub-drawing,导入刚才存的standard.clp文件。
这时候,外框就导入到我们的brd文件中,把外框放置与AD6文件一致的位置。
3重现布线
布线信息的恢复,要使用PCB Router(CCT)作为桥梁。首先,从AD6中输出包含布线信息的PCB Router(CCT) DSN文件。
AD6中File->Save as 存成一个Specctra Design File(*.dsn)文件。
对于这个DSN文件我们要注意以下2点:
a)AD6中的层命名与Allegro中有所区别,要注意使用文本编辑器(UltraEdit)作适当的批量替换,例如AD6中顶层底层分别为Toplayer和Bottomlayer,而在Allegro中这两层曾称为TOP和BOTTOM;当然其他布线层也要和brd中的层名称对应。
b)注意在*.dsn文件中查看过孔的定义,并添加到Allegro的规则中。
这里的Via0_TB_RoutingVias需要替换为PCB Editor中对应的过孔名称,如下面例子:VIA。
Editor中设置过孔类型:
PCB
manager,在Physical项中;
Setup->Constraints->Constraint
这两点关系到后面的brd文件是否能导入布线文件,很关键。
打开Cadence的PCB Router软件,导入*.dsn文件;
打开DSN文件,我们看到布线好的pcb,输出布线文件,如:max.rte。
打开PCB Editor软件,打开刚才前面布局好的max.brd文件。从PCB Editor中,进入PCB Router(cct)软件。
在CCT中,导入布线文件。
导入完成,退出PCB Router(CCT),会询问是否保存布线文件。
这时,退回到PCB Editor界面,如果布线显示,则OK了。如果没有走线信息,需要我们导入刚才保存的max.ses文件。
File->Import->Router;选择max.ses文件,导入PCB文件,生成max.brd文件。
至此,我们完成了从AD6导入Cadence平台的转换。
如果您有好的设计小技巧,或者有疑问,请编写文档发给我。周曙光 zhoushg@http://www.wendangku.net/doc/cb050721aaea998fcc220ed9.html 我有好的文档,会及时给您发过来。