| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -29,59 +29,47 @@ end package helpers;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					package body helpers is
 | 
					 | 
					 | 
					 | 
					package body helpers is
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						function fls_32 (val: std_ulogic_vector(31 downto 0)) return integer is
 | 
					 | 
					 | 
					 | 
						function fls_32 (val: std_ulogic_vector(31 downto 0)) return integer is
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							variable ret: integer;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						begin
 | 
					 | 
					 | 
					 | 
						begin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ret := 32;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							for i in val'range loop
 | 
					 | 
					 | 
					 | 
							for i in val'range loop
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if val(i) = '1' then
 | 
					 | 
					 | 
					 | 
								if val(i) = '1' then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ret := 31 - i;
 | 
					 | 
					 | 
					 | 
									return 31 - i;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									exit;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								end if;
 | 
					 | 
					 | 
					 | 
								end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							end loop;
 | 
					 | 
					 | 
					 | 
							end loop;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return ret;
 | 
					 | 
					 | 
					 | 
							return 32;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						end;
 | 
					 | 
					 | 
					 | 
						end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						function ffs_32 (val: std_ulogic_vector(31 downto 0)) return integer is
 | 
					 | 
					 | 
					 | 
						function ffs_32 (val: std_ulogic_vector(31 downto 0)) return integer is
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							variable ret: integer;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						begin
 | 
					 | 
					 | 
					 | 
						begin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ret := 32;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							for i in val'reverse_range loop
 | 
					 | 
					 | 
					 | 
							for i in val'reverse_range loop
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if val(i) = '1' then
 | 
					 | 
					 | 
					 | 
								if val(i) = '1' then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ret := i;
 | 
					 | 
					 | 
					 | 
									return i;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									exit;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								end if;
 | 
					 | 
					 | 
					 | 
								end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							end loop;
 | 
					 | 
					 | 
					 | 
							end loop;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return ret;
 | 
					 | 
					 | 
					 | 
							return 32;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						end;
 | 
					 | 
					 | 
					 | 
						end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						function fls_64 (val: std_ulogic_vector(63 downto 0)) return integer is
 | 
					 | 
					 | 
					 | 
						function fls_64 (val: std_ulogic_vector(63 downto 0)) return integer is
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							variable ret: integer;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						begin
 | 
					 | 
					 | 
					 | 
						begin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ret := 64;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							for i in val'range loop
 | 
					 | 
					 | 
					 | 
							for i in val'range loop
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if val(i) = '1' then
 | 
					 | 
					 | 
					 | 
								if val(i) = '1' then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ret := 63 - i;
 | 
					 | 
					 | 
					 | 
									return 63 - i;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									exit;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								end if;
 | 
					 | 
					 | 
					 | 
								end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							end loop;
 | 
					 | 
					 | 
					 | 
							end loop;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return ret;
 | 
					 | 
					 | 
					 | 
							return 64;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						end;
 | 
					 | 
					 | 
					 | 
						end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						function ffs_64 (val: std_ulogic_vector(63 downto 0)) return integer is
 | 
					 | 
					 | 
					 | 
						function ffs_64 (val: std_ulogic_vector(63 downto 0)) return integer is
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							variable ret: integer;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						begin
 | 
					 | 
					 | 
					 | 
						begin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ret := 64;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							for i in val'reverse_range loop
 | 
					 | 
					 | 
					 | 
							for i in val'reverse_range loop
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if val(i) = '1' then
 | 
					 | 
					 | 
					 | 
								if val(i) = '1' then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ret := i;
 | 
					 | 
					 | 
					 | 
									return i;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									exit;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								end if;
 | 
					 | 
					 | 
					 | 
								end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							end loop;
 | 
					 | 
					 | 
					 | 
							end loop;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return ret;
 | 
					 | 
					 | 
					 | 
							return 64;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						end;
 | 
					 | 
					 | 
					 | 
						end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						function popcnt8(val: std_ulogic_vector(7 downto 0)) return std_ulogic_vector is
 | 
					 | 
					 | 
					 | 
						function popcnt8(val: std_ulogic_vector(7 downto 0)) return std_ulogic_vector is
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |