FPGA, VHDL & Verilog
›
Thread
no interface for function call, slice or indexed name in association
A
amir
Guest
2017-03-17 17:23
#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
DS
Duke Scarring
Guest
2017-03-17 18:00
#4939818
amir wrote:
> reg1: reg port map (in_regs(0)=>d, clk=>clk, out_regs(0)=>q);
try with1 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 );
↑ Back to top
← Back to FPGA, VHDL & Verilog
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.