8.2i XST  – “错误:Xst:894  – ”file.v“行xx:不支持的递归。”-Altera-Intel社区-FPGA CPLD-ChipDebug

8.2i XST – “错误:Xst:894 – ”file.v“行xx:不支持的递归。”

问题描述

如果“max”是函数,则不支持以下编码:

c <= max(max(a,b),max(a,b));

示例不正确

模块测试(a,b,c,clk);

输入[3:0] a;

输入clk;

输入[3:0] b;

输出reg [3:0] c;

参数width_acc = 4;

永远@(posedge clk)

开始

c <= max(max(a,b),max(a,b));

结束

function [width_acc-1:0] max;

输入[width_acc-1:0] a;

输入[width_acc-1:0] b;

reg [width_acc-1:0] sub;

开始

sub = a -b;

if(!sub [width_acc – 1])

max = a;

其他

max = b;

结束

endfunction这样

endmodule

解决/修复方法

要解决此问题,请添加中间信号,如下面的更正代码所示:

正确的例子

模块测试(a,b,c,clk);

输入[3:0] a;

输入clk;

输入[3:0] b;

输出reg [3:0] c;

参数width_acc = 4;

wire [3:0] max_ab; // 添加

wire [3:0] max_cd; // 添加

assign max_ab = max(a,b); // 添加

assign max_cd = max(a,b); // 添加

永远@(posedge clk)

开始

c <= max(max_ab,max_cd); //改变了

结束

function [width_acc-1:0] max;

输入[width_acc-1:0] a;

输入[width_acc-1:0] b;

reg [width_acc-1:0] sub;

开始

sub = a -b;

if(!sub [width_acc – 1])

max = a;

其他

max = b;

结束

endfunction这样

endmodule

计划通过发布ISE 9.2i来解决这个问题。

请登录后发表评论

    没有回复内容