实际案例说明用基于FPGA的原型来测试、验证和确认IP——如何做到鱼与熊掌兼得?

文章正文
发布时间:2024-11-15 23:36

本系列文章从数字芯片设计项目技术总监的角度出发,介绍了如何将芯片的产品定义与设计和验证规划进行结合,详细讲述了在FPGA上使用硅知识产权(IP)内核来开发ASIC原型项目时,必须认真考虑的一些问题。

本文引用地址:https://www.eepw.com.cn/article/202410/464061.htm

全文从介绍使用IP核这种预先定制功能电路的必要性开始,通过阐述开发ASIC原型设计时需要考虑到的IP核相关因素,用八个重要主题详细分享了利用ASIC IP来在FPGA上开发原型验证系统设计时需要考量的因素。同时还提供了实际案例来对这些话题进行详细分析。

这八个主题包括:一款原型和最终ASIC实现之间的要求有何不同?当使用FPGA进行原型验证时会立即想到哪些基本概念?在将专为ASIC而设计的IP核移植到FPGA架构上时通常会遇到哪些困难?为了支持基于FPGA的原型,通常需要对ASIC IP核进行哪些更改?我们如何确保在FPGA上实现所需的性能?在时钟方面必须加以考量的因素有哪些?如果目标技术是FPGA,而不是ASIC,那么需要如何测试IP核的功能?设计团队最后还应该牢记什么?

在以往的文章分析了这八个主题之后,最后将通过一个实际案例来回顾前面讲到的八项关键设计考量因素,并揭示合规性测试、互操作性测和实现方法,以及从不同的方法可能带来不同的结果与目前非常流行的“视点前移(shift left)”模式相结合来对全文进行总结等精彩内容。

作为全球领先的验证解决方案和设计IP提供商,SmartDV的产品研发及工程应用团队具有丰富的设计和验证经验。在国产大容量FPGA芯片和IP新品不断面市,国内RISC-V CPU等IP提供商不断发展壮大的今天,SmartDV及其中国全资子公司“智权半导体”愿意与国内FPGA芯片开发商、RISC-V IP和其他IP提供商、集成电路设计中心(ICC)合作,共同为国内数字芯片设计公司开发基于本地FPGA的验证与设计平台等创新技术与产品。

实际案例:使用基于FPGA的方法来确认USB 3.2 Gen2x1 Device IP

要实现一个可工作的FPGA原型并不是一件容易的事。通常,工程师的想法是使用合适的FPGA逻辑综合和布局布线(P&R)工具,将已经可用于ASIC技术的IP核映射到足够大且快速的FPGA上就足够了,以达到一个功能性FPGA实现。这里的要求是所需的功能应该即刻可用,并且无需进行任何更改。IP核的制造商必须达到这一期望。毕竟,IP核应该能够集成到现有设计中,且不会有任何重大的时间延迟。假设IP供应商已经提前进行了所有必要的测试,以致于将功能集成到现有电路中毫无困难。

然而对于IP提供商来说,将IP核移植到FPGA架构中是一个具有挑战性的目标——如果不付出相当大的努力,这几乎是不可能的。事实是,在没有适当的基础架构和外围设备的情况下,测试一个孤立的IP核只有有限的价值。例如,“独立”实现并不能保证在符合所有规范的情况下实现所需的功能,特别是在FPGA不仅仅包含孤立IP核的情况下。如果要在FPGA中实现具有高时钟频率要求的其他电路部件,这一点尤为重要。

IP制造商面临的一个特别挑战是缺乏在后期实现中添加的电路组件的相关信息,如它们的复杂性,它们对时钟速度的要求等。事实上,一个内核可能已经成功地在与该问题无关的ASIC流片中使用了很多次。毕竟,IP核不仅要满足标准和规范所定义的所有参数(例如,USB 3.2总线协议规范),而且即使将其集成到一个复杂的整体系统中,该系统被映射到一个可编程器件(即FPGA)上,也仍然要能够工作。

