将eFPGA添加到SoC中比仅添加加速器更复杂

选择将可编程逻辑添加到带有eFPGA的SoC 中只是一个开始。其他选择包括涉及多少查找表(LUT),多少路由和什么拓扑,数据如何传入和传出结构,数据是否需要与系统存储器一致,如何编程和测试,以及什么RTL功能需要嵌入可编程结构本身?
其中一些决定将受到应用程序的影响。它会成为计算加速器吗?它是在进行传感器处理,还是流水线数据路径的一部分?eFPGA技术的提供商正试图尽可能灵活地提供他们的产品。但是,虽然进入eFPGA的内容可以推迟,但关于eFPGA的决定却不能。
影响并不止于此。该验证流程有变化,也是如此。团队是否继续对整个设计使用ASIC验证流程,包括预期进入结构的内容,或者结构内容看起来更像FPGA流程?可能有一个新的团队成员,开始看起来更像软件程序员,但其级别更类似于固件,可能需要更多的硬件和架构知识。
“将FPGA架构纳入可能已经很复杂的ASIC设计中并非易事,” 西门子事业部门Mentor的验证技术专家Brian Mathewson说。“开发人员必须确保正确实施eFPGA结构,并且任何适用于可编程结构的逻辑都要适当调整,并且可以与ASIC的其他部分连接。”
嵌入eFPGA和使用通用FPGA的双芯片解决方案之间存在显着差异。“在整合eFPGA时,您需要考虑应用程序,”Menta业务开发总经理兼副总裁Yoan Dupret建议道。“你必须探索设计角落,这应该在前面进行评估。我们不需要考虑今天你有一个设计的通用FPGA的情况,并且在未来,你想要一个完全不同的设计。“
结构内部
eFPGA的使用与独立FPGA不同。“设计工程师的思维方式与FPGA设计工程师的思维方式略有不同,”Quicklogic可编程IP工程高级主管Himanshu Sanghavi说。“FPGA设计人员习惯于在LUT的数量,可用RAM的大小,DSP /数学模块的能力等方面在FPGA的限制范围内工作,这些都是有限的资源。ASIC设计人员虽然明显受到整体SoC面积/功率限制的限制,但通常可以更灵活地设计他们所需的逻辑,而不必总是将其安装在预先设计的FPGA架构上。“

图1:织物内部的混合功能。资料来源:Menta。
大多数eFPGA供应商允许将可编程模块与存储器和固定功能模块混合,如图1所示。可以选择每个模块的数量以及它们在结构中的分布方式。有些供应商允许您提供自定义块,而其他供应商则有可以合并的块列表。
也可以定义块的几何形状。Flex Logix的首席执行官杰夫泰特说:“人们通常都会想要与之相关的东西。” “正方形将倾向于最小化最长的潜在关键路径。在某些情况下,狭义和细节是有意义的,例如I / O功能。“
有几种变体用于互连块。有些使用类似于传统FPGA的结构,如图2左侧所示。其他如Efinix,以类似于可编程模块的方式处理布线资源,因此可以将它们准确放置在需要的位置。在逻辑功能和互连之间取得适当的平衡可以显着影响获得高资源利用率的能力。

图2:连接逻辑功能。资料来源:Efinix。
另一种可供eFPGA使用的选择是使用NoC,如图3所示。

