用TLM导向设计为半导体业界充电

本文作者:admin       点击: 2009-11-20 00:00
前言:
公元前一万年人类发明农耕,公元前4000年发明轮子。这都是人类的一大步,如果无法善用这些发明以及历史上无数的其他伟大成就,当代文明绝对无从诞生。科技发明与重复利用奠定了人类发展的基础,不因领域或业界而有所差异。

现在,在2009年中期,半导体业界发现自己面临40年历史中最大的危机。业界顶尖公司长期撕杀过程中,几年前仍奉行不渝的“卓越增长投资”理念现在动摇了。这种戏剧性转折的原因是什么呢?绝大多数归因于生产力不振。为了回复荣景,半导体业界必须设法恢复生产力。要让芯片设计人员提升到全新的境界,未来几年内业界必定会采用的作法,就是:TLM(交易层级模型)导向设计。

半导体业界的“生产力问题”

自从上世纪结束以来,半导体业界就一直陷在工程生产力不振的泥淖中。在获利力方面与其他业界相比,半导体业界没有达到一般水平。图1比较顶尖半导体业界指标表现,从2000年中期到现在的Semiconductor HLDRS (SMH)与S&P 500指标。虽然在这个期间,半导体业界销售业绩有长足的进步,由于半导体仍是现代生活每个层面不可或缺的要件,只有极少数例外,但是获利力却停滞不前,甚至下跌了。

如同早年的经济学家亚当史密斯(Adam Smith)与戴维李嘉图(David Ricardo)的观察一般,任何经济体或业界长期生产力增长的关键都是科技的重复利用;能够实现持续专业化与分工,获致更高的产力。如果您构思了一项产品(例如iPhone),您不必从头开始设计。您只需重复利用其他人开发出来的技术,然后专心致力于新增自己的IP,就可以创造新产品了。

或许没有任何业界会像半导体业界一般奉行这种“技术重复利用原则”。很早以前,工程师们学习重复利用标准化晶体管布局“闸”,然后被融入到“cells”与“macrocells”中,成为标准单元ASIC设计。这些cell/macrocell后来又融入到“cores”与“subsystems”,产生现代的SoCs。这种不断重复利用技术的能力,让IC设计人员得以提高自己的生产力,从20世纪中叶每天4-5的闸到20世纪后期每天500-1000个闸。这段期间,半导体业界处在创新、繁荣与创造财富的所谓“黄金年代”。然而自从2005年起,很明显地IC设计人员生产力停滞不前了。原因就是,现在以RTL为基础的设计与验证方法已经达到生产力的极限。

在力图实现利润增长的过程中,各企业逐渐将R&D从高成本地区转移到世界上更低成本的其他地区,委托第三方IP,然后专注于以“更睿智”的方式管理设计与验证流程。不幸地,这些努力反而使投资报酬日益减少,唯有已经成熟的设计范例才有一些蝇头小利。为了运用模拟技术,半导体业界希望各国不断地投资于标准模拟电话服务以改善通信,不让技术转移到以太网络(Ethernet)和TCP/IP而迈进因特网。

从RTL进化到TLM导向设计

现在21世纪的第一个10年即将结束,应该开始改变了。Renesas、TI与ST Micro等顶尖企业纷传佳绩,显示已经以交易层级模型(transaction level modeling,TLM)的形式达成了全新的设计典范/境界。例如,ST Micro公开宣称,该公司从萃取的行为层次(behavior level of abstraction)开始,然后运用高水平合成以转换到RTL,完成了90%的全新数字IP开发。ST Micro预期移植到TLM导向设计对生产力将有莫大的影响,甚至大到有如从闸层次、以图标撷取为基础的设计转移到RTL时经历的生产力跃进。

如同RTL合成之前的行为HDL建模一般,多年来各企业都在运用TLM以加速模拟与验证。但是,正如同业在上世纪90年代初期开发的RTL逻辑合成技术带动了RTL设计的采用一般,Cadence等企业开发的TLM合成技术正协助各企业迈向全新“TLM导向”设计新境界。

何谓TLM?

TLM经常被描述为建模技术,运用伴随数据交易而召唤的函数,而非信号或线路,来表现模块之间的通信协议。TLM的优势之一就是其定义中固有的弹性。Open SystemC Initiative (OSCI)标准在TLM之下定义了两个基本萃取层。第一个就是“Loosely Timed (LT)”,不含时机或延迟数据与有限顺序的数据。由于这种最低层次的设计实现细节,实现了非常高的仿真速度优势,适合于缩短软件开发时间。第二层就是“Approximately Timed (AT)”,让设计人员能够增添足够的时机数据以指定不同作业的顺序,以及其延迟,而且拥有精确度的弹性。这种较高层次的细节适合于详尽的架构勘查与初始验证。由于这种绝佳的萃取效率,TLM模型的仿真速度当然可以达到RTL模型的数十倍,甚至数千倍。

