写在前面
本系列的第8篇,ppt引用来自赛灵思hls教程,主要介绍HLS下C_C++测试平台的基本架构。
什么是TB?
在HLS中使用C搭建的tb是这样的功能,和RTL层不同的是,这里的TB的主要包括了这些内容:激励(给出一组数据或者一定状态用于检测)、参考模型(也就是用于检测运行结果的答案,如同参考答案)、DUT(待测模型)、SCOREBOARD(这里实际就是一个检测函数的功能测试评分表)。其中,monitor(过程中的检测),可根据选择进行取舍。
为什么使用C test bench?
好处如下:
- 可以用来检测C函数 的功能正确性和健壮性。
- C tb相比RTL tb 效率更高。
- C tb也可以验证RTL 的设计。
- C test bench 即可验证C函数的功能,又可以和RTL设计一起进行协同仿真。
高效的TB
对于高效的TB应该是
- 综合时,对于顶层函数是针对多个事件执行的,这样可以提高它执行的测试的多样性。
- 函数输出与已知的好值进行比较。
- main()函数的返回值设置(0表示正确的,非零值表示结果不正确)
用case演示基本架构
根据示例,我们可以对刚刚讲述的C测试平台的架构进行对应。
下图表示了,对于不同的部分,输入输出的一些设计要求,还有一些设计中的注意事项。
summary
简要总结: