Program block

What is the meaning of following

“module (design) can not call task/function inside a program block. But a program can call task/function inside module (design)”

Please explain it!!
Thanks

This was an attempt to try to keep the DUT from accessing anything in the testbench. The identifiers of anything you declare in a program are not visible to be referenced in a module. This includes task, function, variables, wires, typedefs. However since most testbenches are declared in classes that are defined inside packages, and there is nothing preventing you accessing something passed by reference to a module from a program, this rule does not prevent much. Also, there a many times during the development of a design that you need to have incomplete models access portions of the testbench.

For these and many other reasons, I do not recommend the use of program blocks. See http://go.mentor.com/programblocks