FPGA Debug:Vivado程序综合卡在了Run Synthesis

问题现象

程序综合一直卡在了Run Synth Design.........等了好久好久,还是没有结果

问题分析:

出现这种情况,一般考虑是资源超了的原因,回顾程序,可能出问题的地方在于,程序中有一个很大的数组,在做大规模存储,如下。

那是FF超了?BRAM超了?还是什么其它的原因呢?根据资源评估的计算来说,RAM资源应该是足够的,鉴于此,我们开始问题定位。

问题定位:

第一步,将PKG_LEN修改为256,综合大于1.5min,LUT资源23%,FF占用7%

第二步,将PKG_LEN修改为512,综合大约4min,LUT资源占用45%,FF占用14%

第三步,将PKG_LEN修改为700,综合大约7min,LUT资源占用62%,FF占用18%

第四步,将PKG_LEN修改为1024,我们发现综合卡在了第2分25秒的时候,无法再进行下去了。

鉴于上述的规律,我考虑是LUT资源超了,而最可能的原因是reg数组实现大规模存储,vivado可能将其默认成触发器堆栈,严重浪费了LUT/FF资源,按照这个思路我们开始优化:

强制指示综合器用Block RAM,写法如下,使用PKG_LEN为512进行编译,发现跟之前一样,说明没有生效,

查看没有生效的原因大约如下:

考虑到程序内部设置有复杂的寻址逻辑,所以可能是不符合块RAM的推断规则的 ,既如此,可以尝试这个数组直接改成一个RAM(例化双口RAM,修改实现逻辑),这样就可以综合为一个Block RAM了。

但是因为我这边资源差的太大了,所以跟领导对接,不在FPGA中做组包的工作了,所以这个问题就到此结束了。

相关推荐
车车不吃香菇14 小时前
linux的文件备份脚本
1024程序员节·备份文件·备份数据
小涵14 小时前
第 01 天:Linux 是什么?内核、发行版及其生态系统
linux·运维·devops·1024程序员节·sre
sulikey14 小时前
Qt 入门简洁笔记:信号与槽
前端·c++·笔记·qt·前端框架·1024程序员节·qt框架
在等晚安么14 小时前
记录自己写项目的第三天,springbot+redis+rabbitma高并发项目
java·spring boot·redis·1024程序员节
SepstoneTang14 小时前
前端新手入门-HBuilder工具安装
html·html5·1024程序员节
WebKoalaBoy14 小时前
前端埋点学习
1024程序员节
羑悻的小杀马特14 小时前
告别内网限制!用StirlingPDF+cpolar打造可远程访问的PDF工具站
pdf·cpolar·1024程序员节·stirlingpdf
鸽鸽程序猿15 小时前
【算法】【动态规划】斐波那契数模型
算法·动态规划·1024程序员节
就是ping不通的蛋黄派15 小时前
CentOS7 部署主从复制MariaDB数据库
网络·1024程序员节