《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 解决方案 > 面向ASIC和FPGA设计的多点综合技术

面向ASIC和FPGA设计的多点综合技术

2011-01-17
John Gallagher Synplicity公司
Synplicity公司
关键词: FPGA ASIC 综合 RTL PSoC SOC

随着设计复杂性增加,传统的综合方法面临越来越大的挑战。为此,Synplicity公司开发了同时适用于FPGAASIC设计的多点综合技术,它集成了“自上而下”与“自下而上”综合方法的优势,能提供高结果质量和高生产率,同时削减存储器需求和运行时间。

尽管半导体技术在其发展过程中曾遭遇种种难以克服的障碍,但正如高登·摩尔多年前所预言的那样,ASIC和FPGA的密度继续每隔18个月翻一番。

硅潜力的疾速释放是一件喜忧掺半的事。一方面,硅技术提供的功能与性能可以满足最具挑战性应用的需要;另一方面,当今设计工具的局限性令人沮丧,因为这使我们无法充分利用硅技术的全部潜力。随着设计规模和器件复杂性不断攀升,设计工作成为阻碍我们实现各类IC的制约因素。尽管电子设计自动化(EDA)行业近10年来一直致力于解决这个问题,但所谓的“生产力落差”仍在持续扩大。

图1: 通过比较实际的<a class=RTL代码、约束条件和属性,增量综合可以将设计变化和运行时间降低至最小的水平。" src="http://files.chinaaet.com/images/20110114/3fac6844-2fef-4854-9ece-956fffe3d8dd.jpg" style="zoom: 1; margin-left: 12px; margin-right: 12px; margin-top: 12px; margin-bottom: 12px; width: 500px; height: 250px; " />

设计综合面临的挑战

这种生产力落差在综合领域表现得最为明显。传统综合方法的处理能力有限,因而要求将设计分割成不超过20万门的子模块。对于容量达2千万门的芯片,设计者可能需要管理100个以上的不同子模块,以完成一个设计的综合。此外,大多数设计者更习惯基于功能或时序分割设计,相对而言,基于门数进行分割显得不够直观。当前综合流程的另一个缺陷是它们不能很好地优化分立的功能。这正是今天需要独立数据路径综合的原因之一。嵌入式FPGA将既需要专门的综合映射器,又需要在全芯片的背景下进行优化。

自十年前出现综合技术以来,设计复杂性取得了惊人的增长。因此,传统解决方案的效力正在衰退,这的确不足为奇。

设计复杂性还给综合技术带来许多其它问题。当一个综合应用必须有效地操作大量设计数据时,存储器利用率将变成一项真正的挑战。除了庞大的设计规模外,处理计算任务所需的设计管理开销也会使运行时间延长。随着高复杂度、高约束性的功能被分解到综合过程中,IP集成亦成为设计者必须面临的另一项挑战。为了不断优化时序或理顺子模块之间的相关性,设计反复的次数将会大大增加,从而显著延长设计时间。

在把综合技术应用于复杂设计时,所面临的另一个重要挑战是保持设计稳定性。当把优化后的子模块集成回整个设计中时,这可能带来意想不到的复杂问题。随着设计和硅技术变得越来越复杂,这些问题的复杂性将随之增加。

为了克服综合工具的上述缺点,设计者正在采用以下几种策略。一种是复杂的外围工作,如编写高级脚本。这种基于外围工作的解决方案虽然能够达到目的,但通常会过度牺牲结果的质量(QoR)和生产效率。为了使用传统方法成功地对一个大型ASIC设计进行综合,这常常需要扩展的人工脚本,但由人工编写脚本是极容易出错的,而且要求设计者具有很高的脚本编写技巧。这种方法只能给设计带来很少的“增加值”,但却要消耗宝贵的人力和时间。

另一个策略是专注于寄存器传输级(RTL)设计,然后将RTL交由ASIC供应商来综合与实现。籍此,设计者可以避免与传统综合有关的麻烦。这种“RTL签字确认(signoff)”方法非常依赖于高质量的RTL以及芯片供应商愿意为设计结果承担风险的责任心。设计者可能会担心设计被交付给那些对设计及系统问题知之甚少而且不关心设计能否成功的公司。

从这些策略的本性来看,它们假定综合无法改进或者综合就是瓶颈。然而,综合是所有高级IC设计流程中一个根本的组成环节。无论由谁来执行综合,只要这种技术继续困扰芯片的实现,我们就会牺牲设计工作的生产效率和质量。因此,综合是一个必须解决的重要问题。

“自上而下”与“自下而上”

传统上,解决综合问题有两种方法:“自下而上”和“自上而下”。每种方法各有其长处和不足。“自下而上”的方法是指将设计分割成综合工具处理容量之内的子模块,从而使每个模块能够被独立处理。这允许局部的重编译和多处理,从而加速设计。“自下而上”流程还允许将设计的某个部分从整体中隔离出来,以进行改进。如果采用得当,这能提高结果的稳定性。

