Quando scrivo Verilog, uso una varietà di "linters" che daranno errori e avvertimenti. Questi sono il mio simulatore (ModelSim), il mio compilatore (Quartus II), insieme a una linter (Verilator). Insieme, ho una buona copertura per insidie comuni, come disallineamenti delle dimensioni del bus e fermi dedotti.
Sfortunatamente, nessuno dei tre strumenti rileva registri che non vengono ripristinati. Per vedere cosa intendo, considera quanto segue.
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
Come posso fare in modo che i miei strumenti rilevino automaticamente i registri che non vengono ripristinati?