Problema package VHDL
Hi at all, I've the following problem
FILE 1: miopkg.vhdl
FILE 2: rgb.vhdl
The compiling of FILE 1 go right, the compiling of FILE 2 gives the following errors:
$ ghdl -a rgb.vhdl
rgb.vhdl:21:36: no declaration for "miopkg"
rgb.vhdl:22:18: no declaration for "res_colori"
rgb.vhdl:25:21: can't associate 'in1' with port "a"
rgb.vhdl:25:21: (type of 'in1' is an unknown type)
rgb.vhdl:5:13: (type of port "a" is colori)
rgb.vhdl:28:16: no declaration for "a"
rgb.vhdl:29:16: no declaration for "b"
rgb.vhdl:30:16: no declaration for "c"
rgb.vhdl:31:16: no declaration for "d"
rgb.vhdl:32:16: no declaration for "e"
rgb.vhdl:34:16: no declaration for "a"
rgb.vhdl:36:16: no declaration for "a"
FILE 1: miopkg.vhdl
package miopkg is type colori is (nero, blu, rosso, verde, giallo, bianco); type pippo is type array_di_colori is array(integer range <>) of colori; function resolve_color (ingressi: in array_di_colori) return colori; subtype res_colori is resolve_color colori; end package miopkg; package body miopkg is function resolve_color (ingressi: in array_di_colori) return colori is variable colore_chiaro: colori; begin colore_chiaro:= nero; for index in ingressi'range loop if (colori 'pos (ingressi(index)) > colori'pos(colore_chiaro)) then colore_chiaro:=ingressi(index); end if; end loop; return colore_chiaro; end function; end package body;
FILE 2: rgb.vhdl
library work; use work.miopkg.ALL; entity rgb is port(A, B, C, D, E: in colori; risultato: out res_colori); end rgb; architecture behav of rgb is begin risultato<=A; risultato<=B; risultato<=C; risultato<=D; risultato<=E; end behav; entity testbench is end testbench; architecture comportamento of testbench is signal in1,in2,in3,in4,in5:colori; signal u1:res_colori; begin resolution:entity work.rgb(behav) port map (in1,in2,in3,in4,in5,u1); simula: process is begin A<=nero; B<=giallo; C<=rosso; D<=blu; E<=verde; wait for 20 ns; A<=bianco; wait for 20 ns; A<=verde; wait for 20 ns; wait; end process simula; end comportamento;
The compiling of FILE 1 go right, the compiling of FILE 2 gives the following errors:
$ ghdl -a rgb.vhdl
rgb.vhdl:21:36: no declaration for "miopkg"
rgb.vhdl:22:18: no declaration for "res_colori"
rgb.vhdl:25:21: can't associate 'in1' with port "a"
rgb.vhdl:25:21: (type of 'in1' is an unknown type)
rgb.vhdl:5:13: (type of port "a" is colori)
rgb.vhdl:28:16: no declaration for "a"
rgb.vhdl:29:16: no declaration for "b"
rgb.vhdl:30:16: no declaration for "c"
rgb.vhdl:31:16: no declaration for "d"
rgb.vhdl:32:16: no declaration for "e"
rgb.vhdl:34:16: no declaration for "a"
rgb.vhdl:36:16: no declaration for "a"
Risposte
Secondo me, non ti vede il package.
Dove hai salvato il package?
Dove hai salvato il package?
Direi che devi prima "importare" il package nella work directory per fare capire a ghdl che il package esiste, idem per l'altro file.
ghdl -i miopkg.vhdl
ghdl -i rgb.vhdl
Poi crea un eseguibile con:
ghdl -m rgb
Poi simula il tutto con gtkwave.
Comunque, come mai la scelta d'usare ghdl? Esistono editor completissimi (ISE della Xilinx e simili della Altera) che ti risparmiano moltissimo tempo e sopratutto diverse rotture (per non parlare dell'inferiorità di gtkwave rispetto ad iSim)
ghdl -i miopkg.vhdl
ghdl -i rgb.vhdl
Poi crea un eseguibile con:
ghdl -m rgb
Poi simula il tutto con gtkwave.
Comunque, come mai la scelta d'usare ghdl? Esistono editor completissimi (ISE della Xilinx e simili della Altera) che ti risparmiano moltissimo tempo e sopratutto diverse rotture (per non parlare dell'inferiorità di gtkwave rispetto ad iSim)