vitis hls使用笔记:如何构建高效的Test Bench

1.什么是Test Bench

1. 是一个虚拟的环境

2. 用于验证所设计模型的正确性

3. 用于验证构建的C++函数正确性,即 csim

4. 用于验证RTL设计的正确性,即C/RTL Cosimulation

5. 其用C++语言描述

2. Test Bench的构成 

 vitis hls使用笔记:如何构建高效的Test Bench_第1张图片

1. Driver / Stimulus: 输入激励

2. Reference Modell: 参考模型(一般作为黄金参考值,即认为该模型为基准)

3. DUT: 待测模型(需要综合的C函数)

4.  Monitor: 监视器(非必须)

5. Scoreboard: 将参考模型和待测模型结果进行对比

 3. 什么是高效的Test Bench

vitis hls使用笔记:如何构建高效的Test Bench_第2张图片

1. 增加测试的多样性:用于合成的顶层函数是为多个事务执行的

2. 将函数输出与已知的良好值进行比较

3. main()函数的返回值被约定为:  0: 结果正确     非0:结果不正确

  4. Test Bench实例

 vitis hls使用笔记:如何构建高效的Test Bench_第3张图片

 注:左上角是待测模型的.cpp文件; 另外一个是Test Bench的.cpp文件 

vitis hls使用笔记:如何构建高效的Test Bench_第4张图片 

 5. Test Bench 测试激励

 (1)测试激励的源

vitis hls使用笔记:如何构建高效的Test Bench_第5张图片

1. 直接定义和初始化变量作为激励

2. 将数据存储在一个数组中作为激励

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

 (2)实例:用数组作为激励

vitis hls使用笔记:如何构建高效的Test Bench_第6张图片

(3)实例:从外部文件读取数据作为测试激励

vitis hls使用笔记:如何构建高效的Test Bench_第7张图片

vitis hls使用笔记:如何构建高效的Test Bench_第8张图片 

vitis hls使用笔记:如何构建高效的Test Bench_第9张图片

 6. Test Bench Scoreboard 

(1) 两种比较方式

vitis hls使用笔记:如何构建高效的Test Bench_第10张图片

(2) 将数据写入外部文件

vitis hls使用笔记:如何构建高效的Test Bench_第11张图片

 (3) 输出格式的控制

vitis hls使用笔记:如何构建高效的Test Bench_第12张图片

输出格式: setw 、left 、right 、internal 

vitis hls使用笔记:如何构建高效的Test Bench_第13张图片

对定点数的输出进行控制 

vitis hls使用笔记:如何构建高效的Test Bench_第14张图片

对符点数的输出进行控制

vitis hls使用笔记:如何构建高效的Test Bench_第15张图片

小结 

 

1. 使用system()去比较DUT的输出与黄金值

2. 通过控制输出格式,可以得到更多的有用信息

3. 一般,to_string() 比dec、oct 等更有效和更容易 

你可能感兴趣的:(#)