多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间的连接性)毋庸置疑是一项手动频繁、耗时且易于出错的艰巨任务。
The Certify (Identify Software)产品优势
关于创建多FPGA原型的最佳解决方案是采用具有Synplicity公司的Certify和Identify 应用软件的设计和验证环境。
这一流程的第一部分是利用Certify解决方案来进行源代码划分应用。若采用的是现成的多FPGA原型板,用户只需要简单地通过下拉式菜单告知Certify程序所用板子的相关信息即可,菜单上包含了所有主要第三方供应商的产品。如果是定制板,则Certify软件能够在线建立一个“虚拟”多FPGA板(然后基于这个虚拟板建立真实板)。
和Certify解决方案紧密联系的是Synplicity的HDL Analyst公用程序。如前面讨论过的,这个工具会自动产生与技术无关的高级分层模块示意图形式的设计图形以及――在综合之后――对应的门级原理图。Certify 和 HDL Analyst应用程序支持HDL源代码和模块级及门级原理图之间的完全双向交互探测,从而使设计人员能够快速浏览设计,尽快确定所需要信号和逻辑功能的位置。
图4所示为构成原型板的FPGA。这些虚拟元件中的每一个都有两个相关“温度计型”的显示器:一个显示I/O的利用情况,另一个显示器件的面积/资源利用率。
Certify软件能够根据相关I/O和逻辑资源以及FPGA和FPGA之间路由资源的情况,进行自动引脚分配,并利用它先进的快速划分技术(QPT)自动实现首过(first-pass)划分。用户也可以选择交互式划分(通过简单地把代码模块拖动到不同的FPGA上来完成),或者也可以混合使用上述两种技术。
Certify解决方案提供了大量非常强有力的工具来协助划分工作的完成。例如,在自动(或交互式)引脚分配之后,Certify工具能够分析相应结果,并让用户有机会使用Certify Pin Multiplexing (CPM),即多个信号集复用在一起,以减轻器件相关I/O资源上的负载。
除了便于多个器件的逻辑复制外,Certify软件还提供了位切片公用程序(bit-slicing utilities),籍此可以把很宽的数据路径结构划分为较小的实体。而且,Certify软件还具有复杂完善的“拉链(zippering)”能力,可以把大模块分割成较小模块(随后分配给不同的FPGA)。
另一项非常有用的功能是它能够建立备选划分方案并命名存储。这就允许用户保持对多个划分方案的控制。
一旦用Certify工具完成了RTL级的划分,就可以利用Identify RTL Debugger工具快速便捷地识别所有将用来设置断点的条件语句和任何必需被采样或用作触发的信号,对设计进行调试。
在Identify软件的调试步骤之后,是使用Certify软件来综合有关不同FPGA器件的代码流。需注意的是,Certify软件提供了相同的能力,并使用了和Synplify Pro解决方案相同的算法。例如,Certify软件可以把任何以ASIC为中心的单元(门控时钟、DesignWare范例等) 自动转换为对应的通用FPGA兼容单元。类似地,在主要综合步骤之前Certify软件即充分利用Synplicity公司的BEST算法来分析RTL并进行高级别优化。Certify软件声称具有Synplify Pro工具的所有高级综合能力,比如资源共享、寄存器配平、重定时、复制和重新综合等。
这个流程的关键点在于Certify解决方案把各个不同FPGA简单看作设计层次中的附加层。这意味着Certify软件具有独特的优化时序路径以提高性能的能力,即使那些路径跨越多个FPGA (Certify软件还能提供时序报告,这样设计人员在硬件编程之前就可以知道原型能够实现的性能)。通常,一旦经过划分的设计被加载到原型板上的FPGA中,就可以利用Identify RTL Debugger 按照硬件的速度对设计进行调试。Identify软件经由它们的JTAG端口与FPGA通信,因此整个任务中没有通用I/O引脚被占用。
本文小结
创建实速(at-speed)运行在系统环境中的ASIC设计原型的必要性正日益增大。实现这种性能级的最具成本效益的技术是建立一个基于FPGA的原型,目前ASIC设计的1/3是用这样的原型进行验证的,其中2/3可以采用单FPGA原型,另外1/3需要多FPGA实现。
Synplify Proto软件(Synplify Pro综合引擎和Identify RTL Debugger调试工具的结合)可完全满足单FPGA原型环境的需要。类似地,Certify自动交互式划分引擎(包括Synplify Pro工具的综合能力)和Identify RTLDebugger调试工具的结合可完全满足多FPGA原型环境的需要。
在上述两种情况下,原始ASIC HDL源代码都保持为最佳表示法。这种源代码中任何以ASIC为中心的结构都通过Certify 和 Synplify Proto应用软件中的综合引擎自动转换为对应的FPGA部分。上述两种情况下,Identify RTL Debugger都允许设计工程师在原始的HDL源代码环境中进行分析和调试,从而大大提高了理解度和生产率。最后,Certify和Synplify Proto软件综合引擎所采用的先进综合和优化算法为这些FPGA原型实现提供了同类最佳优化和性能。
关键词:
基于
原型
为什么
有的
应该
采用
创建
设计