数字芯片设计验证经验分享系列文章(第四部分):将ASIC IP核移植到FPGA上——如何测试IP核的功能和考虑纯电路以外的其他因素

news2024/12/27 0:42:15

作者:Philipp Jacobsohn,SmartDV首席应用工程师

Sunil Kumar,SmartDV FPGA设计总监

本系列文章从数字芯片设计项目技术总监的角度出发,介绍了如何将芯片的产品定义与设计和验证规划进行结合,详细讲述了在FPGA上使用IP核来开发ASIC原型项目时,必须认真考虑的一些问题。文章从介绍使用预先定制功能即IP核的必要性开始,通过阐述开发ASIC原型设计时需要考虑到的IP核相关因素,用八个重要主题详细分享了利用ASIC IP来在FPGA上开发原型验证系统设计时需要考量的因素。

在上篇文章中,我们分享了第五到第六主题,介绍了我们如何确保在FPGA上实现所需的性能和在时钟方面必须加以考量的因素有哪些。本篇文章是SmartDV数字芯片设计经验分享系列文章的第四篇,将继续分享第七、第八主题,包括如果目标技术是FPGA,而不是ASIC,那么需要如何测试IP核的功能?设计团队还应该牢记什么?

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

话题7:如果目标技术是FPGA,而不是ASIC,那么需要如何测试IP核的功能?

复杂电路的验证通常必须在FPGA上进行,其严格程度等同于ASIC开发的标准。众所周知,在这方面是不允许有错误产生,因为后果很严重。ASIC的每个分岔(例如,由于在电路开发期间产生的错误,而在验证期间没有发现)不仅会导致产品交付严重延迟,而且还会导致大量的额外成本。当然,在使用FPGA时不会出现这样的问题,因为在应用设计更改后,这些组件可以重新配置而无需浪费太多精力——但是,在使用可编程的组件时,应该采取最大的谨慎态度。这是很好的工程精神!

最终,FPGA被用于消除早期开发阶段的设计错误,从而确保在ASIC上实现的电路基本上是无错误的。遗憾的是,正是由于在可编程的组件上执行功能测试的简便性和速度,往往使人们不愿意首先通过仿真验证RTL代码的更改,而是在实际操作中测试电路设计。这里忽略的是,这种方法可能会忽略在仿真中所使用的测试台可以发现的极端情况。在某些情况下,验证覆盖范围会减少——尽管FPGA允许在相同的时间范围内比仿真运行更多的验证周期。如果使用FPGA认真地进行功能测试,则这种验证方法可提供比仿真验证方法更多的可能性。

通常情况下,ASIC和SoC设计包含许多复杂的行业标准接口,用于与外部设备(USB、PCIe等)进行通信或连接标准总线(AHB、AXI等)。在设计验证过程中,这些接口还被用于连接测试环境(测试台)。这种连接通过称为验证IP(VIP)的模块实现。验证IP是一种特殊的IP核,它将给定接口的总线功能模型(BFM)的功能与测试台中使用的测试用例框架功能相结合。验证IP是一个可重复使用的IP核,可用于创建必要的测试,以缩短SoC验证时间并增加覆盖率。虽然验证IP通常用于验证标准总线协议,但它也可用于系统性能分析,并且越来越多地用于模拟、仿真和虚拟原型设计。

图7:带有主接口、设备和集线器USB4的验证基本工作原理图,使用专用验证IP(VIP)可以显著增加验证覆盖范围。

验证通常是电路创建过程中最耗时的部分。专用的验证IP可以显著地增加验证覆盖范围,可覆盖极端情况,并可显著地减少设置仿真系统所需的总体工作量(例如,创建模拟刺激)。

测试通常可以通过使用FPGA来实时进行。这意味着直接与ASIC相比,FPGA可以相同或降低的时钟频率来运行设计。即使在使用FPGA时需要降低时钟频率,因为可编程性总是需要逻辑单元的冗余,因此需要较大的芯片面积(这反过来导致更高的延迟);但与纯仿真相比,验证速度仍然要高得多。这种加速型验证使得发现在仿真中永远不会发现的错误成为可能。

