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

目录
相关文章
|
13天前
|
人工智能 分布式计算 DataWorks
首批!阿里云 MaxCompute 完成中国信通院数据智能平台专项测试
2024年5月31日,在中国信通院组织的首批数据智能平台专项测试中,阿里云数据智能平台解决方案(MaxCompute、DataWorks、PAI)顺利完成测试。
83 5
首批!阿里云 MaxCompute 完成中国信通院数据智能平台专项测试
|
14天前
|
JSON Java 测试技术
SpringBoot实用开发篇第二章(测试操作)
SpringBoot实用开发篇第二章(测试操作)
|
4天前
|
消息中间件 缓存 中间件
【赠书活动 - 第1期】- 测试工程师Python开发实战(异步图书出品)| 文末送书
【赠书活动 - 第1期】- 测试工程师Python开发实战(异步图书出品)| 文末送书
|
5天前
|
敏捷开发 jenkins 测试技术
软件测试中的自动化与持续集成:提高开发效率和产品质量
在软件开发的生命周期中,测试阶段扮演着至关重要的角色。随着敏捷开发模式的普及,自动化测试和持续集成(CI)已成为确保软件质量和加快交付速度的关键策略。本文深入探讨了自动化测试和持续集成的概念、实施步骤及其对软件开发流程的影响。通过引用最新的行业研究和案例分析,文章揭示了这些技术如何帮助团队减少人为错误,缩短反馈循环,并最终提升产品的稳定性和用户体验。
|
5天前
|
JSON 前端开发 测试技术
从零开始:学习使用 Postman 进行接口测试
在当前,API(应用程序接口)的使用变得越来越普遍。其中,HTTP/HTTPS API 是最常见的一种。无论是开发前端还是后端,测试 API 都是一个关键环节。Postman 是一种流行且强大的 API 测试工具,能够帮助开发人员轻松地进行接口测试和调试。
|
5天前
|
jenkins Java 测试技术
电商返利平台的测试与持续集成
电商返利平台的测试与持续集成
|
11天前
|
开发框架 Java Maven
后端开发之SpringBootWeb入门介绍及简单测试 2024详解
后端开发之SpringBootWeb入门介绍及简单测试 2024详解
17 0
|
11天前
|
数据可视化 Java 持续交付
JavaWeb后端开发之Maven 2024介绍安装测试详解
JavaWeb后端开发之Maven 2024介绍安装测试详解
14 0
|
14天前
|
JSON Java Maven
使用`MockMvc`来测试带有单个和多个请求参数的`GET`和`POST`接口
使用`MockMvc`来测试带有单个和多个请求参数的`GET`和`POST`接口
24 3
|
2天前
|
JSON JavaScript 测试技术
Postman接口测试工具详解
Postman接口测试工具详解
11 1