现在在PCB设计时要考虑的因素越来越复杂,这就让设计人员要重复进行大量的布局布线、验证以及维护等工作。这样不利于有效的提高工作效率,所以参数约束编辑器能将这些参数编到公式中,协助设计人员在设计和生产过程中更好地处理这些有时甚至还会互相对立的参数。
近年来对PCB布局布线的要求越来越复杂,集成电路中晶体管数量还在按摩尔定律预计的速度不断上升,从而使得器件速度更快且每个脉冲沿上升时间缩短,同时管脚数也越来越多——常常要到500~2,000个管脚。所有这一切都会在设计PCB时带来密度、时钟以及串扰等方面的问题。
几年前,大部分PCB上只有不多的几个“关键性”节点(net),通常是指在阻抗、长度及间隙等方面受到一些约束,PCB设计人员一般先对这些走线进行手工布线,然后再用软件对整个电路作大规模自动布线。如今的PCB上常常会有5,000个甚至更多的节点,而其中50%以上都属于关键性节点。由于面临着上市时间的压力,此时采用手工布线已不可能。此外,不仅仅关键性节点的数量有所增加,每个节点的约束条件也在增加。
这些约束条件主要是由于参数相关性以及设计要求越来越复杂而产生的,例如两条走线的间隔可能取决于一个和节点电压及线路板材料都有关的函数,数字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.器件约束,用于某一个器件。
该软件按照从个别器件到整个设计规则的顺序遵循各个设计约束,并用图形的方式显示出这些规则在设计中的应用次序。
这里举例说明参数化约束条件如何作为设计规则控制阻抗。如前所述,阻抗是介电常数、到最近线路层距离、铜线宽度及高度的函数,由于已确定了设计所要求的阻抗,因此可任意取这四个参数作为相关变量重新写出阻抗公式,大多数情况下设计人员能够控制的参数只有线宽。
正因为此,对线宽的约束就是阻抗、介电常数、到最近线路层距离及铜箔高度的函数。如果将该公式定义为层级约束而将制造工艺参数定义为设计级约束,那么当所设计的线路层改变时软件会自动调整线宽以进行补偿。同样道理,如果设计的线路板用另一种工艺进行生产而使铜箔高度发生了变化,则只要改变设计级里的铜箔高度参数就可使层级里的相关规则自动重新计算。
同时使用参数约束和设计规则检查显而易见的好处是当设计修改时,参数化方法具有很好的可移植性和可监测性。本例表明如何由工艺特性及测试要求来决定器件间隔,上面的公式表示器件间隔是器件高度和检测角度的函数。
通常检测角度对整块板都是一个常数,所以可在设计级进行定义。当改由不同的机器进行检测时,只需在设计级中输入新的值即可更新整个设计。将新机器性能参数输入之后,设计人员只要简单地运行一下DRC以检查器件间隔是否与新的间隔值有冲突,即可知道设计是否可行,这要比先分析再改正然后按新间隔要求硬性计算容易得多。