嵌入式 FPGA(eFPGA)是指将一个或多个 FPGA 以 IP 的形式嵌入 ASIC,ASSP 或 SoC 等芯片中。换句话说,eFPGA 是一种数字可重构结构,由可编程互连中的可编程逻辑组成,通常表现为矩形阵列,数据输入和输出位于边缘周围。 eFPGA 通常具有数百或数千个输入和输出,可连接到总线、数据路径、控制路径、GPIO、PHY 或任何需要的器件。

 

所有 eFPGA 都将查找表(LUT)作为基本构建模块。 LUT 有 N 个输入选择一个小表,其输出表示 N 个输入的任何需要的布尔函数。 有些 eFPGA LUT 有四个输入,有的有六个。有些 LUT 有两个输出。 LUT 通常在输出端具有触发器; 这些可以用来存储结果。这些 LUT 寄存器组合通常以四进制形式出现,还有进位算术和移位器,以便有效地实现加法器。

 

LUT 接收来自可编程互联网络的所有输入,并将其所有输出反馈到可编程互连网络。除了 LUT 之外,eFPGA 还可能包含 MAC(乘法器 / 累加器模块)。 它们也连接到可编程互连网络,用于提供更高效的数字信号处理(DSP)和人工智能(AI)功能。 对于内存来说,有大量的 RAM,通常是双端口的封装。至于 LUT 和 MAC,通过 RAM 连接到可编程互连网络。

 

eFPGA 具有输入和输出引脚的外环,将 eFPGA 连接到 SoC 的其它部分,这些引脚也连接到可编程的互连网络。软件工具用于合成 Verilog 或 VHDL 代码,以编程 eFPGA 逻辑和互连来实现任何所需的功能。eFPGA 是方便的新逻辑块,可在许多方面提高 SoC 的价值,其中包括:使用数百个 LUT 的广泛,快速的控制逻辑;可重新配置的网络协议;用于视觉或人工智能的可重构算法;用于航空航天应用的可重配置 DSP;用于 MCU 和 SoC 的可重配置加速器。

 

当今,已经有了一些 eFPGA 供应商,主要包括 Achronix,Flex Logix,Menta 和 QuickLogic,此外,还有一些较小的供应商。有了这些选择,客户需要决定哪一个最能满足他们的需求。那么,要如何选择呢? 虽然需要考虑商业因素,但本文重点讨论技术因素。

 

 

 

第 1 步:制程的兼容性,通常情况下,即使在 IP 评估的早期阶段,公司也会选择 foundry 厂和工艺节点。而台积电、GlobalFoundries 和 SMIC 现在或正在开发针对包括 65nm,40nm,28nm,22nm,16nm,14nm 和 7nm 工艺节点的 eFPGA。但是,并非所有供应商对所有代工厂 / 工艺节点都有 eFPGA,至少目前还没有。 通过他们的网站检查哪些与您的制程兼容非常重要。 您还应该看看所讨论的 eFPGA 是否已经在芯片中进行了验证,并在 NDA 下提供了报告。

 

不要忘记检查金属堆栈的兼容性。您选择的关键 IP,如 SerDes 或您的应用可能需要您使用特定的金属堆栈,但并非所有 eFPGA IP 都与所有金属堆栈兼容。

 

第 2 步:阵列大小和功能,并非所有的 eFPGA 供应商都可以做非常小规模的 eFPGA,同时,并不是所有厂商都可以做出规模非常大的 eFPGA。另外,它们支持的 MAC 和 RAM 的性质可能会有所不同。对于您是否需要数百个 LUT 或数十万个 LUT,以及您对 MAC 和 RAM 的需求,这可能会筛选出一些供应商。

 

步骤 3:使用 RTL 进行基准测试,eFPGA 供应商会为您提供用于评估的软件,以便您可以确定(RTL)每个 eFPGA 可以实现的硅面积和性能。您需要 eFPGA 能够在与 SoC 其余部分相同的温度和电压范围内运行,因此请确保您需要的是支持的。

 

在进行基准测试时,将苹果与苹果进行比较(compare apples to apples)非常重要。例如,您应该在相同的工艺(slow/slow or typ/typ or fast/fast)以及相同电压和相同温度下比较每个 eFPGA。您应该期望来自 eFPGA 供应商的软件工具将允许您检查不同工艺转角和电压组合下的性能。

 

请注意,您的 RTL 适用于 eFPGA。如果从硬连线 ASIC 设计中采用 RTL,则触发器之间往往会有 20~30 个逻辑层。如果你把它放在没有优化的 eFPGA 中,它会运行得非常慢。在 eFPGA 中,LUT 输出总是有触发器,您可以使用它们向 RTL 添加更多的流水线,以在 eFPGA 中获得更高的性能。

 

一个 16 位加法器。你关心的是它的运行速度有多快,但是如果你不小心,看到的结果可能会让你感到惊讶。现在想象一个大的 eFPGA。如果加法器放置在阵列的一个角落,输入和输出接近,则性能将远高于在阵列中间找到加法器的情况。这是因为如果您观察从阵列输入到阵列输出的性能,当加法器位于阵列中间时,到数据输入和加法器输出的加法器的距离会更长。实际上,加法器是相同的,并且在两个位置运行速度都很快。问题在于你的测试没有隔离加法器的性能,但它也加入了达到加法器所需的信号。

 

为了应对这种效应,尤其是因为您可能会比较两种不同尺寸的 eFPGA,您需要做的是在输入和输出上设置寄存器,这可确保您关心的性能均可测量,不受阵列的大小和位置的限制。