Blocks partition the concurrent statements in an architecture such that conditional activities unique to each block can occur
A guarded signal assignment statement generates a value only if the block guard expression is true. If false, the assignment is disconnected
Example
ARCHITECTURE guarded_assignments OF n_1_mux IS
BEGIN
bi: FOR j IN i'range GENERATE
bj: BLOCK (s(j) = '1' or s(j) = 'z')
BEGIN
x<= guarded i(j);
END BLOCK;
END GENERATE;
END guarded_assignments;