https://vlsiweb.com/modelling-flip-flops-and-latches-in-verilog/