https://medium.com/@iamRadhaKulkarni/mastering-verilog-part-9-diving-into-tasks-and-functions-2a2c433aee02