尽管使用FPGA进行ASIC原型设计具有诸多优点,但将最初专为ASIC目标项目而开发的电路移植到FPGA上并不是一件容易的事情,这一点怎么说都不为过。

最重要的一点是,在FPGA中实现电路通常需要对电路本身进行更改。在前面的主题部分中,我们已经研究了可能需要实施的更改。每一次电路的改变都意味着,稍后将被映射到ASIC上的电路是已经验证的,但并不是完全相同的,而是经过修改的版本。当然,有必要相应地调整仿真设置,例如ASIC电路开发的测试台。

关于测试结构,还有一些事情需要考虑。例如,扫描结构经常出现在ASIC RTL代码中——关键字:DFT(面向测试的设计)——以便在交付前轻松识别有故障的ASIC组件并相应地对其进行筛选。这种测试结构在FPGA中是不需要的,因为这些组件都是已经过测试才交付给最终客户,因此不需要插入额外的测试结构。事实上,这些组件实际上是破坏性的,因为实现将导致组件利用率的增加,并且还需要更复杂的时钟分布。有必要消除在FPGA逻辑综合中为测试引入的预防措施(例如,扫描-FF),或将它们“隐藏”在逻辑综合中。

 “干净”的设计实现使用“define”和“ifdef”指令根据期望的目标架构(ASIC或FPGA)来选择这样的测试结构,或者使它们对于逻辑综合“不可见”。通过使用这些指令,也可以实现用于存储器和时钟生成或分配的特殊FPGA库组件的集成,这使得IP核的用户能够简化电路以适应所需的目标架构。其目的是加快电路的创建,从而提高生产率。当然,应该指出的是,最终的实现并不是完全相同的。然而,由于目标元件也不相同,因此对电路进行相应的调整是不可避免的。

对原始设计进行更改是不可取的。原型设计的理念是将稍后在ASIC中实现的功能映射到一个可编程组件中,而不需要进行重大更改;即使有改动,最好也是同步相同的更改,以检测可能的错误。但是,如果电路本身发生变化,则可能由于变化而引入误差。由于实现不完全相同,不能保证ASIC电路中没有更多的错误,因为它没有事先经过充分的测试。然而,如果在ASIC实现之前根本没有使用FPGA,则可以实现更高的验证覆盖率。毕竟,要验证的电路只有部分区域是不同的,并且与仿真性验证方法相比,允许更多的测试周期。

另一个需要考虑的要点是发送和接收数据的物理通信接口,诸如MIPI、USB、PCIe等接口IP通过差分接口传输串行或并行高速数据信号。为了在发射器和接收器之间建立连接,就需要一个PHY来传输差分数据流。这种PHY可以在ASIC上作为模拟电路来实现,然而这在FPGA上是不可行的,或者如果行的话,那么只能通过使用可提供的SerDes IO或高速收发器作为辅助。当然,这意味着FPGA实现与ASIC电路完全不相同。在绝大多数情况下,有必要通过连接到FPGA的附加外部PHY组件来提供物理接口。如果电路在实际运行中进行测试,其物理接口将与最终的ASIC实现之间存在差异。

总之,可以说大多数验证工具都可以同时用于ASIC和FPGA目标(例如,仿真器、形式验证等)。然而,在某些方面存在显著差异,例如RTL代码中存在的测试结构或通过PHY接口将电路连接到“外部世界”。原则上来说,使用FPGA可在验证覆盖率方面提供显著的优势,但是移植专为ASIC开发的电路部件总是需要相当多的额外工作。在这种情况下,使用验证IP可以为简化复杂的功能测试、增加验证覆盖率和加速验证做出重大贡献。

主题8:设计团队还应该牢记什么?

我们已经涵盖了很多领域,但是当这些IP最初是为ASIC目标架构创建的时候,在FPGA方向上移植电路时需要考虑更多。

