Nếu bạn có thể sử dụng SystemVerilog, bạn có thể chọn ngẫu nhiên một số chiều rộng bất kỳ. Hoặc khai báo nó như rand
trong một lớp, hoặc sử dụng std::randomize
. Đây là một ví dụ đơn giản:
module top;
bit[69:0] vec;
initial begin
assert(std::randomize(vec));
$display("vec = %070b", vec);
end
endmodule
Nếu bạn cần phải sử dụng Verilog cũ đơn giản, tôi nghĩ rằng bản hack mà bạn đề xuất là tốt nhất, đơn giản nhất và có thể là sự lựa chọn duy nhất. Tôi không nghĩ có bất cứ điều gì trong ngôn ngữ để giúp đỡ, vì $random
trả về số 32 bit.
Nếu bạn chỉ đơn giản muốn tránh khai báo các biến mới và kết nối chúng một cách rõ ràng, bạn có thể làm một cái gì đó như thế này.
vec[31:0] = $random;
vec[63:32] = $random;
vec[69:64] = $random;