创建实速运行在系统环境中的ASIC设计原型的必要性正日益增大。实现这种性能级的最具成本效益的技术是建立一个基于FPGA的原型,目前ASIC设计的1/3是用这样的原型进行验证的,其中2/3可以采用单FPGA原型,另外1/3需要多FPGA实现。
ASIC设计的规模、复杂度和成本在不断增加。(基于讨论目的,假设ASIC包含了ASSP和SoC器件。)与此同时,日益激烈的竞争使得今天的电子产品市场对上市时间的压力极为敏感。此外,市场空间越来越狭小,以消费市场为例,一个“典型的”ASIC设计周期在12到24个月左右,而推出采用这种器件的产品的市场机会可能只有2到4个月之短。
如果没有一开始就抓住市场先机推出产品,很可能会造成营收的大幅减少(如果市场机会完全失去,甚至会导致收入和投资的完全丧失)。这些因素大大增加了ASIC设计“一次设计成功(Right-First-Time)”的压力,反过来也推动了对芯片和系统级快速、高效、具成本效益的验证的需求。
对于现代ASIC设计,运行在真正高端(相应的也很昂贵)计算机平台上的软件仿真将很幸运地获得数Hz以上(亦即实时每秒有数个主要系统时钟周期)的等效仿真速度。实际上,这意味着可以只在设计的很小一部分上进行详细的软件仿真。因此,为了实现很高的仿真速度,就必需采用某种形式的硬件辅助验证,其中有三种不同类型如下:
加速: 基于硬件的加速解决方案通常包含有一系列专用处理器芯片或FPGA。这种形式的加速的一个主要缺陷是它只适合于加速孤立ASIC的仿真;也就是说,这种形式的验证不能验证处于系统环境中的器件。另一个问题是这种加速器可能非常昂贵,特别是由于同一时间每个单元只能被一个(或极少数)开发者使用,这一缺点就更加突出。
仿真: 基于硬件的仿真解决方案一般也包含有大量专用处理器芯片或FPGA。仿真的优点(相比加速而言)是这些表述都被集成在系统级环境中。缺点是仿真速度仅达到1MHz左右,这对许多验证环境来说是根本不够的。而且,这些单元同样非常昂贵,同一时间只能被一个(或极少数的)开发者使用。
基于FPGA的原型:在许多情况下,必需 “实速(at-speed)”验证设计。以视频处理为例,验证有部分可能涉及到视频输出流的主观质量(subjective quality)评估。这种解决方案利用一个或多个FPGA来构建ASIC的硬件原型。作为ASIC的功能等效电路,基于FPGA的原型可以同时进行芯片级和系统级测试。这种原型不仅能够提供10 MHz 到 80 MHz的实时仿真速度,价格也比较低廉,故能同时提供给多个开发者,也可以同时在多个开发现场进行部署。
Synplicity公司2004年12月对全球20,000多名开发者进行了关于硬件辅助ASIC验证策略的问卷调查。结果显示,目前有1/3 的ASIC设计是通过基于FPGA原型的方法来验证的。这份调查报告提出了一些与常见FPGA原型环境相关的问题。还介绍了目前最新型的这种形式的原型,如Certify ASIC RTL原型、Synplify Proto 单芯片ASIC RTL 原型、Synplify Pro 高级 FPGA 综合、以及Synplicity的Identify RTL调试器。
单FPGA原型
如前所述,目前有1/3的ASIC设计是通过基于FPGA原型的方法来验证的。即使ASIC设计增加了电路的规模和复杂性,现代FPGA在能力和性能上的最新进展也意味着这些设计的2/3可以利用单个FPGA来进行建模。
单FPGA开发板价格廉宜,可以直接从FPGA供应商或从第三方供货商那里购买到现货。这表明着要获得这种板子不是问题;相反,任何和单FPGA硬件原型构建环境有关的问题,其主要原因都在于应用综合和调试的不足。讨论如下。
传统解决方案的问题
许多基于FPGA原型解决方案的最大问题是ASIC和FPGA领域之间的HDL代码兼容性。例如,用于ASIC的源代码一般包含时钟门控(clock-gating)结构,必须被转换为对应的时钟启动结构以用于FPGA实现。类似地,ASIC代码常常包含Synopsys公司DesignWare? 库单元范例。这些单元通常不被目标FPGA所支持,故需要用通用RTL等效电路来代替。
许多原型环境都要求这类转换用手工完成,最后产生两个单独的不同代码流。这意味着无论何时对原始ASIC代码做改变,这种修改都会在FPGA等效电路中得到复制。不足为奇的是,这两个代码流很容易失去同步,从而可能导致FPGA原型设计功能与ASIC预期功能出现偏差这种恶劣情形的发生。
众多基于FPGA原型解决方案的另一个关注点是设计的适当可见度(visibility)。为参考起见,假设软件开发者是根据C/C++源代码进行设计,故使用源码级调试应用程序。类似地,当前的硬件设计工程师采用Verilog和/或 VHDL源代码;因此,为达到最高产量,他们需要在这种代码环境中使用源码级调试技术的能力。FPGA的一个优势是可以在设备自身中实现虚拟调试逻辑(“调试仪(instrumentation)”)。传统调试应用程序的问题是它们只以波形图的形式提交相关后续信息。
Synplify Proto(Synplify Pro Tool和Identify Software)产品优势
利用具有Synplicity公司的Synplify Pro和Identify应用软件(图1)的设计和验证环境可以实现创建单FPGA原型的最佳解决方案。Synplicity提供的这种集成产品称为Synplify Proto单芯片ASIC RTL原型解决方案。
这个流程的第一部分是利用Identify RTL Debugger软件的“调试仪”功能,它具有直观和易于使用的分层源代码浏览器界面(图2)。每一个信号都对应一个特定的眼镜符号(eye-glass symbol),信号值可被采样或探测,或用作触发值。在这些符号中选定一个点击鼠标左键,即告知Identify软件该信号需要用于调试,点击鼠标右键则让用户指定该信号是用于样本、触发,还是两者兼具。
类似地,任何条件控制结构,如IF-THEN-ELSE 和CASE 语句,都规定有相应符号。点击这些符号中的一个即通知Identify软件该结构可用于设置断点。
如图1所示,Identify软件“调试仪”元件的输出包括设计RTL(design RTL)和所有专门调试结构。它们都作为输入被馈入到Synplify Pro综合引擎中。
Synplify Proto软件中的综合引擎Synplify Pro工具,接收Identify软件的设计和调试RTL,并自动把所有以ASIC为中心的单元转换为对应的通用FPGA兼容结构。例如,Synplify Pro综合引擎自动把所有门控时钟结构转换为适合于FPGA实现的时钟启动等效电路。类似地,所有DesignWare单元也被自动转换为等效的通用RTL。
Synplify Proto软件的一项主要功能是它的HDL Analyst?程序,这个工具会自动产生与技术无关的高级分层模块示意图形式的设计图形以及――在综合之后――对应的门级原理图。Synplify Proto 和 HDL Analyst应用程序支持HDL源代码和模块级及门级原理图之间的完全双向交互探测(bi-directional cross-probing),从而使设计人员能够快速浏览设计,尽快确定所需要信号和逻辑功能的位置。
Synplify Proto软件还具有Synplicity的BEST(行为提取综合技术,Behavior Extracting Synthesis Technology?)算法,该算法能够在比传统综合工具短得多的时间内完成全局优化设计。这些算法在主要综合步骤之前对RTL进行分析并完成高级别优化。这种先进的技术自动识别、推测并提取高级别功能,比如状态机、复杂的算术运算以及存储器,并在这一高提取级别上进行初始优化。
除了诸如资源共享、寄存器配平(register balancing)、重定时(retiming)、复制和重新综合等高级功能之外,Synplify Proto工具还支持MultiPoint? 综合,这种综合技术提供了一种出色的方法来实现增量设计(incremental design)实践。所有这些功能结合起来使Synplify Proto成为能够为FPGA实现方案提供同类最佳优化和性能的解决方案。
当后续设计被加载在FPGA原型中时,可采用Identify RTL Debugger按硬件速度调试设计。前面调试仪阶段中选定的任何条件语句都可用于在源代码中设置断点。类似地,在调试仪阶段中任何选定为采样和/或触发的信号也可用来建立观察点条件(watchpoint condition),比如“监控信号XXX从0转换为1。”
当到达这种断点或观察点时,对应的信号和/或条件在HDL源代码中被自动查找并显示出来,连同其值(如果需要,也可以利用标准波形图显示器显示这些条件并跟踪其值)。此外,和被采样信号相关的环形缓冲器使用户可以向前或向后一步通过仿真。(Identify软件经由它的JTAG端口与FPGA通信,故本任务不占用通用I/O引脚。)
于是,Synplify Proto解决方案完全满足了单FPGA原型设计流程的需要。这种“极好的”ASIC RTL被用来驱动整个流程。Synplify Pro工具可以自动把任何以ASIX为中心的结构(比如门控时钟和DesignWare范例等)转换为FPGA等效电路,这就使设计人员能够充分确信基于FPGA原型的功能性准确反映了ASIC表述的功能。同时,Identify RTL Debugger的使用让设计工程师得以在他们的HDL源代码环境中调试设计,大幅度加深理解并提高了产量。
关键词:
基于
原型
为什么
有的
应该
采用
创建
环境