这样一个完整系统的复杂性,加上它的所有组件,如微处理器、信号处理电路和接口,对所需的时钟频率是否能够实现以及FPGA提供的资源是否足够都有重大影响。必须有足够数量的等效逻辑门,但其他硬件参数也有限制,如存储器资源、时钟分布组件、高速IO和/或收发器等。

为了实现可用于在FPGA电路环境中测试IP核的功能性系统,IP核供应商必须考虑的不仅仅是要提供的功能。IP供应商可以接触到自己创建的功能,但不能接触到IP核用户使用的开发和测试环境,也不能访问连接最终产品的外设,并通过这些外设提供物理输入信号。同样,也不能访问客户使用的模拟刺激和测试模式生成器。

验证覆盖范围也被视为是至关重要的;在任何可能的情况下,都应该涵盖极端情况,以避免在使用IP的后续阶段出现令人不快的意外情况。值得注意的是测试用的电路板,通常情况下市场可提供的印刷电路板,与IP核客户随后将用于所有测试的电路板都有不同。

在输出端,可以预见到的复杂性并不比输入信号的供应端更低。以USB接口为例,如果实现接口IP,就需要使用外部PHY作为物理接口。因为这是一个模拟接口,在FPGA上不可用,因此必须使用外部组件。这种PHY由各种各样的制造商提供,尽管希望将USB控制器连接到由最终客户选择的外部PHY组件上,不需要对物理接口进行任何与电气特性相关的更改,如电压值、摆幅、输出引脚的驱动器强度或接口的引脚分配,所有参数都必须在功能测试中进行详细验证。

这是确保物理接口符合所有规范的唯一方法,并且数据传输的质量也要符合预期。所有这些功能测试都必须提前进行,以保证在交付前的阶段就可提供功能。由于IP核必须是通用的,即不同的客户在不同的应用中选择PHY来配套都可用,测试设置必须在测试中包括来自不同制造商的许多不同的PHY。

创建数据库也需要一些工作量。当然,仅仅提供RTL代码和相应的约束条件是不够的。为了简化将IP核集成到现有电路中的工作,通常提供以下数据库:

●    Verilog中的RTL设计

●   RTL能够在客户选择的FPGA逻辑综合工具上可以进行综合

●   具有豁免文件的Lint、CDC和逻辑综合脚本

●   Lint、CDC和逻辑综合报告

●   如果适用,提供C语音驱动包(裸机驱动)

●   更详细的技术文档

●   易于使用的、带有Verilog测试用例的Verilog测试环境

●   IP测试套件

●   为最终用户集成的IP测试台

●   用于RTL地址映射的IP-XACT文件

●   带有豁免的代码覆盖率报告

●   如果适用,提供IC设计文档/数据表

USB 3.2 Gen2x1 Device IP:实现、验证和确认(Validation)

为了确认USB 3.2 IP核,需要对现有IP核进行大量的更改。包括对RTL代码本身的更改,以及对物理输入和输出的微调。对RTL代码的更改是很有必要的,以使时钟分布和时钟生成适应目标FPGA架构。为此,额外的、专用于FPGA的库组件就被实例化,如所谓的数字锁相环(MMCM)。

这时也很有必要将数据路径的总线宽度从32位调整到64位,否则就不可能控制PIPE接口中的时间冲突。由于对PIPE接口的更改,有可能将FPGA中的时钟频率从312.5MHz(32位实现)降低到156.25MHz(64位实现),从而使设计适用于目标FPGA目标。最后,FPGA上的布局布线就可以在不存在时间冲突的情况下完成。

除了上述的设计变更之外,Xilinx / AMD的专有微控制器,即专为该制造商的FPGA开发的Microblaze处理器也被集成到电路中,以执行实验设置所需的固件代码。由于USB 3.2 IP核被配置用于大容量存储应用,因此板载DDR3存储器被用于外部存储,该存储在FPGA本身上不可用,但在选定的原型平台上可用。USB控制器通过主AXI接口访问该DDR3存储器,而USB控制器的核心寄存器由处理器通过AHB从接口访问。

硬件平台选择如下配置:

1730094092787391.png

SmartDV USB 3.2 Gen2x1 Device Controller是为USB大容量存储应用而配置的。它完全符合USB 3.2规范(rev. 1.0)和USB 2.0规范(rev. 1.0)。IP内核有以下接口:

