Wenn Sie aufgrund eines Problems in der Intel® Quartus® Prime Pro Edition Software eine IP-Megacore mit ausgewählter VHDL generieren, können beim Kompilieren für simulation folgende Fehler auftreten:
Anzahl ** Fehler: ..vhd: (vcom-1133) Geben Sie "Missmatch" auf Port " ein.
# In der Komponente "" ist der Port-Typ "ieee.std_logic_1164.STD_LOGIC".
Anzahl in der Entität "" ist der Porttyp "ieee.std_logic_1164.STD_LOGIC_VECTOR"
Um dieses Problem zu umgehen, müssen Sie das generierte RTL bearbeiten und die Datentypen sowohl in der Top-Instanz als auch im Testbench abgleichen.
Beispiel: Für ein Modul mit dem Namen "FP_TEST" würden Sie Folgendes tun:
Machen Sie die folgenden Änderungen in _tb.vhd
Von:
Architecture RTL von FP_TEST_tb ist
komponenten-FP_TEST ist
Port (
a: in std_logic_vector (63 auf 0) := (andere => "X"); --Eine
areset: in std_logic := "X"; --Zurücksetzen
b: in std_logic_vector (63 auf 0) := (andere => "X"); --B
clk: in std_logic := "X"; --Clk
opSel: in std_logic := "X"; -- opSel
f: out std_logic_vector(63 downto 0) -- q
);
FP_TEST der Endkomponente;
...
fp_test_inst: Komponenten-FP_TEST
Port-Karte (
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
);
An:
Architecture RTL von FP_TEST_tb ist
komponenten-FP_TEST ist
Port (
a: in std_logic_vector (63 auf 0) := (andere => "X"); --Eine
areset: in std_logic := "X"; --Zurücksetzen
b: in std_logic_vector (63 auf 0) := (andere => "X"); --B
clk: in std_logic := "X"; --Clk
opSel: in std_logic_vector(0 auf 0) := (andere => "X"); -- opSel
f: out std_logic_vector(63 downto 0) -- q
);
FP_TEST der Endkomponente;
fp_test_inst: Komponenten-FP_TEST
Port-Karte (
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
);
Und die folgenden Änderungen an .vhd vornehmen
Von:
Entität FP_TEST ist
Port (
a: in std_logic_vector(63 auf 0 heruntergestuft) := (andere => "0"); -- a.a
areset: in std_logic := '0'; -- areset.reset
b: in std_logic_vector(63 downto 0) := (andere => '0'); --Bb
clk: in std_logic := "0"; -- clk.clk
opSel: in std_logic := "0"; -- opSel.opSel
f: out std_logic_vector(63 downto 0) -- q.q
);
FP_TEST der Endeinheit;
Architecture RTL von FP_TEST ist
FP_TEST_altera_fp_functions_160_xhvb5va der Komponente ist
Port (
clk: in std_logic := "X"; --Clk
areset: in std_logic := "X"; --Zurücksetzen
a: in std_logic_vector (63 auf 0) := (andere => "X"); --Eine
b: in std_logic_vector (63 auf 0) := (andere => "X"); --B
f: out std_logic_vector(63 downto 0); --Q
opSel: in std_logic := "X" -- opSel
);
FP_TEST_altera_fp_functions_160_xhvb5va der Endkomponente;
An:
Entität FP_TEST ist
Port (
a: in std_logic_vector(63 auf 0 heruntergestuft) := (andere => "0"); -- a.a
areset: in std_logic := '0'; -- areset.reset
b: in std_logic_vector(63 downto 0) := (andere => '0'); --Bb
clk: in std_logic := "0"; -- clk.clk
opSel: in std_logic_vector(0 auf 0) := (andere => '0'); -- opSel.opSel
f: out std_logic_vector(63 downto 0) -- q.q
);
FP_TEST der Endeinheit;
Architecture RTL von FP_TEST ist
FP_TEST_altera_fp_functions_160_xhvb5va der Komponente ist
Port (
clk: in std_logic := "X"; --Clk
areset: in std_logic := "X"; --Zurücksetzen
a: in std_logic_vector (63 auf 0) := (andere => "X"); --Eine
b: in std_logic_vector (63 auf 0) := (andere => "X"); --B
f: out std_logic_vector(63 downto 0); --Q
opSel: in std_logic_vector(0 auf 0) := (andere => 'X') -- opSel
);
FP_TEST_altera_fp_functions_160_xhvb5va der Endkomponente;
Dies soll in einer zukünftigen Version der Intel® Quartus® Prime Software behoben werden.