图3:将片上网络集成到FPGA架构中。资料来源:Achronix。
Achronix刚刚在其独立的FPGA产品中宣布了这一功能。“NoC使用一系列高速行和列网络管道在整个FPGA架构中分配数据,在整个FPGA架构中水平和垂直分配数据流量,”Achronix系统架构师Kent Orthner说。
使用NoC还可以提供与SoC其余部分的连接。
连接到结构
在某些时候,可编程结构必须集成到SoC中。在图4中,Quicklogic说明了执行该集成的各种方法。虽然该图是概念框图,但所示的每个接口都代表了在实际SoC设计中使用的接口。
图4:集成eFPGA结构。资料来源:QuickLogic。
许多应用程序最可能采用的方法是将结构连接到系统总线。“大多数解决方案都将布料放在公共汽车上,”Menta的Dupret说道。“我们也看到了更深入嵌入的解决方案。有些人想要与CPU共享的内存,甚至可能是一些缓存。但是,大多数解决方案都会在数据路径中拥有内存。“
诸如AXI的接口为结构提供高带宽信道。“大多数人都想要更快,更便宜的版本,”Flex Logix的Tate说。“大多数人都不会考虑激进的架构变化。它们用于处理芯片形式的SRAM存储器的FPGA ,因此当它成为芯片内的块时,它们就是这样思考的。FPGA将是悬挂在AXI或AHB总线上的某种形式的加速器或I / O模块。“
也可以使用不同的接口。“eFPGA至少需要一个AXI从站接口,如果潜在的用例需要总线主控功能,那么还需要一个主接口,”Quicklogic的Sanghavi补充道。“AXI的使用仅用于说明,但它可能是基于整体SoC数据传输要求和IP可用性的不同总线协议。”
内存如何连接可能会产生很多复杂情况。“假设你有一个结构,其中嵌入式FPGA具有密切相关的内存,并且是更大环境中的子系统,” Cadence产品管理和营销高级组主管Frank Schirrmeister说。“你现在有了一个层次的记忆。嵌入式FPGA有一个缓存,那么你如何处理一致性呢?这就是他们创建缓存一致性互连的原因,例如CCIX。“
另一个复杂因素与接口速度和eFPGA可以运行的速率有关。“系统AXI接口可能以相对较高的频率计时,而eFPGA上的逻辑可能会或可能不会以相同的频率运行,”Sanghavi说。“因此,该图显示了一个块,用于FPGA架构和AXI主/从模块之间的时钟速率转换和同步。这是一个可选块,只有在需要这种时钟速率转换时才需要。“
eFPGA的运行速度有多快?“在他们编写RTL之后,他们通过工具运行它们,并获得他们选择的PVT条件的最大频率数,”Tate说。“如果他们想要更高的吞吐量,他们需要对RTL进行一些优化。”
虽然这听起来像是一个问题,但工作频率的变化量可能会受到限制。“他们可能会使用相同类型的应用程序,虽然他们可能会在未来更新它,但它仍然是相当可预测的,”Dupret补充道。“应用程序永远不会完全改变。因此,我们不会看到未来的应用只能以一半的速度运行。“
这可能需要定义静态关系。“如果SoC时钟是某个频率,并且你可以以另一个频率运行FPGA,你应该寻找两者中的一些整数倍,”Tate建议道。“如果系统时钟为1GHz并且FPGA能够以600MHz运行,那么您很可能以500MHz运行FPGA,以便它可以与系统时钟同步。如果客户希望在块之间具有异步接口 - 他们可以这样做。这只会增加复杂性。“
有很多选择,但它不必那么复杂。
Synopsys基于FPGA的综合软件工具高级产品营销经理Joe Mallett说:“人们通常认为这是一个处理模块,他们必须将数据输入和输出,他们需要以特定频率运行。” 。“从综合的角度来看,你可能不得不更加努力地获得所需的数字。如果你有一个同步接口,它会让你更容易,因为你不再需要担心域交叉和域之间的数据同步。“
Sanghavi讨论了一些其他的接口选项。“除高带宽数据通道外,eFPGA还可以连接慢速串行外设,如传感器。SPI接口通常以低eFPGA可能匹配的低时钟频率运行,因此通常不需要时钟速率转换。让eFPGA引发SoC上CPU / DSP类型处理模块的中断非常有用。例如,这将用于通知CPU eFPGA已完成分配给它的数据处理任务并且处于空闲状态。“
这就是可编程性变得尤为重要的地方。
“大多数SoC包括几个固定功能块,它们是自定义RTL块,旨在有效地执行某种计算,”Sanghavi说。“虽然这个固定功能块完成的数据处理是预先知道的,但很可能需要各种预处理或后处理任务,其中一些在SoC设计时是未知的。eFPGA可以是执行此类任务的极好选择,在这种情况下,在eFPGA和固定功能块之间建立直接连接可能是有利的。这可以是一个自定义的点对点接口,不会耗尽AXI总线带宽用于此专用数据传输任务。“
在某些情况下,分配给eFPGA的任务可能要求它访问SoC中的一个或多个主I / O或引脚。例如,这可以通过通用I / O引脚传送状态信息,或者在eFPGA中实现与SoC外部的逻辑通信的附加串行接口。通过在SoC级配置的一些I / O多路复用结构,很可能会使用与其他功能共享的引脚。
“SoC上的eFPGA需要一个编程接口来加载要在其上实现的设计,”Sanghavi解释说。“类似地,在eFPGA上实现的功能可能需要一些额外的运行时配置位,例如为FPGA上实现的逻辑设置各种模式和其他控制寄存器位。该任务可以通过诸如APB的外围接口来完成。eFPGA子系统内的APB从接口连接到系统APB总线,系统APB主站将通过该接口对eFPGA进行编程。再一次,APB的使用是说明性的,类似的功能可以通过SPI等串行总线或其他各种方式实现。“
对系统进行编程
添加eFP​​GA为编程任务增加了新的维度。“对于嵌入式FPGA,它变得更具挑战性,但在其他方面更容易,”Synopsys的Mallett说。“eFPGA模块已连接到总线,中断,信号和数据流已连接到存储器。所有他们必须考虑的是我在那里放什么。更难的部分是很多这些芯片更加以软件为中心,这意味着SoC的可编程部分是软件。您将拥有驱动程序和操作系统以及应用程序,现在您可以使用可配置硬件的可编程部件。“
谁将编码eFPGA内容?“你正在增加一个传统上是软件开发人员的额外受众,他们希望使用这个硬件加速器,”Mallett补充道。“他们可能只是像固件一样编程,并期望一定程度的操作,并能够写入API。新用户可能不如硬件精通。压力一直在增加,以支持这类用户。“
这可能需要改变编程模型。“简化的编程模型的一种方法是在更高层次的设计抽象,以便有一个共同的基于软件的设计输入方法,”为CEO马克斯Odendahl,说Silexica。“然后使用高级综合(HLS)将软件代码转换为FPGA实现。需要一个工具来帮助工程师定义软件和硬件的分区方式,并且它应该提供对设计依赖性的可操作的见解,并指导HLS编译器有效地实现硬件。“
对于一些设计团队,将需要新技能。“一些团队一直在系统级使用FPGA连接到他们的ASIC,”Odendahl说。“他们对芯片形式的FPGA有很多了解,他们了解FPGA编程。其他今天不使用FPGA的团队习惯使用RTL进行硬连线逻辑,他们的学习曲线更陡峭。使用FPGA,要获得高性能,您需要进行更多流水线操作。FPGA在所有LUT的输出上都有触发器,因此流水线基本上是免费的。但是你不能把现有的硬连线ASIC RTL扔进FPGA和FPGA中,并期望获得好的结果。他们有更长的学习曲线。“
这就是FPGA专业知识的用武之地。“让设计团队的工程师熟悉FPGA布局布线工具的使用是有帮助的,”Sanghavi建议道。“许多SoC设计团队将其ASIC的物理实施外包给其他团队,因此在该领域可能没有任何内部专业知识。”
验证系统
验证流程也必须更改。结构,结构和SoC之间的接口以及映射的功能都必须经过验证。Mentor的Mathewson表示,“EDA流量已经扩大,以适应eFPGAs所需的配置空间的急剧增加。” “不仅必须验证eFPGA的实例化,还必须探索eFPGA的潜在用途。”
团队必须决定是否要验证未编程的结构,或者他们是否会通过几种可能的映射来验证它。“从基本的硬件角度来看,我将编写将进入结构的加速器,我将测试并验证这些部分,”Mallett说。“这类似于世界上现有的独立FPGA视图。我将模拟它,调试它,我将使用现有的工具。但是如果你的芯片中有多个处理模块和加速器,并且这些模块之间相互作用,那么你必须运行它足够长的时间以确定它是否在功能上做了它应该做的事情。“
FPGA验证通常滞后于SoC方法。“FPGA对代码,映射,开启,调试,重复的态度没有太大变化,”Cadence的Schirrmeister说。“对于FPGA部分而言,设计变得更加复杂,并且可以从更自上而下,有序的方法中受益,但它没有太大改进。”
部分原因在于eFPGA可用于各种应用。“虽然嵌入式FPGA资源的供应商将支持其提供的IP,但它无法预见它将如何与目标SoC中的其他功能集成和连接,”SmartDV主席Deepak Kumar Tala说。“VIP在验证嵌入式FPGA与SoC中其他模块之间的标准互连和通信协议的行为符合预期或符合规范方面起着重要作用。”
正式验证可以提供帮助。“FPGA架构必须经过两次验证,首先由供应商进行验证,然后由用户进行编程,” OneSpin Solutions工程经理Tobias Welp解释。“正式等效检查是关键验证步骤,在涉及结构时更为重要,因为FPGA综合工具提供了高级优化,以满足功耗,性能和面积(PPA)目标。其中一些优化会改变设计的状态空间并在寄存器边界之间移动逻辑,因此需要进行顺序等效检查。这应该在多个阶段执行,以确保输入RTL,综合后网表,放置和路由网表以及编程比特流在功能上都是等效的。“
结论
将FPGA架构集成到SoC中需要对设计和验证流程进行重大更改,并且只应在了解所有风险时进行。它需要组建一支具备所有必需技能的团队。并且可能需要不同的架构思维来获得优化的解决方案。但是,那些管理它的人将获得灵活性和优势,能够为其产品提供面向未来的能力,并且这将提供显着的拥有成本优势。