●   USB 3.2 Gen2物理层接口

-64位PIPE数据路径

●   USB 2.0物理层接口

-16位UTMI兼容接口

●   系统主数据路径接口

-64位AXI主接口

●   系统从属寄存器访问接口

-32位AHB从属接口

●   EPO处理器接口

除了可用于证明电路功能(包括仿真、CDC检查、linting)正确性而采用的标准化验证方法之外,还进行了广泛的测试以确认电路的实现。最后,对IP核进行了认证。为了实现这一目标,USB3.2 Gen2大容量存储设备进行了USB Implementers Forum, Inc.推荐的多项合规性和互操作性测试,诸如电气、PHY、链路层和强度测试。认证测试是在台湾的Allion实验室进行的,这是一家获得USB-IF认证的机构。SmartDV的器件已与多个第三方主机进行互操作以便进行认证。

具体采用以下方法进行确认:

USB 3.2 Device IP合规性测试

●   USBCV第9章合规性测试(SSP/SS/HS/FS模式)

●   链路层合规性测试(SSP/SS模式)

所有合规性测试都已成功通过。

USB 3.2 Device IP互操作性测试

●   与USB.org推荐的ASMedia USB 3.2 Gen2 Host进行互操作验证

●   器件列举测试(采用SSP/SS/HS/FS模式)

●   连接/分离测试

●   使用CrystalDiskMark性能基准测试工具,来进行数据传输测试(采用SSP/SS/HS/FS模式)

●   MSC合规性测试

●   低功耗测试(睡眠/休眠/冷启动/热启动)

●   金树(gold tree)互操作性测试(拓扑更改)

所有互操作性测试都已成功通过。

1730094128698307.png

图1 USB 3.2 Gen2x1 Device IP确认平台框图

为了确认USB 3.2 Gen2x1器件的控制器,使用了来自制造商AMD / Xilinx的现成商用的FPGA平台。物理接口是通过使用来自M31公司的外部PHY卡来实现。

USB 3.2 Gen2x1 Device IP实现挑战

在FPGA中实现USB 3.2控制器绝非易事。由于一些时钟频率相当高,时序收敛并不是一件容易的事;它需要对PIPE接口进行设计更改,并需要在FPGA的逻辑综合(Synopsys Synplify Premier)和Xilinx/AMD Vivado工具布局和布线功能中进行多次迭代。值得注意的是,所选FPGA中的逻辑资源利用率相对较低。

可以假设,在资源利用率较高的情况下,时序收敛会更加困难。基于这一假设,我们注意到市场上在过去一段时间里已经出现了一些功能更强大的FPGA器件,如Xilinx/AMD Virtex Ultrascale+/Kintex Ultrascale+、英特尔Stratix-10或Lattice CertusPro-NX,它们都基于比Xilinx/AMD Virtex-7 FPGA更先进的工艺技术,虽然后者在设计和设置这些测试的时候仍然是被广泛使用的器件。可以放心地假设,使用这些新一代FPGA器件可以更容易地确保实现所需的时序。

Virtex-7 FPGA(xc7vx485tffg1761-2)的资源利用率如下:

1730094140741404.png

通过调整这两种工具(Synopsys Synplify Premier和Xilinx/AMD Vivado)的约束和设置,在不违反时间约束的情况下就可能实现。系统中所使用的时钟域和对应的时钟频率如下图所示:

1730094165606906.png

然而,即使在时序收敛之后,设计也不会立即出现在板卡上。从PHY接收的数据没有在USB 3.2控制器中正确采样。因此,有必要部署额外的组件来调整IO延迟值,以便正确地对数据进行采样。

总的来说,使USB 3.2控制器能够与外部PHY互操作是一项极具挑战性的任务。除了解决某些互操作性问题外,还需要开发在Microblaze微控制器上运行所需的固件代码,以便在大容量存储应用模式下确认设计。

image.png

图2 在SmartDV实验室中的确认和性能测量设置

