我的第一篇博客——Vivado HLS ug902文档 ------- Vivado HLS简介(1)
Vivado HLS能够将C、C++、SystemC语言描述的算法转换成RTL级电路,FPGA并行架构在性能、成本和功耗方面要优于传统的架构。
HLS桥接起软件和硬件领域,具有以下优点:
使用Vivado HLS能够:
高级综合包括以下几个阶段:
高层次综合(HLS)综合C的代码如下:
要确定设计是否满足需求,可以在高级综合生成的综合报告中查看性能指标。在分析报告之后,可以使用优化指令来改进实现。综合报告包含关于以下性能指标的信息:
在高层次综合中,数组默认被综合成RAM,可以通过优化指令综合成FIFOs、存储器和寄存器等。当在顶级函数中使用数组作为参数时,高级综合假设块RAM位于顶级函数之外,并自动创建端口来访问设计之外的块RAM,例如数据端口、地址端口以及任何必需的芯片使能或写信号。
Xilinx Vivado HLS工具将C函数合成到一个IP块中,可以将该IP块集成到硬件系统中。它与Xilinx的其他设计工具紧密集成,并提供了全面的语言支持和特性,用于为您的C算法创建最佳实现。
以下是Vivado HLS设计流程:
下面是Vivado HLS的输入:
下面是Vivado HLS的输出:
在任何C程序中,顶层函数都称为主函数(main())。在Vivado®HLS设计流中,可以将main()下面的任何子函数指定为用于综合的顶层函数。不能综合函数main()。以下是附加规则:
在使用Vivado HLS设计流时,要综合一个功能不正确的C函数,然后分析实现细节,以确定该函数为何不能按预期执行,这是非常耗时的。为了提高生产力,在合成之前,使用一个测试平台(test bench)来验证C函数在功能上是否正确。
C测试台包含main()函数和任何不在用于综合的顶级函数的层次结构中的子函数。这些函数通过向用于综合的函数激励并提供其预输出来验证用于合成的顶级函数在功能上是否正确。
Vivado HLS使用测试平台编译和执行C仿真。在编译过程中,您可以选择Launch Debugger选项来打开一个完整的C-debug环境,能够对C仿真进行分析。
因为Vivado HLS使用测试台在合成之前验证C函数,并自动验证RTL输出,所以强烈建议使用测试台(test bench为非必要条件)。
Vivado HLS 下面标准的C编译/仿真:
C、C++和SystemC的语言结构
Vivado HLS支持许多C、c++和SystemC语言构造以及每种语言的所有本地数据类型,包括float和double类型。但是,有些结构不支持综合,包括:
C库包含为在FPGA中实现而优化的函数和构造。使用这些库有助于确保高质量的结果(QoR),也就是说,最终的输出是优化资源使用的高性能设计。因为库是用C语言提供的,在c++或SystemC中,可以将库合并到C函数中,并在综合之前对它们进行仿真,以验证函数的正确性。
Vivado®HLS提供了以下C库来扩展标准C语言:
仅在函数边界上需要任意精度类型,因为Vivado HLS会优化内部逻辑,并删除不向输出端口扩展的数据位和逻辑。
Vivado®HLS是基于项目的。每个项目包含一组C代码,并且可以包含多个解决方案。每个解决方案可以有不同的约束和优化指令。可以在Vivado HLS GUI中分析和比较每个解决方案的结果。
以下是Vivado HLS设计过程中的综合、优化和分析步骤:
在分析结果之后,可以为具有不同约束和优化指令的项目创建一个新的解决方案,并综合新的解决方案。重复此过程,直到设计具有所需的性能特征。使用多个解决方案可以在继续开发的同时仍然保留以前的结果。
使用Vivado®HLS,可以在设计中应用不同的优化指令,包括:
Vivado HLS自动确定任何子函数使用的I/O协议。不能控制这些端口,除非指定端口已注册。
可以使用Vivado HLS GUI将优化指令直接放到源代码中。或者,可以使用Tcl命令来应用优化指令。
当综合完成时,Vivado HLS自动创建合成报告,以帮助了解实现的性能。在Vivado HLS GUI中,Analysis透视图包含Performance选项卡,它允许您交互地详细分析结果。
如果你添加了一个C test bench项目,可以使用它来验证RTL功能相同的C函数。 C试验台验证综合和顶层的输出函数,如果RTL功能是相同的返回0到顶层函数main()。Vivado HLS在C模拟和C/RTL联合模拟中都使用这个返回值来确定结果是否正确。如果C测试台返回一个非零值,Vivado HLS报告模拟失败。
注意:如果测试工作台没有将值0返回给函数main(),即使输出数据正确有效,Vivado HLS也会报告仿真失败。
提示:Vivado HLS自动创建执行C/RTL联合仿真设施,并使用以下受支持的RTL模拟器之一自动执行仿真:
如果选择Verilog或VHDL HDL进行仿真,Vivado HLS将使用您指定的HDL模拟器。Xilinx设计工具包括Vivado模拟器。第三方HDL模拟器需要来自第三方供应商的许可证。VCS和NCSim模拟器仅在Linux操作系统上受支持。
使用Vivado HLS,可以导出RTL,并将最终的RTL输出文件打包成以下任何一种Xilinx IP格式的IP:
注意:综合检查点格式调用逻辑综合并将RTL实现编译为gate级实现,后者包含在IP包中。
对于除综合检查点之外的所有IP格式,可以选择在Vivado HLS中执行逻辑综合,以评估RTL综合或实现的结果。这个可选步骤允许您在交付IP包之前确认Vivado HLS提供的时间和区域估计。这些门级结果不包括在打包的IP中。
注意:Vivado HLS基于每个FPGA的内置库估计时间和区域资源。当你使用逻辑综合将RTL编译成门级实现、在FPGA中执行门的物理位置以及门之间互连的路由时,逻辑综合可能会进行额外的优化,从而更改Vivado HLS估计。