编写高效 Vivado HLS 工程 testbench 的三个要素 在 C 程序的设计中,任何一个 C 程序的顶层都是 main()函数.而在vivado HLS 的设计中,只要函数的层次在 main()函数以下,都可以被综合。但是每个 vivado HLS 工程只能指定一个 top 层函数作为输出 RTL 模块的顶层,其它和这个函数层次平行,不需要被综合的函数都可以作为 testbench 来使用.这样就带来一个问题,如何编写 vivado HLS 工程的testbench 更高效,或者说能更好的让 HLS 工具自动重用 C testbench 验证产生的 RTL 代码就变得非常重要。 通常,在 Vivado HLS 中,好的 C testbench 设计原则是 testbench 设计和需要实现的算法函数分别保存在不同的文件中,并且充分利用头文件。Testbench常常包含了一些 HLS 综合不支持的操作,比如通过文件的读写取得仿真数据并保存结果,或者打印一些测试结果进行分析。在头文件中,完成对 testbench 中所有的数据类型和函数的定义,以及包含共享的设计文件和函数库. Vivado HLS 中,只能指定一个 top 层函数用于综合,top 层函数可以包含多个子函数。当需要综合多个并行层次的函数时,可以编写一个 wrapper 函数作为top 层函数,将需要综合的多个并行函数封装起来。 C testbench 的目不仅是要验证需要综合的 top 函数功能正确(C 编译器验证环境),同时重用 C testbench 作为综合产生 RTL 代码的仿真激励,HLS 工具自动调用 C testbench 来验证 RTL 功能的一致性(C 编译器和 RTL 仿真器的协同仿真环境).这样,编写一个好的风格 testbench 可以很好的提高设计的验证效率,假如在 HLS 综合前和综合过程中,需要修改综合函数的代码,可以用 testbench 验证,确保需要综合的 C 算法功能正确。 Vivado HLS 中推举高效的 testbench 具有如下三个特征: 1。 Testbench 代码和需要综合的 C 算法代码保存在不同的文件中(例子 1-1)。输入多个不同的数据,对需要综合的 Top 层函数执行多次的处理和验证。还可以进行 top 函数多样性的测试。Testbench 和 C 设计分开不同的文件使得 HLS工程非常清楚,它们分别作为 test bench 文件和 source 文件加入 HLS 的 project 中.(Testbench 和要综合实现的设计文件分别保存不是 HLS 强制的,也可以保存在同一个文件中,假如保存为同一个文件,在 HLS 工程,需要指定这个文件既是testbench 文件也是 s...