【Vitis Accel】1 - HLS 简介


HLS 简介

HLS: High-Level Synthesis

简单来说,HLS 是为了免去硬件设计者使用 HDL 编程 FPGA的步骤,用 C 语言完成算法设计、验证、综合过程控制,利用 FPGA 实现所需逻辑。


1. 工作过程

HLS 的工作主要分为以下三段:

1.1 Scheduling 部署

这一部分决定了运算操作在哪一个时钟周期完成。分配取决于:
a. 时钟周期的长度、频率
b. 由目标设备所定义的,运算操作完成所需的时间
c. 用户指定的优化指令

如果时钟周期足够长,或者目标设备足够快,将会有更多的运算操作在一个周期内完成。反之,有些运算操作将在多个周期完成。

1.2 Binding 捆绑

指定完成运算的硬件资源,HLS 需要目标设备的信息来完成此步骤。

1.3 Control logic extraction 控制逻辑提取

提取控制逻辑,建立有限状态机(FSM),以在 RTL 设计中顺序完成运算。

2. 综合过程

HLS 的对 C 程序的综合主要包含以下内容

  • 将顶层函数的变量综合为 RTL 的 I/O 接口
  • 将 C 函数综合成为 RTL 层次的块(Blocks) 。 如果 C 函数中有子函数的话,形成的RTL也由有对应的子模块组成。
  • C 函数中的循环 Loop 默认没有展开(rolled)。如果希望展开循环,并行执行的话,需要使用优化指令(optimization directivities)。Loop 也可以流水化执行。
  • C 语言数组在最终的 FPGA 设计中将被综合成为 RAM 块,或者UltraRAN块。如果数组是顶层函数接口,那么数组将被综合成为 ports 来访问设计外的 RAM 块。

HLS的综合会在默认行为,限制constraints,以及用户指定的优化指令(optimization directivities)的基础上建立一个优化过的实现。优化指令(optimization directivities)可以用来修改或者控制内部逻辑和 I/O ports的默认行为。这使得运用相同 C 代码生成不同硬件实现成为可能。

3. 性能参数

为了判断设计是否符合要求,综合报告会包含以下信息

  • 面积 Area:包括查找表 LUT,寄存器 registers,RAM块,DSP48等FPGA硬件资源
  • 延迟 Latency:计算所有输出值所需的时钟数目
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值