Lors de l'écriture de Verilog, j'utilise une variété de "linters" qui donneront des erreurs et des avertissements. Ce sont mon simulateur (ModelSim), mon compilateur (Quartus II), ainsi qu'un linter (Verilator). Ensemble, j'ai une bonne couverture pour les pièges courants, tels que les décalages de taille de bus et les verrous déduits.
Malheureusement, aucun des trois outils ne détecte les registres qui ne sont pas réinitialisés. Pour voir ce que je veux dire, considérez ce qui suit.
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
Comment puis-je faire en sorte que mes outils détectent automatiquement les registres qui ne sont pas réinitialisés?