0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

验证FPGA设计的策略

星星科技指导员 来源:嵌入式计算设计 作者:David Kelf 2022-06-14 09:21 次阅读

FPGA 可以支持具有超过 2000 万个等效门、处理器平台和一系列通信数字信号处理 (DSP) 和其他功能块的设计。这些设备与过去的简单可编程芯片相去甚远,过去设计人员可以快速将几千个逻辑门加载到 FPGA 中并立即看到它们运行。今天的设备需要一个全面的验证策略,就像 ASIC 一样详尽。

传统FPGA验证

早期的 FPGA 设计流程包括输入门级原理图设计,将其下载到测试板上的设备上,然后使用真实测试数据验证整个系统。即使只有几千个门,很明显,在下载之前对设计进行某种形式的仿真提供了一种通过早期检测解决问题的更简单、更快捷的方法。

随着 FPGA 技术的改进,更先进的设计技术是不可避免的。与 ASIC 设计类似,硬件描述语言 (HDL) 的使用变得司空见惯,并且设计的黄金表示从门转移到了寄存器传输级 (RTL) 代码。高级仿真用于在综合之前对设计进行彻底的功能验证,如今,所有高级 ASIC 功能验证技术也用于 FPGA RTL 代码。

然而,综合后的 FPGA 验证是另一回事。

依赖于制造的验证

ASIC 和定制 IC 制造成本高、耗时且风险大。这导致了严格的签核过程,最终设计以多种方式进行测试,以确保其正确性。此外,硬件仿真通常用于大型 IC,以使用真实数据和/或将在生产中运行的软件进一步测试设备。

当然,FPGA 是不同的。由于 FPGA 可能会根据需要多次快速更新新设计代码以使其正确,因此似乎没有必要进行详尽的签核和单独的仿真。

FPGA 的一个特别有用的特性是快速原型设计的能力。事实证明,这对于高速验证非常宝贵,FPGA 甚至被用于针对其他 IC 类型的原型设计。事实上,由于这一特性,一些仿真器将 FPGA 作为其核心技术。

过去,假设对于大型 FPGA,对 RTL 代码进行功能测试并对原型设备本身进行最终检查就足够了。然而,现在正在使用具有数百万个等效门的 FPGA,新的设计流程要求改变了这种情况。

大型 FPGA 设计流程问题

可以将两种类型的硬件错误引入 IC,包括 FPGA。在功能验证期间消除了人为错误造成的设计错误。另一方面,系统性问题是由自动化设计改进工具链引入的,通常不会通过功能验证过程进行检查。如果它们进入最终设备,它们可能很难被发现和损坏。

高质量的 FPGA 解决方案依赖于工具链的有效性,尤其是综合和布局布线 (P&R) 功能提供的优化。寄存器与可用寄存器间逻辑的比率是固定的,如果该比率在设计代码中不平衡,则允许浪费矩阵的部分。因此,触发器位置相对于逻辑门发生变化的顺序优化是重要的 FPGA 综合和 P&R 能力(图 1)。

图 1:基本 FPGA 设计。

pYYBAGKn4s-ARYgwAAc49QJpkOc161.png

这些要求促使 FPGA 供应商投资于复杂的、最先进的综合技术。为了设计出最高质量的设计,在这些工具中采用了极其积极的优化,这是整个 FPGA 设计结果质量 (QoR) 的关键驱动因素。

对于较小的 FPGA,由 RTL 代码细化过程导致的系统性错误相对不常见,并且会在硬件内 FPGA 的最终测试期间发现。对于利用现代设计流程的大型 FPGA,这种假设已被证明是有缺陷的,并可能导致严重的设计问题。

系统性错误的等价检查解决方案

采用积极优化的综合和 P&R 工具的组合容易出现系统错误。因为这些工具对 RTL 代码中看似微小的差异很敏感,所以不可能测试每个设计和工具优化组合。因此,通过提高优化级别并检查以确保不会为特定设计引入系统错误,可以获得最佳结果。

由于系统设计问题的性质,在大型 FPGA 中测试门级设计表示已成为一项关键要求。系统性问题可能发生在 FPGA 中与正在开发的设计部分几乎没有关系的任何地方。它们通常会产生意外行为或由不寻常的极端情况触发,从而使验证测试的创建变得复杂且耗时。它们对调试很烦人,因为通常必须在几乎没有关于问题根源的信息的情况下检查整个设计。最糟糕的是,他们可以轻松地将其制成最终产品,从而导致后期制作重新旋转。

用于 ASIC 设计的基于形式验证的等效检查 (EC) 将 RTL 代码与派生的门级等效代码进行了详尽的比较,特别针对系统问题(图 2)。由于 RTL 代码已经过全面验证,因此整体解决方案代表了保证设计功能的最有效方式。

图 2:等价检查必须支持顺序优化。

pYYBAGKn4tiAVJD2AAJXaCfAx8E860.png

对于 FPGA 设计,需要一种能够支持最新 FPGA 综合工具利用的高级顺序优化的新型 EC。由于 FPGA 设计流程在逻辑设计空间内移动锁存器,标准等效性检查无法轻松地将 RTL 寄存器映射到门触发器。这可以通过利用更常见的与属性检查相关的高级形式技术来解决,例如,OneSpin 的 360 EC-FPGA 中使用的 EC 工具的一项新的重要功能。这是从 FPGA 设计中有效消除系统错误的绝对要求。

在 FPGA 流程中使用 EC 有以下好处:

确信在最终 FPGA 测试中观察到的任何问题都与设计相关,并且不是系统性的,从而推动了更快、更轻松的调试过程。

消除了创建一系列复杂测试以针对系统错误或尝试预测系统错误故障条件的耗时需求。