用户喜欢...

科学家发现了FPGA中的漏洞,影响了云服务和物联网

可现场可编程门阵列(FPGA)就是计算机制造商的乐高积木:可以比其他计算机芯片更灵活的方式使用的电子元件。即使是专门用于云服务的大型数据中心,例如一些大型技术公司提供的数据中...


Arduino 环境中的 FPGA:使用 Alorium 的 Snō 模块支持预配置和定制 IP

当固件在微控制器或微处理器上的运行速度过慢时,现场可编程门阵列 (FPGA) 可解决实时嵌入式设计的硬件问题。同时,FPGA 还具有外设灵活性。然而,要使用 FPGA,设计工程师就需要学习全新的...


ADXL345 Pmod Xilinx FPGA参考设计

该ADXL345是一个小的,薄的,超低功耗,3轴加速度计具有高分辨率(13位)测量高达±16 克。数字输出数据格式为16位二进制补码,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设...


通过 Arduino MKR Vidor 4000 快速轻松地应用 FPGA

许多设计人员迟早都会发现,微控制器或微处理器上运行的固件可能会变得太慢。现场可编程门阵列 (FPGA) 为此提供了一种可编程方法,以硬件速度来解决高速、实时、嵌入式设计问题。然而,...


面向机器学习和通信的嵌入式FPGA优化

