编辑推荐: |
本文章将建立一些定义,并概述试图通过基于FPGA原型设计来克服的挑战。希望对你的学习有帮助。
本文来自于微信公众号TrustZone,由火龙果软件Linda编辑、推荐。 |
|
前言
本系列文章将建立一些定义,并概述试图通过基于FPGA原型设计来克服的挑战。
我们将探讨基于soc的系统的复杂性及其在验证过程中所面临的挑战,还将比较和对比基于FPGA的原型与其他原型方法,包括系统级虚拟建模。在这后续,将和大家一起深入研究基于FPGA的原型技术如何有利于一些实际项目,并为基于FPGA的原型技术提供一些指导。那么开始吧!
摩尔是对滴
自从Gordon E. Moore描述了在集成电路上可以廉价放置多少晶体管的趋势以来,由半导体设计来实现的电子设计已经以一种难以想象的速度发展起来。
晶体管每两年翻一番的趋势已经持续了半个多世纪,尽管人们一再预测它将很快结束,但预计它暂时不会停止。
本章后面对驱动芯片设计的主要趋势的详细回顾将阐明为什么原型设计在采用中不断增长,甚至在许多公司中被认为是强制性的。为了进一步理解这一趋势,需要了解典型的项目动态及其工作分布。
1 SOC一个定义…至少对于这本书
为了本书的目的,我们将芯片系统(SoC)定义为为特定目的设计和制造,供特定所有者独家使用的设备。
有些人可能会认为SoC是ASIC(特定于应用的集成电路)的一种特殊形式,它们是正确的,但为了本书的目的,我们将只参考SoC。我们将坚持SoC始终包含至少一个CPU并运行嵌入式软件的定义。相比之下,ASIC并不一定包含CPU,在此程度上,SoC可以被认为是ASIC的超集。
我们并不是说那些正在创建ASIC、ASSP(特定于应用程序的硅产品)或由COT(客户自己的工具)或第三方铸造厂生产的硅的人应该读另一本书。
对于基于FPGA的原型设计目的来说,技术并不是相互独特的,事实上,许多基于FPGA的原型设计项目都是ASSP,甚至只是IP的一部分,可以用于许多不同的SoC设计中。
就基于FPGA的原型设计而言,如果它适用于SoC,那么它将适用于上述任何一种设备类型。这本书关注SoC的原因是,基于FPGA的原型设计的最大价值在于其独特的能力,能够提供一个快速和准确的SoC模型,以允许对软件进行验证。
2 SoC设计的经济学
SoC的设计就在我们身边。我们可以在所有引人瞩目的引人注目的消费电子产品中,以及不起眼的纯研究项目的角落,以及星际探测器的引导系统中找到它们。
特别是对于消费品,人们对智能手机、摄像头或便携式媒体播放器等设备的最大智能和功能的需求似乎有着永不满足的渴望。
为了满足这些需求一个典型的SoC设计将包括几个微处理器,一个或多个数字信号处理器和一些不同的接口,如蓝牙™或WLAN,高分辨率图形等等。
这一切加起来就是很多软件。考虑到集成电路的开发和制造,在图1中是一个倒三角形。所显示的数据是2009年的,我们看到芯片开发是一个约854亿美元的市场,是由EDA工具、设计服务、IP和嵌入式软件工具的86亿美元市场实现的。
在这种半导体设计和制造的支持下,是一个价值11.16亿美元的巨大电子系统市场,其中包括我们作为终端消费者所渴望的所有消费电子产品、无线设备和电子产品。
图2:消费设备的硬件-软件拆分
EDA工具,包括设计中不同阶段的各种类型的原型,最近专注于从IP提供商、半导体提供商、集成商和oem的设计链。
原型在这些交互中起着关键作用,因为早期原型允许客户与供应商进行需求沟通,并从供应商为客户进行早期软件开发和验证。
为了理解多种形式的原型设计可以实现的影响,让我们考虑一个典型的复杂SoC设计。图2显示了一个典型的智能手机的拆卸情况。最终用户体验在很大程度上受到它们所呈现的应用程序的影响。
好的旧硬件,模拟设备和天线的设计显然仍然很重要,但用户只有在它们出错时才会真正注意到它们!
用户应用程序由中间件、操作系统和驱动程序组成的软件堆栈来实现;所有这些都是专门设计的,使软件尽可能独立于硬件。
例如,应用程序开发人员不能直接访问设备的硬件内存、定时或其他低级硬件方面。软件堆栈由硬件元素堆栈进行匹配。终端设备使用几个板,由几个外围设备和芯片组成,其中包含不同的块,要么作为IP重用,要么由芯片供应商专门开发来区分他们的硬件。
硬件和软件的依赖性导致了不同公司类型之间的复杂关系。
知识产权提供商向半导体供应商销售, 半导体供应商向集成商 集成商又是oem销售商 所有这些供应商都为软件开发人员提供支持。这些交互的启用可以说已经成为当今工具供应商要解决的最大问题。
这种实现的主要挑战已经成为今天:
•(a)尽早实现软件开发。
•(b)在目标系统环境中的硬件/软件的验证。
•(c)设计和重用芯片处理器加速器外周互连结构(如ARM®互连AMBA®互连)从基本构建块组装的芯片的
•(d)架构设计。
2.1.案例研究:一个典型的SoC开发项目
考虑到图2中硬件堆栈的底部三层,让我们来分析一个特定的芯片开发项目和原型设计的潜在影响。
选择的例子是一家大型半导体公司设计的无线耳机,在主流65纳米技术。芯片的目标是高容量,快速移动市场和预计生产运行27个月,平均每月150万台和平均销售价格55.50美元。
在开发过程中情况进展顺利,只需要一个金属掩模旋转,允许在第一个硅可用后进行6个月的客户和现场评估。根据国际业务系统研究中描述的开发成本模型,该项目的开发成本总计估计为31,650,000美元。
现在让我们考虑图3,它说明了芯片开发成本如何在典型的12个月的硬件设计周期中分布,从完整的规范到最终验证的RTL,准备布局。
(这颜色真的是看出个pi-图3:一个65nm无线耳机设计的项目付出)
实际上,RTL验证消耗了大部分的工作,并且是决定12个月的项目长度的关键因素。
设计中具有重大影响的另一部分是伴随代码实际开发的整体设计管理。
物理设计完成于项目开始后约15个月(即RTL验证后3个月),然后在第17个月准备封测。
硅验证后在19个月增加工程样品,需要几个月的时间
如图3进一步说明,当RTL得到大量验证和稳定时,该项目的软件开发会增加。
它被分为操作系统支持和移植、低级软件开发和高级应用软件开发。
这里所有的软件开发工作仍然是芯片供应商的责任,而不是第三方供应商。
总的来说,软件开发消耗了该设计总成本的40%,并将项目计划扩展到总共27个月。
当将开发和生产成本摊销为预期销售时,该项目在约34个月后,即在产品发布7个月后,但在产品开发开始近3年后,达到盈亏平衡。这个例子中的挑战是,我们必须提前近三年预测高销量,以确定我们的芯片。怎么能使这种几乎无法忍受的情况变得更容易呢?
答案是“更早地启动软件”。
使用计算器的投资回报率(ROI)由全球半导体协会(GSA),它可以计算,如果软件开发和验证开始七个月前在我们的例子项目,生产可以开始三个月前,随后的时间平衡减少了五个月。此外,由于该芯片额外的首次市场设计胜利,预计将获得5000万美元的收入增长。
这正是其许多形式的原型设计所能实现的目标。通过原型设计提供的软件开发和验证的早期开始意味着它对投资回报率的影响可能非常显著。
为了更深入地理解原型设计的需求和好处,让我们来看看现在从虚拟到基于FPGA的不同类型的原型设计。
3 虚拟平台:没有硬件的原型设计
我们可以在我们的项目中使用各种各样的原型设计。在一个项目中,最早出现的是虚拟原型。它们代表了soc、板、虚拟化io和用户界面的功能完整但时间松散的软件模型,所有这些都运行在基于主机的模拟上。
虚拟原型可以在处理器指令集模拟器上执行未经修改的生产软件代码,并且它们可以接近实时运行。作为完全基于主机的虚拟原型,它们还可以提供良好的系统可见性和控制,这对于在多核cpu上的调试特别有用。虚拟原型也可以有虚拟的用户界面,允许与我们这些慢速的人类进行实时交互。图4中所示的屏幕截图摘录来自于一个运行在同步系统创新者工具上的OMAP设计的虚拟原型。
在这里,我们不仅看到了可识别的模拟窗口,还看到了板上键控制的表示和来自虚拟摄像头的输入,在这种情况下,连接到运行模拟的主机电脑上的网络摄像头,所有这些都没有硬件完成。我们将在第13章中讨论基于FPGA的原型与simulation的链接。
虽然虚拟原型在使用时间松散的模型时,提供了非常高的速度(多个MIPS),但它们不能提供硬件设计团队首选的计时精度。更精确的软件模型可以添加到虚拟原型中,但它们的模拟速度将下降到个位数的MIPS范围,甚至更低,这取决于周期精确与松散时间的模型的混合。
然而,虚拟原型在流程中最早是可用的,假设模型可用,所以它们是早期软件调试的完美选择。虚拟原型提供了对系统行为的几乎完整的洞察力,而且它们也很容易为多个用户进行复制。
最后,因为它们是在RTL之前创建的,所以虚拟原型允许硬件架构和早期软件的协同开发。例如,如果虚拟原型显示产品的并发应用程序没有足够的处理带宽,则可能会添加额外的或不同的cpu。
3.1.SDK:一个非常常见的原型设计环境
与虚拟原型相关的是所谓的软件开发工具包,或称SDK,其中一个非常常见的例子是用于为苹果iPhone®开发应用程序的SDK。
这个SDK在可用的头几天就被下载了超过10万次,所以我们可以认为这是一个非常广泛可用的原型平台。虽然相比之下很简单,但sdk提供了完整虚拟原型的许多优点,但是它们的精度往往更有限,因为它们可能不能像虚拟原型那样准确地表示实际的寄存器。
他们的目标是拥有“足够的准确性”,以欺骗应用程序,让它以为它是在最终的平台上运行的。sdk允许通过更高层次的应用程序编程接口(API)接口到平台。所开发的软件通常是为主机上编译的SDK执行它,然后在程序员验证了SDK上的功能后,需要重新编译到实际的目标处理器。
图5显示了一个安卓™SDK的屏幕截图。应用程序的编程是使用高级操作系统api完成的。编程是完全独立于实际的目标硬件,所以当实际针对最终设备时,重新编译是必要的。
目标设备的用户界面——如图5所示,可以进行建模,以便可以虚拟地体验最终用户环境。
3.2.FPGA:在半导体的原型…前硅
在设计流程的后期,但仍然是在真正的硅片之前,一个基于FPGA的原型也可以作为软件开发和验证的工具。
基于FPGA的原型验证是soc、板和IOs的全功能硬件表示。因为它们实现了与SoC相同的RTL代码,并且在所有外部接口和刺激连接下几乎以实时的速度运行,所以它们非常准确。
它们提供了更高的系统可见性和控制比实际硅将提供可用,但不匹配的调试和控制能力虚拟平台,或任何其他模拟器,所以它们不是我们将选择的用来调试所有RTL的第一个平台。
基于FPGA的原型的关键优势是它们能够高速运行,每个建模的CPU产生数十个MIPS,同时保持RTL的准确性。
它们通常在设计流程中可用,因为RTL需要可用且相对成熟。由于将RTL映射到基于FPGA的原型的复杂性和努力,在RTL验证稳定之前使用它们是不可行的。
出于同样的原因,基于FPGA的原型并不打算用作硬件/软件协同开发平台,因为在SoC设计流程中,硬件(即RTL)几乎是固定的,并且部分验证。
在基于FPGA的原型运行之前,设计团队对于更改硬件架构将会非常犹豫,除非发现了一些主要的架构瓶颈。
最后,一旦稳定和可用,基于FPGA的原型的复制和交付成本高于基于软件的虚拟平台,但仍然比模拟器便宜得多,我们接下来将讨论。
3.3.模拟器:原型设计还是验证?
仿真提供了另一种基于硬件的替代方案来实现软件开发,但与基于FPGA的原型设计的不同之处在于,它的目标是较低的性能,但具有更多的自动化。
模拟器有更多的将RTL自动映射到硬件中,以及更快的编译时间,但是执行速度会更低,通常会下降到单mips级别以下。仿真的成本也经常被视为在软件开发中容易复制它的一种威慑,尽管仿真器由于其易于使用而受到软件工程师的欢迎。
与基于FPGA的原型一样,仿真器也不是硬件软件协同开发的现实平台,因为它们需要RTL可用。模拟器更有可能的用途是作为正常RTL模拟的加速器,因此许多人认为仿真不是一个原型平台,而是作为对正常验证环境的扩展;一种更快的模拟器。然而,只有当软件需要循环精度和高可见性,并且可以容忍非常慢的运行速度时,模拟器实际上可以用于软件开发。
软件将需要被限制在短时间的运行中,比如启动ROM代码,因为缓慢的运行速度将意味着运行时可能很长;当然对于长的软件任务来说太长了,比如用户应用程序或操作系统启动。
3.4.第一批硅片作为一个原型平台
最后,在实际的硅可用之后,使用第一个硅样品的早期原型板可以在实际的硅上实现软件开发。
一旦芯片投入生产,就可以提供非常低成本的开发板。此时,原型机将以实时速度和全精度运行。软件调试通常是通过使用JTAG接口和连接到标准软件调试器的特定硬件连接器来实现的。
虽然使用实际硅的原型板可能是成本最低的选择,但它们在设计流程中很晚,几乎不允许软件开发领先。
此外,对硬件原型的控制和调试洞察力非常有限,除非提供特定的片上仪器仪表(OCI)功能。与虚拟原型相比,它们也更难复制——通过互联网下载提供一个虚拟平台比发布电路板和处理定制、升级和对物理硬件的潜在损坏要容易得多。
从这个概述中可以看出,原型设计专注于提供硬件的早期表现,特别是芯片及其周围的外设。原型验证适用于不同的使用模型,作为交换,它们会对需求产生影响。
4 原型使用模型
如前所述,今天我们使用不同的执行引擎来完成原型设计。一旦一个芯片开发项目开始,项目经理几乎被要求立即为各种目的提供“未来芯片”的早期表示——原型,例如:
•市场营销需要材料和基本的文档来与早期的采用者进行互动。
•软件开发人员希望正在开发的设计的可执行表示,以允许他们开始移植操作系统。
•硬件开发人员也希望可执行规范来验证他们的实现是正确的。
•原型从第一天开始就开始需求量很大!
这种需求是由三个主要的使用模型驱动的:体系结构探索、软件开发和验证。
4.1.针对架构探索的原型设计
在项目开始时,架构探索允许芯片架构师就芯片拓扑结构、性能、功耗和片上通信结构做出基本决策。
例如,早期收集的关于缓存利用率、处理器性能、总线带宽、突发率和内存利用率的信息驱动着基本的体系结构决策。
在一个理想的世界里,芯片架构师将希望获得具有全精确模型的原型——代表设计的所有内部部分——同时以全速运行。不幸的是,这两个特征通常不能通过同一模型来实现。在最终芯片从制造中回来之前,或至少在设计周期后期RTL可用和验证之前,才能收集完全准确的数据。此时,FPGA原型可以用于接近实时地执行设计。
芯片架构师还可以与“早期采用者”客户进行交互,理想情况下,他们希望使用可执行的规范来演示设计的关键特性。
然而,在现实中,芯片架构师主要依赖于像微软Excel™这样的工具来进行基本的、静态的架构分析。他们通常不得不依靠他们的经验和信封背面的评估。因此,与早期采用者客户的互动是基于书面规范和在白板上进行的大量联合讨论而进行的。
4.2.用于软件开发的原型设计
理想情况下,软件开发人员希望从一开始就开始移植遗留代码和开发新的软件功能,即当硬件开发开始时。
他们希望接收芯片的可执行表示,它实时运行,准确地反映所有与硬件相关的软件相关接口(如寄存器映像)。
根据正在开发的软件类型,用户可能需要与底层原型不同的精度。要开发的软件类型直接决定了对硬件执行精度的要求:
•应用软件的开发往往不考虑实际目标硬件的精度。这是sdk的主要前提,它允许对表示硬件的高级api进行编程。
•对于中间件和驱动程序,可能需要一些定时的表示。对于性能分析的基本情况,对缓存和内存管理单元的计时注释可能就足够了,因为在涉及到性能方面,它们通常比指令的静态计时更重要。
•对于实时软件,指令的高级周期定时与微架构效果相结合是很重要的。
•对于时间关键的软件,例如,中断服务例程(ISRs)的精确响应行为,完全循环精确的表示是首选。
通常直到今天,开发人员仍会基于寄存器规范“盲目地”开始软件开发,但随后却会与硬件团队仍然可能对寄存器规范做出的更改不同步。
对于衍生产品系列,应用软件通常使用高级api开发,它可以在上一代芯片上执行。稍后可用的底层驱动程序、操作系统和中间件可以确保api保持不变,并且不会破坏遗留软件。
4.3.原型设计的验证
在早期,芯片环境是使用跟踪和流量生成器来表示。早期的测试台基本上定义了正在开发的芯片的使用模型场景。
在一个典型的设计中,在测试台中隐藏的错误和在实际设计本身一样多。因此,尽早开发测试台是很重要的。理想情况下,验证工程师希望从一开始就能提供“被测设备”(DUT)的可执行表示形式。类似于软件开发对不同模型的需求,验证也有对不同精度级别的要求。
DUT的高级模型将使验证场景的开发成为可能。具有精确寄存器和DUT行为的纯功能表示的DUT模型满足了相当比例的测试台开发。为了验证时间和详细的管道延迟,时间近似最初可能是足够的,但最终将需要在寄存器传输级别(RTL)上进行周期准确的表示。
硬件验证的一个重要趋势是功能验证转向软件,软件在嵌入在设计中的处理器上执行。为了回答最近的调查问题:“您在设计中是否使用运行在嵌入式处理器上的软件来验证周围的硬件?”,超过50%的受访者回答说,他们已经在使用嵌入式软件进行验证,其中十分之一的受访者也在使用该软件,重点是硅后验证。(就是整成开发板进行验证)
这种基于cpu的方法的优点是验证重用:
•测试是在处理器上执行的,最初使用快速指令-精确的处理器模型与DUT的事务级模型(TLM)交互,通过其寄存器接口访问它。
•之后,这些测试可以在混合TLM/RTL模拟以及将处理器映射到RTL的纯RTL模拟中重用。
•这些测试仍然可以用于硬件原型,其中处理器在工作站上作为TLM执行,并通过高速TLM接口连接到硬件。执行测试的
•处理器也可以在FPGA原型中以RTL的形式运行,也可以作为插件板上的芯片带到FPGA原型中。
•最后,当芯片从制造中回来时,基于软件的测试也可以用于硅后验证。
5 原型设计中的用户优先级
随着所有这些趋势的结合,芯片的原型设计正成为成功的芯片设计的明确要求。
然而,不同的用户优先级会导致不同的原型设计选项作为最佳的解决方案。我们可以用多种方式列出它们,但在我们的案例中,我们选择突出显示12个不同的优先级,如下所示。
•可用时间:一旦我们的设计规范被冻结,软件验证环境的交付延迟将直接影响我们在SoC项目的软件部分启动和进展的速度。
•执行速度:理想情况下,所选的开发方法提供了真实硬件执行速度的准确表示。对于软件回归,比实时速度更快的执行可能是有益的。
•精度:正在开发的软件类型决定了开发方法的准确性,以表示实际的目标硬件,确保在硬件/软件边界识别的问题不会被开发方法本身引入。
•容量:原型机是否可以处理最大的SoC设计,还是不需要这样做?性能和成本如何随着设计尺寸的增加而变化?平台是否能升级为更大的设计?
•开发成本:开发方法的成本包括实际的实际成本,以及在其中引入硬件/软件设计的开销成本。生产成本决定了如何进行生产一个简单的开发方法可以被复制来提供软件开发团队。
•提升成本:除了获得硅所需的开发方法之外所需的任何活动都可以被认为是开销。通常,软件团队在获得硬件的早期表示时所面临的巨大压力决定了是否考虑对提升成本的投资。
•部署成本:如果我们要创建原型的多个副本,那么我们需要知道在最终用户的实验室中创建、部署、维护和支持将花费多少成本。
•调试洞察力:分析设计内部的能力,即能够访问信号、寄存器和硬件/软件设计的状态。
•执行控制:在调试期间,使用硬件中的断言或断点停止目标硬件的表示是很重要的,特别是对于具有多个处理器的设计,所有组件必须以同步的方式停止。
•系统接口:如果目标设计是SoC,那么能够将正在开发中的设计与实际接口连接起来是很重要的。例如,如果涉及到一个USB接口,则该软件将需要连接到真正的USB协议堆栈。同样,对于网络和无线接口,连接到真实世界的软件是优先考虑的。
•周转时间:从一组新的源文件中,无论是SystemC™模型还是原始的RTL,创建一个新版本的原型需要多长时间?它是否以分钟、小时、天或周为单位来衡量,以及在任何情况下项目需要什么?
•价值链接到低功耗和验证:原型不必是独立的平台,如果它们可以链接到SoC设计团队的其他部分,特别是用于验证,它可能会增加价值。在插入各种实现步骤之前和之后进行原型化,例如修改以降低功率,也将是有价值的。
可能没有用户同时关心过所有这些决策标准,而且对于任何给定的SoC项目,有些项目会覆盖其他的。在我们阅读这本书时,我们将重新审视大多数这些标准。在书的最后,我们将展望原型作为一个整体的未来,以及基于FPGA的原型在未来的位置。展望未来,我们需要意识到最近在SoC和更广泛的用户基础和行业中正在出现的过去和趋势。现在让我们来看看这些趋势。
6.芯片设计趋势
我们将希望在未来的SoC项目中使用我们的原型环境,但是这些项目会是什么样子的呢?
了解芯片设计的八个主要趋势将导致对未来的项目的更好的准备和更灵活的内部原型方法。
推动半导体设计需求的八个主要趋势是:
•进一步小型化到更小的技术节点。
•整体设计的减少就开始了。
•可编程性结合了嵌入式软件内容的快速增加。
•IP重用。
•应用程序的特异性。
•采用多核架构。
•低功率。
•芯片的模拟/混合信号部分的增加。
所有这些都对原型需求产生了深远的影响,我们将快速地查看它们及其支持的趋势数据
6.1.小型化到更小的技术节点
在处理器设计中,晶体管的数量从1979年定义X86的29,000个晶体管增加到2005年定义双核离子的17.2亿个晶体管。这比26年增长了近6万倍。这一趋势一直持续,并且可能在未来继续,从较小的技术节点开始进行的设计数量将会增加,如图6所示。该图表(由加州洛斯加托斯的国际商业战略公司(IBS)的行业分析师提供)显示了每个节点占所有ASIC和SoC设计开始的百分比。
65nm和45nm节点的设计始于2007年,现在已成为主流。因此,需要形成原型的设计的规模稳步增加,对基于软件和硬件的原型都需要越来越多的容量。
基于软件的原型的速度自然受到传统软件串行执行的限制。这进一步增加了提高软件模拟速度的压力,特别是对于处理器模型。
虽然自20世纪90年代末以来,已经使用专有技术建立了快速模拟模型,但标准化现在已经允许将来自各种来源的模型组合成基于系统c的模拟,而不会使用开放的TLM-2.0api实现显著的速度下降。
对于基于硬件的原型,这一趋势进一步增加了采用更高密度的fpga进行原型设计的压力。考虑到FPGA原型设计的能力受到可用FPGA能力的限制,唯一的选择是划分和征服,并且只对设计的较小部分作为原型。为了解决这种情况,FPGA原型使用堆叠和扩展的标准接口变得更加可扩展。最后,在要在正在开发的芯片的系统上下文中测试一个原型的情况下,设计的划分可能是困难的。考虑到每个原型板的fpga数量将增加以允许足够的容量,对跨FPGAs自动划分设计的要求也增加了。
6.2.整体设计开始减少
小型化趋势的另一方面是设计开始次数的减少。如图7所示,soc的设计总数就开始了预计将会显著减少。乍一看,现代设计的开发成本是如此之高,以至于更少的公司能够负担得起SoC的开发。
然而,在现实中,最大的下降将是对旧技术的设计开始,即130纳米及以上。设计团队将继续为那些软件内容和对原型设计的需求最大的前沿流程进行设计。
这一趋势的直接结果是,每个设计的风险急剧增加,越来越多的公司已经要求在设计之前对其设计进行原型设计,以验证正确性和避免昂贵的重新旋转。原型设计可以在设计流程的不同点上使用各种不同的技术进行。总的来说,设计开始阶段的减少只会进一步增加每个项目的风险,因此原型设计将变得更加重要。
6.3.增加了可编程性和软件功能
绝大多数的电子系统和产品现在都包含了一些可编程性的元素,这在本质上是延迟的功能,它有好几种形式。首先,对ASIC、ASPP和FPGAs设计开始的相对数量的估计表明,大量的设计开始是在FPGAs和其他可编程逻辑设备中;这显然是一个可编程硬件。
其次,包括微处理器在内的FPGA设计的数量也在快速增长。这为可编程硬件增加了软件的可编程性。
此外,相当大比例的ASIC和ASSP设计开始时也包含嵌入式处理器。因此,该软件甚至增加了专用SoC芯片的可编程性。因此,软件的重要性正在显著增加,即使是在SoC项目中也是如此。
图8说明了预计的软件工作占技术节点的研发费用的百分比。在65纳米处,预期的软件研发费用已经超过了硬件开发。
总的来说,软件已经成为芯片开发的关键路径,其努力正在超过硬件。在传统的串行设计流程中,软件开发开始得很晚,也就是说,当硬件顺利进行时,甚至在最终的原型芯片可用之后。因此,软件的可用性可以阻碍芯片的发展达到主流生产。
从原型化的角度来看,这代表了在项目中尽早开始软件开发的原型化的另一个驱动因素。由于软件在很大程度上决定了一个设计的功能,它注定也会改变验证流程。对原型的软件验证将进一步重要,软件也将成为硬件验证的驱动因素。作为使用VHDL或系统版本编码的测试台的经典验证的替代方法,使用软件的定向测试最近得到了更多的采用。
顺便说一句,如前面所述,这允许在开发的各个阶段中使用一种新的验证重用形式。为了支持这种类型的验证重用,尽早构建硬件原型将成为强制化的。考虑到验证在不同开发阶段的无缝重用,不同原型技术之间的接口也变得更加重要。如今的虚拟原型可以连接到基于硬件的原型上,以允许基于硬件和软件的混合执行,提供了各种优势:
•首先,避免必须重新建模RTL中已经可用的设计部分,可以减少开发工作,并支持硬件辅助的虚拟平台。
•其次,硬件原型可以更快地提出,因为测试台——传统上可以包含总体缺陷的50%——已经被验证和稳定,因为它们以前已经应用于虚拟原型。
•第三,通过混合使用基于硬件和软件的技术,可以更灵活地管理原型的准确性、速度和可用性时间之间的权衡。
•最后,在系统上下文中验证硬件/软件原型需要与正在开发的芯片环境的接口。来自硬件原型的接口可以接近,甚至在实时执行。使用虚拟原型的接口甚至可以在实际硬件可用性之前就可用。例如,USB
3.0驱动程序已经在虚拟平台上的事务级模型上开发出来,甚至在实际的电缆可用之前。
6.4.知识产权块重用
另一个重要的趋势是IP块的重用。随着芯片复杂性的不断增加,IP重用已成为保持设计生产率增长的一种重要途径。图9显示了重用的百分比继续增加,虽然没有在此图中显示,但自2007年以来,块的重用从45%增加到55%,即大多数块现在在其他设计中被重用。
同时,直到每个芯片的平均IP块数量从28个增长到50个,如图10所示。这两个数据点都来自于Semico研究公司的一项研究。考虑到这些IP趋势,芯片设计本身正成为一项通过互连结构组装现有块的任务。芯片的差异化可以通过定制的块、定制的协处理器,当然,还有软件来实现。
增加IP重用对原型化有各种影响。首先,预定义的IP模型在FPGA原型中进行预先映射和预验证,以减少启动时间和减少不必要的工作重复。IP的用户也越来越多在项目的不同阶段和作为IP交付本身的一部分的不同抽象级别上请求模型库。这在处理器领域已经很普遍了,用户要求ARM®、MIPS®、ARC®和扩展®等IP提供商提供可用于早期软件开发和验证的处理器模型
虽然在过去,这些模型的开发是一个挑战,因为它们必须适应各种专有的模拟环境,但这种模型的开发最近在商业上变得可行。
随着OSCI系统c TLM-2.0等标准的出现,处理器、外围设备和互连的模型已经可以在不同的系统c兼容的仿真引擎之间进行互操作。标准化意味着从早期采用者阶段到主流阶段的过渡,因此IP模型的可用性已经大大提高。
6.5.应用特异性和混合信号设计
芯片开发的目标应用市场对芯片开发本身有着深远的影响。图11根据国际半导体技术路线图(ITRS),图11总结了不同目标应用的一些定义特征。
ITRS区分了芯片设计的四种主要类别——soc、微处理器单元(MPUs)、混合信号设计和嵌入式内存。每个类别都有特定的要求。在保持模具面积不变的同时提高性能对mpu很重要。降低电源电压是混合信号产生的一个关键问题。
在SoC域内,ITRS将网络应用程序与消费者便携式和消费者固定式分离开来,其各种子需求如 图11所示
总的来说,最终应用对于芯片设计要求和SoCs变得更加重要。因此,不同应用领域的原型需要特定应用程序的分析以及特定应用程序的系统接口,其中大多数具有显著的混合信号内容。除了其他特性外,外部接口的速度还决定了一个原型是可以直接使用还是需要减慢。
6.6.多核架构和低功耗
几十年来,处理器速度的扩展满足了软件应用程序对性能日益增长的需求,但行业一直了cpu4 GHz和嵌入式处理器1
GHz的限制。这种限制的原因在于功耗,当缩放到更高的程度时,它只是超过了功率包络。这种真正而困难的限制导致了一种转向多核架构的趋势。简单地说,在更低的频率下,更多的核将比简单地扩展一个核导致更少的功耗。图12中的图表证实了CPU和数据处理引擎(DPE)在消费者应用程序中使用的这一趋势。
例如,我们可以看到,从2007年到2011年,dpe的平均数量几乎增加了两倍,而且预计将进一步增加。虽然这在硬件方面是一个很好的解决方案,但现在的挑战已经转移到了软件方面。
传统上,顺序软件现在需要分布在多个核上。对于原型设计来说,这意味着调试(查看硬件/软件执行的能力)以及启动、暂停、恢复和停止硬件/软件执行的能力已经变得更加重要。
今天的虚拟原型已经提供了非干扰性调试设计的智能技术,并且可以在任何给定的时间启动和停止它们。对基于硬件的原型的调试和控制的需求也增加了,但基于FPGA的原型的调试能力仍然落后于虚拟原型。
7.总结
所有形式的原型都为验证硬件设计和验证软件提供了强大的方法,模型或多或少地模仿了目标环境。基于FPGA的原型设计在项目的关键后期阶段尤其有益。用户有几个原型设计选项根据他们的主要需求,可以选择各种基于软件和硬件的技术来原型他们的设计。
由于设计验证和软件开发现在主导着SoC的开发工作,原型设计的使用在减少项目持续时间和设计成本方面从未像现在这样重要过。上面提到的各种IC趋势也使我们只得出一个结论:原型已经成为芯片设计的必要元素,在未来将变得更加重要,我们将在本书的最后一章看到。
在本章中,我们已经介绍了许多术语和一些完全不同的原型设计类型。它们在现实生活中都有多普遍?为了回答这个问题,我们参考图14,它总结了对2009年8月SoC虚拟会议期间进行的使用调查的116个回复。当被问及“您将使用什么方法来为您的设计项目开发依赖于硬件的软件(例如,驱动程序、固件)时?”,研究结果显示,用户确实能识别出各种不同的原型设计解决方案。结果表明,前面描述的所有原型技术都在积极使用中——这是上面讨论的不同优先级的明显结果——有利于不同的原型选项。在下一章中,我们将放大基于FPGA的原型设计的好处,特别是对软件团队和整个SoC项目的好处。
|