vivado hls的---------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函数做判断,另一种就是用系统函数(system)来做比较,先将DUT的输出放到一个文件中,system函数中输入是文件;

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

2. 输出格式的控制

在这里插入图片描述

  • setw、left、right、internal;
  • 整数的输出格式;
  • 定点数的输出格式;
  • 浮点数的输出格式;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值