entity module is end entity;
architecture arch of module is
    function func(a:natural) return natural is
    begin
        if    a=32 then return 2;
        elsif a=16 then return 1;
        else            return 0;
    end if;
    end function;
    constant DATAPATH :natural := 32;
    constant LSLICES  :natural := func(DATAPATH);
--  constant LSLICES  :natural := 2;
    signal a :bit;
    signal s :bit_vector(LSLICES-1 downto 0);
begin
    DATA8: if DATAPATH=8 generate
        a <= '0';
    end generate;
--  DATA16: if DATAPATH=16 generate
--      with s select a <=
--          '1' when "0",
--          '0' when others;
--  end generate;
    DATA32: if DATAPATH=32 generate
        with s select a <=
            '1' when "00",
            '0' when "01",
            '1' when "10",
            '0' when others;
    end generate;
end architecture;