如何编写确定数组中所有元素是否相等的Verilog函数?
假设我有N个寄存器,我需要一个函数来检查所有寄存器内容是否相等。我怎么写,而不必拼出每一个元素如何编写确定数组中所有元素是否相等的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
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