FPGA验证流程综述

2024-05-21 13:43:17张勇陈逸韬
科技资讯 2024年4期

张勇 陈逸韬

摘要:現场可编程门阵列(Field-Programmable Gate Array,FPGA),也被称为FPGA芯片。在通信、安防、工业等领域有着举足轻重的作用。随着FPGA芯片的规模不断扩大、性能不断提升,其模块数量、电路网表规模、连接复杂度也随之增加。在此趋势下,如何有效地提升大规模FPGA电路的验证效率与验证完备性变得更为重要。一个完整的、有针对性的、结构性的验证流程方法,能更全面地对电路设计情况进行覆盖性检查,确保FPGA芯片功能的正确性。详细叙述从底层到顶层(模块级、子系统级、全芯片级)的FPGA芯片验证方式,包括它们各自的验证方法、流程与侧重等细节,探讨了这种方式是如何帮助FPGA验证工作进行的。

关键词:FPGA芯片   验证效率   验证流程方法      全芯片级验证

中图分类号:TN40;TN791

An Overview of the FPGA Verification Process

ZHANG Yong   CHEN Yitao

Shenzhen State Microelectronics Co., Ltd., Shenzhen, Guangdong Province, 518000 China

Abstract: The field-programmable gate array (FPGA) is also known as the FPGA chip, and it plays a crucial role in fields such as communications, security and industry. As the scale of FPGA chips continues to expand and their performance continues to improve, their number of modules, size of circuit netlists and connection complexity also increase. In this trend, how to effectively improve the verification efficiency and completeness of large-scale FPGA circuits has become more important. A complete, targeted and structured verification process method can comprehensively check the coverage of circuit design and ensure the correctness of the function of FPGA chips. This paper detailedly describes the verification method of FPGA chips from the bottom layer to the top layer (module-level, subsystem-level, full chip-level), including details such as their respective verification methods, processes and emphases, and explores how this method helps FPGA verification work.

Key Words: FPGA chip; Validation efficiency; Validation process method; Full chip-level validation

1 FPGA分层级验证

1.1验证层级分类

根据验证侧重点,验证分为三个层级:模块级、子系统级与全芯片级。其中模块级侧重模块功能的验证,子系统级侧重模块间交互的验证,而全芯片级侧重子系统间交互的验证。

1.1.1模块级验证

模块级验证是相对底层的验证层级,其最终验证收敛目标是各模块功能与代码的全覆盖。其中功能覆盖率包含配置的独立与组合覆盖以及配置和激励的组合覆盖,而代码覆盖率则实现针对设计代码信号翻转的覆盖检查[1]。

模块级内部对应设计抽象层次的划分,分为软件模型、硬件模型和网表三个层次。其中,软件模型用于软件建模,硬件模型为与硬件电路端口对应的功能模型,网表为利用电路设计工具提取出的电路网表[2]。对应这三种模型层次的验证,模块级验证分为软件模型验证、硬件模型验证与网表验证。

模块级软件模型验证的每一个验证用例中,包含一组对应功能需求的软件参数组合。该层次验证通过软件参数对模型直接配置,同时输入激励并检查响应,保证软件参数配置模块指定功能的正确性。

模块级硬件模型验证由硬件参数进行模式配置,硬件參数为复用软件模型验证用例中的软件参数组合,根据软硬件参数转换文件转换而来[3]。该层次验证在保证软件参数至硬件参数转换正确性的同时,保证由硬件参数配置模块,能够实现Spec中描述的硬件模型全部功能。模块级软件模型和硬件模型验证的验证结构示意如图1所示。

模块级网表验证为针对电路网表的验证。此层次验证复用模块级硬件模型的验证环境,只是替换描述模块的硬件模型为网表,配置方法不发生改变。相较前述两种验证层级对应的验证模型,网表最接近电路实际,故模块级网表验证层级可最接近地仿真电路实际情况[4]。将图1下半部分模块级硬件模型验证结构中的硬件模型替换成网表即可进行模块级网表验证。

从上述验证细节可以看出,模块级软件模型与模块级硬件模型验证环境之间复用了验证用例,而模块级硬件模型与模块级网表验证之间复用了整个验证结构,只是需要将模型相互替换。这种验证抽象层次对应验证环境间的相互复用,可以在验证中保证电路和代码模型在功能上的一致性[5]。

1.1.2子系统级验证

FPGA电路子系统级中包括若干功能模块和CRAM单元等基本模块[6]。子系统层级结构中存在内部功能模块之间、功能模块到顶层、CRAM到功能模块、CRAM到顶层(地址和数据端口)这几种连接关系。子系统层级连接检查,需要保证上述几种连接关系的正确性,从而确保功能模块之间、功能模块到顶层的信号传递正常,同时确保位流从顶层输入,通过CRAM与各模块SC端口间的连接,能正确配置到功能模块的各个具体配置点[7]。