电路功能的确认,以及所有互操作性和合规性测试,都是在AMD/Xilinx的标准FPGA板上进行的。此外,测试设置允许我们去确定可实现的数据吞吐量。所有的测试和测量都使用了合适的设备。为了确定可实现的数据吞吐量,我们使用了CrystalDiskMark的性能基准测试工具。

结论:鱼与熊掌兼得?

部署可同样用于ASIC和FPGA架构的IP核是一项极具挑战性的任务。因此,必须谨慎选择IP核供应商,并全面询问其在FPGA实现方面的专业知识。

事实上,即使一款IP核已经经历了许多次成功的ASIC流片,并在许多芯片产品中得到了使用,但这并不意味着它可以很容易地用于FPGA。相反,尽管FPGA的复杂度通常比硬连线器件低很多,它们至少也需要与ASIC同样的重视程度。其将花费的努力经常被低估和忽视,特别是在ASIC开发在实现和验证方面捆绑了所有工程资源的时候。这在很大程度上是因为在有时间压力的情况下,再加上不断要求产品能够尽快进入市场,所以开发ASIC时难以对FPGA等可编程器件给予必要的关注。

事实仍然是,在ASIC验证中被忽视的错误几乎不可避免地会导致至少需要一次额外的流片,其结果是导致成本大幅增加和项目严重延迟,这与流行术语“加快产品上市时间”所描述的完全相反。通过认真地使用FPGA原型,实现“一次流片成功”的概率显著增加,这会带来许多优势,包括产品更早进入市场、研发团队可以即刻转向新的项目、项目整体成本得以优化等。

FPGA原型设计增加了验证覆盖范围,并增加了在产品开发的早期阶段发现错误的可能性,从而减少了在后期必须处理的错误。当然,使用预定义的和经过测试的IP核也提供相当大的优势,因为在这里可以预期更少的意外。通过扩展,最佳的IC设计解决方案则是结合了作为原型设计载体的FPGA和经硅验证的IP内核,来作为无错误实现的保证。使用经过试验和测试的验证工具及其所有功能,就可以完成其他工作,从而实现早期目标并成功完成项目。

现在有一个很流行的术语可以形容这种方法:视点前移(shift left)。

最后但同样重要的一点是,我们必须提到快速完成项目最重要的因素:人。经验丰富的专家团队对于电路功能的实现、验证和确认的价值是不言而喻的——这是最主要的成功因素。对于所有的工具、辅助工具和预定义的电路功能而言,如果你不知道如何高效地组合和使用它们,则它们都是毫无用处的。无论目标是ASIC还是FPGA,拥有强大且可靠的合作伙伴、具有必要专业知识和适当经验的专家团队,都是您成功的关键。

虽然电路设计从来都不是一件容易的事,但选择合适的合作伙伴肯定会让您更轻松。

本系列文章的目标是全面分享经验,帮助读者利用ASIC IP来实现完美的FPGA验证原型。欢迎关注SmartDV全资子公司“智权半导体”微信公众号阅读。

关于作者:Philipp Jacobsohn

Philipp Jacobsohn是SmartDV的首席应用工程师,他为北美、欧洲和日本地区的客户提供设计IP和验证IP方面的支持。除了使SmartDV的客户实现芯片设计成功这项工作,Philipp还是一个狂热的技术作家,乐于分享他在半导体行业积累的丰富知识。在2023年加入SmartDV团队之前,Philipp在J. Haugg、Synopsys、Synplicity、Epson Europe Electronics、Lattice Semiconductors、EBV Elektronik和SEI-Elbatex等担任过多个管理和现场应用职位。Philipp在瑞士工作。

关于作者:Sunil Kumar

Sunil Kumar是SmartDV的FPGA设计总监。作为一名经验丰富的超大规模集成电路(VLSI)设计专业人士,Sunil在基于FPGA的ASIC原型设计(包括FPGA设计、逻辑综合、静态时序分析和时序收敛)和高速电路板设计(包括PCB布局和布线、信号完整性分析、电路板启动和测试)等方面拥有丰富的专业知识。在2022年加入SmartDV团队之前,Sunil在L&T Technology Services Limited担任过项目经理和项目负责人职位。Sunil在印度工作。