我回到了Burrous B 5500和IBM 360大型机,所以图表 (图1) 在里面 阿克罗瓦氏 包括vax-11/780的Speedcore第4代演讲吸引了我的眼球。该图突出了90年代业绩的加速增长和世纪之交后的平稳增长。我们现在正...


使用FPGA和最少的模拟电路产生电源

偶尔我们遇到了为一些微型模拟电路供电的需求,现成的电源IC对于这些任务来说太过分了。当您的需求以毫安为单位时,这尤其适用。如果你的板载FPGA还有一些备用引脚和资源,那么不使用...


使用Arduino MKR Vidor 4000快速轻松地应用FPGA

正如许多设计人员迟早会发现的那样,在微控制器或微处理器上运行的固件可能会变得太慢。这就是现场可编程门阵列(FPGA)提供可编程方式,以硬件速度解决高速,实时,嵌入式设计问题。...


使用FPGA通过机器学习构建高性能嵌入式视觉应用

本文将介绍ML处理的要求以及FPGA解决许多性能问题的原因。然后,它将介绍一个合适的基于FPGA的ML平台以及如何使用它。...


FPGA配置采用高速NOR闪存

NOR闪存被广泛部署为FPGA的配置器件。工业,通信和汽车ADAS应用中的FPGA使用取决于NOR Flash的低延迟和高数据吞吐量特性。快速启动时间要求的一个很好的例子是汽车环境中的摄像机系统。点火后...


Xilinx详细介绍类似SoC的FPGA

Xilinx发布了其下一代Everest架构的第一个细节,现在称为Versal。它表明,随着CPU,GPU和FPGA变得越来越相似的SoC类设备,微处理器格局越来越模糊。 Versal缩小了中央FPGA模块的尺寸,为更多ARM,D...


为物联网设计添加高性能语音关键字检测:第 1 部分 - 使用 FPGA

随着Alexa、Hey Siri或Hi Google等多个产品成功响应关键词,关键字检测 (KWS) 已成为越来越多嵌入式应用的一项重要要求。虽然典型的先进 KWS 解决方案依赖于复杂的卷积神经网络 (CNN) 和其他深度神...


使用 FPGA 构建具有机器学习能力的高性能嵌入式视觉应用

随着摄像头和其他设备产生的数据在快速增长,促使人们运用机器学习从汽车、安防和其他应用产生的影像中提取更多有用的信息。专用器件有望在嵌入式视觉应用中实现高性能机器学习 (ML...


基于FPGA的模块化快速原型系统是实现高性能电力电子研发项目的基础

FPGA提供了令人印象深刻的计算能力,这在电力电子系统中的要求越来越高。基于FPGA的模块化快速原型系统是实现高性能电力电子研发项目的基础。 电力电子中算法的必要性 随着当今电力电子...


汽车行业 FPGA桥接解决方案能够解决许多问题

在过去十年里,随着智能手机及其应用生态体系的不断发展,汽车电子领域中移动相关应用的创新技术也深受其影响。汽车制造商已经开始将用于智能手机的相同处理器平台应用到新一代汽车中...


QDR SRAM接口FPGA 详细Verilog代码

QDR SRAM介绍 QDR 具有独立的读、写数据通路,均使用DDR,在每个时钟周期内会传输四个总线宽度的数据 (两个读和两个写),这就是QDR四倍数据速率的由来。 这里用到的是典型2字突发的QDR,...


3D成像: 嵌入式FPGA处理引擎实现3D web检测

Steven Gloffen 奥地利自动化解决方案提供商digMAR公司为德国地毯和纺织品切割机供应商KURIS公司开发了一套3D图像处理系统。这套多相机机器视觉系统设计用于扫描纺织材料,可以自动计算基于...