In program block, we can't give non-blocking assignment to any of the variable. If we try to do it, it shows error like "Program variable: d can only be assigned using blocking assignments".
Similarly, in clocking block, if we try to assign it using blocking assignment then it shows the error like "Clocking block output cb1.d signal must be driven by a non-blocking assignment".
What is the reason behind these rules??