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

pointer reference作为顶层参数(一)

一、pointer reference input可以约束为axis;void array_FIFO (dout_t d_o[4], din_t *d_i, didx_t idx[4]) {#pragma HLS INTERFACE axis register both portd_iint i;// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {d_o[i] d_i[idx[i]];//d_o[i] d_i[i];//printf(idx[i]%d\n\r,idx[i]);}}仿真情况// RTL Simulation : 0 / 3 [0.00%] 110000// RTL Simulation : 0 / 3 [200000000.00%] 40000118000// RTL Simulation : 0 / 3 [400000020.00%] 80000122000// RTL Simulation : 0 / 3 [600000040.00%] 120000126000// RTL Simulation : 0 / 3 [800000060.00%] 160000130000可以看到仿真挂死了一直在running但是始终没有完成仿真为什么因为你将指针约束为axis接口的时候一定要指定depth的深度如果没有指定depth深度那就是有问题的。将上述代码修改为void array_FIFO (dout_t d_o[4], din_t *d_i, didx_t idx[4]) {#pragma HLS INTERFACE axis register both depth4 portd_iint i;// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {d_o[i] d_i[idx[i]];//d_o[i] d_i[i];//printf(idx[i]%d\n\r,idx[i]);}}可以看到将axis加入了depth指定后仿真ok了。可以约束为s_axilite;void array_FIFO (dout_t d_o[4], din_t *d_i, didx_t idx[4]) {#pragma HLS INTERFACE s_axilite register portd_iint i;// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {d_o[i] d_i[idx[i]];//d_o[i] d_i[i];//printf(idx[i]%d\n\r,idx[i]);}}上述代码综合会报错ERROR: [SYNCHK 200-61] array_FIFO.c:102: unsupported memory access on variable d_i which is (or contains) an array with unknown size at compile time.INFO: [SYNCHK 200-10] 1 error(s), 0 warning(s).ERROR: [HLS 200-70] Synthesizability check failed.command ap_source returned error codewhile executing修改代码void array_FIFO (dout_t d_o[4], din_t *d_i, didx_t idx[4]) {#pragma HLS INTERFACE s_axilite register depth 4 portd_iint i;// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {d_o[i] d_i[idx[i]];//d_o[i] d_i[i];//printf(idx[i]%d\n\r,idx[i]);}}还是一样报错为什么因为#pragma HLS INTERFACE s_axilite register depth 4 portd_i只是说明寄存器的个数是4个综合工具还是不知道din_t *d_i指针到底要分配多大空间所以综合报错再次修改顶层函数代码为void array_FIFO (dout_t d_o[4], din_t *d_i, didx_t idx[4]) {//#pragma HLS INTERFACE s_axilite register portd_i#pragma HLS INTERFACE s_axilite register depth4 portd_iint i;// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {//d_o[i] d_i[idx[i]];d_o[i] *d_i;}}测试激励为#include array_FIFO.hint main () {din_t d_i[4];dout_t d_o[4];didx_t idx[4];int i, retval0;FILE *fp;// Create input datafor (i0;i4;i) {d_i[i] i10;//idx[i] i;idx[i] 3-i;}// Call the function to operate on the dataarray_FIFO(d_o,d_i,idx);// Save the results to a filefpfopen(result.dat,w);fprintf(fp, Din Dout\n);for (i0;i4;i) {fprintf(fp, %d %d\n, d_i[i], d_o[i]);}fclose(fp);// Compare the results file with the golden resultsretval system(diff --brief -w result.dat result.golden.dat);// if (retval ! 0) {// printf(Test failed !!!\n);// retval1;// } else {// printf(Test passed !\n);// }// Return 0 if the test passes//return retval;return 0;}rtl仿真的结果可以约束为m_axi-----------用于访问DDR可以约束为ap_none可以约束为ap_stable可以约束为ap_ack可以约束为ap_vld可以约束为ap_hs可以约束为ap_fifo可以约束为ap_bus二、pointer reference output可以约束为axis;可以约束为s_axilite;可以约束为m_axi可以约束为ap_none可以约束为ap_ack可以约束为ap_vld可以约束为ap_hs可以约束为ap_fifo可以约束为ap_bus三、pointer reference input_output可以约束为axis;可以约束为s_axilite;可以约束为m_axi可以约束为ap_none可以约束为ap_ack可以约束为ap_vld可以约束为ap_hs可以约束为ap_bus
http://www.gsyq.cn/news/1341168.html

相关文章:

  • 【Outbox 事件驱动 + Canal Binlog 增量订阅】:用户关系模块架构实战详解
  • AALC自动化工具完整指南:如何用智能助手彻底优化《Limbus Company》游戏时间
  • LayoutLMv3终极指南:如何在5分钟内快速部署文档AI多模态模型
  • FileBrowser企业级安全配置:构建文件管理系统的密码防护体系
  • 从灰度图到出版级双色海报:7分钟完成Midjourney双色调全流程(附可复用的JSON提示模板)
  • 通过 Taotoken CLI 工具一键配置开发环境与多个 AI 工具的统一接入点
  • 5分钟掌握:跨平台获取官方macOS安装包的终极指南
  • CANN/asc-devkit atanf函数文档
  • CQEngine高级特性揭秘:StandingQuery Index和ResultSet处理机制
  • 如何快速上手TEAMMATES:教育工作者必知的10个实用技巧
  • 收藏必备!小白程序员轻松上手大模型:RAG技术实战指南(含评测体系)
  • Agent 一接 MCP 大结果集就开始失忆:从 Result Summarization 到 Cursor Paging 的工程实战
  • RT-DETR自定义数据集训练实战:构建专属实时目标检测器
  • 深度防御架构:unblob的多层安全防护与权限隔离实践
  • Obsidian Full Calendar:在笔记中实现高效日程管理的完整指南
  • 2026佛山搬家公司全攻略 大型工厂整体搬迁极简流程 - 从来都是英雄出少年
  • 5分钟快速上手!网易云无损音乐下载完整指南:免费获取高品质音乐
  • 如何快速掌握《鸣潮》游戏模组开发:专业逆向工程与AES加密技术完整指南
  • 如何在Python中实现轻量级人脸与虹膜检测:基于TensorFlow Lite的解决方案
  • 西安正规高三补习学校TOP5推荐:基于口碑与教学质量全解析 - 科技焦点
  • MapReduce数据倾斜解决方案
  • 如何安全提取未知文件:unblob的5大安全防护机制实战指南
  • SSZipArchive实战指南:5大高效压缩解压技巧深度解析
  • 别再瞎调--s了!Midjourney皮肤质感渲染的底层逻辑重构:基于V6.1新纹理引擎的材质空间映射原理与6个不可逆的错误操作红线
  • chatgpt-web-midjourney-proxy的移动端PWA应用:离线AI工具开发指南
  • Tunasync多数据库后端支持:Bolt、Badger、Redis、LevelDB对比分析
  • YimMenu:GTA5游戏增强工具从入门到精通完全指南
  • 0603光刻机 第六篇:EUV超精密光学系统(S级 长期死磕突破)第3小节:超高纯氟化钙材料难点
  • 终极指南:如何用AhabAssistantLimbusCompany彻底解放《Limbus Company》游戏时间
  • 0601光刻机 第六篇:EUV超精密光学系统(S级 长期死磕突破)第1小节:光学物镜核心原理