如何编写确定数组中所有元素是否相等的Verilog函数?

如何编写确定数组中所有元素是否相等的Verilog函数?,verilog,system-verilog,Verilog,System Verilog,假设我有N个寄存器,我需要一个函数来检查所有寄存器内容是否相等。我怎么写,而不必拼出每一个元素 function equal (input [0:N-1][width-1:0] in); equal = (???) ? 1'b1 : 1'b0; endfunction 一个简单的for循环是一种方式: module tb; parameter N = 8; parameter width = 4; reg [0:N-1][width-1:0] arr; initial begin

假设我有N个寄存器,我需要一个函数来检查所有寄存器内容是否相等。我怎么写,而不必拼出每一个元素

function equal (input [0:N-1][width-1:0] in);
    equal = (???) ? 1'b1 : 1'b0;
endfunction

一个简单的
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
1
0