为何要采用TLM导向设计?

正如从gate-level设计过渡到RTL一般,现在许多设计团队运用TLM层表述作为自己的“典范”来源,利用更高层次的萃取来加速设计的创造与重复利用,同时可以减少bug,也因此不必花太多时间与精力从事功能验证。因为以更高层次萃取可以加速模拟,而bug也“比较大”且容易标记,可以大幅减少设计-除错-验证的反复作业。更快速的模拟也能够实现软硬件行为同时模拟,在项目生命周期中尽早开始软件开发。RTL导向设计方法的主要缺点就是,直到建立整个设计的RTL,以及使用模拟/加速模拟验证与嵌入式软件来判断是否已经达成效能目标之前,设计团队常常不知道自己的架构能否实现。TLM导向设计克服了这些问题,很早就可以知道不同架构的可行性。

由于RTL强迫设计人员以频率周期(clock-cycle)程度的精准度,准确地描述自己设计的行为,设计人员必须同时满足功能正确度、架构与设计目标。这就会导致“陷入死胡同”以及设计收敛的困难。“各个击破”是工程师们用来因应艰难设计挑战的最重要方法之一。从TLM黄金来源起,让工程人员打从开始便能够专注于使自己的设计在算法和功能方面更完美,甚至于定义顺序、延迟与产能条件。藉由让设计人员能够细分整个设计工作,在适当时机各个击破不同的挑战, 设计人员能够加速收敛并获得最高的生产力。

TLM导向设计如何提高技术重复利用与发挥

萃取层次越高,重复利用的机会就越大。强迫设计人员以频率周期层的萃取和位层信号精准度来描述设计行为,可能是重复利用的一大利多。设计的RTL微架构基本上有固定的延迟与产能(例如从输入到输出的10个频率周期延迟、每一频率周期32位讯息的产能)。这就限制唯有密切相关的应用软件才能够享受重复利用之便。若您尝试重复利用RTL于专为50英寸、1080p、HDTVs而设计的MPEG-4译码器,可能不会有什么问题;但若尝试重复利用这个MPEG译码器于移动电话视讯等不同的应用软件,那会如何呢?这时,延迟与产能要求可能南辕北辙,而需要完全不同的RTL微架构。运用RTL,必须劳动密集重新架构才能满足这些需求,例如重新分割设计成为新的RTL区块、变更管道阶段的数量、建立新的内存架构等。

而运用TLM导向设计,恰好相反,可以高阶合成工具自动处理将IP区块捆绑在特定应用软件的微架构决策。不必指定每个频率周期中实际该发生什么,设计人员可以专注于定义更高阶的功能,还有延迟的范围与该功能上的产能限制。不必以位层信号来指定区块间的通信,在每个频率周期中,设计人员以预先定义的“交易”来指定(其中信号、周期层时机与通信协议已经萃取出来)。设计人员可以运用现代化的高阶合成工具(如Cadence C-to-Silicon Compiler),自动勘查全系列微架构的面积、速度与电源是否满足上述所有条件,以便选择最佳方案。然后这套工具会据以产生RTL,自动馈入逻辑合成以执行合成,然后到设计实现流程的其他环节。

从RTL到TLM导向设计的足迹在许多方面都很类似于从晶体管层到gate-level设计乃至于RTL的历程。每个阶段都以低阶萃取时特定设计属性的标准化为前提,让设计人员能够确立简化的假设,减少设计数据量和必须遵循的条件。

建立可重复利用的TLM IP (“若要验证,首先要指定”)

许多人都很好奇,转移到TLM导向设计会不会太支离破碎,或者需 要“抛弃”现有的RTL基层架构。答案当然是否定的。正如20年前RTL建立在闸口层设计上一般,TLM导向设计也稳固地建立在RTL设计之上。RTL良好设计的基本原则完全可以套用到TLM世界。在经典著作Reuse Methodology Manual for System-On-A-Chip Designs (第三版)中,Keating与Bricaud明确指出确保可重复使用设计/IP的7大基准:

“优良、实用的IP必须:
1. 精心设计以解决一般问题
2. 精心设计可搭配众多技术使用
3. 精心设计可运用各种仿真器来执行仿真
4. 精心设计而拥有标准化接口
5. 在要搭配使用的晶面上通过独立验证
6. 通过高度信心水平的验证
7. 在适当的应用软件与说明方面完全书面化”

TLM设计(运用SystemC等标准语言开发时)毫无疑问拥有胜过 RTL的固有优势,能够满足前4个原则,但是其他3个呢?有待我们进一步检验。
或许,确保设计可重复利用的最关键因素就是验证。如果某设计不是“公认优良”的,尝试重复利用该设计的相关风险通常就会超过优势。为了验证TLM设计IP,您需要定义妥善的TLM验证方法搭配TLM验证IP,还要能够执行复合TLM-RTL模拟与除错。这些全都需要,才能够确保TLM设计符合自己的功能规格。

