diff --git a/glibc_random.vhdl b/glibc_random.vhdl index 2284e04..c66d7ec 100644 --- a/glibc_random.vhdl +++ b/glibc_random.vhdl @@ -6,33 +6,33 @@ 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; + 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)); + 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; + 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; + 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; + 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; diff --git a/glibc_random_helpers.vhdl b/glibc_random_helpers.vhdl index ee89645..04e1d16 100644 --- a/glibc_random_helpers.vhdl +++ b/glibc_random_helpers.vhdl @@ -1,19 +1,19 @@ package glibc_random_helpers is - procedure srand (v : integer); - attribute foreign of srand : procedure is "VHPIDIRECT srand"; + procedure srand (v : integer); + attribute foreign of srand : procedure is "VHPIDIRECT srand"; - function random return integer; - attribute foreign of random : function is "VHPIDIRECT random"; + function random return integer; + attribute foreign of random : function is "VHPIDIRECT random"; end glibc_random_helpers; package body glibc_random_helpers is - procedure srand (v : integer) is - begin - assert false severity failure; - end srand; + procedure srand (v : integer) is + begin + assert false severity failure; + end srand; - function random return integer is - begin - assert false severity failure; - end random; + function random return integer is + begin + assert false severity failure; + end random; end glibc_random_helpers;