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