假设我有N个寄存器,我想要一个检查所有寄存器内容是否相等的函数。如何在不必拼出每一个元素的情况下编写它?
function equal (input [0:N-1][width-1:0] in);
equal = (???) ? 1'b1 : 1'b0;
endfunction
答案 0 :(得分:1)
一个简单的for
循环是一种方式:
module tb;
parameter N = 8;
parameter width = 4;
reg [0:N-1][width-1:0] arr;
initial begin
for (int i=0; i<width; i++) arr[i] = 5;
$display(equal(arr));
for (int i=0; i<width; i++) arr[i] = 2*i;
$display(equal(arr));
end
function equal (input [0:N-1][width-1:0] in);
for (int i=1; i<width; i++) begin
if (in[i] !== in[0]) return 0;
end
return 1;
endfunction
endmodule
/*
Output:
1
0
*/