In reply to Mitu Raj:
Verilog functions can never consume time and must return their value immediately. SystemVerilog does not change that.
You can have non-blocking assignments inside a function, but the RHS get evaluated immediately, and the LHS target cannot be argument to the function or its return value.
It would help to see how you were expecting to use a function, and perhaps it is better to use a task.