Khi viết Verilog, tôi sử dụng nhiều "linters" sẽ đưa ra lỗi và cảnh báo. Đây là trình giả lập của tôi (ModelSim), trình biên dịch của tôi (Quartus II), cùng với một kẻ nói dối (Verilator). Cùng nhau, tôi có phạm vi bảo hiểm tốt cho những cạm bẫy thông thường, chẳng hạn như không khớp kích thước xe buýt và chốt được suy luận.
Thật không may, không có công cụ nào trong số ba công cụ phát hiện các thanh ghi không được thiết lập lại. Để xem những gì tôi có ý nghĩa, hãy xem xét những điều sau đây.
reg a;
reg b;
always @(posedge clk_i or posedge rst_i) begin
if(rst_i) begin
a <= 1'b0; // Reset a
// Ooops, forgot to reset b
end else begin
// Do stuff with a and b
end
end
Làm cách nào để các công cụ của tôi tự động phát hiện các thanh ghi không được thiết lập lại?