PCB布局布线中的参数约束技巧
时间:08-12-12 点击:
随着PCB设计领域对密度、时钟及串扰的要求越来越高,PCB上关键性节点数量以及每个节点的约束条件也在增加。
这些约束条件主要是由于参数相关性以及设计要求越来越复杂而产生的,例如两条走线的间隔可能取决于一个和节点电压及线路板材料都有关的函数,数字IC上升时间减小对高时钟速度和低时钟速度的设计都会产生影响,由于脉冲产生更快而使建立及保持时间更短,另外互连延时作为高速电路设计总延时的重要部分对低速设计也同样非常重要等等。
如果电路板能设计得更大一点,上面有些问题就比较容易解决,但现在的发展趋势却正好相反。由于在互连延时及高密度封装上的要求,电路板正在不断变小,从而出现了高密度电路设计,同时还必须遵循小型化设计规则。上升时间减小再加上这些小型化设计规则,使串扰噪声问题变得越来越突出,而球栅格阵列和其它高密度封装本身也会加重串扰、开关噪声及地线反弹等问题。
固定约束存在的限制
对付这些问题的传统做法是凭经验、缺省值、数表或计算方法将电气和工艺要求转化为固定的约束参数。例如工程师设计电路时也许先确定一个额定阻抗,然后根据最后的工艺要求“估算”出一个能达到所需阻抗的额定线宽,或者利用计算表格或算术程序对干扰进行测试,再求出长度约束条件。
这种方法通常需要设计出一整套经验数据作为PCB设计人员的基本指导原则,以便在用自动布局布线工具进行设计时能够利用这些数据。该方法的问题在于经验数据只是一个一般性原则,大部分情况下它们都是正确的,但有些时候却不起作用或导致错误的结果。
我们以上面确定阻抗的例子来看看这种方法可能造成的误差。和阻抗有关的因素包括电路板材料的电介质特性、铜箔高度、各层到地/电源层间的距离及线宽,由于前三个参数一般由生产工艺决定,所以设计师通常是靠线宽来控制阻抗。由于每一线路层到地或电源层的距离各不相同,因此对每一层都用同一个经验数据显然是错误的。此外在开发过程中采用的生产工艺或电路板特性可能随时会改变,所以问题还会更加复杂。
大多数时候这些问题会在样机制作阶段暴露出来,一般是找出问题后通过对线路板修补或重新进行板子设计来解决。这样做成本比较高,并且修补经常还会带来额外的问题而需要作进一步调试,最后由于延误上市时间而造成收入上的损失更是远远高于调试成本。几乎每家电子生产商都面临着这样的问题,最终都归结到传统的PCB设计软件无法跟上当前对电气性能要求的实际情况,在这一点上它不像机械设计的经验数据那么简单。
解决方案:参数化约束
目前设计软件供应商们试图通过在约束条件上增加参数的办法来解决这个问题。这种方法最先进的地方在于能够详细说明完全反映各种内部电气特性的机械指标,只要将其加入到PCB设计中,设计软件就可利用这些信息对自动布局布线工具进行控制。
当后续生产工艺改变时也不需要重新作设计,设计人员只需简单地更新工艺特性参数,即可自动改变相关约束条件。设计人员然后可以运行DRC(设计规则检查)确定新工艺是否还违反了其它设计规则,并找出应该对设计的哪些方面进行更改才能纠正所有错误。
约束条件可以用数学表达式的形式输入,包含常数、各种运算符、向量以及其它设计约束,为设计人员提供一个参数化规则驱动系统。约束条件甚至能以查表的形式输入,将它们存放在PCB或原理图的设计文件中。PCB布线、铜箔区位置及布局工具都要遵照这些条件生成的约束规则,DRC则验证整个设计是否都符合这些约束,包括线宽、间隔及空间方面的要求(如面积和高度限制)等。
一个很简单的例子是上升时间约束,一般将其设置为常数1.5ns,根据此条件就可得出最大走线长度的约束,即用5,800mil/ns乘以上升时间1.5ns。稍为复杂一点的例子是元件间隔,它通过将检测角的正切值乘以器件高度来决定,该算式可算出元件最小间隔值。
分级管理
参数化约束的一个主要的好处在于它能分级进行处理。例如全局线宽规则可作为一个设计约束用于整个设计中,当然会有个别区域或节点不能照搬这个原则,这时就可绕过高一级约束而采用分级设计中的低级约束。以ACCEL Technologies的约束条件编辑器Parametric Constraint Solver为例,共有7级约束:
1.设计约束,用于所有无其它约束的对象。
2.层级约束,用于某一层上的对象。
3.节点类型约束,用于某个类型包含的所有节点。
4.节点约束,用于某一个节点。
5.类间约束,表示两类节点之间的约束。
6.空间约束,用于某个空间内的所有器件。
7.器件约束,用于某一个器件。
该软件按照从个别器件到整个设计规则的顺序遵循各个设计约束,并用图形的方式显示出这些规则在设计中的应用次序。
·例1:线宽=f(阻抗,层间距,介电常数,铜箔高度)
这里举例说明参数化约束条件如何作为设计规则控制阻抗。如前所述,阻抗是介电常数、到最近线路层距离、铜线宽度及高度的函数,由于已确定了设计所要求的阻抗,因此可任意取这四个参数作为相关变量重新写出阻抗公式,大多数情况下设计人员能够控制的参数只有线宽。
正因为此,对线宽的约束就是阻抗、介电常数、到最近线路层距离及铜箔高度的函数。如果将该公式定义为层级约束而将制造工艺参数定义为设计级约束,那么当所设计的线路层改变时软件会自动调整线宽以进行补偿。同样道理,如果设计的线路板用另一种工艺进行生产而使铜箔高度发生了变化,则只要改变设计级里的铜箔高度参数就可使层级里的相关规则自动重新计算。
·例2:器件间隔=max(默认间隔,f(器件高度,检测角度))
同时使用参数约束和设计规则检查显而易见的好处是当设计修改时,参数化方法具有很好的可移植性和可监测性。本例表明如何由工艺特性及测试要求来决定器件间隔,上面的公式表示器件间隔是器件高度和检测角度的函数。
通常检测角度对整块板都是一个常数,所以可在设计级进行定义。当改由不同的机器进行检测时,只需在设计级中输入新的值即可更新整个设计。将新机器性能参数输入之后,设计人员只要简单地运行一下DRC以检查器件间隔是否与新的间隔值有冲突,即可知道设计是否可行,这要比先分析再改正然后按新间隔要求硬性计算容易得多。
·例3:元器件布局
除了对设计对象和约束条件进行组织,设计规则还可用于元器件布局,也即它能够根据约束条件检测出在哪里放置器件不会带来错误。图1中突出显示的部分是满足物理约束条件(如与板边沿间隔及器件间隔等)的器件放置区域,图2突出显示的是满足电性约束的器件放置区域,如最大走线长度,图3仅显示满足空间约束的区域,最后,图4是前3幅图中各部分的交集,这就是有效布局区域,在这个区域放置的器件可以满足所有约束条件。
事实上用模块化方式生成约束条件可极大提高其可维护性和可复用性。参考前一阶段不同层的约束参数可生成新表达式,如顶层线宽取决于顶层的距离和铜线高度及设计级中的变量Temp和Diel_Const。请注意设计规则是按由低到高的顺序显示的,改变一个高一级约束会立刻影响参考这个约束的所有表达式。