Tôi có mô-đun "người theo dõi" hiện đang sử dụng phân cấp toàn cầu bên trong nó. Tôi cần phải khởi tạo một trường hợp thứ hai của điều này với một hệ thống thứ bậc toàn cầu thứ hai.Chuyển hệ thống phân cấp vào mô-đun Verilog
Hiện tại:
module watcher;
wire sig = `HIER.sig;
wire bar = `HIER.foo.bar;
...
endmodule
watcher w; // instantiation
mong muốn:
module watcher(input base_hier);
wire sig = base_hier.sig;
wire bar = base_hier.foo.bar;
...
endmodule
watcher w1(`HIER1); // instantiation
watcher w2(`HIER2); // second instantiation, except with a different hierarchy
ý tưởng tốt nhất của tôi là sử dụng vpp (Verilog Preprocessor) để brute-lực lượng tạo ra hai mô-đun hầu như giống hệt nhau (một với mỗi hệ thống phân cấp) , nhưng có cách nào thanh lịch hơn không?
Cảm ơn bạn đã phản hồi và tôi chắc chắn đồng ý với hầu hết các điểm của bạn nói chung. Thật không may trong trường hợp này module có ~ 100 dây dò trong nội bộ, do đó chuyển đổi chúng thành đầu vào rõ ràng, trong khi rõ ràng hơn, khá lộn xộn. – pdq
Xin chào pdq. Tôi đoán đó là lý do tại sao tôi đề cập đến các giao diện SV. Ít nhất bạn có thể đóng gói chúng vào một số nhóm hợp lý và truy cập các dây từ bên trong mô-đun của bạn bằng cách sử dụng ký hiệu chấm. – DMC