>
首页 » 业界动态 » 提高ASIC验证的速度与可视性

提高ASIC验证的速度与可视性

作者:  时间:2008-01-24 21:12  来源:

前言

高性能、高容量FPGA在ASIC/SoC原型设计及系统两方面的应用持续增长。这些设计通常包括硬件及嵌入式软件(也可能包括应用软件)的复杂组合,这给系统验证带来了巨大负担,原因是检测、隔离、调试及校正故障要比最初设计所花费的时间、资金和工程资源多得多。

由于软硬件之间交互作用相当复杂且无法预见,仅仅是找到深藏于系统中的故障就需要进行长时间的测试序列,而且随后的调试过程还需要花费更多的时间及精力。另外,如果验证测试使用视频流等实际数据时,那么间发故障将很难(如果并非不可能)重现。

有多种验证方法可以选择,如软件模拟、硬件加速模拟、硬件仿真及基于FPGA的原型设计等,但这些方法各有利弊。而基于FPGA的原型设计验证方法则表现要好得多,能够以实时硬件速度运行。在ASIC/SoC设计中,基于FPGA的原型设计验证方法的成本比硬件加速及仿真解决方案低很多。但 FPGA验证的可视性差,无法监控内部状态及信号。

传统验证方法概述

首先以手机启动的设计为例,将各种软件模拟技术与基于FPGA的原型设计的性能进行对比,比较结果可参见图1。

软件模拟技术与基于FPGA的原型设计的性能对比

图1 软件模拟技术与基于FPGA的原型设计的性能对比

即使是高容量、高性能的RTL模拟器在启动系统时也要花费30天,而且还需要使用Testbench。同样,使用指令集模拟器(ISS)的传统硬件/软件共同验证环境需要花费10天时间启动系统,也需要Testbench。C/C++模拟虽然将系统启动时间缩短到24小时,但其对系统内部工作情况的可视性较差。

相比之下,在系统FPGA启动系统的时间仅为3s,基于FPGA的环境能够在实时工作负荷下验证系统,也可以作为嵌入式软件及应用软件开发人员的平台,以便集成并测试真实系统内容代码。FPGA用于传统验证环境的主要缺点是缺乏对内部信号、状态及存储器内容的可视性。

前面提到,软件模拟成本很低但全系统验证花费时间长,而基于FPGA的原型设计验证方法不仅成本很低,而且速度很快。硬件加速模拟及仿真的速度比软件模拟速度快很多,但比FPGA验证法慢很多,且其成本要比上述两种方法高得多,所以基于FPGA的原型设计验证方法具有最高性价比,如图2所示。

各种设计验证方法的性价比

图2 各种设计验证方法的性价比

传统基于FPGA的原型设计系统的明显缺点是对系统内部工作状态的可视性有限。提高基于FPGA的原型设计的可视性的方法很多,但这些技术各有其局限性或不足之处。例如将内部信号时分复用传输至FPGA主要I/O引脚,这种常用技术一方面提高了可视性,另一方面却严重降级了系统性能。

另一种常用技术是将“逻辑分析仪”的宏(macro)嵌入FPGA架构中。这些宏的用途很多,例如用户自定义触发器条件引起的触发动作可以命令宏从一组信号中采集数据。宏更多用于从选定信号中持续采集数据并存入RAM块(RAM无剩余空间时,最新数据将覆盖旧数据)。当满足用户自定义条件,如到达断点时,宏将停止采集数据并通过设备的JTAG端口向外部传输已存储的信号值。

嵌入式逻辑分析仪技术的优势是能够确保FPGA持续以实时硬件速度运行,缺点是可监控信号的数量及采集数据的“深度”(周期数)有限。另外,该技术只能根据存储器容量大小提供有限的可视性。

如果对所有不同验证方法的整个可视性范围(从无可视性到全可视性)进行比较,可以发现软件模拟居于榜首,硬件加速模拟及硬件仿真次之。而传统基于FPGA的原型设计在使用嵌入式逻辑分析仪技术以确保其速度优势时的可视性非常差,使调试变得更加困难和耗时。

可视性提高技术的不足之处

尽管嵌入式逻辑分析仪能够观察FPGA内部信号状态,但却无法提供全信号可视性。为解决这一问题,嵌入式逻辑分析仪“可视性增强”技术应运而生,只需采集与部分内部信号相关的数据,其他未被观察到的信号数据可由可视性增强型应用推断出。

该技术的确提高了性能,但因为无法观察与少量输入测试矢量相关的大量内部数据,从而限制了可采集数据的深度。如果用户希望增加深度(输入矢量的数量),则必须平衡监控信号的数量。这可能需要进行大量的验证运行(verification run),以跟踪问题条件,每个验证运行需要监控不同的信号集。这意味着一些非确定性、间发故障可能“漏网”,原因是其并未出现在并发运行中。

基于门级信号值的可视性增强技术会带来更多问题,如果上述技术无法识别所有的综合优化处理,可视性增强信号就不能对应为RTL信号。如果能够观测到断言,则FPGA的门级信号与断言的源代码(RTL)数据之间的模糊相关性至少可以使调试过程略微有趣些。

TotalRecall提供解决之道

TotalRecall技术可以解决基于FPGA的原型设计及FPGA 系统的可视性问题,该技术在提供100%可视性的同时,还可确保FPGA以实时硬件速度运行。TotalRecall从概念的角度看很简单,但实际执行非常复杂,这是因为透明处理多时钟域等问题。

TotalRecall技术的基本原理是在FPGA内部复制逻辑,然后存储该复制逻辑的激励,同时延迟其应用。这称为TotalRecall逻辑。图3为整个设计应用TotalRecall技术的例子。

TotalRecall的基本原理

