当前位置: 首页 > news >正文

HLS高层次综合设计技巧--绕过任务对Dataflow的阻碍讨论

一、绕过任务架构

上图是绕过任务的架构,其中模块一将产生temp1和temp2样本,模块二只使用了temp1,但是没有使用temp2,模块三将需要使用temp2和temp3。

绕过任何核心代码架构:

void foo(int data_in[N], int scale, int data_out1[N], int data_out2[N]) {
int temp1[N], temp2[N]. temp3[N];
Loop1: for(int i = 0; i < N; i++) {
temp1[i] = data_in[i] * scale;
temp2[i] = data_in[i] >> scale;
}

Loop2: for(int j = 0; j < N; j++) {
temp3[j] = temp1[j] + 123;
}

Loop3: for(int k = 0; k < N; k++) {
data_out[k] = temp2[k] + temp3[k];
}
}

上述设计将会阻碍dataflow指令的优化和设计。

二、绕过任务造成dataflow被阻的原因分析

我们可以分析一下:
LOOP1循环产生temp1和temp2;但是,LOOP2只是消耗掉了temp1,并且产生了temp3;
LOOP3需要同事依赖temp2和temp3;
这里存在一个问题,就说LOOP3需要等待temp3和temp2的同步。
也就是说temp2必须移植保存再RAM或者FIFO中,需要等到LOOP2彻底完毕,才开始
读取temp3,因为LOOP2的不同处理,造成temp2的读取时机不一样,但是FPGA资源是静态
分配,所以综合工具会比较保守,设计会退化到当LOOP2全部完成才会读取temp2,
那么就需要又足够大的数组存储temp2,这个将会消耗很多资源,甚至会造成综合失败。

三、解决办法

修改架构为:

修改代码为:

void foo(int data_in[N], int scale, int data_out1[N], int data_out2[N]) {
int temp1[N], temp2[N]. temp3[N], temp4[N];
Loop1: for(int i = 0; i < N; i++) {
temp1[i] = data_in[i] * scale;
temp2[i] = data_in[i] >> scale;
}

Loop2: for(int j = 0; j < N; j++) {
temp3[j] = temp1[j] + 123;
temp4[j] = temp2[j];
}

Loop3: for(int k = 0; k < N; k++) {
data_out[k] = temp4[k] + temp3[k];
}
}

http://www.jsqmd.com/news/1382597/

相关文章:

  • 如何实现网盘直链解析:9大平台免费获取真实下载地址的完整指南
  • 163MusicLyrics:一站式音乐歌词获取神器,彻底告别手动搜索烦恼
  • Ubuntu 20.04 安装 CUDA 12 与 cuDNN:深度学习环境配置完整指南
  • 2026GEO检测工具实力榜四强:多维能力较量,0到1讲透
  • AI编程提效:如何通过.claude文件夹深度定制Claude Code工作流
  • Spring Boot整合MQTT客户端:物联网消息通信的完整工程实践
  • Tmux复制操作终极指南:从原理到实战配置,打通系统剪贴板
  • AstronClaw:Python邮箱自动化实战,解决邮件收发与协议集成难题
  • 2026年知名热门卷板机/型材弯曲机厂家怎么选?含二辊/三辊/四辊机型推荐 - 硬核推荐
  • Fastjson安全模式实战:5种方法彻底解决反序列化漏洞
  • 从零到一构建外卖平台:核心架构、状态机与高并发实践
  • 递归算法精讲:从核心三要素到实战应用与优化
  • 全面解析巩义市建设局网站:从便民服务到智慧监管的一站式权威指南
  • Smoggy模型本地部署与API集成实战:轻量级AI绘画方案评测
  • 从零搭建云服务器图形桌面:Ubuntu+VNC实现远程云电脑
  • Java Locale深度解析:从国际化原理到实战避坑指南
  • Flutter GoRouter 路由管理:从核心原理到复杂应用实践
  • 2026年8月旭格断桥铝系统窗/上海旭格隔音门窗公司推荐名单_上海德瑞莱门窗有限公司 - 行业平台推荐
  • Java图书管理系统实战:从JDBC到Swing的完整开发指南
  • GEO搜索优化科普:什么是地理位置搜索优化?正规运营完整指南
  • SeaTicket AI Agent:自动化处理GitHub与Discord工单的部署与实战指南
  • 5步掌握QQ空间备份:高效解决数字记忆流失的终极方案
  • 抖音批量下载终极指南:5分钟构建个人内容库的完整方案
  • Python实战:解密微信本地SQLite数据库,实现聊天记录导出与数据分析
  • Ubuntu 20.04通过Deb包安装CUDA 12.x与cuDNN:避坑指南与最佳实践
  • Spring Tool Suite (STS) 安装与优化指南
  • 终极音乐解密指南:免费解锁各大平台加密音频文件
  • OpenCode Prompt 系统:从提示词工程到高效AI编程协作指南
  • 基于Python的乒乓球比赛模拟器:用数据分析拆解竞技体育中的“意难平”
  • 技术攻坚方法论:从问题定义到最小验证的完整解决框架