ug902 ---- Using Vivado HLS(2)

要在Windows平台上打开Vivado®HLS,双击桌面按钮,如下图所示。
ug902 ---- Using Vivado HLS(2)_第1张图片
在Linux平台上调用Vivado HLS(或在Windows上使用Vivado HLS Command Prompt)可以执行以下命令。
在这里插入图片描述
菜单栏有如下几个部分:
ug902 ---- Using Vivado HLS(2)_第2张图片
在项目管理(Management)部分,按钮为(从左至右):

  • Create New Project 打开新项目向导。
  • Project Settings 允许修改当前项目设置。
  • New Solution 打开“新建解决方案”对话框。
  • Solution Settings 允许修改当前解决方案设置。

下一组工具栏按钮控制工具操作(operations)(从左到右):

  • Index C Source 刷新C源代码中的注释。
  • Run C Simulation 打开“C仿真”对话框。
  • C Synthesis 在Vivado HLS中启动C源代码。
  • Run C/RTL Cosimulation 验证RTL输出。
  • Export RTL 将RTL打包成所需的IP输出格式。

最后一组工具栏按钮用于设计分析(Analysis)(从左到右):

  • Open Report 打开C综合报告或下拉菜单打开其他报告。
  • Compare Reports 允许比较来自不同解决方案的报告。

工具栏上的每个按钮在菜单中都有一个等效的命令。此外,VivadoHLS GUI提供了三个透视图。当您选择透视图时,窗口会自动调整到更适合所选任务的布局。

  • Debug透视图打开C调试器。
  • Synthesis透视图是默认透视图,并安排窗口来执行合成。
  • Analysis透视图用来对综合完成后的设计进行详细分析。这个透视图比综合报告提供了更多的细节。

创建一个新的合成项目

注意:Windows操作系统对路径长度有260个字符的限制,这可能会影响Vivado工具。为了避免这个问题,在创建项目、定义IP或托管IP项目以及创建块设计时,使用尽可能短的名称和目录位置。

仿真C代码

Vivado®HLS流中的验证可以分为两个不同的过程。

  • 用于验证C程序正确实现所需功能的预综合验证(Simulation)。
  • 综合后验证,验证RTL是正确的(C/RTL Cosimulation)。

在综合之前,需要用C仿真的test bench对综合的函数进行验证。C测试台包括一个顶层函数main()和要综合的函数。它可能包含其他功能。理想的测试工作台具有以下属性:

  • 实验台进行了自检,验证了拟综合函数的结果是正确的。
  • 如果结果是正确的,测试台将向main()返回一个0值。否则,测试工作台应该返回任何非零值。

综合报告

Vivado HLS执行分析以确定每个循环的迭代次数。如果循环迭代极限是一个变量,Vivado HLS不能确定最大上限。

如果设计的延迟或吞吐量依赖于具有可变索引的循环,Vivado HLS将循环的延迟报告为未知(在报告中用问号?表示)。

可以将TRIPCOUNT指令应用于循环,以手动指定循环迭代的次数,并确保报告包含有用的次数。max选项告诉Vivado HLS循环遍历的最大迭代次数,-min选项指定执行的最小迭代次数。

TRIPCOUNT指令不影响综合结果。

tripcount值仅用于报告,以确保Vivado HLS生成的报告显示有意义的延迟和间隔范围。这也允许在不同的解决方案之间进行有意义的比较。

如果在代码中使用C assert宏,Vivado HLS可以使用它自动确定循环限制,并创建精确到这些限制大小的硬件。

Analysis Perspective

除了综合报告之外,还可以使用Analysis透视图来分析结果。要打开Analysis透视图,单击Analysis按钮,如图所示。
ug902 ---- Using Vivado HLS(2)_第3张图片

Schedule Viewer

日程查看器提供了综合RTL的详细视图。可以识别任何防止并行性、时间违规和数据依赖的循环依赖关系。

  • 可以通过导航到右边的Analysis视图来访问这个查看器。
  • 在module hierarchy window中导航,通过右键单击并选择Open Schedule Viewer查看每个单独块的调度。模块层次结构直接指示任何II或时间冲突。在时间违规的情况下,hierarchy window还将显示在特定模块中观察到的总负松弛。

注意:使用窗口菜单按钮允许您在模块层次结构中筛选显示II或timing violations的块。
在schedule viewer主窗口:

  • 纵轴显示操作和循环的名称。
  • 操作是拓扑顺序的,这意味着第n行上的操作只能由前一行的操作驱动,并且只能驱动后一行操作的输入。
  • 横轴上的纯灰色条显示的是连续的循环。
  • 垂直虚线按比例显示由于时钟不确定而保留的时钟周期部分。该时钟部分由工具留给Vivado后端进程,比如place和route。
  • 对于每个操作,表中都显示一个灰色框。一般情况下,框的大小是水平的根据延迟的操作占总时钟周期的百分比。
  • 多周期操作通过操作框中的直线进行可视化。所有不同的可视化元素都列在日程查看器菜单右上角的日程查看器图例按钮中。
  • 最重要的是,源位置与任何操作相关联。双击该操作会在输入源代码中突出显示该操作的源代码。

你可能感兴趣的:(ug902 ---- Using Vivado HLS(2))