发布时间:2023-12-07 15:30
本节主要介绍的是《跟Xilinx SAE 学HLS系列视频讲座》第9,10,11节。
跟Xilinx SAE 学HLS系列视频讲座笔记(1)
跟Xilinx SAE 学HLS系列视频讲座笔记(2)—— 编写高效的C Test Bench
跟Xilinx SAE 学HLS系列视频讲座笔记(3)—— 接口综合
跟Xilinx SAE 学HLS系列视频讲座笔记(4)—— For循环优化
跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化
跟Xilinx SAE 学HLS系列视频讲座笔记(6)—— 函数优化
1. 什么是 C Test batch
test bench或testing workbench是一个(通常是虚拟的)环境,用于验证设计或模型的正确性或合理性。对于Vivado HLS而言,我们需要用c++来描述一个Test batch用来验证这个模型和设计的合理性。
使用C Test batch目的是为了验证我们C函数的准确性,此外采用 C Test batch可以提高我们的效率,因为在仿真过程中,C比DHL等硬件描述语言更快,即在综合之前使用C开发和验证算法比在RTL开发更有效。
值得强调的是C Test batch在Vivado HLS中起到了两个重要的作用,第一个是验证了C函数的正确性(我们在执行C Simulation时这个作用就体现出来了),第二个是验证RTL设计正确性(这个是在我们执行C / RTL协同仿真时候)
2. 怎样是一个高效的C Test Batch
1. 测试激励的源
1. 什么是Scoreboard?
所以说Scoreboard有两部分输入,一个是待测模块的输出,另一个是golden data。通常,有两种方法可以进行比较。
有时,DUT的结果并非绝对等于golden data。通过定义绝对误差,我们可以使用另一种类似的方法。
if ( abs(a-b) < ABSOLUTE ERROR)
如果使用系统函数进行比较,则必须首先将DUT的输出写入外部文件,同时将golden data存储在外部文件中。
3. 如何将数据写入外部文件
4. 输出格式的控制(setw, left, right, internal
)
输出格式用于控制如何显示结果和一些辅助信息。下面的例子我们是理解Left
, right
和internal
的区别。
5. 整数的输出
6. 定点数的输出
7. 浮点数的输出
8. 总结