• HLS编程环境入门


    1.什么是HLS

    1.1.简介

    将C或者c++语言编译为FPGA能够读懂和运行的RTL级别的语言.

    1.2.作用

    加快FPGA的设计进程,而不用从底层的FPGA语言编起。

    1.3.阶段

    1.scheduling:确定每个时钟周期中执行哪些步骤
    2.Binding:确定哪些硬件资源会被用到
    3.控制逻辑提取:提取控制逻辑,创建一个有限状态机(FSM:Finite state machine)来进行RTL的设计。

    1.4.步骤

    1.编译、执行(仿真)、调试相应的c语言代码
    2.把c算法综合为RTL实现,在这个过程中可以使用优化指令
    3.生成综合分析报告并分析设计
    4.验证RTL的实现
    5.打包RTL进入IP块

    2.HLS与VHDL/Verilog有什么关系

    RTL(寄存器传输级别,基于 VHDL/Verilog 语言)逐步发展,但 VLSI 系统的复杂性呈指数级增长,使 RTL 设计和验证过程成为生产力的瓶颈。HLS(高级综合)通过提高抽象级别, 可以减少最初的设计工作量,设计人员可以集中精力描述系统的行为,而不必花费时间来实现微体系结构的细节,且验证被加速、设计空间探索(DSE)更快、定位新平台非常简单、软件工程师可以访问 HLS 等这些好处加在一起,减少了设计和验证时间,降低了开发成本,并降低了进行硬件项目的门槛,因此缩短了产品上市时间,并且在异构系统上使用硬件加速已成为更具吸引力的选择。但是在结果质量(QoR)上,HLS 工具还落后于 RTL。

    3.关键技术问题

    3.1.字长分析和优化

    FPGA 的一个最主要特点就是可以使用任意字长的数据通路和运算。因此,FPGA 的 HLS 工具不需要拘泥于某种固定长度的表达方式,而可以对设计进行全局或局部的字长优化,从而达到性能提升和面积缩减的双重效果。

    3.2.循环优化

    循环优化一直是 HLS 优化方法的研究重点和热点。一个流行的循环优化方法,多面体模型的应用非常广泛,在 HLS 里主要被用来将循环语句以空间多面体表示,然后根据边界约束和依赖关系,通过几何操作进行语句调度,从而实现循环的变换。

    4.技术局限性

    1.HLS编译器是静态工具,对理解代码的动态特性没有任何帮助。HLS编译器的行为通常难以预测最终的性能和资源利用率。
    2.对于一些简单的逻辑,HLS实现结果较为臃肿。一些简单的逻辑,用HDL实现只需要数十行代码,而HLS的实现结果却相当复杂。
    3.HLS对开发人员的要求比较高。HLS使用的语言显然不是标准C/C++语言,应该是扩展类C/C++语言。

  • 相关阅读:
    java跳过构造方法新建对象
    java实现类似qq的窗口对聊
    NoSql的产生
    C语言跳出循环
    C语言for循环
    C语言while语句
    C语言条件运算符
    C语言switch语句
    C语言逻辑运算符
    C语言关系运算符
  • 原文地址:https://www.cnblogs.com/Zzxin/p/14839047.html
Copyright © 2020-2023  润新知