library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; library work; use work.glibc_random_helpers.all; package glibc_random is function pseudorand(a: integer) return std_ulogic_vector; function pseudorand1 return std_ulogic; end package glibc_random; package body glibc_random is function pseudorand(a: integer) return std_ulogic_vector is variable tmp1, tmp2, tmp3, tmp4: std_ulogic_vector(31 downto 0); variable ret: std_ulogic_vector(63 downto 0); begin tmp1 := std_ulogic_vector(to_unsigned(random, 32)); tmp2 := std_ulogic_vector(to_unsigned(random, 32)); if a <= 32 then ret := tmp1 & tmp2; else tmp3 := std_ulogic_vector(to_unsigned(random, 32)); tmp4 := std_ulogic_vector(to_unsigned(random, 32)); ret := tmp1(15 downto 0) & tmp2(15 downto 0) & tmp3(15 downto 0) & tmp4(15 downto 0); end if; return ret((a-1) downto 0); end; function pseudorand1 return std_ulogic is variable tmp: std_ulogic_vector(31 downto 0); begin tmp := std_ulogic_vector(to_unsigned(random, 32)); return tmp(0); end; end package body glibc_random;