正如已经详细解释的那样,可编程组件的使用适合于在实际操作中测试电路,从而确保它在很大程度上是无错误的。在项目的早期阶段就有一个可用的功能电路具有许多价值:在其帮助下,不仅可以先进行软件和固件的设计,而且还可以在ASIC仍处在流片过程中就使用基于FPGA的原型对它们进行测试。

如果要使用FPGA,则应该在RTL创建期间就采用“专为原型而设计”的方法。这并不总是容易实现的。例如,如果ASIC电路设计的要求是尽可能将功耗保持到最低,那么除了对时钟分布进行操作(例如,通过插入门控时钟结构)之外,还经常使用基于锁存器的设计方法。该想法是使用锁存器而不是时钟寄存器。时钟控制元件简化了电路实现,因为时钟也使“时间概念”可用。然而,寄存器逻辑的使用总是导致更高的功率需求,因为功耗与时钟元件的数量及其时钟频率成比例地增加。

与ASIC不同,FPGA不是很适合基于锁存器的电路实现,因为——正如前面主题6中提到的:在时钟方面必须考虑什么?——只定义“最坏情况下”的时序信息。在FPGA时序分析中通常不计算最小时序和延迟。如果一种时钟方法不能通过寄存器逻辑检测,那么时间行为就不再是可预测的,并且可能导致所谓的“竞争条件”和其他问题,这些都使得FPGA不可能可靠地运行。最后,这意味着不同的电路实现对于各自的目标模块是很有必要的。这里的目标是实现相同的功能,尽管在实现路径上有所不同。

前面提到的电路设计方法应该在产品开发的早期阶段就应该考虑到目标架构之中的相关因素,不仅限于锁存器的实现。在FPGA中也有必要注意同步电路的实现,和避免使用FPGA中不可用的电路(例如,双边沿时钟FF)。目标架构还必须考虑到可实现的时钟频率。要避免长组合路径,因为可能会出现高时序违规。

在基于FPGA的原型中,验证不仅仅指电路功能和实现所需的时间;通常还需要包括其他的测试,同样重要的参数在开发活动中越快实现越好。例如,除了前面讨论的软件和固件的开发之外,还应该提到ASIC组件的节能设计。

对于一个只实现纯电路功能的原型来说,功率损耗实际上根本不起作用。然而,对于ASIC的运行绝对有必要的降低功耗的方法,同样也可以在FPGA中使用,并将其包含在原型设计活动中,所以这是值得期待的。虽然不可能使用ASIC中可用的各种选项,但至少可以通过使用适当的工具和脚本来模拟它们的功能。这里的方法是至少估计通过不同方法可以实现功耗降低(例如,时钟门控以降低寄存器切换率、关闭ASIC上的整个区域、在ASIC的一些部分使用不同的电源电压等)。

上述方法在FPGA上是不可用的,除了物理上可实现的时钟门控,这也会对FPGA的可靠运行产生负面影响。通过读取通用格式(UPF =统一功率格式;CPF =通用功率格式)的相应脚本,和使用可模拟支持这些格式的FPGA逻辑综合工具,至少可以估算这些措施将如何影响ASIC的功耗。

在这种情况下,有一件事是明确的:电路功能越早可用,相应的测试就能越早进行。因此,使用诸如IP核这样的预先制作的模块具有巨大的潜力,可以加速ASIC实现和验证的各个阶段。

本系列文章接下来将通过一个实际案例来回顾前面讲到的八项关键设计考量因素:使用基于FPGA的方法来验证USB 3.2 Gen2x1 Device IP,大家可以通过关注“智权半导体”微信公众号阅读该案例分析。

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

然而,将IP核移植到FPGA架构中对于IP提供商来说是一个具有挑战性的目标——如果不付出相当大的努力,这几乎是不可能的。接下来我们将通过一个实际案例,即使用基于FPGA的方法来验证USB 3.2 Gen2x1 Device IP来说明其中的困难和克服之道。

