Vivado HLS(High-level Synthesis)笔记三:Test bench

一. C/C++ Test bench的基本架构

在这里插入图片描述在这里插入图片描述

  • Test bench是一个用来验证逻辑功能是否正确的虚拟坏境,由Driver/Stimulus(输入激励)、Reference Model(参考模型,其输出结果是正确结果)、DUT(待测模型,Design Under Test,我们需要综合的C函数)、Monitor(检测DUT的输出)、Scoreboard(将DUT的输出和参考模型的结果做对比);
  • C/C++ Test bench是为了验证我们所写的C/C++函数的正确性;
  • 在HLS中还会复用C test bench来验证生成的RTL设计;
  • 如何写一个高效的test bench,希望被测的函数可以更多次执行,可以覆盖更多的输入情况,将我们的被测函数的输出和已知的正确输出做一个比较,如果结果完全正确返回0;否则返回1;

一个test bench的实例:
在这里插入图片描述
test bench结构中的各个部分:
在这里插入图片描述

二. Test bench中的测试激励

在这里插入图片描述
测试激励的三种来源:

  • 定义一个变量并且初始化;
  • 将数据存储在数组中;
  • 从外部文件中读取数据再赋给数组;

1. 用数组做测试激励的实例

在这里插入图片描述

2. 从外部文件读取数据作为激励

在这里插入图片描述在这里插入图片描述

  • 优点就是外部文件可以比较容易地存储大量数据,这从一定程度上做到了测试的完备性,另外外部文件很灵活 ,可以很容易的修改测试数据;
  • C++中从外部读取数据的步骤:创建数据流——读取数据——将数据存储到数组;

使用Template Function可以高效地从外部文件读取数据,可以参数化读取。
在这里插入图片描述一个实例:
在这里插入图片描述

三. 输出检测与格式控制

1. 输出检测

在这里插入图片描述在这里插入图片描述

  • Scoreboard的作用在于将DUT的输出结果与Reference Model中的正确结果比较,当出现错误时给出信息;
  • 通常由两种方法来比较:一种是使用if函数做判断,另一种就是用系统函数来做比较,先将DUT的输出放到一个文件中,system函数中输入是文件;

如何将数据写入外部文件?
在这里插入图片描述

2. 输出格式的控制

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • setw、left、right、internal;
  • 整数的输出格式;
  • 定点数的输出格式;
  • 浮点数的输出格式;
  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值