中文 英语

FPGA设计权衡越来越困难

随着芯片尺寸的增长,优化性能和功耗需要一系列新的选项和方法的改变。

受欢迎程度

fpga正变得越来越大、越来越复杂,而且难以验证和调试。

过去,fpga在投入开发专用集成电路的成本和时间之前,被认为是一种相对快速和简单的进入市场的方法。但今天,fpga和eFPGAs都被用于最苛刻的应用,包括云计算、人工智能、机器学习和深度学习。在某些情况下,它们与芯片、包或系统内的ASIC或其他类型的特定于应用程序的处理器或加速器相结合。因此,要求有效功率、性能和面积(PPA)与asic和全定制芯片一样严格,而且权衡同样复杂,往往交织在一起。

“对于带有FPGA的soc,有几种方法,”公司产品营销经理Stuart Clubb说Mentor是西门子旗下的企业.“有一个ASIC团队正在构建一个SoC,并在结构中添加一个嵌入式FPGA,用于可编程的东西——总是挂在总线上,用作某种可编程加速器,他们还不太知道他们要做什么,或者可能会改变。对于他们来说,ASIC流程的严格性更常被采用。”

第二种方法是将FPGA作为单独的芯片与ASIC一起使用。数据需要使用FPGA供应商提供的一个或多个高速总线从芯片上移动到芯片上。“但这只是一种沟通机制,与‘性能’无关,因为它只是在那个时候移动数据。”

第三种方法是在FPGA中嵌入处理器。Xilinx已经在其Zynq 7000系列中做到了这一点,该系列在FPGA中使用了一个单独的Arm芯片,以及MicroBlaze,这是一个软处理器核心。

无论采用何种方法,fpga的物理尺寸越来越大,与此相关的挑战也越来越大。

“调试更大的东西更难,”Clubb说。“FPGA供应商正试图引入一些东西来缓解内部探测等问题,但所有的问题仍然是路由的不可预测性。有人说,使用FPGA,你不是为逻辑付费,而是为能够使用逻辑的路由付费。不幸的是,虽然供应商确实取得了巨大的进步和伟大的声明,但我们总是看到路由、可用性和可预测性仍然存在问题。你的完美和可爱RTL对于你的ASIC来说,在FPGA中可能会很差,特别是在FPGA原型中,在某些情况下,它甚至可能不起作用-特别是如果你想在任何地方接近速度的原型。里面发生了什么5克而且机器学习在美国,你可能会选择实现的东西,尤其是5G无线电,需要在FPGA中大量过度流水线,以证明你的算法、你所有的魔法和你的秘密武器在概念上是有效的。如果你采用完全相同的RTL并将其放在你的ASIC中,它将非常低效。”

什么最有效
与任何复杂的设计一样,需要提前做出许多选择。

“为了实现最高的性能,我的第一个答案是使用最快的处理节点,”嵌入式FPGA提供商的首席执行官Geoff Tate说Flex Logix.“但实际上,当我们与客户交谈时,他们来见我们时通常已经确定了一个流程节点,因为对于任何芯片设计,人们肯定想要更快的芯片,而不是更慢的芯片。但他们也有其他的考虑——成本、上市时间、IP可用性,所有这些问题。所以他们通常告诉我们,‘我们可能会使用台积电28或者中芯28。“一旦你选择了过程,一个节点可能会有变化。以台积电为例,如果你看看他们的16nm节点,他们现在至少有五种变体。”

对于设计团队来说,要获得更高的性能,首要任务是编写它们的代码Verilog好。

“这就像写处理器代码一样,”Tate说。“你可以让两个人写一个程序,他们都能工作,但有人写了代码,它比另一个人快50%。这完全取决于他们。我们帮不上什么忙。我们在大多数使用嵌入式FPGA的客户中看到的一个常见现象是,他们以前没有做过FPGA设计。所以他们倾向于把一堆他们为硬线芯片开发的RTL,扔到嵌入式FPGA中,说它运行太慢。他们需要记住,对于FPGA,每个可编程逻辑元素在输出上都有一个触发器,所以触发器是免费的。为了获得高性能,Verilog必须在从硬连接ASIC转移到FPGA时进行修改,以加入更多的流水线阶段。设计团队在优化Verilog方面投入越多,他们获得的性能就越好。”

硬连接的ASIC芯片是为特定的时钟频率而设计的,因此当使用嵌入式FPGA方法时,触发器之间的级应该更少。然而,说起来容易做起来难。没有一个按钮可以让它发生。然而,宏可以在嵌入式FPGA设计中提供帮助,特别是在设计的大部分部分中,一个块会一遍又一遍地重复,比如加密或比特币。

