ALLEGRO 约束规则设置步骤(以DDR 为例)

  • 格式:pdf
  • 大小:253.34 KB
  • 文档页数:10

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ALLEGRO约束规则设置步骤(以DDR为例)

Dyyxh@pcbtech

tzyhust@

本文是我对约束规则设置方面的一些理解,希望对新手能有所帮助。由于本人水平有限,错误之处难免,希望大家不吝赐教!

在进行高速布线时,一般都需要进行线长匹配,这时我们就需要设置好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。

类似我们设置好时钟和数据线的约束。

至此,我们设置好了线长约束规则。下面的问题就是如何应用这些规则到net上去。

设定好了Xnet以后,我们就可以在约束管理器中给这些Xnet添加约束。

这时,打开net》routing》total etch length,将右边brd名前+打开,下面则是所有的net 名,拖动鼠标选中需要设置约束的那组信号,点击右键,弹出邮件菜单,选中菜单中的ECset Reference ,见下图。

弹出对话框

选中下拉列表中的DDR_ADDR,则对刚才选中的哪些xnet添加上了DDR_ADDR约束。

类似的可以添加DDR_DATA,DDR_CLK约束。

设置Xnet主要就是给相关的电阻加上model就可以了。