ALLEGRO约束规则设置步骤(以DDR为例)Dyyxh@pcbtechtzyhust@本文是我对约束规则设置方面的一些理解,希望对新手能有所帮助.由于本人水平有限,错误之处难免,希望大家不吝赐教!在进行高速布线时,一般都需要进行线长匹配,这时我们就需要设置好constraint规则,并将这些规则分配到各类net group上.下面以ddr为例,具体说明这些约束设置的具体步骤.1. 布线要求DDR时钟: 线宽10mil,内部间距5mil,外部间距30mil,要求差分布线,必需精确匹配差分对走线误差,允许在+20mil以内DDR地址,片选及其他控制线:线宽5mil,内部间距15mil,外部间距20mil,应走成菊花链状拓扑,可比ddrclk线长1000-2500mil,绝对不能短DDR数据线,ddrdqs,ddrdm线:线宽5mil,内部间距15mil,外部间距20mil,最好在同一层布线.数据线与时钟线的线长差控制在50mil内.2. 根据上述要求,我们在allegro中设置不同的约束针对线宽(physical),我们只需要设置3个约束:DDR_CLK, DDR_ADDR,DDR_DATA设置好了上述约束之后,我们就可以将这些约束添加到net上了.点击physical rule set中的attach……,再点击右边控制面板中的more,弹出对话框如上图所示,找到ckn0和ckp0,点击apply,则弹出选中左边列表中的NET_PHYSICAL_TYPE, 在右边空格内输入DDR_CLK, 点击apply,弹出即这两个net已经添加上了NET_PHYSICAL_TYPE属性,且值为DDR_CLK. 类似的,可以将DDR数据线,数据选通线和数据屏蔽线的NET_PHYSICAL_TYPE设为DDR_DATA, DDR地址线,片选线,和其他控制线的NET_PHYSICAL_TYPE设为DDR_ADDR.上述步骤完成后,我们就要将已经设好的约束分配到这些net group上. 如下图点击assignment table……弹出对话框如下图所示,我们对不同的信号组选择各自的physical约束有人可能会问,为什么你这还有area0,area1啊这是因为你的这些约束有的地方不可能达到的,比如在bga封装的cpu内,你引线出来,线间距不可能达到30,20甚至10个mil.在这些地方,如果你也按照这个约束那么你的pcb中的drc就不可能消的掉.这时一个解决办法就是把这些地方划为一个room,然后给他加上room 属性(即为room的名字area0,1等等).针对这些room内,设定合适的约束(同上).针对线间距,由于每个都分为组内间距和组外间距,所以共有6个约束: DDR_CLK_INNER,DDR_CLK_OUTER,…………………………我们只要对这六个约束设置line to line 和line to shape就可以,分别按上述要求设置就可以了.剩下的步骤和physical中设置是一样的.不过这时assignment table变成了下面这样.下面就是设置线的等长.这个需要我们到Ecset中设置.这些高速线一般都需要端接匹配(数据线由于是双向的,两端都有匹配电阻),所以你的整个etch被分成了好几个net,这时候这些net的长度计算就比较麻烦.一种情况就是你设置XNET,然后对Xnet计算长度,我认为这是最省事也是最好的一种办法,还有就是你不管什么Xnet,分别将各段的长度加起来,算等长.注: 这个时候有个很矛盾的事情,就是你的时钟线如果想定义为来走,即让allegro自己等间距的一次拉,你就不能将之定义为Xnet,我自己用的时候是这样的,我在将时钟线对应的xnet删除后,时钟线就可以成对的拉,而之前尽管设置好了差分属性,系统也是不认的.不知道大家有没有这个经验.下面我就讲讲如何设置这些约束,并将这些约束加到对应的xnet上. 点击或setup》electrical constraint spreadsheet,弹出点击electrical constraint set》routing》total etch length,右边如上图所示出现brd名字,右键点击brd名字,弹出如下右键菜单如上图点击create ECset,则弹出输入DDR_ADDR, 点击ok,则brd名字前出现+号,打开之,可以见到设置好的DDR_ADDR.现在针对DDR_ADDR,就可以设定具体的参数了.比如,你可以将最小长度设定为1600mils, 最大长度设为2500mils.这个参数的取得其实取决于你的时钟走线拓扑,因为按照走线要求,数据线,地址线等等都是以时钟线为基准的,所以,你必须先把时钟线布好,至少以后不能做大的改动,除非你能保证时钟线走线长度不变.这里我们假设你的时钟线长为1550mil+10mils,则显然你的地址线不能短于1560mils,我们取为1600mils.同时我们也可以得到数据线的走线范围为1525+25mils.类似我们设置好时钟和数据线的约束.至此,我们设置好了线长约束规则.下面的问题就是如何应用这些规则到net上去.设定好了Xnet以后,我们就可以在约束管理器中给这些Xnet添加约束. 这时,打开net》routing》total etch length,将右边brd名前+打开,下面则是所有的net名,拖动鼠标选中需要设置约束的那组信号,点击右键,弹出邮件菜单,选中菜单中的ECset Reference ,见下图.弹出对话框选中下拉列表中的DDR_ADDR,则对刚才选中的哪些xnet添加上了DDR_ADDR约束.类似的可以添加DDR_DATA,DDR_CLK约束.设置Xnet主要就是给相关的电阻加上model就可以了.。