Numetrics公司今年3月对1000多个IC项目所做的调查显示,85%的项目没能在预定时间内完成。同样触目惊心的是,平均每个项目的完成时间比预定周期长53%。这样的数据暴露出一个令人难堪的事实:大多数设计团队无法提前对系统级芯片(SoC)集成做出准确预测。更大的芯片及其相应的深亚微米效应使物理设计人员不得不面对太多的复杂问题和太多的未知数。“后端”设计已成为SoC集成中最大的变数。即使设计团队付出了巨大努力来管理这些问题,仍可能达不到理想的性能或错过设定的时间表。
需要更多的证据吗?PRTM公司研究了许多半导体公司的项目延误现象,发现造成这一问题的最大原因是“不可预期的技术困难”。在这次研究中,46.8%的案例与此有关。
SoC设计最显著的问题之一是当进行到全芯片验证阶段,寄存器传输级(RTL)设计人员与物理设计人员的所为截然相反。被一方奉为真理的教条对另一方而言却是异端邪教。
RTL设计的实际情况是,前端设计团队对全芯片功能进行的验证与对任一单个RTL部件所做的验证相比要多3到4倍。芯片越复杂,这个比率越高。但在物理设计中情况正好相反:它很少验证芯片是否成功集成。最少被测试又在最后阶段进行测试的设计是最复杂的设计。不可避免地,在全芯片集成和验证阶段,令人畏惧的“不可预期技术困难”开始出现,进而造成项目延误。
物理设计团队之所以在验证问题上采取相反的态度是迫于这样一个简单但极具说服力的原因:全芯片构造太费时且太困难。从修改全芯片门级网表到获得可供验证的物理实现,重新构造一个SoC需要两周或更多时间,这比重新编译Verilog或C代码所要花的时间长数百倍。
图1:编译出一个SoC的GDSII文件所需
的时间比编译类似复杂度的RTL和C/C++代码的时间
长数百倍。
基于必须避免费时的全芯片返工这样一个信念,物理团队采取整合独立模块的方式来设计SoC。这种“结构化设计”方法要求设计人员在项目开始之前就接受妥协,如采用欠优化的底层规划,以降低模块之间的干扰并减少模块之间的时序问题。在采用这种方法时,他们还要明白:从整个芯片的设计全局来看,这些模块并不是最优化的,它们还可能需要通过布线通路进行物理连接,从而使裸片面积增大10%到20%,并因为全局时序问题而导致更低的性能。
更坏的情况是:“结构化设计”方法看上去允许物理设计人员继续活在模块的世界里,并将设计反复局限于个别模块,但这很快被证明是一个幻想。对现今越来越复杂的SoC而言,全芯片验证只可能被拖延而无法避免。最好的结局是,设计团队因为要应付“不可预期的技术困难”而拖延了产品的出带时间。最坏的情况是,为了修补时序问题或为了减小裸片尺寸以降低成本,他们的设计必须要重新返工。
摆脱这一宿命的明显途径是加快从设计、决策到GDSII的验证循环周期。为了实现物理设计自动化,现阶段的做法是采用“工具脚本生成e-mail警告”方法。使用过该方法的工程师都清楚,这是一项劳动密集型的工作。设计人员需要花费大量时间决定进程的下一个步骤、发现并准备正确的数据、监测程序运行、纠错、再实验、将结果放在正确的地方、通知团队中的伙伴数据已准备完毕,等等。没有人不认同以下想法:如果将这些劳动花在设计优化上将比花在设计任务管理上更有效。
下一代自动化
解决所有这些问题的关键在于真正使一种已经过时间验证的方法学——“分层物理设计”实现自动化。目前,许多复杂的SoC设计一开始就把芯片分割成不同的模块。然后,许多工程师可以在多台计算机上并行设计这个SoC所需的构造模块。
分层物理设计最初是为了扩展设计自动化工具能力而开发的一项技术。现在,这种方法可被用于缩短工具运行时间,实现多个电源岛(power island)以降低功耗,以及把设计修改限定在单个区域以适应后续的工程变化。
传统上,分层物理设计需要执行数百个工具,每种工具由一位工程师操控,这是导致SoC构造时间长达14天(或更长)的重要因素。通过引入新的自动化技术,这些劳动密集型(非工程密集型)任务能够由程序自动执行,从而显著提高速度。所以,该方法可被用于支持快速的芯片级集成周期,允许设计团队更早地开始全芯片验证并可以在整个物理设计过程中不断测试他们的设计决策。
芯片级设计自动化(CLDA)具有满足这种需求的能力。CLDA的核心技术是流精化(flow elaboration)和一个持久稳定的流执行服务器。流精化根据特定的底层规划、网表、技术库、工具流和工具设置等生成构造一个SoC所需的全部工具指令。流执行服务器管理这些指令的执行,以确保在最少人力干预的情况下完成全芯片构造。这两种技术的结合可在24小时内构建哪怕最大的SoC的GDSII文件(这部分要归功于可并行构造多个布局和布线模块的低成本、高性能Linux服务器)。
颠覆过去的假设
这种新的自动化方法推翻了分层化设计第一次需要4到6周来构造SoC,如果不成功又需要10天以上的时间来重新构造SoC的说法。
CLDA可以恢复集成的可预测性,以防止制造失败。此外,它允许物理设计团队在设计早期检查设计选项,并在整个设计项目期间检测全芯片问题,因此,这也使得预测项目的完成时间成为可能。
下面的例子可以说明改进的结果:一个平台SoC被分割为10个具有崭新功能的布局和布线模块,然后被重新实现为一个1千万门的SoC。在项目进行的第二周就完成了第一次全芯片设计反复(许多设计直到第20周才进行全芯片整合)。在以前版本下设计的电源网格(属于一种全芯片资源)会导致严重的IR下降问题,从而使芯片无法达到其全部的性能。
在这个重构项目中,使用AstroRail对新的电源网格进行早期验证,并发现需要添加更多电源管脚。如果在出带前的最后一周才执行IR分析,那么就不可能实现这种添加。现在的情况是,在整个设计进程中每周都可以进行全芯片GDSII验证,所以设计团队对面临的问题能一目了然。该芯片最终按预定的时间完成。
全芯片集成和验证仍然是检测和排除全芯片设计问题的唯一可靠途径,这些问题包括:全芯片时序、信号完整性和电源网格完整性。新出现的芯片级设计自动化颠覆了这样的观念:全芯片验证只能在设计周期的后期进行,从而必然产生“不可预期的技术困难”。新方法使物理设计团队和RTL设计团队协同作战,以对抗令许多SoC设计延误或失败的因素。
作者:Lane Albanese
设计咨询总监
ReShape公司