https://vlsiweb.com/modeling-counters-in-verilog/