手工分割和综合多个FPGA设计 在手工分割的情况下,任何ASIC中心结构(门控时钟,Synopsys的DesignWare?实例等),在原始的RTL源代码中,在进行分割之前,不得不手工将它们翻译为与它们的FPGA相等同的代码。除其它东西之外,这直接导致了两个分离的代码流,这可能失去同步,从而导致在FPGA原型和ASIC之间所代表的功能不同。 当开始分割处理时,工程师们尝试将不同的功能模块组集合在一起,在这里每组在不同的FPGA上实现。这种组合(分割)以门级的传统方式实现。最近,一些流程支持在RTL级分组,此时每个分成的组通过传统的FPGA综合工具,并且仅在这一点上,不同FPGA的实际资源利用是已知的。 所有这些方案都有一个问题,就是对于不同组的面积和资源的影响而言,工程师们是“临时的盲人”,这导致了许多耗时的迭代。首先,工程师根据“A模块可能将消耗‘xxx’的资源,而模块B可能要求‘yyy’的资源”而进行“估算”。这些估算是根据大量“分组”命令,然后综合(在基于RTL分割的情况下),然后是结果的分析,以及然后是大量的“取消组”和“再次分组”命令来估算不同的实现方式。 该任务由于这一事实而进一步混淆,该事实就是这些原型经常被FPGA上的I/O管脚的数量所限制;一个无效的解决方案很容易耗费一个器件上100%的I/O资源,然而与此同时,仅仅其相对少量的内部逻辑资源可以实现。为了克服这些I/O限制,I/O的多重分组和/或在多个FPGA中复制同一个逻辑模块是必要的。(为了达到特定的性能目标,逻辑复制也是经常要求的。) 假设在这种原型中使用的每个FPGA可能有超过1000个管脚,一项管理连接的电子表格方法能很容易地包含几千个单元。不足为奇地是,记录分配给每个FPGA的模块和连接矩阵(在不同FPGA之间的连接)是一项繁重的任务,这将是资源密集型的、耗时的以及容易出错的。 自动分割和综合多个FPGA设计 来自Synplicity的Certify? RTL原型开发工具是业内时间最长和最强大的多个FPGA分割和综合工具。很令人感兴趣的是,当Certify软件在上世纪90年代晚期创立时,对ASIC设计团队而言,没有任何现成的多个FPGA原型开发板能够得到。在那时,Certify软件被设计成一个ASIC团队设计他们自己的定制的多个FPGA原型开发板的辅助工具。 使用Certify软件,工程师们能够定义电路板上的FPGA的数量和类型以及它们之间的互连线。随后,该数据被用于对通过多个FPGA进行ASIC设计自动地分割RTL,并且将被分割的RTL综合成用于FPGA编程的配置文件。 一旦工程师们已经使用Certify工具来定义电路板的基本结构,来自该软件的输出之一是描述FPGA以及它们之间连接的网表。以Verilog来描述的该网表的格式由Synplicity定义,并且是知名的*.vb(Verilog模版)格式。 设计团队希望建立他们自己的定制电路板今天仍然使用这种技术。这一点使得Synplicity的*.vb格式很快变成这种类型应用的事实上的工业标准。现在,每个现成的多个FPGA原型开发板供应商采用通用的*.vb文件交付他们的电路板,其作为定义每块开发板结构的输入被读入到Certify软件。 Certify工具能够采用Verilog、VHDL和混合语言进行设计。该流程中的第一个要素是采用Certify软件,自动将任何ASIC专用代码转换为相当的FPGA结构。就目前现成的多个FPGA原型开发板而言,用户简单地通知软件使用下拉式列表框的开发板的类型,该列表框包括来自所有主要第三方供应商所提供的开发板。(换句话说,如果这是一块定制的电路板,Certify工具有能力建立一个在传输过程中的“虚拟的”多个FPGA开发板,接下来这块虚拟的开发板能够作为建立真实电路板的基础来使用。)接下来,Certify软件用于通过多个FPGA自动分割设计(图 2)。
 |