https://vlsiweb.com/gate-level-modelling-in-verilog/