当前位置:网站首页>虹科分享 | 如何测试与验证复杂的FPGA设计(3)——硬件测试
虹科分享 | 如何测试与验证复杂的FPGA设计(3)——硬件测试
2022-08-03 16:11:00 【虹科智能自动化】
仿真和验证是开发任何高质量的基于 FPGA 的 RTL 编码过程的基础。在之前的文章中,我们介绍了面向实体/块的仿真以及如何在IP核中执行面向全局的仿真,即通过在每个输入信号上生成激励并验证 RTL 代码行为是否符合预期,对构成每个 IP 核的不同模块进行实体/块的仿真。而一旦不同的模块被单独验证,则意味着下一步将整个IP仿真为单个 UUT(被测试单元)。
前文回顾:
虹科分享 | 如何测试与验证复杂的FPGA设计(1)——面向实体或块的仿真
虹科分享 | 测试与验证复杂的FPGA设计(2)——如何在IP核中执行面向全局的仿真
尽管扩展的仿真计划提供了良好的可信度,但仍有许多corner的情况无法在虚拟环境中验证。对于这些情况,需要基于硬件的测试计划,这也是获得高质量结果的最后一步。因此,在本篇文章中,我们将重点介绍如何在硬件平台上验证IP核。
硬件测试是为IP核产品执行高质量测试和验证计划的最后一步,主要可以分为以下几个阶段:
1. 测试准备:定义在产品开始测试之前必须完成的步骤
在这个阶段,定义了测试计划文档。在这个文档中,详细描述了必须在 DUT(被测设备)上执行的每一项测试。
2. 测试执行:执行上一个阶段中定义的测试用例
3. 问题报告:检查和报告在测试执行期间检测到的所有问题
可以使用问题电子表格来记录在测试阶段检测到的每个问题。每当注册新问题时,都会向开发团队报告,并且能够追踪哪些问题已解决,哪些问题仍有待审查。
4. 测试结束:确定测试阶段何时完成,并创建测试结果文档,其中将包含成功执行的测试的摘要以及有关测试的更多相关信息。
为了优化测试执行过程,我们使用了虹科测试工具,以进行自动化测试。该工具考虑了以下内容:
- DUT配置过程
- 流量注入和嗅探
- 记录从 DUT 返回的流量
- 验证保存的日志
- 将 DUT 设置为原始状态
该工具的第一步与DUT 配置的执行有关。这是通过名为 Platform.vars 的输入配置文件完成的。通过该文件,用户可以配置不同的参数,如 DUT SSH 参数、主机 PC 的 IP 地址或网络接口。
第二步,完成TS(测试站)和 DUT之间的流量注入和嗅探。我们有不同的第三方设备用作测试站,但最常用的设备之一是IXIA Novus One Plus。流量可以通过 IXIA 的 Python API 轻松发送。数据包操作是通过 Scapy Python 模块完成的。尽管 Scapy 允许传输该工具生成的所有流量,但它是使用不同的工具tcpreplay执行的。这使我们能够克服由 Scapy 引起的带宽和准确性方面的某些限制。在此步骤中,测试提供了自定义流量的灵活性,以验证不同的 DUT 功能。可扩展性不是问题,因为该工具支持添加额外的流量和测试端口。
第三步,该工具使用测试站或通过 Linux tcpdump 软件登记来自 DUT 的流量。
第四步,SoC-e 测试工具验证上一步中存储的信息(统计、寄存器转储(dump)等),以检查一切是否正常。通过这两个步骤,SoC-e 测试工具为测试用例的验证提供了一个很好的解决方案。
最后,第五步,也是最后一步。最后一步的主要目的是将 DUT 配置恢复到其原始状态,因为它可能在测试期间被修改。
若对上述测试过程有疑问,欢迎评论或私信与我们进行交流
边栏推荐
- 用友YonSuite与旺店通数据集成对接-技术篇2
- Common distributed theories (CAP, BASE) and consensus protocols (Gosssip, Raft)
- Kubernetes 笔记 / 任务 / 管理集群 / 用 kubeadm 管理集群 / 配置一个 cgroup 驱动
- MPLS的wpn实验
- 出海季,互联网出海锦囊之本地化
- Leetcode76. Minimal Covering Substring
- C专家编程 第3章 分析C语言的声明 3.9 轻松一下---驱动物理实体的软件
- C专家编程 第2章 这不是Bug,而是语言特性 2.4 少做之过
- 罗克韦尔AB PLC RSLogix5000中创建新项目、任务、程序和例程的具体方法和步骤
- 攻防世界----bug
猜你喜欢
How to analyze the weekly activity rate?
spark入门学习-2
如何分析周活跃率?
参与便有奖,《新程序员》杂志福利来袭!
Introduction to spark learning - 1
Introduction to the advantages of the new generation mesh network protocol T-Mesh wireless communication technology
SQL中对 datetime 类型操作
leetcode-268.丢失的数字
leetcode-693.交替位二进制数
【Unity入门计划】基本概念(6)-精灵渲染器 Sprite Renderer
随机推荐
我写了个”不贪吃蛇“小游戏
一文看懂推荐系统:概要02:推荐系统的链路,从召回粗排,到精排,到重排,最终推荐展示给用户
13 and OOM simulation
C专家编程 第3章 分析C语言的声明 3.3 优先级规则
To add digital wings to education, NetEase Yunxin released the overall solution of "Internet + Education"
13、OOM模拟
Hannah荣获第六季完美童模全球总决赛全球人气总冠军
MySQL窗口函数
C语言03、数组
ffplay视频播放原理分析
MySQL查询语法
请问大家,MySQL全量怎么样可以提高性能呢?我这里瓶颈是在Source上,在不增加并行度的情况下,
leetcode:189. 轮转数组
[Unity Getting Started Plan] Basic Concepts (8) - Tile Map TileMap 02
mysql delete execution error: You can't specify target table 'doctor_info' for update in FROM clause
【There is no tracking information for the current branch. Please specify which branch you want to 】
CPU个数_核心数_线程数之间的关系
window.open不显示favicon.icon
C专家编程 第2章 这不是Bug,而是语言特性 2.2 多做之过
带你了解什么是 Web3.0