图2a:采用多点综合流程实现的一个200万门0.11微米设计。通过把可复制模块设置成用低开销ILM代表的编译点,这种方法能显著降低计算开销。

按单个模块计算,“自下而上”法能提供最佳的运行时间,但整体运行时间可能因为项目管理和人工脚本开销而有所延长。脚本编写本身很重要,但也容易出错。此外,这种方法可能会降低结果的质量(QoR)。采用“自下而上”法,综合工具只能“看见”各个子模块内的优化机会,而不能跨越分割界线对整体设计进行改进。分割的次数越多,设计离可能的最佳QoR就越远。

“自上而下”的综合方法考虑整个系统级RTL和约束,允许综合工具在一次操作中优化设计,而不必跨越分割的模块。与“自下而上”的设计相比,这种方法可产生最佳的QoR,因为综合工具是在整个设计上进行操作。由于不需要人工脚本和管理各种不同的子模块,它更易于实现。然而,它需要的存储容量和运行时间使之无法应用于大型设计中。即使很小的设计改动也要求重新对整个设计进行综合,这几乎是不切实际的。类似地,“自上而下”法要对复制的模块单独进行综合,与“自下而上”法对复制模块一次综合相比,这将导致更长的运行时间。最后,为了满足时序要求,布局与布线过程将变得非常反复。从QoR方面来看,“自上而下”法是理想的解决方案,但从设计规模或其它设计要求来看,它并不是每种设计的最佳选择。

多点综合:面向大型设计的综合技术

