tag 标签: hls

相关博文
  • 热度 21
    2012-10-23 10:25
    2108 次阅读|
    1 个评论
    首次开通,自己先恭喜一下 : )         最近一直在做HLS方面的工作。目前主要致力于modular io的设计。这是实现系统级HLS不可缺少的一项,尤其是系统级SOC的设计。因为一个系统不单单包含数据流(datapath)为主的算法处理即我们通常所说的行为(behavior),还包括了behavior模块间的通信(communication)问题。业界对behavior级的综合,也已经有一些比较成熟的工具。但对于communication这一问题还没有彻底成熟的解决方案。我以为这也是HLS到目前为止,还没有为广大业内工程师接受的一个重要原因。         想要从一个抽象的层次来描述一个周期级精确(CA, Cycle Accurate)的通信行为是困难的,除非有详尽的编译导向direcitive,指导HLS综合工具。另外一方面,如何将描述出来的行为进行较好的封装,方便用户使用,也是需要考虑的问题。         catapultC算是业内在HLS领域走在比较前面的公司了。他提供了一个modular io的IO综合方法学,提供了用户精确控制IO的综合方法,并且允许用户以TLM级的抽象语法来封装用户的IO设计,通过最近一段时间的实践,工具的能力相当不错。目前已近设计出一个AHB Master的可综合的SystemC Demo,支持single、burst4/8/16的读写,面积可接受,只是效率方面不是很满意,不能连续(无时钟间隔)的发起transaction。因为,目前我还没找到modular io方法学如何实现流水级设计。         目前在尝试AHB Slave的HLS设计,有新进展或问题会及时贴上来。          大家多多捧捧场啊。 声明:本博客、以及博文中所涉及的任何商用工具都是通过网络资源获取,并作为个人学习之用,无任何商用目的。与本人所在公司所使用的任何商用工具没有任何关系。以上声明请知悉!
  • 热度 21
    2010-12-4 20:15
    2492 次阅读|
    0 个评论
    从bit accurate data types看起目前有两类业界标准的bit accurate data types:SystemC和Mentor的Algorithmic C数据类型。其中SystemC数据类型诞生时间早,但有很多问题,比如运行时间太慢等。因此Mentor开发了自己的 Algorithmic C数据类型。它具有运行速度快,综合效果更好而且能保证C仿真结果和RTL仿真结果一致,因此此书以介绍Algorithm C(AC)数据类型为主。本书作者也是Mentor的工程师,对自己的产 品更要夸一夸,详细的数据类型说明可参见: http://www.mentor.com/products/esl/high_level_synthesis/ac_datatypes 整数数据类型  和verilog2001或VHDL相似的有符号、无符号整数类型。  无符号整数:  ac_int x; //W=Bit width, 0=x=2^W-1 超过表示范围的数据赋给x时,会发生wrap around,类似RTL计数器的行为。  有符号整数  ac_int(W,true x; //W=Bit width, -2^(W-1)=x=2^(W-1)-1 超过表示范围的数据赋给x时,同样会发生wrap around 定点数据类型  与RTL不同,HLS中可直接表示定点数据,这是HLS的优势之一。同样有有符号和无符号定点数据类型。  无符号定点数据  ac_fixed x; //W=Total width, I=Number of Integer bits, 0=x=(1-2^(-W))x2^I 有符号定点数据  ac_fixed x; //W=Total width, I=Number of Integer bits, -0.5x2^I=x=(0.5-2^-W)x2^I 量化和溢出  AC提供了多种处理量化和溢出的办法。可通过在类型模板中以参数形式配置。  ac_fixed x; //Q和O分别为量化和溢出的处理模式    截断和舍入  缺省的量化处理模式为截断,即直接扔掉LSB后面的数字。也可以选择舍入(AC_RND),即四舍五入的方式。如 ac_fixed7,7,true,AC_RND) x=0.5; 此时x被赋予了1   饱和和溢出  缺省的溢出的处理是wrap around。即超过最大最小值时,数值自动跳转到数据范围另一端。这种情况一般是我们不愿看到的。这意味着我们应尽量让变量的动态范围在数值所能表示的范围之内。一旦出现溢出,一种处理办法就是饱和操作。即超过数值表示范围时,数值固定在表示范围的最大或最小值。饱和的配置方式为:ac_fixed7.1.true,AC_TRN,AC_SAT x;    需要注意的是,不要轻易使用这种配置,这会增加硬件逻辑的面积!使用饱和处理会给系统增加非线性性和噪声。应尽量避免使用这种方式。
