The 3.1 LRM does not specify the visibility of program variables from a non-program context.

 

Change last paragraph in Section 16.2 as shown:

 

Type and data declarations within the program are local to the program scope and have static lifetime. Program variables can only be assigned using blocking assignments. Non-program variables can only be assigned using nonblocking assignments. Using nonblocking assignments with program variables or blocking assignments with design (non-program) variables shall be an error. References to program variables from outside any program block (e.g, module) shall be an error.