“一个常见的要求是64 x 64位乘数,”Tate说。“如果你编写了Verilog,并对其进行放置和路由,你将获得一定水平的性能。如果一个工程团队说,‘我要使用256份64 × 64的乘法,’我们可以创建一个宏,放置它,并路由它,使它使用更少的硅面积。所有东西都靠得更近,我们强迫这个块总是以某种方式完成。它可以占用更少的面积,并以更高的速度运行。如果他们确定了一个反复使用的区块,这是在客户的基础上完成的事情。这相当于在C程序中编写汇编代码子例程。如果没有必要,你不会想要编写汇编代码,但如果它对性能有巨大影响,那么它可能是值得投资的。”

分区
一般来说,优化FPGA/eFPGA性能的第一步是找出什么在哪里最有效。有些事情在标准处理器上比在FPGA上工作得更好,而对于另一些事情,FPGA至少同样好,如果不是更好的话。

该公司高级产品营销经理Joe Mallett表示:“你这样做,当你观察结构时,它非常适合高数据吞吐量、大并行度、展开所有数学函数,并且在一个时钟周期内完成所有事情,而不是一堆连续的时钟周期。Synopsys对此.“当你观察架构时,你必须做出的第一个划分是确定哪个部分在哪里运行,你通常是根据哪种类型的工作负载来确定的。它是否可以很容易地放入织物中,并可能以较低的速度运行,但范围更广?它能很好地利用DSP的功能吗?当你看到fpga时,你通常会看到非常大的带宽,高DSP数学函数和内存密集型。例如,如果你正在处理一些大型的东西,比如100千兆以太网中的MAC表,或者视频,它使用了大量的行缓冲区和数学处理,或者无线电应用程序,在那里你要做一大堆乘、加、减之类的函数,并试图找出波形——这些非常适合fpga。提高性能是另一个挑战,因为你永远都在平衡你要运行的速度和你要占用的面积。如果你想让它慢下来,在每个时钟周期消耗更少的电力,你可能会占用更多的面积,不幸的是,另一方面也会消耗更多的电力。”

尽管自1984年以来fpga已经商用,但工程师们仍然在与基本的限制作斗争。

“这是影响最大的,也是设计师最难把握的,”Mallett说。“然而,我们在工具中做了很多事情来尝试并帮助解决这一问题。首先要做的一件事是,比如说,有人把他们的RTL丢进去,然后通过合成运行它。他们看了看报告,看到一大堆1兆赫的时钟没有被正确地约束,因为它只是默认为一些很容易识别的东西,‘你知道,这是不对的,那个时钟应该在100兆赫运行。’很容易就能把所有东西都放到工具中,进行综合,评估另一端的结果,然后查看日志文件,看看会发生什么。”

他说,FPGA合成工具提供商有额外的模式和功能,可以帮助快速找到所有“我写了RTL错误”错误,或“我错过了一个分号”或所有语言类型错误,以及基于约束的错误。

FPGA的复杂性还表现在数量上知识产权正在使用的块。“在过去10年或15年里,IP区块的数量从10或20个增长到100或150个。这使得每一个区块都有可能在不同的非同步时钟域中工作,这就带来了一定程度的复杂性。然后,你必须处理所有不同的加固接口——这也增加了复杂性。最明显的就是它的尺寸,因为它越大,你能装的东西就越多。所有这些都增加了复杂程度,给设计师带来了挑战,而随着时间的推移,工具也在不断发展,以帮助他们解决这些问题。”

fpga的边缘
fpga的真正吸引力之一是,它们可以用于技术和市场尚不成熟的应用领域。能够在硬件现场编程功能比必须为ASIC编写一系列软件补丁更好,虽然与ASIC相比,fpga的性能和功耗开销较大,但在设备设计、调试和制造之后,能够适应协议和算法的最后一刻变化也具有巨大的价值。

这对于5G、辅助和自动驾驶、人工智能等最前沿的技术来说尤其重要。

边缘计算的总裁兼首席执行官罗伯特·布莱克(Robert Blake)说Achronix.“基本面都在那里。我们知道所有的基本构建块是什么,并且可以找出如何以任何格式有效地移动数据。但是你需要注意内存的层次结构,即如何将数据移动到计算的最小距离。这些是如何获得更高效计算的基础。你过去常常认为,‘盒子是最重要的。“现在,是系统的系统在相互作用。任何地方都需要巨大的灵活性。这是一个完全的根本性转变,正在悄然发生。”

