package MINE is
  procedure ALIGN_ADDRESS ( ADDRESS : inout bit_vector;
                            SIZE : in integer := 4);
end package MINE;

package body MINE is
  procedure ALIGN_ADDRESS ( ADDRESS : inout bit_vector;
                            SIZE : in integer := 4) is
  begin
    if (size = 2) then
      ADDRESS := ADDRESS (ADDRESS'length - 1  downto 1) & '0';
    elsif (size = 4) then
      ADDRESS := ADDRESS (ADDRESS'length - 1 downto 2) & "00";
    elsif (size = 8) then
      ADDRESS := ADDRESS (ADDRESS'length - 1 downto 3) & "000";
    end if;
  end procedure;
end package body;

use work.MINE.all;
entity ALIGN_ADDRESS_TEST is
end entity ALIGN_ADDRESS_TEST;

architecture IT of ALIGN_ADDRESS_TEST is
  signal A : bit_vector(11 downto 0);
  signal B : bit_vector(11 downto 0);
begin
  process
    variable VA : bit_vector(11 downto 0) := "100011101111";
    variable VB : bit_vector(11 downto 0) := "100011101111";
  begin
    ALIGN_ADDRESS (VA, 1);
    A <= VA;
    ALIGN_ADDRESS (VB);
    B <= VB;
    wait;
  end process;
end architecture;
    