南京观海微电子---Vitis HLS设计流程介绍——Vitis HLS教程

时间:2024-03-31 17:07:20

1. 传统的FPGA设计流程

传统的RTL设计流程如下图所示:

图片

 

传统的FPGA RTL设计流程主要是采用VHDL、VerilogHDL或System Verilog进行工程的开发,同时也是通过硬件描述语言来编写测试案例(Test Bench)对开发的工程进行仿真验证。

随后根据延时、时序以及资源使用等条件因素对设计进行收敛,对硬件描述语言编写的工程进行综合、布局布线。最后在系统级层面对整个工程进行测试和迭代。

2. 高级语言(C/C++)设计流程

如果采用C语言设计流程,我们将通过抽象度更高的C/C++语言来对工程进行开发和仿真,如下图所示。

图片

 

采用基于C语言的设计流程,开发人员直接使用C/C++语言来描述算法以及Test Bench,执行C的仿真来验证设计的正确性。

紧接着通过高级综合工具,完成C到RTL的转换。该设计转换同样也需要考虑延时、时序以及资源的收敛。

随后和RTL设计流程一致,通过软件工具完成RTL电路的综合和布局布线。最后,系统级层面对整个工程进行测试和迭代。

3. 基于Vitis HLSIP设计流程

如果我们采用Vitis HLS来完成基于C语言的工程开发,设计流程如下图所示。

图片

首先,我们采用C/C++语言来描述算法以及Test Bench,同时我们还要准备Constraints和Directives。Vitis HLS有专门的图形化界面来设置Directives。以上这些组成了整个设计的输入。

值得一提的是,Vitis HLS也集成和提供了C代码库。这些库涵盖了算数运算、视频处理、信号/数据处理、线性代数等。开发人员可以直接调用这些库函数来加速自己C算法的描述。

随后,通过Vitis HLS平台将以上设计输出为VHDL/Verilog代码。开发人员并不直接使用这些代码,而是将这些代码封装成IP核,然后将IP核添加到Vivado的IP Catalog中进行调用。这也和Vivado提出的以IP为核心的设计理念是一致的。

4. Vitis HLS的设计流程详解

4.1 设计流程描述

根据以上讲解,我们可以将Vitis HLS设计流程细化如下:

图片

 

其中基于C的TestBench文件非常重要,它不仅包含了输入信息以及测试案例,它还包含了测试的正确结果用于进行仿真比较。

通过Vitis 的联合仿真(Cosimulation)功能,C/C++语言描述的Test Bench可以自动转换为RTL的TestBench。

图片

 

4.2 结合Vitis HLS的菜单栏讲述设计流程

图片

第一步:完成C的仿真;

第二步:完成C的综合;

第三步:完成C和RTL的协调仿真;

第四步:导出RTL设计;

在完成C综合后,可以打开综合报告,查看设计的性能评估、资源使用的评估以及接口等信息。

4.3 Vitis HLS项目工程的Solutions(解决方案)

在Vitis HLS项目工程中,一个工程可以对应多个Solution。每个Solution都有着自己的控制指令(directives)设置集,而这些directives就是用来优化C综合的。

图片

 

Vitis HLS提供很方便的工具让开发员创建不同的Solutions,开发员通过对比有着不同directives的Solutions综合出来的结果,来迭代和优化自己的设计。