|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
下面是一个用半加器&全加器级联成一个加法器的小程序
在synopsys dc 却elaborate不了
显示error:indexing into a non-array variable is not supported to 'L[]'
请问是怎么回事?怎么解决?
另外我想问下实现一些算法需要二维数组的,verilog也支持,但是好象综合不了,请问有什么方法修改这样的代码,可使它综合并且对原来程序修改较少?
谢谢!
程序如下:
module adder_rc (a,b,y);
parameter WIDTH = 4;
input [WIDTH-1:0] a;
input [WIDTH-1:0] b;
output y;
reg [WIDTH-1:0] y;
reg [WIDTH-1:0] carry;
integer i;
always @(a or b)
begin
y=0;
carry=0;
i=0;
y[0]=half_adder_sum(a[0],b[0]);
carry[0]=half_adder_cout(a[0],b[0]);
for (i=1; i<=WIDTH-1; i=i+1)
begin
y=full_adder_sum(a,b,carry[i-1]);
carry=full_adder_cout(a,b,carry[i-1]);
end
end
function half_adder_sum;
input a;
input b;
begin
half_adder_sum=a^b;
end
endfunction
function half_adder_cout;
input a;
input b;
begin
half_adder_cout=a&b;
end
endfunction
function full_adder_sum;
input a;
input b;
input cin;
begin
full_adder_sum=a^b^cin;
end
endfunction
function full_adder_cout;
input a;
input b;
input cin;
begin
full_adder_cout=(a&b)|(a&cin)|(b&cin);
end
endfunction
endmodule |
|