高层次综合(HLS)常用时间术语的解释

高层次综合(HLS)常用时间术语的解释

参考文献

[1]、小鱼FPGA(微信公众号)
[2]、lauren的FPGA(微信公众号)

项目简述

前面一篇关于HLS的文章,我们已经进行了讲解,我们学习HLS并不是为了学习C、C++代码如何编写。我们是为了学习如何使用HLS进行加速,将高层次代码编译成底层逻辑。那么编译的好坏必然会引入一些指标,接下来我们将对这些指标进行进一步的说明,以便大家可以理解HLS设计。

HLS工作原理

进行HLS约束的主要原理如下:

这里说明HLS工具有两种仿真方式:
1、直接对C、C++函数进行仿真
2、对C、C++函数生成的HDL文件进行Modelsim仿真
通过上面两种仿真方式验证自己代码的正确性。其中Directives用来指导C代码编译成Verilog文件的策略。

对于HLS有以下几个特点:
1、顶层函数的参数综合成RTL代码的I/O引脚
2、不同的C函数综合成不同的RTL模块
3、默认的C函数是不展开的
4、C代码中的数组综合成Block RAM或者Ultra RAM

HLS综合主要分为三步:
1、Scheduling:决定了每一步C代码在多少周期内完成,每个周期完成什么样的操作。
2、Binding:决定了代码使用什么样的FPGA资源来实现。
3、Control logic extraction:从C代码中提取有限状态机来指导RTL设计。
在这里插入图片描述

高层次综合(HLS)指标

这里只有理解了HLS给我们报告中的指标是什么意思,才有可能看懂HLS的报告进而确定下一步的优化方向。
1、Area:实现该C代码多用的资源量,该资源包括LUT、registers、Block RAM、DSP48等等。
2、Latency:C函数完成所有的一次输出所需要的周期数。
3、Initiation interval(II):C函数需要多少时间才可以重新接受新的数据,也就是C函数本次开始到下一次开始所需要的周期数。
4、Loop iteration latendy:C函数中的for循环每迭代一次需要多少时钟周期。
5、Loop initiation interval:本次循环开始到下一次循环开始所需要的周期数。
6、Loop latency:完成整个循环需要多少个时钟周期。
7、Trip Count:for循环的循环迭代的次数。
下面的一个例子详细解释了上面的时间术语,大家一定要搞懂。
在这里插入图片描述

这里为了进一步理解上面的数据继续引入例子:
在这里插入图片描述
体现在时序图中如下:
在这里插入图片描述
对上面的例子加了流水线操作:
在这里插入图片描述
体现在时序图中如下:
在这里插入图片描述

总结

创作不易,认为文章有帮助的同学们可以关注、点赞、转发支持。为行业贡献及其微小的一部分。对文章有什么看法或者需要更近一步交流的同学,可以加入下面的群:
在这里插入图片描述

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
HLS(High-Level Synthesis)高层次综合是一种将高级语言描述的硬件设计转化为可综合的硬件描述的技术。其具体流程如下: 1. 高级语言描述:首先,设计师使用高级编程语言(如C或C++)编写硬件行为描述。这些描述通常包括数据流和控制流,并与软件开发类似。 2. 硬件分区:接下来,设计师将硬件描述分解为不同的并行或顺序执行的任务,这些任务可以在不同的硬件资源(如FPGA)上并行执行。 3. 任务调度和优化:在这一阶段,HLS工具试图找到一个最佳的任务调度方式,以最大化性能,并通过减少资源使用来优化设计。 4. 数据流分析:HLS工具将对数据流进行分析,以确保数据的正确性和合理性。这包括对数据依赖关系进行解析,并检查任何潜在的冲突。 5. 控制流分析:在这一阶段,HLS工具对控制流进行分析,并生成状态转换图以描述不同状态之间的关系。 6. RTL生成:一旦数据流和控制流分析完成,HLS工具将生成RTL(Register-Transfer Level)描述,这是一种硬件级的描述,包括寄存器、管道和数据路径。 7. 验证和调试:最后,设计师需要对生成的RTL描述进行验证和调试,以确保硬件功能与高级语言描述一致。 通过这些步骤,HLS可以将高级语言描述转化为硬件级的RTL描述,加速硬件设计的开发和验证过程。它提供了一种高层次的抽象,使硬件设计师能够专注于算法和功能,而不是底层细节。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值