no interface for function call, slice or indexed name in association

Guest #4939792
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
Guest #4939818
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);

Reply

A question of your own? This thread is over 9 years old. Ask it in a thread of its own – more people read along there, and it gets answered more often and sooner.

Start a new thread

A fix, an addition or feedback on this thread? Then reply here.

Formatting
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]
  • [[Title]] – link to an article
  • Link to another post: right-click its post ID (#8078628), copy the address, paste it into the text

More about formatting

Post long source code as an attachment, not in the text.

Already registered? Log in

Not shown to anyone. We send you a link; your post appears once you confirm it there.

By submitting you create a free account and accept the terms of use.