Debido a un problema en el software Intel® Quartus® Prime Pro Edition, si genera un megacore de PI con VHDL seleccionado, puede encontrar estos errores al compilar para la simulación:
N.º ** Error: ..vhd: (vcom-1133) Error de coincidencia de tipo que se encuentra en el puerto # En el componente "", el tipo de puerto es "ieee.std_logic_1164.STD_LOGIC".
# En la entidad "", el tipo de puerto es "ieee.std_logic_1164.STD_LOGIC_VECTOR"
Para evitar este problema, debe editar el RTL generado y coincidir con los tipos de datos tanto en la instancia principal como en el testbench.
Por ejemplo, en el caso de un módulo llamado "FP_TEST", haría lo siguiente:
Realice los siguientes cambios en _tb.vhd
De:
arquitectura rtl de FP_TEST_tb es
componente FP_TEST es
puerto (
a: en std_logic_vector (63 downto 0) := (otros = > 'X'); --Un
areset: en std_logic:= "X"; --Restablecer
b: en std_logic_vector (63 downto 0) := (otros => 'X'); --B
clk: en std_logic:= "X"; --Clk
opSel: en std_logic:= "X"; -- opSel
q: salida std_logic_vector (63 bajo 0) -- q
);
FP_TEST de componentes finales;
...
fp_test_inst: FP_TEST de componentes
mapa de puertos (
a => fp_test_inst_a_bfm_conduit_a, -- a.a
areset => fp_test_inst_areset_bfm_reset_reset, -- areset.reset
b = > fp_test_inst_b_bfm_conduit_b, -- b.b
clk = > fp_test_inst_clk_bfm_clk_clk, -- clk.clk
opSel => fp_test_inst_opsel_bfm_conduit_opsel(0), -- opSel.opSel
q => fp_test_inst_q_q -- q.q
);
Para:
arquitectura rtl de FP_TEST_tb es
componente FP_TEST es
puerto (
a: en std_logic_vector (63 downto 0) := (otros = > 'X'); --Un
areset: en std_logic:= "X"; --Restablecer
b: en std_logic_vector (63 downto 0) := (otros => 'X'); --B
clk: en std_logic:= "X"; --Clk
opSel: en std_logic_vector(0 hasta 0) := (otros => "X"); -- opSel
q: salida std_logic_vector (63 bajo 0) -- q
);
FP_TEST de componentes finales;
fp_test_inst: FP_TEST de componentes
mapa de puertos (
a => fp_test_inst_a_bfm_conduit_a, -- a.a
areset => fp_test_inst_areset_bfm_reset_reset, -- areset.reset
b = > fp_test_inst_b_bfm_conduit_b, -- b.b
clk = > fp_test_inst_clk_bfm_clk_clk, -- clk.clk
opSel => fp_test_inst_opsel_bfm_conduit_opsel, -- opSel.opSel
q => fp_test_inst_q_q -- q.q
);
Y realice los siguientes cambios en el módulo .vhd
De:
entidad FP_TEST es
puerto (
a: en std_logic_vector (63 bajo 0) := (otros => '0'); --A.a
areset: en std_logic:= "0"; -- areset.reset
b: en std_logic_vector (63 bajo 0) := (otros => '0'); --B.b
clk: en std_logic:= "0"; -- clk.clk
opSel: en std_logic:= "0"; -- opSel.opSel
q: salida std_logic_vector (63 bajo 0) -- q.q
);
FP_TEST de la entidad final;
arquitectura rtl de FP_TEST es
componente FP_TEST_altera_fp_functions_160_xhvb5va es
puerto (
clk: en std_logic:= "X"; --Clk
areset: en std_logic:= "X"; --Restablecer
a: en std_logic_vector (63 downto 0) := (otros = > 'X'); --Un
b: en std_logic_vector (63 downto 0) := (otros => 'X'); --B
q: salida std_logic_vector (63 hasta 0); --Q
opSel: en std_logic := "X" -- opSel
);
FP_TEST_altera_fp_functions_160_xhvb5va de componentes finales;
Para:
entidad FP_TEST es
puerto (
a: en std_logic_vector (63 bajo 0) := (otros => '0'); --A.a
areset: en std_logic:= "0"; -- areset.reset
b: en std_logic_vector (63 bajo 0) := (otros => '0'); --B.b
clk: en std_logic:= "0"; -- clk.clk
opSel: en std_logic_vector(0 hasta 0) := (otros = > '0'); -- opSel.opSel
q: salida std_logic_vector (63 bajo 0) -- q.q
);
FP_TEST de la entidad final;
arquitectura rtl de FP_TEST es
componente FP_TEST_altera_fp_functions_160_xhvb5va es
puerto (
clk: en std_logic:= "X"; --Clk
areset: en std_logic:= "X"; --Restablecer
a: en std_logic_vector (63 downto 0) := (otros = > 'X'); --Un
b: en std_logic_vector (63 downto 0) := (otros => 'X'); --B
q: salida std_logic_vector (63 hasta 0); --Q
opSel: en std_logic_vector(0 downto 0) := (otros => 'X') -- opSel
);
FP_TEST_altera_fp_functions_160_xhvb5va de componentes finales;
Esto está programado para ser reparado en un lanzamiento futuro del software Intel® Quartus® Prime.