本系列文章的目标是全面分享经验,帮助读者利用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在印度工作。

关于智权半导体

智权半导体科技(厦门)有限公司是SmartDV Technologies™在华设立的全资子公司,其目标是利用SmartDV全球领先的硅知识产权(IP)技术和产品,以及在地化的支持服务来赋能中国集成电路行业和电子信息产业。目前,SmartDV在全球已有300家客户,其中包括十大半导体公司中的七家和四大消费电子公司。

SmartDV于2007年由经验丰富的ASIC设计专业人员迪帕克·库马尔·塔拉、杜尔加·拉克什米·塔拉和卡维塔·塔拉·哈里多斯在印度创办。自成立以来,SmartDV一直专注于IP领域并不断推出广受市场欢迎的IP产品,这得益于我们在集成电路IP领域内发展出来的独具创新的技术与方法。

通过将专有的SmartCompiler™技术与数百位专家工程师的知识相结合,SmartDV可以快速、经济、可靠地定制IP,以实现您独特的设计目标。因此,无论您是为下一代SoC、ASIC或FPGA寻找基于标准的设计IP,还是寻求验证解决方案(VIP)来测试您的芯片设计,您都会发现SmartDV的IP非常容易集成,并在性能上可力助您的芯片设计实现差异化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python中类型转换函数1

1 bool()函数 bool()函数的作用是将给定参数转换为布尔类型,指定参数是非零值,则转换为True,否则转换为False,如图1所示。 图1 bool()函数的使用方法1 如果bool()函数没有参数,则返回值是False,如图2所示…

如何查看 Kubernetes 的操作审计日志?

极狐GitLab 通过 Kubernetes Agent 对 Kubernetes 集群进行管理。整体的步骤为 Kubernetes Agent 的注册、安装。当然,也可以直接对 Agent 进行删除。不管是添加还是删除,后台都会有对应的审计日志,方便对 Kubernetes 集群的操作进行安全审计…

金九银十面试丨Python自动化测试的面试真题:

1.请解释一下Python自动化测试是什么以及为什么它重要? Python自动化测试是指使用Python编程语言进行测试过程中的自动化的过程。它通过编写测试脚本和自动化工具来模拟用户的行为,执行测试用例,并能够自动捕获测试结果和生成测试报告。Pyth…

Qt QLineEdit输入内容的格式限制(2)

设置QlineEdit控件不可编辑、密文输入、输入格式等小技巧 1. 设置不可编辑 setReadOnly(false);//文本不可编辑,但可以复制到剪切板 setEnabled(false);//整个控件被禁用,且会调用控件的禁用状态 setFocusPolicy(Qt::NoFocus);//无法获得焦点&#xff…

什么是密码学?

