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

本文主要是介绍数字芯片设计验证经验分享系列文章(第四部分):将ASIC IP核移植到FPGA上——如何测试IP核的功能和考虑纯电路以外的其他因素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者: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非常容易集成,并在性能上可力助您的芯片设计实现差异化。

这篇关于数字芯片设计验证经验分享系列文章(第四部分):将ASIC IP核移植到FPGA上——如何测试IP核的功能和考虑纯电路以外的其他因素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118721

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time