在高阶与低阶萃取的作业可以比喻成以链锯和斧头伐木。如果您不是每个阶段都验证自己的所作所为,就会非常危险。关键就在于让设计人员注意到自己在设计中订定的任何隐晦的假设,并且为工具/方法设立“安全围栏”,以免不慎违反这些假设。典型的范例就是RTL设计人员不小心为设计指定了异步行为(例如在重设或以latch为基础的设定)。为了避免在RTL设计中发生这种问题,RMM强烈建议设计人员“登录所有输入与输出”。这样可以方便验证(与重复利用),因为RTL设计基本上假设所有行为都是同步的(还有逻辑合成、静态时机分析工具等全都为此而优化)。设计人员背离这个方法时,可以轻松地建立拥有意外行为的设计,而这些都很难、甚至完全无法验证。

类似的原则也适用于TLM设计。为了让TLM设计能够验证进而重复利用,原本的设计人员必须明确指定建立设计时适用哪些假设与条件。例如,仅指定设计的输入、函数与输出是不够的(例如N-bit word, ADD, N-bit word)。为了让TLM设计能够验证,必须明确指定输入与输出(例如N<= 32)、延迟(例如输入与输出间10个周期)、产能(例如每个频率周期1个信息)的所有条件,以及输入/输出有效期间必须维持多少个频率周期。许多软件背景的系统设计师们都小看了这个因素,导致后来在项目中的设计与验证挑战;让您不禁回想起“若要验证,首先要指定”的格言。

另一个相关而且非常关键的重点是,维持功能与条件之间的严格分离非常有助于促进验证与重复利用。理由是,让您能够套用RMM强调的其他主要原则,在Locality方面,换言之让开发算法或通信协议然后验证概念是否可行的工作独立,也让验证在特殊条件是是否运作正常的工作独立。例如有人用pragma指令与逻辑合成指令(设计实现专属的数据,通常无法跨应用软件重复使用) 修改了算法说明,然后使设计朝向新目标,就会需要对那些pragmas与指令广泛修改,和验证算法是否被人不慎变更了。

因上述理由,Cadence的C-to-Silicon Compiler等现代高阶合成工具都具备丰富的功能,支持Constraint-Functionality Separation (CFS),让C/C++/SystemC中的功能行为独立到一套档案中,而指引/影响高阶合成的所有数据独立到另一个条件档案中。处理相互依赖的规格与条件,而某些值的变更会需要变更其他值时,独立条件档案尤其实用。例如,这时MPEG-4视讯译码算法可轻易地重新调整目标朝向非常困难的目标应用软件,例如移动电话、笔记本电脑或大屏幕TV,全都有非常困难的变更效能要求,还要验证条件档案。另一方面,若在算法程序中发现bug (或需其他变更,如升级至新的MPEG格式),可在纯粹的算法说明中套用和验证变更,同时原样即可重复利用原先的条件档案。

因为先进验证是实现TLM导向设计的关键环节,Cadence益华计算机等顶尖EDA公司纷纷大手笔投资开发先进工具与方法,实现在TLM层的周延验证。透过巧妙运用Open Verification Methodology (OVM)与Incisive平台的混合层、混合语言仿真功能,Cadence设计师们能够开发验证TLM IP的方法,使不同的验证工作最佳地对应到各萃取层,以便使整体时间与精力减到最低限度。所需的重要功能包括多层除错与具体化、能够涵盖众多条件的数据/覆盖导向验证、混合层与混合语言仿真和除错,让设计人员能够在不同的萃取层平行除错,分解交易和逐一周期地评估自己的执行,以及标定仿真专属的整合式流程。

TLM导向设计-威力强大的妙点子登场

说在过去20年里这个世界对于半导体业界的经济发展亏欠太多,绝不为过。不争的事实是,半导体业界发现自己处在远比其他业界所处位置更恶劣的经济状态。因为尚未充分运用和消化上世纪最后十年半导体业界的所有创新与功能,这些其他业界不断地大幅提高生产力。但除非半导体业界恢复原有的强大生产力增长的常态,否则这些业界可能都要开始尝到苦果了。

过去20年来,现有RTL范例为半导体业界鞠躬尽瘁。而随着10余年来新的ASIC/ASSP设计开始发足,虽然令人痛苦,但很清楚地业界必须找出方法,大幅提高工程的长期生产力。将R&D转移到低成本地区,更妥善管理项目并不法解决长期生产力增长的问题。有效而且大幅度彻底改变必须以崭新方法来迎接现有挑战。所以,顶尖的半导体公司已经看到,TLM导向设计应该大有可为。