什么是密码学? 密码学是一种通过使用编码算法、哈希和签名来保护信息的实践。此信息可以处于静态(例如硬盘驱动器上的文件)、传输中(例如两方或多方之间交换的电子通信)或使用中(在对数据进行计算时&#…

第二十五课,字符串操作函数(二)

一,字符串.replace(子串1, 子串2):将字符串内的全部子串1,替换为子串2 在用电脑办公时,会出现这样的情景:一篇很长的文章中有一个人的名字全部被错写了,我们需要修改,但一个一个找错掉的名字修…

教师节素材大分享,海报设计不求人,素材多到根本用不完!

设计教师节海报时,设计师们最怕的就是时间不够用,灵感还卡壳。想做出有创意的设计,却总找不到合适的素材。而且,抠图、调色这些繁琐的步骤,特别耗时,让人头疼。还好最近找到一款国产设计软件,简…

SoftMaker Office Pro 2024:高效办公的全方位解决方案

SoftMaker Office Pro 2024是一款集高效、专业、全面于一体的办公软件套件,专为满足现代办公需求而设计。这款套件不仅包含了文字处理、电子表格、演示文稿等核心功能,还集成了项目管理、文档管理和客户管理等实用工具,为用户提供了全方位的办…

Leetcode 77. 组合 组合型回溯 C++实现

Leetcode 77. 组合 问题:给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。 算法: 创建二维返回数组 ans ,和临时数组 path 。 进入 dfs 函数,d 代表还需要选 d 个数字…

Qt QComboBox下拉菜单显示提示信息

亲测有效 void MainWindow::initCOmboBox() {QStandardItemModel *model new QStandardItemModel(this);QStandardItem *item;item new QStandardItem("1.00");item->setToolTip("黏性土");model->appendRow(item);item new QStandardItem("…

《软件工程导论》(第6版)第1章 软件工程学概述 复习笔记

第1章 软件工程学概述 一、软件危机 1.软件危机的介绍 (1)概念 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能运行的软件才具有的,实际上,几乎所有的软件都不同程度…

OpenAI GPT-3.5 “prompt“ argument not working

题意:"OpenAI GPT-3.5 的 prompt 参数不起作用" 问题背景: I am trying to make a flutter app with the openAI api that works like a chatbot, and I want to add a prompt so that the responses are more specialized, like in the open…

【系统架构师软考】计算机体系结构(二)

目录 CPU、GPU、NPU、FPGA、ASIC特性对比 SoC Cache的地址映像方法 直接映射(Direct Mapping) 2. 全相联映射(Fully Associative Mapping) 3. 组相联映射(Set-Associative Mapping) Cache的替换算…

刚刚!EI数据库再次更新!89本被踢,上百种期刊迎来变动

【SciencePub学术】本期热点 EI目录更新 刚刚,爱思唯尔更新了EI Compendex收录期刊目录。时隔近9个月,EI数据库才迎来了再次更新! 此次更新后,目前在检连续出版/核心收录(SERIALS)列表共收录期刊名称5644本…

KTH5701 系列低功耗、高精度 3D 霍尔传感器

KTH5701 是一款数字输出的 3D 霍尔芯片,内部 分别集成了 X 轴、 Y 轴和 Z 轴三个独立的霍尔传感器。 信号链采用高精度运放通过 16 bit ADC 将模拟信号 转换成数字输出。外部主机可以采用 SPI 或 I2C 两种 模式读出测量数据。此外,在芯片…

大模型书籍推荐丨不会大模型私有化部署?这本大模型权威教材必看!(附PDF文档)

《ChatGLM3大模型本地化部署、应用开发与微调》作为《PyTorch 2.0深度学习从零开始学》的姊妹篇,专注于大模型的本地化部署、应用开发以及微调等。 本书不仅系统地阐述了深度学习大模型的核心理论,更注重实践应用,通过丰富的案例和场景&…

Gartner首次发布AI代码助手魔力象限,阿里云进入挑战者象限,通义灵码产品能力全面领先

8月29日消息,国际市场研究机构Gartner发布业界首个AI代码助手魔力象限,全球共12家企业入围,阿里云成为唯一进入挑战者象限的中国科技公司。通义灵码在产品功能和市场应用等方面表现优秀,获得权威机构认可。 该报告从技术创新性、产…

【C++类和对象】类和对象的介绍、this指针以及体会面向对象编程

文章目录 🚀类✈️类的介绍✈️类的访问限定符✈️类的封装 🚀面向对象编程🚀类与对象的联系🚀this指针✈️引出this指针✈️this指针的特性 🚀类 ✈️类的介绍 在C语言中,结构体中仅能声明变量并不能定义…

QT学习ubuntu qt + desktop

环境搭建 ubuntu 安装QT 遇到kit 选择不了 通过sudo apt-get install qt5-default去安装SDK的时候报错: Package qt5-default is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is …

【回眸】QAC软件指南——错误分析篇(完整版)

前言 近期需要再次测一下代码,相比以前测试更有经验,也做了比较多的记录,正好将经验通过博客保留下来,为以后可能的QAC测试做准备。 安装导入分析代码 这部分在上一篇中已经详细介绍,具体请见,如有疑问可…