至少在可预见的未来,它还将引导市场向fpga和嵌入式fpga的方向发展。关于eFPGAs它们可以被架构到ASIC或其他复杂的eFPGA中,在不牺牲ASIC的性能或低功耗的情况下,增加可编程性作为保障。

“一旦你了解了嵌入式fpga的概念,在我看来,它的整体交付或嵌入式交付就是包装问题,”Blake说。“很明显,当你看半导体的成本时——我们先生产小型半导体,然后是中型半导体,然后是大型半导体——成本结构就会上升。如果我想在芯片上添加嵌入式FPGA,这很好,因为它仍然符合成本。但如果你想在以后的设计中添加这种功能,成本就会大大增加。”

改变方法
不过,这不是一个简单的FPGA测试芯片设计。因此,随着更复杂的设计,用于开发和调试这些芯片的方法正在发生重大变化。

Synopsys的Mallett说:“在过去,你可能只需要找个人编写RTL,把它扔到合成中,放在板上,测试它,就是这样。”“现在的复杂性已经到了必须模拟的程度,在把它放到芯片上之前,你必须考虑调试。你还必须开始考虑一些更广泛的方法论领域。”

Mallett观察到,FPGA设计人员现在越来越多地采用类似asic的方法,他们首先通过综合来运行设计,预先执行调试,可能会使用一些验证IP,因为他们不知道应该是什么协议。“他们会适当地设置测试平台,然后通过合成引擎运行它。如果他们在做高可靠性类型的应用程序,他们甚至可能会做一些故障模拟或一些故障注入。然后他们在芯片上运行时进行调试,并将芯片上的结果一直关联到RTL,以帮助进行调试。所以当他们看到这个的时候,它带来了模拟器,综合,调试,分析。这些都是ASIC和SoC人员多年来解决的问题,并将继续推进。FPGA世界正在利用这一点。”

然而,这需要FPGA世界改变心态。

该公司高级现场应用工程师Sasa Stamenkovic表示:“设计人员可能会担心实施流程中可能存在的bug,他们可能会犹豫是否启用所有优化,但这些都是实现PPA目标所必需的OneSpin解决方案

还有什么是有用的呢正式的根据FPGA实现对源RTL设计进行顺序等价性检查,以减轻对实现流中可能存在的错误的担忧。Stamenkovic说:“RTL可以根据合成后的网络列表,放置和路由的网络列表,甚至是为设备编程的比特流进行详尽的验证。”“通过等效性检查,可以完全自信地部署最积极的FPGA优化,满足最具挑战性的设计要求。等价性检查不仅可以检测到实现错误,还可以检测到在实现过程中插入的任何硬件木马或其他意外功能。这种能力对于建立对用于自动驾驶汽车、军事/航空航天和医疗电子等安全关键应用的fpga和eFPGAs的信任至关重要。”

它还涉及结合ASIC和FPGA团队的专有技术,这两个团队在过去基本上是分开的。

“FPGA团队曾经被ASIC团队看不起,这与失败的成本比什么都重要,”Mentor的Clubb说。“现在并没有太大的不同,特别是考虑到fpga的尺寸。今天fpga的尺寸是如此之大,即使在5到10年前,这也是一个非常大的ASIC项目。但他们可能不一定有相同的心态,特别是在验证和ASIC设计的严谨性方面。例如,在与一个ASIC客户交谈时,他们使用两个时钟域。一个时钟域的频率是另一个的一半。他们总是会告诉你这是一个单独的时钟域,你需要有时钟域交叉。另一方面,FPGA设计师只会说,‘我不需要为这个烦恼。它可能会起作用。“十年前,当时钟网络相当严格的时候,有一个锁相环来保持事物同步,你可能会侥幸逃脱。 But then you spend a lot of time debugging stuff on a board and you wonder why it falls over Thursday morning.”

根据克罗布的说法,这就是验证发挥作用的地方。“我们已经看到越来越多的FPGA公司开始采用更严格的验证方法,包括UVM,约束随机,真正试图确保他们确实模拟了RTL,因为在电路板上调试的成本不再只是在一些引脚上放置一个范围并观察波形。这是关于带来更严格的ASIC思维。如果它不能在FPGA上工作,你去调试它,你弄清楚它,你投入一些探测,你做更多的位置和路由,然后你只是吹一个新的比特流。失败的代价不是你的百万美元面具或尖叫着如何做一个金属ECO来节省一些钱。它是不明显的。更多的ASIC思维模式需要进入FPGA世界,因为如果计划是在电路板上调试设计,那么他们做错了。”

-Ed Sperling对本文也有贡献。



留下回复


(注:此名称将公开显示)

Baidu