EmbDev.net

Forum: FPGA, VHDL & Verilog no interface for function call, slice or indexed name in association


von amir (Guest)


Rate this post
useful
not useful
hi guys

what does this error means?
1
no interface for function call, slice or indexed name in association

my code is this
1
library IEEE;
2
use IEEE.std_logic_1164.all;
3
4
entity main is port (
5
  select_reg : in std_logic_vector(3 downto 0);
6
  read, write, reset : in std_logic;
7
  idata : in std_logic_vector(7 downto 0);
8
  odata : out std_logic_vector(7 downto 0)
9
  );
10
end entity;
11
12
architecture rtl  of main is
13
  component reg is port (
14
  d : in std_logic_vector(7 downto 0);
15
  clk : in std_logic;
16
  q : out std_logic_vector(7 downto 0));
17
  end component;
18
19
  signal d, q : std_logic_vector(7 downto 0) := "00000000";
20
  signal clk : std_logic := '1';
21
  
22
  type regs is array (0 to 15) of std_logic_vector(7 downto 0);
23
  signal in_regs : regs;
24
  signal out_regs : regs;
25
26
27
begin
28
29
  reg1: reg port map (in_regs(0)=>d, clk=>clk, out_regs(0)=>q);
30
  reg2: reg port map (in_regs(1)=>d, clk=>clk, out_regs(1)=>q);
31
  reg3: reg port map (in_regs(2)=>d, clk=>clk, out_regs(2)=>q);
32
  reg4: reg port map (in_regs(3)=>d, clk=>clk, out_regs(3)=>q);
33
  reg5: reg port map (in_regs(4)=>d, clk=>clk, out_regs(4)=>q);
34
  reg6: reg port map (in_regs(5)=>d, clk=>clk, out_regs(5)=>q);
35
  reg7: reg port map (in_regs(6)=>d, clk=>clk, out_regs(6)=>q);
36
  reg8: reg port map (in_regs(7)=>d, clk=>clk, out_regs(7)=>q);
37
  reg9: reg port map (in_regs(8)=>d, clk=>clk, out_regs(8)=>q);
38
  reg10: reg port map (in_regs(9)=>d, clk=>clk, out_regs(9)=>q);
39
  reg11: reg port map (in_regs(10)=>d, clk=>clk, out_regs(10)=>q);
40
  reg12: reg port map (in_regs(11)=>d, clk=>clk, out_regs(11)=>q);
41
  reg13: reg port map (in_regs(12)=>d, clk=>clk, out_regs(12)=>q);
42
  reg14: reg port map (in_regs(13)=>d, clk=>clk, out_regs(13)=>q);
43
  reg15: reg port map (in_regs(14)=>d, clk=>clk, out_regs(14)=>q);
44
  reg16: reg port map (in_regs(15)=>d, clk=>clk, out_regs(15)=>q);
45
  process
46
    variable select_number : integer;
47
  begin
48
    select_number := 0;
49
    if select_reg(3) = '1' then
50
      select_number := 1;
51
    end if;
52
    if select_reg(2) = '1' then
53
      select_number := select_number + 2;
54
    end if;
55
    if select_reg(1) = '1' then 
56
      select_number := select_number + 4;
57
    end if;
58
    if select_reg(0) = '1' then
59
      select_number := select_number + 8;
60
    end if;
61
    
62
    if read = '1' then
63
      odata <= out_regs(select_number);
64
    elsif write = '1' then
65
         odata <= "00000000";  
66
      in_regs(select_number) <= idata;
67
    else
68
      odata <= "00000000";
69
    end if;
70
71
  end process;
72
end architecture;


and here is the log that ghdl has throwed!!!
1
main.vhd:29:40: no interface for function call, slice or indexed name in association
2
main.vhd:30:40: no interface for function call, slice or indexed name in association
3
main.vhd:31:40: no interface for function call, slice or indexed name in association
4
main.vhd:32:40: no interface for function call, slice or indexed name in association
5
main.vhd:33:40: no interface for function call, slice or indexed name in association
6
main.vhd:34:40: no interface for function call, slice or indexed name in association
7
main.vhd:35:40: no interface for function call, slice or indexed name in association
8
main.vhd:36:40: no interface for function call, slice or indexed name in association
9
main.vhd:37:40: no interface for function call, slice or indexed name in association
10
main.vhd:38:41: no interface for function call, slice or indexed name in association
11
main.vhd:39:42: no interface for function call, slice or indexed name in association
12
main.vhd:40:42: no interface for function call, slice or indexed name in association
13
main.vhd:41:42: no interface for function call, slice or indexed name in association
14
main.vhd:42:42: no interface for function call, slice or indexed name in association
15
main.vhd:43:42: no interface for function call, slice or indexed name in association
16
main.vhd:44:42: no interface for function call, slice or indexed name in association
17
ghdl: compilation error


thank you

von Duke Scarring (Guest)


Rate this post
useful
not useful
amir wrote:
> reg1: reg port map (in_regs(0)=>d, clk=>clk, out_regs(0)=>q);
try with
1
  reg1: reg 
2
  port map (
3
    d   => in_regs(0),
4
    clk => clk,
5
    q   => out_regs(0)
6
  );

or much shorter:
1
out_regs <= in_regs when rising_edge(clk);

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.