在psd中,强调先确定器件的物理封装,然后再画原理图封装,然后绘制原理图,最后绘制PCB图。这是很重要的一点,贯穿整个设计过程。当然也可以先建立原理图封装,然后将原理图封装和物理封装通过在attribute…中添加jedec type属性的办法联系起来。
在这个软件包中,原理图绘制工具是Concept-HDL,这是psd中自带的原理图工具,和Allegro的接口应该是最好的,但是由于Orcad被Cadence公司收购,相信Orcad也是值得期待的。
开始做原理图封装。
第一步,得到物理封装的准确尺寸,建立焊盘文件.pad,这里就要涉及到负片,正片和Flash,Thermal-Pad和Anti-pad的概念,这个由专门的参考资料。
打开工具包中的pad designer,这是一个制作焊盘的工具,主要界面如下两图所示
through:表示这个焊盘是带钻孔的。
blind/buried:表示使用的是埋孔。
single:表示这个焊盘是贴面型的,没有钻孔。
Fixed表示内部的各层是固定的一旦定义了就不能改变了。
Optional表示内部的层是可以选择的,这个便于以后对各层的调整,而且不用详细的定义这是什么层,只要设定好一个Default internal层就可以随意的添减内部的层。
在定义焊盘的时候,可以只定义三层,即top层,default internal层和bottom层,而对这三层的定义都加上Flash和anti-pad,可以使得这个焊盘可以通用,无论这个焊盘连接的是内部的那两层都可以使用。Flash可以在Allegro中选择add然后输入参数来建立,只要文件只要文件后缀名定为.fsm,然后存到cadence\share\pcb\pcb_lib\symbol目录下,这样才能在pad designer中看到这个Flash文件。但是要注意的是因为钻孔存在3mil的误差,所以flash的内径要比钻孔大10-20mil,以防止钻孔时钻断。在15.0以前的Allegro版本的Flash在编辑完成后是不能再看到的,但是在psd15.1中,就算你没有将文件后缀定为.fsm直接是.dra后缀也没有关系,都可以在Allegro中看到。Anti-pad的尺寸只要校钻孔大一定数量就可以了。在做完了这些设置后,将焊盘文件存盘,存到和Flash同样的目录下。
第二步,打开Allegro,new—>package symbol(wizard)这是由向导帮助的物理封装工具,如图所示:
可以看到这个向导可以制作很多类型的封装。按照提示可以很方便的完成。完成后,一定将文件保存到cadence\share\pcb\pcb_lib中。
关于怎么用package symbol(wizard)做封装可以参考有关的资料。有一个资料很好,叫Cadence_Allegro简易中文手册。手动制作封装也十分的方便,但是在这个文档里面没有说明。这些路径并非一定要如此,.dra,.fsm,和.brd文件的路径都可以在Allegro的User preference中设置。
第三步,根据物理封装制作原理图封装。使用原理图封装工具part developer,但是在开始->程序中没有快捷方式,在\cadence\doc\pdv_tut\tutorial_data\library_project目录下,有引导程序tutorial_project.cpm,双击后进入如下界面。假设物理封装的名称叫test.dra。
选择part developer就可以进入编辑窗口。新建器件,输入器件名称,然后右键点packages,选择new就生成新的封装文件,都会出现在引导程序所在的目录下的my_lib文件夹中,每个器件的原理图封装一个文件夹。在选择new之后,比如定义原理图封装名为ts101_bga,在general标签上的Jedec Type选项中选中上面做好的那个物理封装test.dra(这儿看不到后缀名),这是很关键的一步,一定要指定好,这个原理图封装就由这儿直接映射到物理封装。然后,在package pin标签上选择pins->add,就可以添加所需的管脚,同时可以指定管脚的一些特性。如果要将一个器件的管脚分开来放在几个不同的原理图封装上,点functions/slots按钮,如下图所示Edit Functions窗口:
在split_inst_group中输入1,然后选择add。出现如下窗口:
输入所要添加的slot的数量,然后在Edit Functions窗口中点击Distribute Pins按钮,进入Distribute Pins窗口:
可以方便的将相应的管脚分配到某一个Slot中。分配完成,OK确认。
然后,在package pins标签上,选中Footprint->extract from footprint这样,可以直接从刚才在Jedec Type选中的物理封装中提取管脚的编号,如图示:
然后,在主窗口中分配管脚,将相应的管脚填入前面定义的slot中,如果管脚名或者管脚号有重复,这一栏就会变红,提示你有错误,这样出现重复或者遗漏的可能就大大的减小了。如果在这一slot中没有分配管脚,系统就会自动的添加“-”。有些资料上介绍的将电源和地层定义成global pins但是我没有试过,可能这样做了之后在Specctra(简称CC)中就看不到“gnd网络涉及的管脚数太多,建议将gnd定义为一个层”这样的提示了。下次试一下!
存盘,这个原理图封装文件就保存到了,引导文件所在目录下的my_lib目录下。找到\cadence\share\library文件夹,在这儿新建一个你的器件文件夹,比如定义为ts101,然后用记事本打开cds.lib,在这个文件中添加如下格式的语句DEFINE ts101 ./ts101,这样就可以在库里表中看到你定义的库文件夹ts101。然后将ts101_bga从my_lib目录下拷贝到这个\cadence\share\library\ts101文件夹中,同样要把要用的原理图封装都放到这个文件夹中,这样才可以在Concept-HDL中看到所需器件文件夹以及里面的原理图封装,如图所示:
到这儿,我们已经将一个器件的物理封装和原理图封装都做好了。接下来,就是利用Concept-HDL绘制原理图。利用Concept-HDL绘制原理图
打开Project Manager,选择concept HDL expert出现以下界面:
选择create Design Project,设定好必要的值,就创建好了一个工程。
进入原理图绘制环境,熟悉窗口和键盘操作后就可以绘制原理图了。这儿有一点值得注意:在psd工具包中原有的原理库图并不能直接和其中的物理封装很好的连接,也就是说,如果你使用了库里本来就有的器件原理图封装,你在试图向Allegro中转换的时候,是不能看到这个器件的物理封装的。这是由于原理图封装的Jedec Type找不到。但是有办法使原理图封装和物理封装相联系,只要将在library中所需的库拷贝到引导程序所在的my_lib目录下,然后用引导程序打开,将general标签中的Jedec Type属性改成我们自己所作的物理封装的.dra文件,然后存盘,再拷贝到library目录下我们自建的文件夹下面,这样这个器件的原理图封装和物理封装就都可以使用了。
使用Concept-HDL刚开始感觉不是很好用,但是在用了一段时间后会发现,它还是有自己独特的优点的,主要是可以用命令行来简化很多本来复杂的操作,鼠标的操作都要在选择了操作之后才可以对原理图有作用,这就避免了由于鼠标的误操作导致不经意的错误。
在每次保存的时候,Concept-HDL会自动地对页面查错,双击错误提示可以直接跳到发生错误的地方,很方便。除此之外,Concept-HDL有很多的工具可以使用,其中Check Plus是一个很好的差错工具。
从原理图到PCB图。在检查了原理图没有错误后,就可以向Allegro中导,File->Export Physical,出现以下窗口:
这个窗口可以先对原理图的进行封装,然后向PCB图中传送。Input Board和Output Board可以不一样。这样的倒有一个缺点:在向Allegro倒入之后,.brd文件就自动的保存,这样的话,如果原理图在改动后没有错误,但是改变了原来PCB图中已经画好了的线会产生DRC错误。而这个DRC错误,如果不是很明显的话,比较难发现,但是用Report可以很快的找到。但是由于现在的Allegro还没有返回功能,所以如果有错的话,会比较麻烦。
进入Allegro。
Allegro有自己独特的界面,但是这个界面使用起来十分的方便。
在Allegro中可以鼠标和键盘配合起来走线,走线十分的舒服。放大缩小分别为F10和F11,方向键可以移动窗口。小技巧,按住shift键,同时拖动鼠标右键可以在窗口中随意移动。如果是3D鼠标,按住滚轮就可以随意移动。
Allgero有一个独特的优点就是,鼠标在无命令的状态下是不能对图中的任何走线或者器件做操作的,必须在选择了某一个命令之后才可以。这样不会在无意间改动了布线。
Allegro中对颜色的管理一直影响到以后的铺铜和出片。选择快捷菜单中的 打开如下图所示的颜色管理器。在颜色管理器中可以将某一层颜色关闭或是更换,而且可以在选择了移动或者旋转操作时,将器件的文字,或者outline,或者RefDes关闭,这样这个操作就只是对现在界面上留下的选项的操作,即可以单独的将文字移动或翻转。这在调整的时候很有用。
选择高亮快捷键 ,右侧的option,find菜单有了变化。在option菜单中选择一种颜色可使在find中选中的net,component或者pin变成需要的颜色,这样便于寻找和校对。选择 ,可以有选择的关闭某些高亮。
走线选择 ,双击左键自动添加过孔,在右侧的option可以选择过孔打在那两层之间,也就是双击后当前走线自动切换成你选择的某一层的走线。Act是当前走线所在的层,Alt是双击后走线的层。
在这个options菜单中可以选择是走直线还是弧线,如果是直线可以指定走线规则是45度,90度或者任意角度走线。可以选择线宽。
在布线之前必须定义这个班子的层数以及其他一些参数,单击快捷键 ,对板子层的参数进行设置。其中plane用在地层和电源层。
在这儿将涉及到正片和负片的概念,有相关文档可以参考。总之,负片就是反过来显示的片子,在出片的时候看到有颜色的部分是要切割掉的,而黑色的是不切割的留下的铜箔。而正片就是所见即所得的片子,有颜色的就是铜箔,黑色的就是切割掉的部分。在负片上连接用的是花焊盘,同样有颜色的是挖去的部分,而黑色的是铜箔部分。在正片上连接用的是完全连接的焊盘,没有挖去的部分。在定义via或者带有过孔的pin的时候,要注意要定义flash。
如何定义过孔也有相应的文档,需要注意的是:flash的内径需要比过孔大10-20mils,因为在钻孔的时候有3mil的误差,如果将flash的内径设置成和钻孔一样的大小,那么可能在钻孔的时候钻孔打偏,可能造成不联通。定义阻焊层soldermask层的时候要注意,soldermask要比pad大6mil;而pastermask是硬焊盘,这在BGA,TQFP等贴面元件焊接的时候涂锡膏的设置层,要求和焊盘的大小一致就可以了。
在设置完层后,要定义走线规则。
整板的走线规则是这样规定的,setup->constrains…出现如下菜单:
打开在线DRC,可以在布线的时候动态的显示DRC错误。
点击set standard values…可以对对应的层设置走线规则,可以设置各个需要的安全间距。这儿设置是整个板子的距离规则。
在Extended Design rules中选择set values…可以定义某一个特定用途的走线宽度或者间距。
点击Add,然后输入名称,然后就可以在下面改变安全距离的设置。在这样设置了以后,在走线的时候在option菜单中除了会出现default的线宽外,还会出现在这儿添加的那个线宽定义。比如电源线的定义。开始放置器件。
在从Concept中导入的器件,在place里面排队等候。可以选择手动放置器件,也可以自动放置器件。我只用了手动放置器件,点击manual…手动放置器件。
首先在Advance Setting中钩上library选项。
然后在placement list中钩上所有的器件。这是鼠标上就已经有相应的器件,可以连续放置。
在出片的时候,出现了一些问题。一开始,因为我这个板子设计成四层信号,一层电源以及一层地,分别将其定义如下:TOP层,走线层;GND层,地层;SIG1层,信号一层;SIG2层,信号二层;VCC层,电源层;BOTTOM层,底层走线层。但是后来由于发现如果将电源放在同一层上的话,为DSP内核供电的线太细了,不能提供足够的供电能力,所以将SIG2层改为VCC1层,而将VCC层改为VCC2层,但是问题随之而来,我在出片时,发现在manufacture->artwork…之后,我看到如下窗口:
即在available film中出现的仍然是原来层的设置,将sig2,vcc右键cut删除,然后添加新的层vcc1,vcc2,然后再将vcc1和vcc2中的属性删除,只留下和这个层的名称有相同后缀的pin,etch,和via class属性。但是如果钩选check database before artwork的话,就会出现数据库错误。(现在尚不知道原因)。
如果将undefined… 的宽度定为10mil的话,就没有错误,但是如果将其定为6mil的话,那就有错。不知道为什么?
一般的过孔,焊盘要添加soldermask_top和soldermask_bottom属性,如果是SMD元件的焊盘只要添加top层的属性。
BGA的焊盘要添加pastemask_top属性,但是不要添加pastemask_bottom属性。TQFP封装的焊盘也要添加pastermask_top属性首先,要确定要出哪些片,以及在某一片上需要添加哪些属性。
走线层(包括电源和地)一般应该包括的属性有:
(以top层为例)
via class/top
pin/top
etch/top
drawing format/outline
drawing format/title_block
drawing format/title_data
board geometry/outline
如果是负片还要添加anti etch。对于地层和电源层,我觉得只要你出的片满足要求就可以了,是否添加anti etch无所谓。
丝印层要添加的属性有:(同样以top层为例)
via class/soldermask_top
pin/soldermask_top
package geometry/soldermask_top
drawing format/outline
drawing format/title_block
drawing format/title_data
board geometry/outline
board geometry/soldermask_top
pastemask层(硬焊盘层,SMD元件表面贴装时要根据这一层涂锡膏)应该添加的属性有:(top层为例)
pin/pastemask_top
drawing format/title_block
drawing format/title_data
drawing format/outline
board geometry/outline
board geometry/pastemask_top(在PSD151.1中没有)
丝印层(silk)应该添加的属性有:(top层为例)
ref_des/silkscreen_top
drawing format/outline
drawing format/title_block
drawing format/title_data
board geometry/outline
board geometry/silkscreen_top
添加的方法可以使用颜色管理器,将所需要的属性打开,而关闭其他不需要的属性。是窗口中只留下需要的属性的颜色。
然后在manufacture->Artwork…中创建欲出片的文件夹。如上述原因可能在定义了层之后修改过,这里面原有的文件夹的名称以及里面的内容可能就和现在的设置存在不同,所以可以重新建立文件夹。然后右键选择match display,那么软件就可以自动的从窗口中提取属性,就是刚才打开的属性。如此可以添加所要出的所有片的属性。
添加完属性就要生成镜头文件。同样在manufacture->Artwork…中点击窗口下方的Apertures…打开如左图所示的镜头对话框。点击Edit,然后软件会自动的建立镜头数据。在Auto中选择With Rotation,然后确定。
确定后,在当前.brd文件的目录下,会出现一个art_param.txt和一个art_aper.txt文件,这两个是镜头参数文件。虽然在送加工的时候不要求,但是没有这两个文件不能生成.art文件。
有了镜头文件就可以生成.art文件了。在film control菜单中选择你需要出的片,然后在general parameters中选择出片的格式,一般选择RS274X格式,但是一定要将format(数据格式)中的integer place改成3,而将decimal place改成5。因为可能在加工的时候读取会精度缺失而报错。其他的按照默认值。然后回到film control菜单中,点击Create Artwork,刚才选的层的.art文件就会出现在当前.brd文件所在的目录下。
生成钻孔文件。钻孔文件是一个.txt文件,里面记录的是钻孔的大小和坐标。先将颜色管理器全部关掉all invisible,然后打开top和bottom的via和pin,还有board geometry的outline,manufacturing中的Ncdrill_Legend和Ncdrill_Figure打开,然后在manufacture->NC->drill legend:
全部使用默认值,OK后在窗口中就出现钻头表,其中显示了钻头的尺寸以及数量,还有是否灌锡(plated表示灌锡即导通,而non-plated表示不灌锡,不导通)。
其中的figure是在pad designer中定义的,可以选择形状和尺寸。这些形状的figure可以显示在胶片上,但是只作为识别用,并不能指示钻孔的位置,钻孔的位置要靠钻孔文件来确定。
到此,出片工作完成。加工厂只要求gerber文件和钻孔文件。注意在每次重新出片的时候要把上次的.art文件,镜头文件,钻孔文件删除在重新出片。因为重复出片会产生很多的日志文件。
察看出的片。新建一个.brd文件,然后file->import->Artwork…选择
在刚才出片的目录下的.art文件就可以了。
如何使用package symbol制作较为复杂的封装。
因为用wizard做的封装比较单一而且没有相关的注释说明。比如二极管的箭头符号等。可以从别人做的板子的文件里榨到自己需要的,以及值得学习的封装。File->export->library...
set->user preferences里面的有关的用户自定义的一些路径和方便的操作等。
一些文件后缀名的说明,比如,.dra,.psm,.brd,.art,.cpm。
.dra:做的物理封装的后缀名。但是生成flash之后也可以保存成.psm.dra后缀的,这样的flash是可以在Allegro中打开的,如果只存成.psm文件,那在Allegro中不能打开。
.psm:flash的后缀名。
.brd:是PCB板的后缀名。机械尺寸mechanical symbols也是这种后缀。
.art:出片文件的后缀名。钻孔文件是一个.txt文件,里面写的是钻孔的尺寸以及坐标。
.cpm:Concept HDL的原理图的后缀名。
Psd15.1有专门的差分走线的功能,
使用report可以快速的找到,文件中DRC错误,没有联接的飞线。
存在的问题:
1,好像是可以在pcb文件中直接替换掉某一个器件的封装的,但是
现在我忘了。
2,铺铜键怎么快速有效的使用,为什么每次使用挖空快捷键的时候
总是不能如愿的将指定的铜箔挖去。
注意点:
1.在每次铺铜后,要update shape一下,因为如果没有update的话,图上的shape之间的间隔以及via与shape之间的间隔就会消失,一定要update shape。
2.可以在线改变焊盘以及过孔的尺寸,并随后检查DRC,tools->padstack->modify design padstack,然后选中某一个需要改变的焊盘或者过孔,右键选择edit或者在右侧option菜单中选择edit就可以。
3.如何改变through pins,SMD pins,via到shape之间的间隔。在铺铜之后,点白色箭头(shape select)选中某一个shape,右键parameters,其中的shape fill可以选择用网格状的(xhatch)铜箔还是完整的(solid)铜箔。Void control中可以设置是否将相邻在一定距离内的anti pad连起来。在clearances中可以设置shape与through pins,SMD pins,以及via之间的间隔。前面的DRC表示距离区满足DRC的最小距离,与你在set constrains中的设置一样。在thermal relief connects中设置在本层和shape连接的pin和via的连接方式,选择full contact,焊盘或者过孔可以与铜箔全连接,这样就可以在铺设电源的时候用铜箔代替很宽的走线。
4.在铺好了铜之后还是可以在里面用add shape void 来挖去一部分的,然后不要忘了update shape。不然是看不到有铜箔被挖去的。
尚没有用到的功能:
1.SPECCTRA基于图形的高速自动布线。
2.使用SPECCTRAQuest对PCB做信号完整性分析需要从芯片厂家下载或者自己建立IBIS模型。有一定的挑战性。
3.使用PSD15.1自带的差分走线工具走差分线。logic里面的选项很有用。
4.SigXplorer。在东大胡劲松的论文中提到了用这个做信号分析,可以学学,但是资料好像很少。