一、Array input约束和优化array input可以是axis接口s_axilite接口m_axi总线接口ap_hs接口ap_memory接口bram接口ap_fifo接口ap_bus接口1.array input约束为axis的时候生成valid data ready接口信号数组将被当作axis握手接口顺序传输数据2.array input约束为s_axilite的时候input array被约束为axilte_ram的实体IP就是这个对外是axilite接口但是实实在在的生成了ram这个ram对外是axilte接口对内是双口ram。3.array input约束为m_axi的时候,被作为总线访问DDR或者interconnect4.input array约束为ap_hs接口为ap_vld ap_data ap_ack;当使用索引访问input array是无效的数组依据被弱化为握手端口。约束为ap_hs表示数组中的原始将按照顺序的方式输入到模块中5.array input被约束为ap_fifo的时候会被综合为write fifo接口案例#include array_FIFO.hvoid array_FIFO (dout_t d_o[4], din_t d_i[4], didx_t idx[4]) {#pragma HLS INTERFACE ap_fifo 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]);}}案例协同仿真idx接口被忽略优化了二、Array ouput约束和优化可以是axis接口s_axilite接口m_axi总线接口ap_hs接口ap_memory接口bram接口ap_fifo接口ap_bus接口注意作为output的时候对比作为input其实接口都是一样的这里忽略。三、Array input_output约束和优化可以是s_axilite接口m_axi总线接口ap_memory接口bram接口ap_bus接口可以看出作为input_output的时候是不能作为axis和ap_hs优化的还有ap_fifo这三个即可都是流模式传输所以不能有双向流传输如果需要设计双向流传输请使用两个数组来进行优化设计。特别要注意的是数组array被约束为axilite接口的时候是被综合为axilite_ram,这个接口是ap_memory的接口不是bram接口axiliteap_memory是可以共生的axilte bram接口是不可以共生的虽然你约束为bram没有报错那是HLS综合工具将你的bram约束指令给忽略了也就是你既约束为bram又约束为axilte结果是HLS综合工具将bram约束忽略就变成默认的ap_meomory接口了所以最终是axilite ap_memory接口的bram在综合中产生。同样axilite ap_stable指令也是不能共生的虽然你综合没有报错同样是HLS综合工具将stable指令进行了忽略也就是综合工具给你了屏障了。