相关资源
  • 所需E币: 2
    时间: 2020-12-9 14:49
    大小: 66.27MB
    上传者: gwb982_724325667
    FPGA开发中HLS加速实现
  • 所需E币: 0
    时间: 2020-9-21 13:02
    大小: 3.95MB
    上传者: bwj312
    ALINX_ZYNQ开发平台HLS教程V1.0
  • 所需E币: 0
    时间: 2020-9-7 00:38
    大小: 4.89MB
    上传者: xiaosh728
    course_s3_ALINX_ZYNQ开发平台HLS教程V1.03.pdf
  • 所需E币: 5
    时间: 2019-12-24 10:55
    大小: 61KB
    上传者: wsu_w_hotmail.com
    VivadoHLS中指针作为top函数参数的处理。本文采用浅显易懂的描述方式,结合具体的c代码例子,详细描述了常用三种指针的设计类型,以及其作为顶层函数参数时,采用不同的编码风格和HLS约束策略,满足设计者对指针作为RTL接口的需求。VivadoHLS中指针作为top函数参数的处理           HarvestGuo:xilinx    指针作为C语言精华,对于软件设计者比较好理解,但是在xilinxvivadoHLS高级语言综合的设计中,由于其综合后对应的硬件元素难以用软件的概念解释,常常令程序设计者和VHLS工具使用者头痛。本文采用浅显易懂的描述方式,结合具体的c代码例子,详细描述了常用三种指针的设计类型,以及其作为顶层函数参数时,采用不同的编码风格和HLS约束策略,满足设计者对指针作为RTL接口的需求。 1.1.      基本指针类型基本指针类型指的是指针没有运算或者没有多次的存取(读写)。指针作为top函数的参数时,指针综合为wire型或者握手协议类型接口。如下例子1-1: voidpointer_basic(dio_t*d){staticdio_tacc=0;acc+=*d;*d=acc;} 例子1-1基本类型指针作为顶层函数参数 在这个例子中,只是简单的读写指针指向的变量值,并没有对指针做偏移或者指针(地址)运算,其接口综合为线​型的RTL接口。 1.2.      指针运算类型。指针作为top层函数参数,并且函数中有对指针运算时,我们称之为指针运算类型。指针运算常常限制指针可能综合的接口类型​。如下例中,指针做了偏移运算用于累加数据,从第二个值开始读出累加,并将每次累加结果写入上一个地址中。 voidpointer_arith(dio_t*d){staticintacc=0;inti;for(i=0;iacc+=*(d+i+1);*(d+i)=acc;}} 例子1……
  • 所需E币: 4
    时间: 2020-1-6 17:27
    大小: 1.08MB
    上传者: 16245458_qq.com
    通过采用应用MentorGraphicsCatapult®的C++High-LevelSynthesis(HLS)流程,NVIDIA®能够将代码简化5倍,将回归测试所需的CPU数量减少1000倍,并且运行多达1000倍的更多测试,从而为他们的设计获得更高的功能覆盖率。HLS将设计时间缩短了50%,将包括验证在内的总体开发时间缩短了40%,从而弥补了设计复杂度与设计能力之间的差距。本白皮书将讨论NVIDIA在不断发展的视频、相机和显示器标准领域所面临的挑战,以及HLS/C层次流程何以能够助其在此背景下取得成功。……