确信最终设计中不存在系统性、极端情况错误,确保经过验证的 RTL 代码和门级最终设计之间的一致性。

有信心利用可用的最激进的优化,而不必担心引入错误,从而实现最高质量的设计。

EC 的使用直接关系到最终设计质量、可靠性、设计进度和工程效率。毫不奇怪,全球许多使用大型 FPGA 的电子公司都在使用它。

FPGA实现验证

随着 FPGA 变得越来越大和越来越复杂,它们的设计和功能验证趋向于 ASIC。在现代 FPGA 设计流程的先进性的推动下,这种趋势现在正在扩展到实现验证领域。EC 现在是该流程的必要组成部分,保留了 FPGA 生产过程中的固有效率。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21328

    浏览量

    593265
  • asic
    +关注

    关注

    34

    文章

    1158

    浏览量

    119268
收藏 人收藏

    评论

    相关推荐

    fpga原型验证平台与硬件仿真器的区别

    FPGA原型验证平台与硬件仿真器在芯片设计和验证过程中各自发挥着独特的作用,它们之间存在明显的区别。
    的头像 发表于 03-15 15:07 304次阅读

    fpga原型验证流程

    FPGA原型验证流程是确保FPGA(现场可编程门阵列)设计正确性和功能性的关键步骤。它涵盖了从设计实现到功能验证的整个过程,是FPGA开发流
    的头像 发表于 03-15 15:05 384次阅读

    fpga验证和测试的区别

    FPGA验证和测试在芯片设计和开发过程中都扮演着重要的角色,但它们各自有着不同的侧重点和应用场景。
    的头像 发表于 03-15 15:03 292次阅读

    fpga验证和uvm验证的区别

    FPGA验证和UVM验证在芯片设计和验证过程中都扮演着重要的角色,但它们之间存在明显的区别。
    的头像 发表于 03-15 15:00 276次阅读

    原型平台是做什么的?proFPGA验证环境介绍

    proFPGA是mentor的FPGA原型验证平台,当然mentor被西门子收购之后,现在叫西门子EDA。
    的头像 发表于 01-22 09:21 657次阅读
    原型平台是做什么的?pro<b class='flag-5'>FPGA</b><b class='flag-5'>验证</b>环境介绍

    什么是FPGA原型验证FPGA原型设计的好处是什么?

    FPGA原型设计是一种成熟的技术,用于通过将RTL移植到现场可编程门阵列(FPGA)来验证专门应用的集成电路(ASIC),专用标准产品(ASSP)和片上系统(SoC)的功能和性能。
    发表于 01-12 16:13 386次阅读

    嵌入式视频处理系统领域的FPGA验证

    FPGA在视频处理方面可能很有用处,但在验证基于FPGA的视频系统时,则需要仔细关注您所用的方法。
    的头像 发表于 10-27 17:34 183次阅读

    fpga验证及其在soc验证中的作用有哪些

    很多其他行业也能从电子器件的增加受益,当然保障功能安全是大的前提。本文讨论SOC芯片设计验证验证计划和策略以及验证方法。它定义了功能模拟、功能覆盖、代码覆盖以及设计
    的头像 发表于 07-20 09:05 656次阅读

    多片FPGA原型验证的限制因素有哪些?

    当SoC系统的规模很大的时候,单片FPGA验证平台已经无法容纳这么多容量,我们将采取将SoC设计划分为多个FPGA的映射。
    发表于 06-19 15:42 562次阅读

    为什么SoC验证一定需要FPGA原型验证呢?

    在现代SoC芯片验证过程中,不可避免的都会使用FPGA原型验证,或许原型验证一词对你而言非常新鲜,但是FPGA上板
    发表于 05-30 15:04 991次阅读
    为什么SoC<b class='flag-5'>验证</b>一定需要<b class='flag-5'>FPGA</b>原型<b class='flag-5'>验证</b>呢?

    从SoC仿真验证FPGA原型验证的时机

    我们当然希望在项目中尽快准备好基于FPGA原型验证的代码,以便最大限度地为软件团队和RTL验证人员带来更客观的收益。
    发表于 05-30 11:10 804次阅读
    从SoC仿真<b class='flag-5'>验证</b>到<b class='flag-5'>FPGA</b>原型<b class='flag-5'>验证</b>的时机

    多片FPGA原型验证系统互连拓扑分析

    多片FPGA的原型验证系统的性能和容量通常受到FPGA间连接的限制。FPGA中有大量的资源,但IO引脚的数量受封装技术的限制,通常只有1000个左右的用户IO引脚。
    发表于 05-23 17:12 1245次阅读
    多片<b class='flag-5'>FPGA</b>原型<b class='flag-5'>验证</b>系统互连拓扑分析

    SoC设计的IO PAD怎么移植到FPGA原型验证

    FPGA原型验证系统要尽可能多的复用SoC相关的模块,这样才是复刻SoC原型的意义所在。
    发表于 05-23 16:50 418次阅读
    SoC设计的IO PAD怎么移植到<b class='flag-5'>FPGA</b>原型<b class='flag-5'>验证</b>

    正确认识原型验证多片FPGA自动分割工具

    当SoC的规模在一片FPGA中装不下的时候,我们通常选择多片FPGA原型验证的平台来承载整个SoC系统。
    发表于 05-23 15:31 344次阅读

    FPGA原型验证中分割引擎的重要性解析

    FPGA原型验证的原理是将芯片RTL代码综合到FPGA上来验证芯片的功能。对于目前主流行业应用而言,芯片规模通常达到上亿门甚至数十亿门,一颗FPGA
    发表于 05-18 12:52 423次阅读
    <b class='flag-5'>FPGA</b>原型<b class='flag-5'>验证</b>中分割引擎的重要性解析