在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3533|回复: 21

Mentor Catapult C HLS的C++库源码/文档和AI参考设计

[复制链接]
发表于 2023-9-18 06:37:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 appleleaf 于 2023-9-18 09:45 编辑

Algorighm C 数据类型库,包括定点,浮点,和复杂数据类型,用于描述bit accurate的算法以综合成硬件电路



Algorighm C 数学库,包含synthesizable C++ function,实现reciprocal, log, exponent, square-root, sin/cos/tan等功能,


Algorighm C DSP库,包括synthesizable C++实现的滤波器, FIR filters, IIR filters, Moving Average Filters and Polyphase Interpolation/Decimation, 以及傅里叶变换Decimation-in-Time and Decimation-in-Frequency等,


ac_datatypes_ref.pdf

753.4 KB, 下载次数: 70 , 下载积分: 资产 -2 信元, 下载支出 2 信元

Algorighm C 数据类型库文档

ac_types-master.zip

907.41 KB, 下载次数: 73 , 下载积分: 资产 -2 信元, 下载支出 2 信元

Algorighm C 数据类型库源码

ac_math_ref.pdf

730.63 KB, 下载次数: 68 , 下载积分: 资产 -2 信元, 下载支出 2 信元

Algorighm C 数学库

ac_math-master.zip

1.18 MB, 下载次数: 71 , 下载积分: 资产 -2 信元, 下载支出 2 信元

Algorighm C 数学库源码

ac_dsp_ref.pdf

4.75 MB, 下载次数: 64 , 下载积分: 资产 -3 信元, 下载支出 3 信元

Algorighm C DSP库

ac_dsp-master.zip

4.62 MB, 下载次数: 70 , 下载积分: 资产 -3 信元, 下载支出 3 信元

Algorighm C DSP库源码

 楼主| 发表于 2023-9-18 06:40:49 | 显示全部楼层
本帖最后由 appleleaf 于 2023-9-18 06:45 编辑


Catapult C 较为复杂的设计实例:

EdgeDetect_Algorithm.h - Original algorithm
EdgeDetect_BitAccurate.h - Adding bit-accurate data types
EdgeDetect_Synthesizable.h - Prepared for HLS
EdgeDetect_MemoryArch.h - Refinining memory architecture for 1PPC
EdgeDetect_Hierarchy.h - Modularized into hierarchy for performance
EdgeDetect_SinglePort.h - Recode to use single-port memories
EdgeDetect_SinglePort_Programable.h - Recode to make image size programable
EdgeDetect_CircularBuf.h - Recode to have line buffers operate in a circular fasion for power reduction

hls_tutorials-master.zip

1.09 MB, 下载次数: 84 , 下载积分: 资产 -2 信元, 下载支出 2 信元

设计实例

 楼主| 发表于 2023-9-18 06:45:47 | 显示全部楼层
本帖最后由 appleleaf 于 2023-9-18 10:01 编辑

添加一个机器学习参考设计,
Algorithmic C Machine Learning Reference Designs
实例来自 HLS SEMINAR 2021 和 DVCON_2021

这个需要用到英伟达的 SystemC  库 MatchLib
MatchLib Connections is a SystemC library implementing latency-insensitive channels for use by High-Level synthesis tools.

RTL仿真比C++仿真慢了30倍,参见8楼补充图片,
AI.png

Early_Design_and_Validation_of_an_AI_Accelerator.pdf

2.02 MB, 下载次数: 62 , 下载积分: 资产 -2 信元, 下载支出 2 信元

HLS SEMINAR 2021文档

ac_ml-master.part1.rar

14 MB, 下载次数: 63 , 下载积分: 资产 -5 信元, 下载支出 5 信元

ac_ml-master.part2.rar

14 MB, 下载次数: 60 , 下载积分: 资产 -5 信元, 下载支出 5 信元

ac_ml-master.part3.rar

10.45 MB, 下载次数: 64 , 下载积分: 资产 -4 信元, 下载支出 4 信元

matchlib_connections-master.zip

1.57 MB, 下载次数: 60 , 下载积分: 资产 -2 信元, 下载支出 2 信元

英伟达的SystemC库源码

connections-guide.pdf

767.24 KB, 下载次数: 55 , 下载积分: 资产 -2 信元, 下载支出 2 信元

英伟达的 SystemC库文档

发表于 2023-9-18 07:41:41 | 显示全部楼层
thanks
发表于 2023-9-18 08:16:32 | 显示全部楼层
thanks . study
发表于 2023-9-18 09:02:03 | 显示全部楼层
感谢分享
 楼主| 发表于 2023-9-18 09:26:25 | 显示全部楼层

一个数学库里开平方的例子:

//=========================================================================
// Function: ac_sqrt (for ac_int)
//
// Description:
//    Calculation of square root of real inputs, passed as ac_int
//    variables.
//    + input: unsigned ac_int argument
//    + output: ac_int square root
//
//-------------------------------------------------------------------------

  template< int XW, int OW, bool OS >
  void ac_sqrt(
    ac_int<XW,false> x,
    ac_int<OW,OS> &sqrt
  )
  {
    const int RW = (XW+1)/2;
    // masks used only to hint synthesis on precision
    ac_int<RW+2, false> mask_d = 0;

    ac_int<RW+2, false> d = 0;
    ac_int<RW, false> r = 0;
    ac_int<2*RW, false> z = x;

    // needs to pick 2 bits of z for each iteration starting from
    // the 2 MSB bits. Inside loop, z will be shifted left by 2 each
    // iteration. The bits of interest are always on the same
    // position (z_shift+1 downto z_shift)
    unsigned int z_shift = (RW-1)*2;

    for (int i = RW-1; i >= 0; i--) {
      r <<= 1;

      mask_d = (mask_d << 2) | 0x3;
      d = (mask_d & (d << 2)) | ((z >> z_shift) & 0x3 );

      ac_int<RW+2, false> t = (ac_int<RW+2, false>)(d - (( ((ac_int<RW+1, false>)r) << 1) | 0x1));
      if ( !t[RW+1] ) { // since t is unsigned, look at MSB
        r |= 0x1;
        d = mask_d & t;
      }
      z <<= 2;
    }
    sqrt = r;
  }
 楼主| 发表于 2023-9-18 09:50:21 | 显示全部楼层
本帖最后由 appleleaf 于 2023-9-18 09:59 编辑

机器学习参考设计里面的一个例子:

RTL仿真比C++仿真慢了30倍


sim.png

syn.png

发表于 2023-9-18 11:31:16 | 显示全部楼层
Thank you a lot.
发表于 2023-9-18 11:57:32 | 显示全部楼层
十分感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 07:31 , Processed in 0.023540 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表