课时2:Vitis HLS设计流程介绍——Vitis HLS教程


1. 传统的FPGA设计流程

传统的RTL设计流程如下图所示:
在这里插入图片描述

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

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

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

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

在这里插入图片描述

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

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

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

3. 基于Vitis HLS的IP设计流程

如果我们采用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的Test Bench文件非常重要,它不仅包含了输入信息以及测试案例,它还包含了测试的正确结果用于进行仿真比较。

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

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综合出来的结果,来迭代和优化自己的设计。

5. 总结

  • Vitis HLS支持C、C++、System C;
  • 强烈建议每个C综合设计都要有C Test bench进行仿真验证;
  • 通过建立多个Solutions来得到优化的C综合结果;
  • Vitis HLS给用户提供了较直观的方式来观察C和RTL 联合仿真结果(Cosimulation Results)。
  • Vitis HLS可以显著加速算法的开发过程。
    在这里插入图片描述

参考文献:
[1]《Vitis High-Level Synthesis User Guide》. UG1399. Xilinx
[2] “跟Xilinx SAE学HLS系列视频讲座-高亚军 ”https://www.bilibili.com/video/av41246874

如果大家对我们的文章感兴趣,可以关注我们的公众号:“FpgaHome”,实时关注我们的更新动态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值