При написании Verilog я использую различные «линтеры», которые выдают ошибки и предупреждения. Это мой симулятор (ModelSim), мой компилятор (Quartus II) вместе с линтером (Verilator). Вместе у меня есть хорошее покрытие для распространенных ошибок, таких как несоответствие размеров автобусов и предполагаемые защелки.
К сожалению, ни один из трех инструментов не обнаруживает регистры, которые не сбрасываются. Чтобы понять, что я имею в виду, подумайте о следующем.
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
Как мне сделать так, чтобы мои инструменты автоматически определяли регистры, которые не сбрасываются?