在用Synaplify2020的版本综合的时候会报出错误,@E:Internal Error in m_xilinx Stack trace或者是Signal 011 error in m_xilinx Stack trace。乍一看像是环境问题,其实是你的代码里面用到的ram的问题,当然也可能是rom的问题,总之和内存不够用有绝对的关系。
如图,具体报错会是上面2种情况,第一种你可以看到他报错的文件,就是后面跟的文件,虽然它既不是Warning也不是Error,但是就是这个文件的问题,在我这里他就是一个ram的文件,当你打开他的时候你可能发现他好像写的没问题。但实际上会出现2个问题:
1.你的ram的位宽或者深度太大,这样综合的时候会占用大量的内存,导致你的内存不够用,就会报错,或者不报错就会卡死不动。这个时候你需要换个写法,把太深太宽的ram拆开来写;
2.你的ram没有制定用的什么ram,一版综合用的是Bram,在后面Pr的时候由vivado加进来,如果你不指定的话,他可能用到别的比如lram,uram这个时候就会报错。你需要在ram后面加一个指令/*synthesis syn_ramstyle="block ram,no_uram"*/;如下图:
还有一种情况如上面第2张图,他没有报哪个文件的问题 ,这个时候你需要仔细的看后面的log有关键字会提示:the error occurred while processing module VhdlGenLib.DSP48E2_0.verilog,VhdlGenLib.DSP48E2_0这应该是他综合时错误的编码,你由这个可以去查找到相应的文件,然后解决问题。