数组访问的瓶颈
一、数组在顶层接口的使用1.数组在顶层接口上使用默认是ap_memory接口一般这个ap_memory接口默认类似为一个单口RAM这个单口RAM访问就会收到限制因为一次只能访问一个数据样本2.突破默认的单口访问ap_memory接口使用#pragram resource core RAM-2P_BLOCK的方式进行优化这样就可以突破上述的限制这样一个clock就可以访问两个样本数据3.使用array_partition将端口分为多个RAM端口提高访问瓶颈二、axilite修饰顶层接口的数组1.当axilite修饰数组的时候在顶层接口的数组不再是被综合为接口而是被综合为一个axi_bram了这个axi_bram是一个单口的注意axi_bram只能是一个单口RAM如果你想多个那么你就得分成多个数组了2.如果想这个数组不影响后续得数据流设计你需要定义一个局部的静态数组作为桥梁来接收顶层数组这样就能够对设计起到解绑的作用。针对这个静态数组如果不大的话你可以使用array_partition全部打散然后在loop循环中使用unroll来展开缓存如果数组比较大这种方式就不太合适因为index索引的不确定会综合出一个非常大的多路选择器这个会影响时序收敛所以这个时候需要使用array_partition进行分组分成多个小的RAM这样port就变得很大能够让你的设计更加合理。三、顶层参数的数组作为dataflow的子函数访问1.这个手册推荐使用stable来优化注意使用stable的前提是你不能在顶层使用axilite同时优化这个数组因为是不兼容的如果你使用了axilite你不能使用stablestale的原因是这个数组被综合为dataflow的FIFO你将其综合为RAM那么就不会存在阻塞了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2573824.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!