ASIC设计流程的变化表明,对FPGA设计的要求也必须作出相应的变化。FPGA的门数、速度和结构复杂性不断增加,从而使设计工程师能采用可编程技术实现更复杂、更高速的系统。然而,要实现时钟100MHz以上的复杂总线设计,在开发过程中就会遇到许多问题。
- 设计问题和瓶径
- 模块方法的原理
- 模块与系统
- 目标结构
- 对工具的要求
- 工具间的紧密耦合
- 小结
Hichem Belhadj
Paresh Patel
本文介绍的设计技术有助于解决以上问题、提高生产率并降低设计成本。其基础是一种清晰、基于模块和类似于ASIC的设计方法,该方法可以避免冗长的重复设计并解决系统集成面临的挑战。该解决方案的另一重要方面与软件的能力有关,软件除了有效地诊断和验证设计之外,还应该容纳设计工程师对结构决策作出的所有考虑。注意,我们应将FPGA、ASIC、模块或者系统设计软件加以区分。
为了说明FPGA设计和ASIC设计联系起来设计的方法,我们采用称为ASICmaster的FPGA设计工具,它适合基于Flash的ProASIC产品设计,ProASIC具备类似ASIC的硅片结构和设计方法。
设计问题和瓶径
ASIC设计工程师在应用可编程工具时会遇到许多瓶径,例如专用工具、专用设计方法和必不可少的设计方法变革。而且,为了有效地发挥FPGA的能力并获得最佳的设计性能,解决问题和不断地学习是必不可少的。
FPGA设计工程师要根据资源来构思设计方案,为此,他们经常被迫用很长的时间反复设计以达到预期的性能,这样就无法事先规划并且无法考虑设计的可复用性,结果,设计出来的方案只能使用一次。很明显,对于ASIC和FPGA的设计工程师来说,最大的瓶径是时序收敛(timing convergence)、FPGA资源的预算、对ASIC和FPGA综合的控制以及布局和布线工具。
采用一种基于模块的设计方法,ASIC设计工程师就能够继续使用熟悉的ASIC设计方法和工具来解决设计的复杂性、时序及功率问题。另外,采用这样的方法,FPGA设计工程师可以方便的构造设计项目和设计目标,同时使开发和设计成本大为降低。基于模块的设计方法将各种设计行为和工具联系起来,但是要将结构、模块和整个设计的集成分开考虑。
本文所述的方法从结构入手考虑和解决复杂性管理、时序收敛、功率预算和工具短缺等问题。它提供了一种通用指南,目的是降低冗余工具并增强工程设计小组之间设计模块的共享性,同时刺激设计复用和复用设计的发展,以便尽早推出简便、快速的新一代高级设计工具。
我们讨论的重点是若干带普遍意义的问题,重点是时序问题。同时还将讨论系统设计和模块综合之间的高度集成,以及综合、布局和布线之间的集成。
模块方法的原理
基于模块的设计方法把时序和预算问题放在模块级来解决,这样就可以在顶层设计中减少或者消除时序和预算问题,模块的设计方法分为三个阶段(图1)。
第一阶段,分别考虑各分层模块(图1)。对于每个分层模块首先使用缺省分层线装载模型(HWLM)进行初始综合。预布局、布局和布线结果有助于生成一种更精确的用户线装载模型(CWLM)。CWLM稍后用作二次综合的入口,生成一种更有效的网表和一种更稳定的时序模块布局和布线。请注意,由布局和布线工具提供的预布局是基于一种布局和布线约束机制的,这种约束机制定义了模块的灵活性。
第二阶段,装载所有经过处理的模块网表及其相关的排版后形成的SDF文件。在时序特征提取(timing characterization)之后,使用提取出来的输入/输出延迟数据和第一阶段输出的CWLM可以生成最终的RTL代码综合,这样就得到了各模块更有效、稳定和精确的最终时序结果。
最后阶段,修正总体设计,执行增量编译(incremental compile),修改布局和布线并进行最终的静态分析。
在这样的流程基础上,一个模块定义为一个具有相应属性的可以用RTL码描述的对象,例如门级网表、层次规划、稳定时钟、功率分配和资源利用率等。
建立系统结构的主要目的是定义一种实现过程的优化分区。此时,主要关注的是系统总体性能、成本、可测试性和子系统或模块之间的相互作用。在这个设计阶段推荐采用抽象方法,但是总的设计概念必须为最大限度地减小甚至消除未来的设计变更提供信息。结构工程师根据项目当前和将来的功能要求提取有意义的信息,这些信息必须根据将来可能用到的各种设置和配置给出清楚的描述。结构工程师的描述必须始终清楚地给出设计假设、设计意向以及质量保证的指南。
设计初期的设计决策必须严格,要对接口综合和模块之间的通信协议给予足够的重视。经验表明:要尽量采用点对点的信号,不采用三态信号;要尽量采用信道通讯,不采用总线通讯;要采用用户可定义模块接口;模块速度要可配置;各特征集要精确定义。
模块与系统
模块设计工程师利用经过验证和易于集成的模块建立模块库,目的是使模块具备通用性和实现过程的高效性。HDL代码的质量也是关注的基本点,所以设计工程师应当采用一种适合复用的编码方法。在确保模块质量的条件下,最终目的是避免为了满足系统或者将来设计变化的需要而重新设计模块。换句话说,设计工程师不应该在质量和可预测性之间或者模块参数化能力和顶层设计之间进行折衷。
系统集成设计工程师主要关心系统结构和总体设计功能的验证。当出现时序问题时,集成设计工程师还要确定设计瓶颈所在并找到解决方案。根据时序问题的差异,集成设计工程师有若干种选择。根据难易程度和设计要求,可以采用增加设计时间或重新优化的方法。设计初期,通过及早研究模块 (找到设计堵塞的位置)并协同预测布局和布线工具的能力,集成设计工程师能够充分发掘各种解决方案。
在模块级上如果已经很好地完成了结构划分,那么模块的管理就很方便,既易于进一步完善,又可以减少后续工程变更所花费的设计时间。模块设计工程师可以深入研究各种可用方案,并选择一种最稳定的、最有效的实现途径,方案研究要达到一定的设计目标,例如平衡时序性能、功率以及可测试性。
在系统集成层面,系统集成工程师并不关心模块问题,因为各模块的结构、性能和功耗属性都是已知的,工程师能比较容易地平衡各种相互之间存在竞争的设计约束条件。如果布局和布线工具具备足够的能力,时序和功能验证等问题就可迎刃而解。至于功率问题,系统设计工程师可以设计一种总功率控制系统,接通或关闭各独立的激活分层模块的时钟。
由于可复用性的优点明显,整个设计团队当然应该对影响成本和技术的瓶径做充分的讨论。尽管用这种方法来设计开始时很痛苦,但从长远来看是有益的,从保护资源和节约时间方面来看尤其如此。在多层表述的各层之间,如果模块设计方法支持技术规范、分析、综合和布线的紧耦合,则适用于模块设计方法。当然,还要满足其他一些条件,如目标结构和工具的能力等(图2)。
目标结构
设计完好的ASIC设计工具具备提取模块时序的特征并具备冻结模块时序的能力。经验表明,这些工具在类似高密度ASIC结构的设计中效率比较高,图2所示采用闪速可编程技术的ProASIC所用的就是这种结构。
支持这种设计方法的另一个理由在于,裸片中的逻辑电路和布线资源具备同质性,而且所有同族器件也具备同样的特性。ProASIC的布线结构是分层次的,其布线按照4类布线之中的2种进行,即全局网络和高速总线。
有时,系统(网络应用尤其如此)需要大量的外部和内部时钟,这就会引起时钟的扭曲和保持时间问题。全局网络(global newwork)可分裂为分支,从而获得丰富的分支资源,设计工程师不需要对分支进行预算。
对工具的要求
为了强化模块方法的应用,ASICmaster提供的宏使用户定义为独立单元或模块定义约束条件。根据宏定义的时间和方式,宏可以分为硬宏、固定(firm)宏或软宏。
布局后定义的宏是软宏。用户可以将宏移动、旋转、或左右上下翻转。布线后定义的宏可能是硬宏或稳定宏,该宏表示一种布线预布局并涉及各类布线资源。当涉及到全局网络这样特殊的布线资源或在裸片的特定位置放置先入先出寄存器和RAM时,要采用硬宏。其他情况下采用固定宏,用户可以将其移动和翻转来满足设计需要。
在调整具备时序收敛特性的选定预布局时,ASICmaster还允许用户尝试采用若干种预布局。这样,模块设计工程师就能在综合级更好地描述模块的特征,改善性能并快速达到时序收敛。进一步说,如果布局和布线工具能够确保正确的布局和有效的时序,则结构设计工程师就可以把一个或若干个模块在顶级或更高的分层级上集成。
这种宏特性可用于各种网络,从而实现具备若干内部和外部时钟的大量时钟通道。试验结果表明,当模块集成较大的系统设计时,所有与某一特定宏或模块有关的属性都完全得到保留。有趣的是,所有宏的性能和布局属性都得到保留。为了便于验证,门级网表必须保留在排版工具中,以便原始的分层边界、寄存器、节点名都能保留在门级网表中。
工具间的紧密耦合
在传统的电路设计中,工程师分别进行布局和布线的综合,在排版完成后才计算布线延迟。结果,编码错误、重新综合、布局和布线的重复工作必然导致项目计划的极大延迟。模块设计方法极大地减少了这种重复工作,并使得项目经理和模块设计工程师能够尽早发现问题。新一代的物理综合工具有助于解决这个问题。即使这种工具只适用于FPGA,但是,设计方法可以极大地减少设计风险。对于ProASIC而言,综合与布局和布线之间的联系是双向的。综合后SDF路径约束,以及关键网表使得ASICmaster可以进行时间要求紧迫的布局和布线。为了进一步的二次优化,后排版形成的SDF文件要输入综合过程。
用大型模块设计FPGA时,具备模块时序验证和完整的芯片验证能力非常重要,万一验证表明设计失败或参数超标,则必须修改某些模块综合脚本的设计。
关于功率问题,ASICmaster提供了一个功率估算器,它根据模块复杂度、嵌入式内存数量、估计开关特性、焊盘类型和负载等不同的参数估算出功耗的大体数值。根据对不同模块的估算和所要求的功率,可以优化综合脚本。结构设计工程师/集成电路设计工程师可以重新设定目标频率或实现在顶层上开关某些模块的功率控制逻辑。
为了完成静态时钟测试,必须采用先进的静态分析工具。排版后时序数据易于加载到业界标准的工具之中,排版后的时序检查采用原始时序约束文件也很容易进行。在多时钟的模块设计中存在错误路径和多循环路径,这样做可以避免将时序约束重新输入到独立的工具之中,从而节省大量时间。
此外,如果排版工具要修改网表,则可能无法用软件工具正确验证时序。这种情况下,许多FPGA设计工程师只能对芯片编程并在系统完成后测试设计的时序是否正确。不幸的是,如果没有完善的板级测试工具,这样的测试并不能覆盖最坏情况或检查出所有的时序错误。
尽管 RTL仿真令人满意,排版后却经常出现门级仿真失败。门级仿真失败的原因很多,如 RTL码错误、综合错误和时序错误等,在门级仿真器中诊断这些问题很耗时间。然而,由于门级网表已经保留在ASICmaster之中,所有的原始分层边界、实例、甚至节点名都可以在网表中找到。
小结
从用户的角度来说,解决系统设计问题的结构设计方法必须将必要的工具和最终目标紧密结合,本文的设计实例是一种高速网络。与FPGA设计流这样粗放的设计方法不同,高密度的器件结构设计方法简化了ASIC和FPGA设计工程师的任务,允许设计工程师发挥现有ASIC设计流程的优点。
Paresh Patel是 Morgan Hill CA 公司系统解决方案的主要负责人。
Hichem Belhadj是Actel公司的应用和客户支持经理。