HLS开发学习-09- 描述高效的C测试平台

简介: HLS开发学习-09- 描述高效的C测试平台

写在前面


本文是本系列专题的第九篇,参考高亚军老师的视频教程以及课程的ppt,主要介绍了高效的C测试平台相关内容。

激励来源


  • 直接将变量定义为激励来源并初始化
  • 将数据存储在数组中
  • 从外部文件读取数据作为激励来源

对于存储在数组中和外部文件中的激励源,要进行定义数组进行存储。

image.png

使用数组作为激励源


image.png

这里定义两个数组作为仿真的测试激励来源。

image.png

使用外部文件作为激励源


使用外部文件作为激励源可以更容易存储更多的数据,拓宽了存储数据的范围,可以涵盖几乎所有可能的输入。同时,使用外部文件作为激励源使得仿真更加灵活,不需要对仿真文件进行过多的修改即可完成仿真设计。

image.png

C++中,外部文件存储输入激励的流程如下:

首先创建文件存储要仿真的激励数据,然后从文件中读取激励数据,最后将读到的数据存储到数组中。

image.png

使用外部文件读取数据的两种方式


  • 使用while循环进行读取数据
  • 使用for循环进行读取数据

image.png

使用外部存储的设计示例


image.png

在设计中,首先要包含头文件fstream,然后进行定义存储的数组单元。将文件中的数据利用for循环或者while循环进行存储到数组中。对于读取外部文件时,可以直接根据文件的路径寻找文件,也可以把文件添加到工程中在读取时只引用文件名即可。

image.png

使用模板函数


模板函数提供了一个参数化的方法,以满足不同的需求,如数据类型,数组大小。使用模板函数非常类似于Verilog HDL中的parameter/ generic,模板函数最好以.h文件的形式编写和存储,在main()函数中,需要添加#include “ReadFileVec.h”

image.png

输出监测


用于检测输出结果的模块这里称为Scoreboard。Scoreboard用于比较自己的设计和参考设计的结果,在得到错误信息的时候给出相关的指示信息。

image.png

比较输出结果的两种办法


通常,可以使用两种办法进行比较测试的输出数据的结果。

  • 使用if语句进行比较结果
  • 使用system函数进行比较结果

image.png

有时候,DUT的结果并不绝对等于黄金参考数据。通过定义绝对误差,我们可以使用另一种类似的方法if (abs(a-b) <绝对错误)。

如果我们使用系统函数进行比较,我们必须首先将DUT的输出写入一个外部文件,同时参考数据存储在一个外部文件中这样,系统也可以显示它们之间的区别确保两个文件的格式一致。

将数据写入到外部文件


比较输出结果后,我们可以通过仿真直接进行设置监视数据的相关状态的输出,也可以将结果写入到外部文件中。步骤如下:

  1. 包含 < fstream >;
  2. 使用模板函数对数据进行复用;
  3. 创建 ofstream 对象;
  4. 检查是否存在待写入文件;
  5. 写入数据到目标文件;
  6. 关闭文件。

image.png

输出格式控制


left right integer 类型输出


image.png

integer类型输出的进制类型


image.png

通过示例可以看出两种方法的输出结果在有些情况下不同。

image.png

定点数进制类型


image.png

image.png

通过示例可以看出,对于定点数来说,使用 to string的方式结果正确,在仿真时建议使用该方式。

浮点数类型


对于位数控制

image.png

summary


image.png

目录
相关文章
|
24天前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
32 4
|
17天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
43 1
|
18天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
35 2
|
26天前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
1月前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
119 1
|
29天前
|
安全 测试技术 持续交付
云计算时代的软件开发与测试:高效、灵活、可扩展
云计算时代的软件开发与测试:高效、灵活、可扩展
|
1月前
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
59 0
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
58 3
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
73 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
258 7
Jmeter实现WebSocket协议的接口测试方法