一、遇见的问题

        这两天遇见了一个怪事,Vivado跑综合的时候报错,但是没有提示错误点在哪里。

        软件版本:Vivado2020.2

 去查看综合运行日志,提示如下:

 

 从网上查找了相关问题,有说关闭windows杀毒软件的,有说卸载Vivado重装的,有说更换Licence的,还有说将文件搬运到一个新的工程的,都没有解决。

二、调试过程: 

        折腾的两个晚上,主要是查找问题点,总结如下。

        首先我通过一个个禁用工程中的文件的形式,一遍一遍的跑了综合,发现是我的I2C 驱动程序部分导致的(禁用了I2C驱动程序,可以跑过综合)。

        然后我将I2C驱动程序中所有的宏定义开关,Debug原语全部都注释掉,再将I2C驱动程序加入工程,发现此时也可以跑过综合,并且跑完程序后时序冗余还有17ns多,显然不是资源时序问题;

        接下来依次将Debug原语还原,逐次跑综合,发现是这个信号导致的。

        找到相关的代码如下:

        sda是一个inout信号

        推测由于sda_out直接连接到引脚,不能使用ILA抓数据;修改如下:

 

此时再使用ILA抓sda_out数据,已经能够跑过综合了!!!!!

三、问题总结

        总体来说,这个综合报错是由于使用ILA抓直连 inout 引脚信号导致的,修改代码可以解决。

至于综合报错,但是不提示错误原因,并且日志显示Stack:no stack trace available, please use hs_err_<pid>.dmp instead.我觉得是软件bug吧。毕竟我就算用ILA抓了50多条信号,时序冗余还有17ns多。。。

        分享一下,希望别人在遇见这个问题的时候有个思路。

 

更多推荐

Stack:no stack trace available, please use hs_err_<pid>.dmp instead.