PACKAGE p_4val IS
  TYPE t_4val IS ('x', '0', '1', 'z');
  TYPE t_4valX1 IS ARRAY(t_4val'LOW TO t_4val'HIGH) OF t_4val;

  TYPE t_4valX2 IS ARRAY(t_4val'LOW TO t_4val'HIGH) OF t_4valX1;

  TYPE t_4valmd IS ARRAY(t_4val'LOW TO t_4val'HIGH,
                         t_4val'LOW TO t_4val'HIGH) OF t_4val;

  CONSTANT andsd : t_4valX2 := 
      (('x',    -- xx
        '0',    -- x0
        'x',    -- x1      (Notice this is an 
        'x'),   -- xz      array of arrays.)
       ('0',    -- 0x      
        '0',    -- 00      
        '0',    -- 01      
        '0'),   -- 0z
       ('x',    -- 1x
        '0',    -- 10
        '1',    -- 11
        'x'),   -- 1z
       ('x',    -- zx
        '0',    -- z0
        'x',    -- z1
        'x')); -- zz

  CONSTANT andmd : t_4valmd := 
      (('x',    -- xx
        '0',    -- x0
        'x',    -- x1     
        'x'),   -- xz     (Notice this example 
       ('0',    -- 0x     is a multidimensional
        '0',    -- 00     array.)
        '0',    -- 01     
        '0'),   -- 0z
       ('x',    -- 1x
        '0',    -- 10
        '1',    -- 11
        'x'),   -- 1z
       ('x',    -- zx
        '0',    -- z0
        'x',    -- z1
        'x'));  -- zz 
END p_4val;
