vivado2018.2 Synthesis报错但是没有错误信息-解决办法参考

身份:学生,FPGA初学者,属于半只脚碰到门槛的那种

问题描述:最近有一个项目需要FPGA编写PID算法,其中主要是涉及到有符号寄存器组之间的加减乘运算。编写完之后进行Synthesis编译,报错,但是没有错误信息,连一些相关的warning都没有,头大,大到像地球仪那种。然后查看错误日志输出文件,也没有任何信息,只是说了一句“no stack trace available, please use hs_err_.dmp instead.”。

 

解决方案:

1、有的CSDN博主说是因为windowsdefender或者是其他杀毒软件关闭,然后重启电脑就可以解决,我试了不管用,大家可以试试。

2、我摸出来的解决方案:还是代码有问题,我的代码如下所示:

    always @(posedge clk)//打两拍,获得上一次与上上次的误差
    begin
        ek0 <= rt - yt;
        ek1 <= ek0;
        ek2 <= ek1;
    end
	assign uk  = kp * (ek0 - ek1) + ki * ek0 + kd * (ek0 - 2 * ek1 + ek2);

原来使用单片机的时候就有一次问题是因为不小心将内部资源用完了,但是不报错,也不运行。想到这个问题,怀疑是不是寄存器占用太多之类的问题。然后就定位到代码中assign uk这一句,怀疑是这一句资源占用太多。然后修改语句如下:

    always @(posedge clk)//打两拍,获得上一次与上上次的误差
    begin
        ek0 <= rt - yt;
        ek1 <= ek0;
        ek2 <= ek1;
        temp1 <= kp*(ek0 - ek1);
        temp2 <= ki*ek0;
        temp3 <= kd*(ek0 - 2*ek1 +ek2);
    end
    assign uk = temp1 + temp2 + temp3;

思路是不要让其一次性运行整个运算,分开来一部分一部分的进行。修改代码后编译不报错,通过。

因为本人是个小白,解释不了这其中的奥秘,大家有类似的问题,不妨可以尝试排查一下是否有这样的语句。

end

又及:要是有大神看见并知道这个原因是啥,还请在下面帮忙解释一下。

你可能感兴趣的:(vivado2018.2 Synthesis报错但是没有错误信息-解决办法参考)