无论是单纯的“自上而下”法还是单纯的“自下而上”法都不是很多设计的正确解决之道。它们所需要的是集“自上而下”法的易用性及QoR优势与“自下而上”法的高效率及低存储器需求于一体的方法,而且这种方法仍要能够被自上而下或自下而上地使用。这一点在大型设计中尤其重要,因为现有的“自上而下”或“自下而上”流程不能获得最佳的QoR和运行时间。为了解决这个问题以及百万门ASIC和可编程系统级芯片(SoC">PSoC)设计者所面临的其它挑战,Synplicity公司开发了多点(MultiPoint)综合技术。

多点综合技术针对大型设计而采用了一种分层方法。与传统的“自下而上”分层设计不同,多点综合技术能自动分割和优化设计。这是对整个设计执行语言编译的结果,语言编译能创建一种中间格式,它包含所有分层信息以及设计的关键信息。Synplicity公司的ASIC解决方案使用内置的HDL分析工具,允许用户查看RTL设计分层或使用Tcl脚本来检查设计分层。通过审视逻辑分层,设计者将选择应该与其余设计部分分开综合的分层单元。在分层结构中,这些点被称为编译点。

一旦选定编译点后,时序约束将被施加到每一个点上;这个步骤最初将由人工执行,但未来可以自动完成。紧随其后,将从编译点开始对最低级别的设计层进行综合。随着每个编译点被综合,它会自动创建一个接口逻辑模型(ILM),并将其传递给下一个更高级别的设计层。最后,顶层是采用来自较低层编译的ILM以及顶层的任何额外逻辑来实现综合的。这能减少所需的时间,避免易出错的脚本,从而使设计团队可以将精力集中在设计的增值方面。

ILM是多点综合所采用的一项关键技术。ILM是Synplicity或第三方公司为网表或综合设计所编写的部分网表。它们是包含所有边界信息或时序分析逻辑的模型,因此能提供可与“自上而下”流程相媲美的QoR。由于ILM只包含从端口到寄存器的逻辑,而所有其它逻辑都被当成一个“黑箱子”来处理,因此它们大大降低了对存储器的需求,并减少了大型设计综合的运行时间。

用户自定义的编译点是创建ILM的基础,而且是多点综合技术的另一个关键要素。编译点是能够被独立综合的模块,然后综合的结果被用来综合其上级模块或顶层设计。多点综合与其它综合技术的一个关键区别在于,它能够通过三类不同的编译点(即软、硬和锁定编译点)来控制边界优化的层次。软编译点用于完全的边界优化,这意味着端口标识可以在综合期间改变。相反,端口完整性是由硬编译点保持的。对于锁定编译点,模块内的逻辑在优化期间能保持不变。因此,用户自定义的编译点可以充当综合工具的指令,以便对设计的某一特定部分进行建模和综合。由于允许跨边界的优化,这些编译点使 “自上而下” 的流程可以提供极佳的QoR。

多点综合技术正是通过用户自定义的编译点和ILM来支持IP集成。它能自动对IP建模,并利用综合的时序信息。在设计中充当范例的IP既可以在IP模块内又可以在相邻模块中进行逻辑优化,同时不会影响内核自身的端口安排。图2b:与传统的“自上而下”综合方法相比,多点技术具有突出的优势,并能产生相同的QoR。

对于同一IP模块的多个范例,多点综合技术可以确定每个独特范例的边界优化条件,而不必对各个范例进行再综合。多点技术采用一种独特的、基于差别的增量综合方法(见图1),它只对确实改变了的编译点模块进行再综合。只有那些因RTL、属性或约束条件发生变化而受影响的编译点才会被重新综合。通过比较新、旧RTL,多点综合技术可以智能地确定哪些变化是实质性的,因而有必要执行再综合。例如,RTL时间标记的改变、为RTL增加注释以及约束条件的重新排序都不会启动再综合。这造就了高效的综合,并显著提高了生产力。通过锁定编译点,多点技术可以确保设计的稳定性,使用户无需理会模块的变化。

多点技术的特点之一是它同时适用于FPGA 和ASIC设计。通过比较门数、硬嵌入IP、工艺尺寸、性能及目前的实现成本,我们可以得知这两种选择之间的差别正在变得模糊。以大约十万片的生产水平为例,越来越多的设计者看到FPGA 与ASIC选择之间的传统成本差异正在消失。用于ASIC和FPGA的设计技术也日趋融合。以Synplicity公司的产品为例,物理综合、布局以及形式验证不再只是ASIC开发人员才使用的技术。设计师将越来越多地在ASIC或FPGA上实现设计,甚至采用二者的组合,如包含嵌入式FPGA的SoC或包含嵌入式内核的PSoC

正如前面所讨论的,多点综合技术既可用于ASIC设计,又可用于FPGA设计,但ASIC与FPGA设计人员的关键需求略有不同。

ASIC设计人员需要有效管理极高的门数、设计分割以及与综合或重构设计有关的脚本,而FPGA设计人员通常更需要一个不以牺牲结果质量为代价的快速增量设计流程。当与Altera公司的Logic Lock或Xilinx公司的Modular设计流程配合使用时,多点综合流程可以向设计人员提供一种优秀的增量设计方法,它能锁定部分设计,并使之在综合期间保持不变。这可以使已经验证过的部分设计保持不变和稳定,而只修改真正需要改动的设计部分。这种方法不仅提供了稳定的结果质量,而且显著减少了每个设计改动所需的综合及运行时间。

多点综合技术的使用

多点综合流程简单明了。首先,设计者编译HDL并创建整个设计的RTL视图;然后,设计者基于他们对设计和关键功能或路径的理解来定义编译点。下一步是对整个设计进行自动时间预算。一旦确定最初的时间预算后,设计者再利用这些预算对每一个编译点进行综合。随后,系统将自动创建ILM,并执行顶层的时序分析和优化。在执行最初的时间预算时,多点技术同时对整个设计进行操作,以便为各分层模块创建时序预算。因为它不必消耗大量时间去创建人工约束条件,所以完成时间预算的速度比传统方法快得多。

多点技术可以达到的结果如图2a所示,它是采用0.11微米工艺实现的一个200万门设计。与大多数高级SoC相同,这个特定设计包含一个可复制的IP模块。这个15万门的模块被复制了9遍,并被指定为锁定编译点。该可复制模块只被映射一次,然后在顶层进行复制。在较低层的编译点被综合之后,利用该可复制模块的一个ILM以及余留逻辑的另一个ILM就可以执行“自上而下”的综合,这种方法能减少几乎80%的计算开销。与传统的“自上而下”方法相比(见图2b),多点技术占用的存储器及运行时间减少了约80%,而且其QoR与直接的“自上而下”综合相当。

与传统综合方法相比,多点技术具有许多优势。传统方法限制最大的可综合子模块规模为20万门,而多点技术一次可以综合150万到200万门的模块。这意味着设计者不必根据工具的存储器限制来分割设计,而可以更直观地根据设计的功能或时序来分割设计。由于采用了基于差别的增量方法并能自动创建ILM和时间预算,多点技术提供了一种高生产率的自动化解决方案,其“自上而下”的分层方法能提供可与“自上而下”综合相媲美的QoR,而且带锁定编译点的增量综合还能确保“自下而上”方法的稳定性。

多点技术同时适用于FPGA或 ASIC设计,这使得开发人员无需掌握多种不同的工具套件,并可以选择最佳的实现方案,无论是ASIC、FPGA还是二者的混合体。此外,多点技术的伸缩性使得设计人员不必为追随每一代新的工艺技术而改变设计方法。

多点技术还是一种能满足未来设计需要的可扩展、可伸缩平台。许多设计者担心目前使用的综合方法不能扩展到下一代设计中。Synplicity开发的多点技术不必改变目前使用的综合方法,就能适应未来设计的需要。多点综合的基础架构允许集成新的功能,以支持未来的硬件、操作系统和存储器结构。