Beim Schreiben von Verilog verwende ich verschiedene "Linters", die Fehler und Warnungen ausgeben. Dies sind mein Simulator (ModelSim), mein Compiler (Quartus II) sowie ein Linter (Verilator). Zusammen habe ich eine gute Abdeckung für häufige Fallstricke, wie z. B. Fehlanpassungen der Busgröße und abgeleitete Latches.
Leider erkennt keines der drei Tools Register, die nicht zurückgesetzt werden. Um zu sehen, was ich meine, beachten Sie Folgendes.
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
Wie kann ich meine Tools automatisch Register erkennen lassen, die nicht zurückgesetzt werden?