Identifiers defined inside an unnamed block should not be visible outside that block according to the LRM. Consider a tool bug if you are allowed to access it. Unfortunately, some tool bugs become undocumented features of the language that all tools implement. This may be one of the cases where the unnamed block is stripped away for being superfluous. If you add a variable declaration inside that unnamed block, then the a1 block becomes inaccessible.