Devido a um problema no software Intel® Quartus® Prime Pro Edition, se você gerar um megacore IP com VHDL selecionado, você poderá encontrar esses erros ao compilar para simulação:
Erro ** : .< seu módulo>.vhd< seu número de linha>: (vcom-1133) Erro de tipo encontrado na porta < sua porta>".
# No componente "< seu componente>", o tipo de porta é "ieee.std_logic_1164.STD_LOGIC".
# Na entidade "< sua entidade de nível inferior>", o tipo de porta é "ieee.std_logic_1164.STD_LOGIC_VECTOR"
Para resolver este problema, você deve editar o RTL gerado e corresponder aos tipos de dados na instância superior e na camada de teste.
Por exemplo, para um módulo chamado "FP_TEST", você faria o seguinte:
Faça as seguintes alterações em < sua tb>_tb.vhd
De:
rtl arquitetura de FP_TEST_tb é
componente FP_TEST é
porta (
a: em std_logic_vector(63 downto 0) := (outros => 'X'); --Um
areset : em std_logic := 'X'; --Redefinir
b: em std_logic_vector(63 downto 0) := (outros => 'X'); --B
clk: em std_logic := 'X'; --Clk
opSel: em std_logic := 'X'; -- opSel
q: out std_logic_vector(63 downto 0) -- q
);
componentes FP_TEST;
...
fp_test_inst: componente FP_TEST
mapa de porta (
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:
rtl arquitetura de FP_TEST_tb é
componente FP_TEST é
porta (
a: em std_logic_vector(63 downto 0) := (outros => 'X'); --Um
areset : em std_logic := 'X'; --Redefinir
b: em std_logic_vector(63 downto 0) := (outros => 'X'); --B
clk: em std_logic := 'X'; --Clk
opSel: em std_logic_vector(0 downto 0) := (outros => 'X'); -- opSel
q: out std_logic_vector(63 downto 0) -- q
);
componentes FP_TEST;
fp_test_inst: componente FP_TEST
mapa de porta (
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
);
E faça as seguintes alterações no < seu módulo>.vhd
De:
entidade FP_TEST é
porta (
a: em std_logic_vector(63 downto 0) := (outros => '0'); --A.a
areset: em std_logic := '0'; -- areset.reset
b: em std_logic_vector(63 downto 0) := (outros => '0'); --B.b
clk: em std_logic := '0'; - clk.clk
opSel: em std_logic := '0'; -- opSel.opSel
q: out std_logic_vector(63 downto 0) - q.q
);
entidade final FP_TEST;
rtl arquitetura de FP_TEST é
componente FP_TEST_altera_fp_functions_160_xhvb5va é
porta (
clk: em std_logic := 'X'; --Clk
areset : em std_logic := 'X'; --Redefinir
a: em std_logic_vector(63 downto 0) := (outros => 'X'); --Um
b: em std_logic_vector(63 downto 0) := (outros => 'X'); --B
q: fora std_logic_vector (63 downto 0); --Q
opSel : em std_logic := 'X' - opSel
);
componentes FP_TEST_altera_fp_functions_160_xhvb5va;
Para:
entidade FP_TEST é
porta (
a: em std_logic_vector(63 downto 0) := (outros => '0'); --A.a
areset: em std_logic := '0'; -- areset.reset
b: em std_logic_vector(63 downto 0) := (outros => '0'); --B.b
clk: em std_logic := '0'; - clk.clk
opSel: em std_logic_vector(0 downto 0) := (outros => '0'); -- opSel.opSel
q: out std_logic_vector(63 downto 0) - q.q
);
entidade final FP_TEST;
rtl arquitetura de FP_TEST é
componente FP_TEST_altera_fp_functions_160_xhvb5va é
porta (
clk: em std_logic := 'X'; --Clk
areset : em std_logic := 'X'; --Redefinir
a: em std_logic_vector(63 downto 0) := (outros => 'X'); --Um
b: em std_logic_vector(63 downto 0) := (outros => 'X'); --B
q: fora std_logic_vector (63 downto 0); --Q
opSel: em std_logic_vector(0 downto 0) := (outros => 'X') - opSel
);
componentes FP_TEST_altera_fp_functions_160_xhvb5va;
Isso está programado para ser corrigido em uma versão futura do software Intel® Quartus® Prime.