第一讲 C Test batch的结构
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
- 我们希望我们待测的函数可以被多次的执行,这就需要我们有更多的输入激励给到这个顶层函数,使其能遍历更多的可能性,这样就提高可代码的覆盖率。
- 将函数的输出值与good values进行比较。
- main( )函数的返回值为0,表示结果正确;返回值为非0,结果正确。
例子:
3. 总结
- C Test batch在HLS中扮演着重要角色。它可以验证C函数的正确性并验证RTL设计的正确性。
- C Test batch由激励,参考模型,DUT和scoreboard组成
- 如果结果正确,则C测试台应返回0。否则,应返回1。这是强制性的。
第二讲 测试激励(Stimulus)
1. 测试激励的源
- 我们可以直接定义一个变量,并对其进行初始化。
- 可以把数据存储在数组中。
- 可以在外部文件中读取数据。
但是他们各有优势。
例子:使用数组作为测试激励
例子:使用文件作为测试激励
我们可以用C++中的Template Function的方式。
- 2.总结
- 数组和外部文件都可以被用作激励的源。
- 外部文件可以提供大量数据,涵盖大多数情况。
- 从外部文件读取数据时,使用模板功能更有效。