news 2026/4/16 10:44:17

vivado hls设计总结(十六)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vivado hls设计总结(十六)

一、对嵌套循环内部循环进行流水线设计
1.如果对嵌套循环的内层循环进行流水线设计,那么vivado hls工具会自动
将嵌套循环进行扁平化设计。
2.将嵌套扁平化设计后,那么会缩短循环的时延,改进总体吞吐量,因为扁平
化后移除了循环过渡的时钟周期,也就是移除了进入和退出循环
检查执行的时钟周期。

二、循环依赖关系
1.循环依赖关系阻止对循环进行最优化
2.循环依赖可出现在任一单一循环的迭代,也可以出现在任意一循环的不同迭代中
3.下面代码示例是不能够进行循环流水化优化的
Minim_Loop: while (a != b) {
if (a > b)
a -= b;
else
b -= a;
}


三、c++ class类中循环unroll展开问题
1.在c++ class类中,如何你将执行函数中for循环的边界变量定义为class类的成员,
那么就无法对for循环进行unroll展开,具体代码如下:
template <typename T0, typename T1, typename T2, typename T3, int N>
class foo_class {
private:
pe_mac<T0, T1, T2> mac;
public:
T0 areg;
T0 breg;
T2 mreg;
T1 preg;
T0 shift[N];
int k; // Class Member
T0 shift_output;
void exec(T1 *pcout, T0 *dataOut, T1 pcin, T3 coeff, T0 data, int col)
{
Function_label0:;
#pragma HLS inline off
SRL:for (k = N-1; k >= 0; --k) {
#pragma HLS unroll // Loop will fail UNROLL
if (k > 0)
shift[k] = shift[k-1];
else
shift[k] = data;
}
*dataOut = shift_output;
shift_output = shift[N-1];
}
*pcout = mac.exec1(shift[4*col], coeff, pcin);
};

2.如果想让上述代码for循环可以unroll,将成员变量k变成函数内部的局部变量即可
template <typename T0, typename T1, typename T2, typename T3, int N>
class foo_class {
private:
pe_mac<T0, T1, T2> mac;
public:
T0 areg;
T0 breg;
T2 mreg;
T1 preg;
T0 shift[N];
T0 shift_output;
void exec(T1 *pcout, T0 *dataOut, T1 pcin, T3 coeff, T0 data, int col)
{
Function_label0:;
int k; // Local variable
#pragma HLS inline off
SRL:for (k = N-1; k >= 0; --k) {
#pragma HLS unroll // Loop will unroll
if (k > 0)
shift[k] = shift[k-1];
else
shift[k] = data;
}
*dataOut = shift_output;
shift_output = shift[N-1];
}
*pcout = mac.exec1(shift[4*col], coeff, pcin);
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 10:20:45

CSANMT模型API响应压缩方案

CSANMT模型API响应压缩方案 &#x1f310; 背景与挑战&#xff1a;AI智能中英翻译服务的性能瓶颈 随着全球化进程加速&#xff0c;高质量的中英智能翻译服务已成为多语言内容处理的核心基础设施。基于ModelScope平台的CSANMT&#xff08;Context-Sensitive Attention Neural Ma…

作者头像 李华
网站建设 2026/4/1 13:16:36

终极Scratch转HTML解决方案:让编程作品独立运行

终极Scratch转HTML解决方案&#xff1a;让编程作品独立运行 【免费下载链接】htmlifier The HTMLifier "converts" Scratch 3.0 projects to an HTML file by putting all the project data and the entire Scratch engine into one enormous file 项目地址: https…

作者头像 李华
网站建设 2026/4/2 3:16:22

AI翻译服务成本优化:轻量级CPU部署省钱攻略

AI翻译服务成本优化&#xff1a;轻量级CPU部署省钱攻略 &#x1f4cc; 背景与痛点&#xff1a;AI翻译为何需要轻量化部署&#xff1f; 随着全球化业务的扩展&#xff0c;中英翻译需求在企业文档处理、跨境电商、内容出海等场景中持续增长。传统翻译方案依赖人工或高成本API&a…

作者头像 李华
网站建设 2026/4/13 11:22:05

终极Scratch转HTML指南:3步让你的编程作品随处运行

终极Scratch转HTML指南&#xff1a;3步让你的编程作品随处运行 【免费下载链接】htmlifier The HTMLifier "converts" Scratch 3.0 projects to an HTML file by putting all the project data and the entire Scratch engine into one enormous file 项目地址: ht…

作者头像 李华
网站建设 2026/4/13 12:41:13

D2Admin终极指南:15天从零构建企业级后台系统

D2Admin终极指南&#xff1a;15天从零构建企业级后台系统 【免费下载链接】d2-admin 项目地址: https://gitcode.com/gh_mirrors/d2a/d2-admin 还在为后台管理系统的复杂性而困扰吗&#xff1f;权限控制混乱、界面布局繁琐、状态管理困难&#xff0c;这些问题是否让你在…

作者头像 李华
网站建设 2026/4/15 23:45:35

Hearthstone-Script终极配置指南:从零开始的自动化对战解决方案

Hearthstone-Script终极配置指南&#xff1a;从零开始的自动化对战解决方案 【免费下载链接】Hearthstone-Script Hearthstone script&#xff08;炉石传说脚本&#xff09;&#xff08;2024.01.25停更至国服回归&#xff09; 项目地址: https://gitcode.com/gh_mirrors/he/H…

作者头像 李华