Tôi có một mô-đun được chuyển qua một số parameter
rồi khởi tạo mô-đun khác tương ứng với tham số đã xác định.Tuyên bố an toàn LINT/tổng hợp là gì để ném lỗi vào thời gian biên dịch?
Tuy nhiên, trong trường hợp một trường hợp không được định nghĩa cho một sự kết hợp nhất định các thông số, tôi xin lỗi được ném vào thời gian biên dịch để làm nổi bật vấn đề, như vậy:
generate
if (PARAM1 == 1 && PARAM2 == 2) begin
// instantiate module logic_A
end else if (PARAM1 == 2 && PARAM2 == 1) begin
// instantiate module logic_B
end else begin
// throw an error at compile time if we haven't
// defined a case for those parameters
end
endgenerate
Tuy nhiên , mã này vẫn cần phải được tổng hợp (trong Verilog, không SystemVerilog) và vượt qua LINTing, mặc dù đã chèn lỗi.
Có ai biết những gì tôi có thể sử dụng trong tình huống này không? Cảm ơn bạn trước.
Trong SystemVerilog, bạn chỉ có thể làm '$ gây tử vong ("Thông điệp") trong mệnh đề khác của' generate-if'. –
Chỉ cần kiểm tra, trong vcs 2015 nó được thực hiện nhưng đòi hỏi một chuyển đổi biên dịch đặc biệt "-assert svaext". vcs tạo thông báo thời gian biên dịch tốt đẹp trong trường hợp này. Nếu không, nó phát hiện lỗi cú pháp. Với 'ban đầu' nó biên dịch mà không có vấn đề và tạo ra thông điệp vi phạm thời gian chạy. – Serge