图3 TotalRecall的基本原理

从图3中可以看出,主要输入端的激励信号直接馈入实际逻辑块,器件主要输出端的实时响应由此逻辑块产生。同时,原始测试矢量也馈入,作为缓冲器的存储区。假设该缓冲器的深度为1000字(words),则复制逻辑的激励信号将跟踪真实逻辑触发信号1000个时钟周期。

当检测到主要输出端的断言触发或错误响应等问题时,复制逻辑及其相应存储缓冲器将暂停。此时,激励存储缓冲器内容及复制逻辑内容状态由 FPGA器件的JTAG端口导出。TotalRecall技术提供极大测试矢量深度(与传统的基于逻辑分析仪的宏技术相比)的原因在于存储一次激励信号后即无须存储海量内部信号。

当然,复制逻辑的当前状态与其综合后的门级表示相符。然而,设计人员及验证工程师更愿意使用他们最初的RTL级,原因是这些表示易于理解,且在RTL级上工作可以大幅提升用户的工作效率。因此,TotalRecall技术将当前的门级表示映射为等同的RTL表示。

当检测到故障且以实时硬件速度运行时,用户能够马上进入他们熟悉的软件模拟环境,初始化设计及Testbench将引导用户轻松找到故障。已映射的内部状态信息用于对标准RTL模拟器的内部状态进行初始化。同时,激励存储器内容则用于生成驱动软件模拟器的Testbench。

请注意,使用TotalRecall技术无须复制整个设计,这一点很重要。验证工程师可能仅仅关注设计中包含的某个功能块,就可以使用TotalRecall技术复制这些功能块。将TotalRecall技术应用到单个功能块的实例如图4所示。

TotalRecall技术应用于设计中的子集

图4 TotalRecall技术应用于设计中的子集

此例中,当发现故障时,TotalRecall技术能够生成局部Testbench,专门用于测试挂起功能块,然后设计人员或测试工程师对Testbench和挂起块的初始状态信息进行详细分析。

TotalRecall技术的优势很多,例如,除了提供所有内部信号的观察通道外,用户还可以观察到内部存储区的所有内容。 TotalRecall技术可以在实时硬件速度下提供100%的可视性,其中包括寄存器、组合逻辑和存储模块等,使用户轻松跟踪、隔离并快速评估深藏在验证过程中的间发故障。当某个故障被检测出时,TotalRecall技术可以定位到故障前数百次甚至上千个周期前的状态值,并且用来对软件仿真器进行初始化设置。另外,TotalRecall还可以提供设计由初始状态到故障状态的测试序列。TotalRecall与各种设计验证技术的可视性对比如图5所示。

各种设计验证技术的可视性对比

图5 各种设计验证技术的可视性对比

验证与调试的革新变化

TotalRecall技术对验证与调试技术将产生深远的影响,下面是几个简单例子。

断言(Assertions):TotalRecall使断言十分有用。由于断言具有暂时性特点,过去很难充分利用基于断言的验证(ABV)的优势。采用TotalRecall技术则可采集足够深度的测试矢量以便完全隔离第一个触发断言的动作序列。

基于FPGA的ASIC/SoC原型设计:TotalRecall技术使基于FPGA的ASIC/SoC原型设计在实时硬件速度下能够提供 100%的可视性,尤其是TotalRecall技术具有检测、跟踪、隔离并调试间歇性及非确定性故障的能力,这对其他验证方法而言是难以实现的。

基于FPGA的在系统验证:在基于FPGA的系统中,由于对主电路板的改动相对较少,因此该系统支持TotalRecall技术。在验证或烧片系统中,可能会将高容量FPGA与用以复制整个设计的TotalRecall技术配合使用。一旦系统验证完毕,FPGA可以用成本更低的、容量更小的 (仅能放置主要设计逻辑即可)的兼容器件替代。

远程软件开发:一旦基于FPGA的平台上市,则可将备份分发给多个在不同地区的应用软件开发人员。过去,如果发生复杂的硬件-软件互动问题,则很难进行调试解决。现在,一旦出现故障,每个基于FPGA的开发系统均可配备TotalRecall技术,这样远程软件开发人员就能够立即将 Testbench及状态信息发回“基地”,由设计、验证小组快速解决。

总结

TotalRecall技术与传统验证技术的对比见表1。与传统验证技术(包括软件模拟、硬件模拟及基于FPGA的原型设计技术)不同, TotalRecall能够帮助用户快速检测、隔离、调试并解决深藏的偶发及间发故障。这些故障有时会出现在实时激励的情况下或者由软硬件之间复杂的非确定性互动引起,解决这种问题非常困难,除非在一定速度下运行(实时系统尤其要求如此)。

表1 传统验证技术于TotalRecall技术对比

传统验证技术于TotalRecall技术对比

除了向以实时硬件速度运行的设计提供了100%的可视性以外,TotalRecall技术还可帮助验证工程师在熟悉的RTL环境中跟踪故障。另外,TotalRecall技术使断言非常有用,当一个断言触发时,TotalRecall能够提供一个触发这个断言的仅包含几百或几千个周期的测试序列。

相关推荐

没有退路的FPGA与晶圆代工业者

FPGA  晶圆代工  2014-01-03

采用FPGA的可编程电阻的设计结构分析

FPGA  电阻  2013-09-24

从FPGA的制程竞赛看英特尔与Fabless的后续变化

FPGA  Fabless  2013-07-16

物联网融合自动化推动高效生产模式变革

物联网  FPGA  SoC  2013-07-09

14纳米FPGA展现突破性优势

14纳米  FPGA  2013-06-20

高清视频监控FPGA应用迎来小高峰

视频监控  FPGA  2013-06-20
在线研讨会
焦点