您的位置:控制工程论坛网论坛 » 嵌入式系统 » 基于FPGA的原型:为什么所有的ASIC都应该采用FPGA来创建原型

junhong07

junhong07   |   当前状态:在线

总积分:7915  2024年可用积分:1

注册时间: 2008-01-15

最后登录时间: 2019-06-23

空间 发短消息加为好友

基于FPGA的原型:为什么所有的ASIC都应该采用FPGA来创建原型

junhong07  发表于 2008/9/17 22:46:24      1031 查看 1 回复  [上一主题]  [下一主题]

手机阅读

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源代码环境中调试设计,大幅度加深理解并提高了产量。

多FPGA原型

创建较大规模ASIC设计的硬件原型可能需要多个FPGA器件,这种多芯片实现方案占了全部FPGA原型的1/3。这种情况下,开发者可选用第三方供货商的多FPGA原型板现货。不过,对某些项目而言,较大型的设计公司可能选择定制板。


传统解决方案的问题

在使用多个FPGA来建立单个ASIC的原型时,会有大量问题出现,其中大多数是关于如何划分主体设计的。但首先,在原始RTL源代码中任何以ASIC为中心的结构(门控时钟、DesignWare范例等)必须手工转换为对应的FPGA等效电路。

这同样会产生两个单独的不同步代码流,从而造成FPGA原型和ASIC预期实现功能间的偏差。


其次,工程师努力把不同的功能模块组聚集在一起,每一个组用一个不同的FPGA来实现。这种分组划分历来是在门级进行的。但最近有些流程可支持在RTL级进行分组,得到的每一个模块组都通过一个传统的FPGA综合工具,仅在这一点上各个FPGA的实际资源利用率是已知的。


这些情况中都存在一个问题,即工程师对各个组的面积和资源利用情况是盲目的,这导致大量耗时的反复操作。首先,工程师按照“这个模块可能消耗某个量的资源,那个模块也许需要某个量的资源”来约略估计。这个过程首先需要用到无数“组”命令,再进行综合(假设是基于RTL划分的情况),分析结果,然后是使用大量的“取消组”及“重组”命令来评估不同的实现方案。


此外,这类原型常常受限于FPGA上的I/O引脚数目,从而使任务更加混乱;一个低效的解决方案很容易消耗掉器件100%的I/O资源,同时只利用了相当少量的内部逻辑资源。为了避免这些限制,可能必需复用I/O组或者是在复制多个FPGA中的相同逻辑模块。(要实现特定性能目标,也常常需要进行逻辑复制。)

倘若这类原型中所用的每一个FPGA都有1000个以上的引脚,管理连接性的电子表格所包含的单元很容易就高达数千计。因此,跟踪分配给每一个FPGA的模块,跟踪连接性矩阵(各个FPGA间的连接性)毋庸置疑是一项手动频繁、耗时且易于出错的艰巨任务。

1楼 0 0 回复