|
采取前端和后端协作方案的IC设计
|
Front and Back-End Teamwork in IC Design |
今天,IC设计的成功与否在很大程度上取决于其设计过程是否顺利。在这个深亚微米时代,前端和后端设计领域更加密切的结合对于先进IC的高效开发是非常关键的。不幸的是,诸如专业化和小组分工等行为将本需要统一的设计过程割裂开来。
特别地,约束条件和设计层次必须在考虑前端和后端设计任务的情况下制定。以一种考虑了市场和组织因素的联合开发的方法来推广这些约束条件和层次有助于确保各设计领域间更加友好的协作,并形成一个更加成功的设计组织。
设计人员日益发现,低估前端和后端设计规程之间的相互依存性对于产品的尽快面市是极为不利的。如果设计人员对此相倚性不闻不问,他们就会为实现定时闭合(Timing
Closure)而浪费数月宝贵的开发时间。通过对造成前端和后端设计割裂的影响力的研究,可以对此有更好的理解并采取更好的补救措施。
设计中的问题
在早期的IC设计中,由位于一地的规模很小的设计小组完成整个开发过程。ASIC工业的出现和成长带来了三个新特性:专业化使工作完成得更快;设计小组的交流变得更加结构化;参与各方获得的报酬不同。
ASIC工业在发展,而这些特性没有改变。最终,导致了专业化EDA工具的开发、更加严格的契约解除条件(Sign-off Requirements)以及参与者更加不愿意去共享解决问题的资源。
随着设计复杂程度的增加以及第三方设计工具和专业制造工厂的出现,曾经“高而瘦”的组织变得“矮而宽”。尤其是合成技术及ASIC/COTS服务的出现,明确地将后端和前端设计任务隔离开来。设计人员不仅被设计规程、同时也被地理上的、或公司间的界限分离开了。
在这些往往采用专有接口和标准复杂工具中熏陶出来的设计组织更加深陷于这种隔离方法的泥潭中。当遇到一个设计小组不能解决的共有问题时,这种高度专业化带来的问题就暴露出来了。如未能满足深亚微米设计的定时闭合要求。即便有更加复杂的工具和更加专业的设计人员,但没有人得到酬劳或被启发去证实可以用一种具有较强内在关联性的方法来解决整个设计工具领域上的问题。
解决办法的提出
通过克服这些障碍来获得一个关联性更好的设计流程是一项庞大的工作。然而,如果把注意力集中在设计方法中对流程影响最大的那些方面,则可使这项工作有所简化。统一的约束条件设定——被给予设计工具以产生期望设计结果的准则——以及设计层次的确立能够极大地推动对前端和后端设计领域之间的问题的解决。
考虑到所有这些问题,在设计开始之前,一个组织必须制定一个公共的约束条件和分层策略。该过程始于对后端、前端及参与设计的任何第三方组织的约束条件和分层需要的研究。然后,综合考虑各方的需要,并制定统一的约束条件要求和分层策略(图1)。
这样一来,不同的工作小组就能够制定流程、选择设计工具、设定约束条件并确立层次。当各方对这些决定均表示满意时,实际的设计过程便开始了。
如何制定约束条件
预先定义约束条件和分层策略能够避免许多风险。由于约束条件的不良设定造成的风险是人所熟知的。对设计的过分约束通常出现在约束条件过多或有不必要的约束条件的场合,亦或是在设计人员试图让设计工具去生成期望的结果时。不幸的是,对设计的过分约束将导致性能、功率和占用面积上的不良后果。它还会掩盖所需的正确改变,如寄存器转移电平(RTL)代码的改进。
人为地把路径约束条件制定得过于积极即为一例,合成工具有可能将其正确地视为重要路径。但如果约束条件过于严密(即小于或等于I/O延迟),合成工具就会觉得不可能再优化了,然后移至下一个时钟组(Clock
Group)去对该领域内最关键的路径进行优化(图2)。
同样,如果设计被过分约束于一个工具以产生期望的结果,则那些人为制定的约束条件有可能不适合其他工具。约束条件的不良设定导致了拖延设计周期的定时闭合问题。
约束条件的制定涉及两项主要的考虑。第一,必须尽早确定期望的结果以及实现这一结果的约束条件。合成工具应关注包含设计中定时最为严格部分的模块。
不良的约束条件设定会促使工具在整个设计中进行更加笼统的优化,因而有可能在最关键的模块中提供次优定时。对结果的进一步改善可以在设计过程中实施,但是基本目标必须及早确立。
第二个理想的目标是让合成及位置-路由工具采用相同的约束条件。否则,这两个领域有可能产生不同的结果。在许多场合,设计人员采用的是“分而治之”的合成方法,即把设计分割成许多小模块。当被引入位置-路由工具时,相同的设计就被展平了。然后,由顶级的约束条件对其进行全局优化(图3)。
位置-路由工具找到不同于合成工具的关键路径,根据不同的关键路径实施放置和路由选择优化,而后发现无法实现定时闭合,这是不足为怪的。对工具流(Tool
Flow)以及给定工具的优化和性能进行评估可以防止上述问题的发生。采用与位置-路由工具性能相同的合成工具,或把位置-路由定义为一个分层过程,都将继承与合成相同的约束条件。
如何确立层次
层次确立是实现前端与后端有效互动的另一个关键要点。层次指的是不同规程籍以运行的设计结构。在前端,功能层次是主要焦点,尽管在合成之前或合成过程中确定物理体系的一般层次正变得越来越重要。对物理信息的及早了解能够帮助合成用分组逻辑去获得更好的定时结果,并辅助设计约束条件的设定。
后端的层次包括诸如精确位置这样的物理要素。层次及其与设计过程的关系类似于试图扑灭火灾的灭火队。设计人员就如同是灭火队员,他们沿着队列传递水桶。层次就是水桶,它包含了最终将聚集在一起的宝贵内容。所有的灭火队员通过这些水桶的无缝交接(Seamless
Handoff)来完成灭火任务。
对分层关注不当会导致选择无法最优化(图4)。设计人员可能不得不耗费宝贵的开发时间对设计进行控制,以在整个流程中实施适当的分割。插入缓冲器以竭力增加分割的合成用模块间的时间预算就是一例。图4
为了优化设计,必须注意层次。图4中,利用一些复用器即可在一个加法器中实现三个加法器(只要它们在同一层次上)。
另一个层次缺陷是流程中设计工具的不当配置,它会破坏工具的效用。比如,若一个正规校验工具的逻辑层次设立不当,就会导致失配或误比较(miscompares),从而削弱了工具的好处。正规校验工具一般对位于RTL和门电平上的寄存器界限之间的逻辑进行检查。但是,如果合成优化包括旨在改进定时和占用面积的寄存器界限的合并,则会出现采用正规校验的错误失配(False
Mismatch)。
和约束条件的设定一样,在确立设计层次时有几个需要考虑的要素。其中之一就是以工具效率、工具性能以及设计的功能组成部分来定义的最佳合成模块尺寸。此外,体系的等级必须在前端和后端范围中确定。较多的层次虽能使前端设计更加容易,但却使位置-路由工具大为复杂。同样,层次较少对于位置-路由是理想的,但对于合成则是难处理的。
每种设计都有其基于设计功能度及设计目标的“最佳”层次构形。极限区域优化有可能产生一个更加扁平的实现过程。而对设计中特定的关键定时分程序(Timing
Block)的优化则会在设计中产生更多的层次。
如何定义设计方法
在考虑了约束条件设定以及层次确立的情况下,下一步就是要定义一个优先顾及前端和后端设计领域间的有效协作的、具有较强关联性的设计方法。这种方法必需确定应用驱动型的约束条件、描述不同小组的作用和责任并统一工具和流程。
确定应用驱动型方法的约束条件需要研究用于获取市场成功的关键因素,以及这些约束条件在整个设计流程中的含义。比如,高性能的计算应用首先要求的是性能优化。在实际设计阶段中,只需设置几个检查点,即可在前端设计过程中实现大多数性能目标。当为该应用空间制定设计流程时,可以设定约束条件和层次以优化合成和校验的效率。
另一方面,侧重成本、校验和顺应性测试的消费和电信应用所规定的流程更适合于后端设计效率。还有一个例子就是无线和电池驱动型应用。在这种场合,功率的优化是最受人关注的。由于后端设计人员对功率问题几乎无能为力,因此,针对这一市场需求的流程主要由RTL设计阶段来规定。
设计人员还需对所用方法的任何工具驱动型约束条件有所了解。一个组织必须对与采用的具有先进功能的新工具相关联的权衡折衷进行检查。同样重要的是确定任何的“硬”要求,比如硅片售销商规定的废除契约的模拟假设(Sign-off
Simulator)。采用专有接口的工具,或是那些要求设计人员纯粹为了工具的兼容性而耗费精力对设计加以控制的工具,通常将会给具有较强内在关联性的方法的设计带来更加困难的任务。
当设计一种具有较强内在关联性的方法时,阐明横跨多家公司的不同工作小组的作用和责任是很重要的。硅片售销商将在推进设计进程上发挥作用。但售销商的参与程度各不相同。某些位置-路由工具售销商在准备制造之前进行IDDQ检测并对设计加以验证。其他售销商(如制造工厂)则只从事最终布局,以针对OPC和其他与处理有关的约束条件对工具进行校正。
在许多设计流程中同样发挥作用的还有来自第三方的设计服务提供商,他们可对设计流程的任何方面提供帮助。售销商参与设计过程越早,就越有必要更多地加入方法的确定工作(比如约束条件的设定和层次的确立)中。
在组织内部还必须对应用空间、工具约束条件和组织属性(包括不同工作小组在地理上的分布情况)方面的作用予以研究。比如,设计中的某些要点(象复位)可能需要通过被施以适当的约束而使合成工具不会影响到它。这样,位置-路由工具就可以插入缓冲器或执行尺寸测量。因此,必须在全部工具范围内定义约束条件和层次。
随着设计组织复杂性的日益提高,越来越多的工作小组开始在其设计队伍中设一名方法学专家。这名专家帮助调停与不同设计规程和组织间的互动有关的全部问题,并确保方法的内在关联性。
(晓岳)
|
|