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;
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;