跪求大神帮忙给出以下verilog程序的测试程序

2024-12-01 13:26:41
推荐回答(1个)
回答1:

你这样写code已经是不可综合了
verilog不是C,你要想一想你这里for loop是没法用电路实现的
可综合要这样写:
module wj59(sum,A);
output[3:0] sum;
input[7:0] A;
assign sum = A[0]+A[1]+A[2]+A[3]+A[4]+A[5]+A[6]+A[7];
endmodule
一下是TB, 你看你的for不能综合,但是测试程序是行为模型不受不可综合限制,所以你的for可以写在tb里,产生期望值
module tb;
reg [7:0] A;
wire [3:0] sum;
wire [3:0] exp_sum;
integer i;
//计算期望值
always@(A)
begin
sum=0;
for(i=0;i<=8;i=i+1)
if(A[i]==1)
exp_sum=exp_sum+1;
else exp_sum=exp_sum;
end
//例化DUT
wj59(sum,A);
//比较结果
always @ (A) begin
#1
if(exp_sum!=sum) $display("Print error message here");
end
//产生激励
initial begin
repeat(10) begin
A=$urandom();
#5;
end
end
endmodule