子系统级验证通过依据连接关系编写的断言文件进行上述连接检查。连接关系由设计人员提供的Spec提取获得,验证人员根据获得的各连接关系编写断言文件,分别对各子系统级软件模型与网表进行连接检查。

子系统级验证收敛目标为代码覆盖率中Toggle的全覆盖,这其中包括软件参数端口的Toggle覆盖,模块端口信号的Toggle覆盖与子系统端口信号的Toggle覆盖[8]。

1.1.3全芯片级验证

全芯片级为各子系统连接构成的结构层级。在此层级验证中,验证人员将验证用例生成的位流加载进全芯片电路,并往芯片顶层端口施加激励进行仿真,模拟实际全芯片工作过程,验证系统功能是否能在软硬件协同下正常工作[9]。仿真中可以对连线资源、时钟数、core模块等进行验证,确保芯片顶层功能的正确性[10]。

根据功能需求生成用于仿真的位流,其配置方式分为PLI与PROG两种[11]。PLI配置方式将位流直接force到配置所对应子系统级CRAM对应位置,对配置过程的模拟关注的是进入用户模式后的功能[12],其示意图如图2所示。PROG配置方式模拟用户实际使用芯片时的配置过程,使用CCS模块进行配置[13],其配置方式的示意图如图3所示。

全芯片级收敛目标为全芯片顶层连接的Toggle全覆盖,根据仿真类型相应类型连接需全覆盖[14],覆盖情况使用脚本统计。

2 结论

随着FPGA芯片的更新迭代,设计的复杂度日渐增加,验证工作将很快将成为设计过程中的瓶颈。为了验证复杂的设计,完备的验证流程,搭配强大的验证工具,将帮助一些繁琐的验证过程的完成,并第一时间发现设计中的错误,以避免昂贵的重复设计耗时与费用损失。

传统的验证流程已形成验证的标准步骤,以分层级的体系结构模型来分析设计方案的仿真验证方法,配合UVM方法学与随机测试、异常测试的补充以及验证环境与IP的复用,已经能较完整与高效率地满足验证覆盖目标,减少重复设计的风险。

在可预期的未来,产品市场化的速度要求日益加快,验证效率需要在现有基础上得到提高,满足与市场化速度相适应的项目研发周期需求。可以预见的是,小到文件处理方式的脚本自动化,大到新颖而完善具体的验证策略与流程,搭配专门为集成电路验证设计的硬件仿真器,辅以先进的EDA工具和智慧的IT资源分配乃至AI人工智能的支持等,将会进一步减少验证耗费的人力和时间。

参考文献

[1] 闫爱.覆盖率驱动的交换芯片验证方法研究[D].西安:西安电子科技大学,2016.

[2] 朱倩,田甜,赵欢.基于FPGA中状态机的逻辑等价性验证方法[J].南通大学学报(自然科学版),2016,15(3):45-49.

[3] 徐文丰.FPGA芯片TILE单元建模以及故障覆盖率分析[D].上海:复旦大学,2011.

[4] 黄盈.统一验证方法的实现[D].成都:电子科技大学,2007.

[5] 艾俊伟.芯片验证平台设计与自动化测试[D].武汉邮电科学研究院,2022.

[6] 崔鹏.高速FPGA配置结构的设计与研究[D].上海:复旦大学,2011.

[7] 李睿婷,万江华,刘衡竹,等.一种基于PLI技术的系统级验证方法[C]//第十七届计算机工程与工艺年会暨第三届微处理器技术论坛论文集(上册).2013:390-394.

[8] 王立平,姚程宽,陈向阳,等.IC验证三种不同方法的分析比较[J].太原師范学院学报(自然科学版),2019,18(1):67-69,75.

[9] 王婷婷,吴会祥,葛秀梅.一种可多功能应用的芯片测试验证平台设计[J].集成电路应用,2023,40(5):36-37.

[10] 黄超.基于UVM的验证平台可重用性和自动化研究[D].杭州:浙江大学,2020.

[11] 朱岩岩,方建勇,许寿全.基于VCD波形的FPGA验证平台[J].指挥控制与仿真,2019,41(5):121-125.

[12] 张梅娟,张明月,杨楚玮,等.SoC芯片的RomCode设计与FPGA验证研究[J].电子设计工程,2023,31(21):76-80,86.

[13] WAFAA S. SAYED, MERNA ROSHDY, LOBNA A. SAID, et al. Design and FPGA Verification of Custom-Shaped Chaotic Attractors Using Rotation, Offset Boosting and Amplitude Control[J]. IEEE Transactions on Circuits and Systems II:Express Briefs,2021,68(11):3466-3470.

[14] HAN K,LEE J-J,LEE W,et al.A Diagnosable Network-on-Chip for FPGA Verification of Intellectual Properties[J].Design & Test of Computers, IEEE,2019,36(2):81-87.