Although Verilog doesn't allow defining 2- or more- dimensional arrays of nets, there is a nice workaround using 'generate' statement. You can generate a set of wires then address them using a particular iteration. Here is an example:
module Example (
input[7:0] in,
output[7:0] out
);
generate
genvar i;
for (i=0; i<=7; i=i+1) begin: stage
wire[7:0] net;
if (i!=0) assign net = stage[i-1].net;
end
endgenerate
assign stage[0].net = in;
assign out = stage[7].net;
endmodule
In this example an 8*8 array of wires is created, they connected sequentially using specifier of previous iteration, after that the first and the last iterations are connected to input and output of module.
In the similar manner you can create 3 and more dimensional array.