时延是深亚微米(DSM)设计中产生收敛性问题的关键。本文将介绍在EDA设计中时延的产生以及开放库应用程序接口(OLA)的作用,OLA可以为所有的EDA工具提供精确的时延信息,并有助于解决信号完整性问题。
如果设计工程师采用基于“最低可靠性”的时延估算模型工具,在深亚微米(DSM)设计中将产生收敛性问题。这些模型有两个目的:1. 确保设计仿真快速运行;2. 在EDA软件工具之中用来表征每一个硬件连接的时延信息。
硬件设计进度时间长短以及硬件设计周期反复次数(衡量设计过程的效率)主要由实际的情况决定。这话听起来有点难于理解,但是仔细想想是有道理的。对实际情况进行最终测量既真实又模型化,这对于设计时序和每一个EDA工具的每个输出交付来说都是必须的。解决DSM收敛性问题的唯一办法是在设计过程的每一个阶段都设置保护段,从而确保约束条件比实际生产所必需的更严格,并采用最好的EDA工具集。设计工程师只关心IC能否准确地工作,因此采取怎样的方式来计算时延并向设计工程师提供真实的结果将是一个问题。具有过渡保护段的设计工具之间的一致性并不是解决这个问题的办法,特别是当它给设计工程师的结果不正确的时候。
同时,另外一个问题是如何构建一个框架,在这种框架下EDA工具商能独立于面向不同λ规则技术的时延计算公式,采用相同的工具结构。OLA提供实现这种要求的可能方法。OLA是一种标准,它能提供准确的时延信息并且为EDA工具提供一种准确的库格式,而且这种方法是可行的。更深入了解,OLA还代表以下几点:1. 开放性。一个唯一的库格式对于每个工具来说都是有利的。2. 库仍然用综合工具来选择驱动单元,而仿真工具则通过访问调用来得到时延。3.在应用程序接口(API)内将时延、功率和信号完整性算法集成在一起。当一些重要的参数已知时,可以根据这些参数计算出实际的时延。这种计算方法接近仿真器的结果并允许加入信号完整性算法。EDA工具使用OLA中的这种算法是库供应商提供的一个选项。
时延问题
EDA工具业界普遍都采用分段线性的方法来解决数字时延计算的问题,但是随着几何尺寸进一步变小就需要一种新的算法,目前的工艺水平在0.18微米左右,考虑信号完整性问题时,还需要其它的算法。EDA业界普遍采取从一个编译好的库模型中的查寻表来估算门时延的方法,这种最小计算时间策略需要得到改进。
基本的EDA设计工具结构是将采用特定信息格式表示的设计与目标加工工艺单元库之间的电子描述分开,后者由综合工具和仿真工具而生成,并且以库信息格式的方式来表示,比如Synopsys的.lib格式。布尔逻辑规范的形式、寄存器、总线连接以及时钟树构成了这些设计信息格式。TTL数据手册制造单元的工艺信息组成了该库的信息格式,其中包括两个主要的部分:硅片供应商提供的门(两输入和四输入的与非门,而不是三输入和五输入的与非门)和寄存器(具有同步复位的D触发器),还有时延和驱动信息。
硅片行业曾经探讨为每一个EDA工具提供不同格式的库信息数据库的必要性问题。每一个EDA厂商都提出了各自特有的格式,而且每一个EDA厂商对于构成一个工艺参数也都有各自想法。基于Synopsys的.lib格式的标准化有助于解决这种不一致问题。然而,布局布线后计算驱动门上负载的有效电容和互联时延以及信号变化时,.lib格式对于每一个工具中不同的时延计算器(分析引擎)会产生不一致问题。
今天EDA工具业界必须决定选用哪种时延算法。以前,我们认为逻辑门才会产生传输时延而连接线不会。现在看来这很明显是不正确的,但这种思想在以前并没有引发什么问题,但是连接线和相连的逻辑门输入增加了门电路电容。人们通过在门时延的查找表模型中加入表征连线时延的第二分量,有效地解决了线时延的问题。仿真器通过设计信息知道有关连接的情况,而EDA工具执行传输单元时延的库信息格式查表。我们要求每一个工具供应商通过使用SDF文件增加某些类似于连线时延这样的信息从而加强工具的一致性。我们使用SDF文件来加强工具之间的一致性,但是准确性并没有得到增加。
随着工艺向更精细方向发展,以前的概念不再适用。问题仍然是逻辑时延分量的基本属性---从一个逻辑门沿一个信号连接线再到另一个逻辑门---随着最小解析尺寸(λ)的进一步缩减而改变。
通过倒推最基本的电子工程方程式,可以改进逻辑门时延的计算以及信号完整性问题。逻辑门由晶体管组成,信号连接线由电阻和电容组成并且连接到负载,而负载具有一定的电容。SPICE模型较好地定义了这种实际情况:
=====================================
T = RC Ln((Vss-Vi)/(Vss/Vf))
T = RC Ln((Vss-Vi)/(Vss/Vf))
R=传输门和连线电阻
C=逻辑门、负载和连线电容
Vss=稳态电源电压
Vi=完成初始化条件下负载门电压值
====================================
表1:逻辑门由晶体管组成,信号连接线由电阻和电容组成并且连接到负载,而负载具有一定的电容。
Vf=最终的负载门逻辑传输阈值电压,N沟道增强CMOS是0.2Vdd,而P沟道增强 CMOS是0.8Vdd。
上面这些情况并没有包含一些其它的实际因素,如紧凑的连接线之间存在容性和感性耦合,这样会使得Vf成为时间的函数。现在,这个问题是一个需要单独考虑的信号完整性问题。同样的,长导线在传输高速的数据时存在特征阻抗。在源端或者负载端阻抗不匹配时,电磁波会沿着信号线来回多次反射,影响接收门电路的逻辑变换。在1GHz的时钟频率下的时延是x*T而不是T,这里x是一个奇数。
将来还会有其它信号完整性方面的问题(阶梯信号的上升/下降沿)。随着工艺尺寸越来越小,以前一些可以忽略的因素开始产生很大的影响,单独处理这些问题有可能并不是一种可取的办法,.lib格式也不能适应这种新出现的情况。
OLA可以解决DSM设计中的收敛问题
用数字电路EDA仿真工具来逼近模拟仿真的实际情况具有一定困难。必须采用编译好的工艺目标单元库模型的方式来实现,以消除模拟仿真器运行时间并解决信号完整性问题。
另外, OLA可以为所有的EDA工具提供精确的库信息,而无需SDF文件(见图1)。这样,每一个工具都可以得到正确的时延和信号完整性。将来当EDA工具公司实现OLA后,设计工程师通过这样的工具可获得在±3%范围之内的准确时延信息。
而设计工程师可能会发现在设计中存在时延误差较大的问题。因此,由于RTL结构不好,设计工程师需要重新思考其设计,而且越早进入设计过程(第一个设计周期)越好。如果设计工具自动返回到综合阶段,并修正有问题的网络且不用麻烦设计工程师就更好。
尽管IC设计的进度趋向于线性分布,而实际的设计却并非如此。在设计中可能会有很多的反复,这种反复会发生在布局之后,同样也会发生在细致的布线之后。设计工程师甚至可能不得不重新定义RTL设计的要求。目前对于这种状况并没有更好的办法。由于设计反复的次数越多,最终的设计结果会更好(见图2)。
OLA特别适合这样的工作,主张设计工具执行这种反复,甚至返回到问题网络的最初的综合阶段,这种工作在工具内部实现而不用设计工程师的干预,设计工程师实际上只察觉到较少的设计反复。对于一个失败的RTL结构,OLA甚至可以返回到功能编译器级,加入在RTL失败结构中发现的一些反馈约束条件,再执行反复设计。
硬件设计中的综合工具类似于软件开发中的汇编语言工具,它能够防止人们因不能记住太多的细节而出错。OLA通过实现时序的正确分析对此进行了改进,甚至当工艺改变后仍然可行。OLA允许返回到综合阶段来解决有问题网络的结构缺陷。
在熟悉了如何规定结构和约束条件以及在更高的设计层次上进行考虑后,OLA能实现在布局后和布线后的新发现约束条件的反馈。通过使用详细布线后的反馈,OLA实现了在硬件设计中采用高级语言工具。OLA让结构层工具可以解决过去的RTL Verilog规范不能正常工作的问题,并且为设计工程师提出可能的解决方法建议。这是一个需要设计工程师手工干预的过程,对于帮助修改这种有缺陷的RTL设计来说同时也是一个新的而且较容易的过程。对于这样的问题,RTL设计综合工具不可能重新构建满足正确时序的结构。现在已经出现这种情况,这会导致设计进度更慢长,OLA实现了解决这种问题的更高效方案。
我们发现功能编译器的一些功能特点,可以采用已建立的最小设计或最快速设计。最小的设计包括:1个复杂的数字乘法器、1个乘法器、1个加法器和7个时钟;最快的设计包含:2个乘法器、2个加法器和5个时钟。
一个OLA实例
图3所示为主从式上升沿触发D触发器,其输出Q连接到一个逻辑门模块“Sarah”(为简单起见,用一个门符号表示),逻辑门模块“Sarah”的输出再连接到其它两个规范的逻辑门模块 “George”和“Harry”(为简单起见,每个逻辑门模块用一个门符号表示),Harry连接到下一级触发器的D输入端。所有的门电路有共同的时钟,为了简化,假定在时钟发生电路上没有相位变化。
不考虑第一个D触发器的建立时间和保持时间,考虑从第一个D触发器的时钟上升沿到第二个D触发器的时钟上升沿之间的时间。信号从第一个D触发器输出Q,沿连接线传到“Sarah”,再通过“Sarah”沿连接线传到“Harry”(也可考虑信号从“George”的情况),通过Harry,再到第二个D触发器。在这个传输过程中存在时延,同时还有建立时间,在满足这些时延条件下还会有多少时间余量呢? OLA的作用就是控制这种计算并利用计算信息完成下面的工作。这就是布局后处理、布线后处理和签收。
时延是通过一连串的调用和回调而得到的计算值,由堆栈类型数据结构的评估得到。应该强调的是这种回调机制在计算方式上不同于子程序调用,子程序的调用要求子程序所需的所有参数值在运行时都必须传递给子程序。如果应用程序或者库检测到某些信息会经常调用到的话,那些计算结果信息就会被存储起来,这样再需要时就不必重新计算。
EDA工具的设计中有一个基本的折衷策略,即“快速运行和得到最好的计算结果”。β测试显示出某些有趣的极端结果,出现了“OLA比SDF方式运行慢8倍”和“OLA比SDF方式运行快10倍”的测试结果,经检查都是用户使用不当造成的问题。实际情况是,时延必须在某些工具中计算。如果画一个圆圈来包括计算工具以及被修改的文件,则由于反复设计必然不能正确包容所有的情况,然后同OLA工具相应的性能进行比较,你会发现在性能方面不会有太大的差异。
标准的问题解决方法
建立一种库格式对于IC设计公司是有利的,这种库格式可以用在需要支持这种格式的所有工具中。理想情况下,同样的库在各种不同的设计流程层次上支持所有工具,包括在结构级和寄存器转移级的综合、单元选择、布局与布线以及验证。所提供的时序和功耗数据,在设计的不同阶段,不同EDA工具所使用的时序分析工具之间具有一致性,这样就减少了所需要的手工设计,因而极大地缩短了设计时间。
OLA模型中的库数据和计算程序已经过编译。它们提供对大量的宏和内核等知识产权(IP)的保护,这使得面向市场的IP设计成为可行,维护了设计的所有权。时延计算和库集成在一起,这样,就消除了不同EDA工具使用该库的过程中,时延计算算法的差异而导致的混淆和错误。库是一个可执行的模型,可以使用授权协议,比如FLEXlm()支持的使用授权,对单元、内核甚至时延或信号完整性算法的访问进行限制。
OLA方法可以解决许多重要的设计问题,如“有没有任何静态或者动态的竞争产生,或者下一个阶段的设计工具会不会插入冲突?如果这样,我们能不能将这些带回到综合阶段去解决结构方面的问题而不用麻烦设计工程师?”解决这些问题将在解决DSM设计的收敛性问题上迈出一大步。
作者:Keith Peshak
高级技术专家
Silicon Integration Initiative公司