在Vivado HLS中使用Tcl

  • 2019 年 10 月 30 日
  • 笔记

Vivado HLS不仅支持图形界面方式,也支持Tcl命令。为方便说明,我们这里举一个例子。假定设计中有四个文件fir.h, fir.c,fir_test.c和out.gold.dat。其中fir.h为头文件;fir.c为源文件,在该文件中定义了待综合的函数fir;fir_test.c为C模型的测试文件,用于对函数fir进行验证;out.gold.dat也是测试文件,只是存放的是参考数据(同样激励下的正确数据)。

根据HLS的设计流程,需要依次执行以下操作:

  • 创建HLS工程
  • 添加待综合函数对应的C文件
  • 添加仿真文件
  • 设置芯片型号
  • 设置时钟周期
  • 执行C仿真
  • 执行C综合
  • 执行C/RTL协同仿真
  • 导出设计

上述每个操作都有相应的Tcl命令与之对应。例如,添加文件需要用到命令add_files,C仿真需要用到csim_design,C综合对应命令csynth_design,C/RTL协同仿真对应cosim_design。因此,针对这个案例,整个设计流程的Tcl脚本如下图所示。

这里最好将头文件、源文件、测试文件放在同一目录下。如果不在同一目录下,需要通过如下方式指明头文件所在目录,可以是绝对路径也可以是相对路径。

如果是使用图形界面方式,则需要在ProjectSettings下指定头文件路径,如下图所示。

将上述所有Tcl命令存放在一个run_hls.tcl的文件里,并将该文件与前文提到的四个文件放在同一目录下。下面就开始执行该文件。

第一步:打开Vivado HLS 2019.1Command Prompt,切换到run_hls.tcl所在目录,执行如下命令:

vivado_hls -f run_hls.tcl

如下图所示。这样,VivadoHLS会按照run_hls.tcl中的命令执行相应操作

第二步:如果需要打开执行后的工程,查看结果,执行如下命令:

vivado_hls -p fir_prj

其中-p后面的值是run_hls.tcl中open_project命令创建的工程名。这样就又回到了图形界面模式。

另外,pragmas也可以用Tcl命令描述,但相对会繁琐一些。所以,可以在图形界面方式下设置各种pragmas,选择将其保存在Tcl文件中,通常在每个Solution下面的constraints里有一个名为directives.tcl的文件,这里即是工具保存pragmas的位置。

对于directives.tcl,可以结合source命令将其添加到整个设计流程中,这就体现了Tcl的好处:只用提交这些文件即可对工程进行复原。