You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vitis HLS添加ARRAY_PARTITION提示报指针选择无法应用数组变换如何解决

报错触发原因

Vitis HLS中,作为函数形参的数组默认会隐式退化为指针类型,ARRAY_PARTITION这类数组变换编译指令无法作用在无明确长度边界的指针上。你代码中定义的ap_uint<14> input[NDATA]作为形参本质还是指针,HLS无法确认它指向的内存块长度,因此执行数组拆分操作时触发214-247错误。

解决方法

  • 方案1:修改形参定义为数组引用,避免数组退化为指针。将输入形参改为ap_uint<14> (&input)[NDATA],显式告诉HLS这是长度固定为NDATA的数组,即可正常应用ARRAY_PARTITION指令。
  • 方案2:添加INTERFACE指令显式指定输入数组的长度边界。在函数内部添加如下编译提示:
    #pragma HLS INTERFACE ap_memory port=input depth=NDATA
    
    明确声明input指针指向的是长度为NDATA的片上存储数组,消除指针歧义后即可正常拆分。
  • 方案3:针对你这个顺序遍历输入的场景,也可以不用做完全数组拆分,把input配置为支持burst传输的接口即可满足流水线II=1的要求,添加如下指令:
    #pragma HLS INTERFACE m_axi port=input depth=NDATA burst=INFER
    
    HLS会自动推断连续访问的burst传输,不需要拆分数组也能实现单周期读取输入的效果。

内容的提问来源于stack exchange,提问作者Skilopsaros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:15:02