由于Quartus®Prime软件存在问题,如果您选择了VHDL生成IP大城,则在编译仿真时可能会遇到以下错误:
#**错误:。<您的模块> .vhd <您的行号> 🙁 vcom-1133)在端口<您的端口>上找到类型不匹配“。
#在组件“<your component>”中,端口类型为“ieee.std_logic_1164.STD_LOGIC”。
#在实体“<您的下级实体>”中,端口类型为“ieee.std_logic_1164.STD_LOGIC_VECTOR”
解决/修复方法
要解决此问题,您必须编辑生成的RTL并匹配顶层实例和测试平台中的数据类型。
例如,对于名为“FP_TEST”的模块,您将执行以下操作:
在<your tb> _tb.vhd中进行以下更改
从:
FP_TEST_tb的架构rtl是
组件FP_TEST是
港口 (
a:在std_logic_vector(63 downto 0):=(其他=>’X’); – 一个
areset:在std_logic中:=’X’; – 重启
b:在std_logic_vector(63 downto 0)中:=(其他=>’X’); – b
clk:在std_logic中:=’X’; – clk
opSel:在std_logic中:=’X’ ; – opSel
问:out std_logic_vector(63 downto 0) – q
);
最终组件FP_TEST;
…
fp_test_inst:组件FP_TEST
港口映射(
a => fp_test_inst_a_bfm_conduit_a, – aa
areset => fp_test_inst_areset_bfm_reset_reset, – areset.reset
b => fp_test_inst_b_bfm_conduit_b, – bb
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 – qq
);
至:
FP_TEST_tb的架构rtl是
组件FP_TEST是
港口 (
a:在std_logic_vector(63 downto 0):=(其他=>’X’); – 一个
areset:在std_logic中:=’X’; – 重启
b:在std_logic_vector(63 downto 0)中:=(其他=>’X’); – b
clk:在std_logic中:=’X’; – clk
opSel:在std_logic_vector(0 downto 0):=(其他=>’X’ ); – opSel
问:out std_logic_vector(63 downto 0) – q
);
最终组件FP_TEST;
fp_test_inst:组件FP_TEST
港口映射(
a => fp_test_inst_a_bfm_conduit_a, – aa
areset => fp_test_inst_areset_bfm_reset_reset, – areset.reset
b => fp_test_inst_b_bfm_conduit_b, – bb
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 – qq
);
并在<your module> .vhd中进行以下更改
从:
实体FP_TEST是
港口 (
a:在std_logic_vector(63 downto 0):=(其他=>’0’); – aa
areset:在std_logic中:=’0′; – areset.reset
b:在std_logic_vector(63 downto 0)中:=(其他=>’0’); – bb
clk:在std_logic中:=’0′; – clk.clk
opSel:在std_logic中:=’0′ ; – opSel.opSel
q:输出std_logic_vector(63 downto 0) – qq
);
终端实体FP_TEST;
FP_TEST的架构rtl是
组件FP_TEST_altera_fp_functions_160_xhvb5va是
港口 (
clk:在std_logic中:=’X’; – clk
areset:在std_logic中:=’X’; – 重启
a:在std_logic_vector(63 downto 0):=(其他=>’X’); – 一个
b:在std_logic_vector(63 downto 0)中:=(其他=>’X’); – b
q:out std_logic_vector(63 downto 0); – q
opSel:在std_logic中:=’X’ – opSel
);
结束组件FP_TEST_altera_fp_functions_160_xhvb5va;
至:
实体FP_TEST是
港口 (
a:在std_logic_vector(63 downto 0):=(其他=>’0’); – aa
areset:在std_logic中:=’0′; – areset.reset
b:在std_logic_vector(63 downto 0)中:=(其他=>’0’); – bb
clk:在std_logic中:=’0′; – clk.clk
opSel:在std_logic_vector(0 downto 0):=(其他=>’0’) ; – opSel.opSel
q:输出std_logic_vector(63 downto 0) – qq
);
终端实体FP_TEST;
FP_TEST的架构rtl是
组件FP_TEST_altera_fp_functions_160_xhvb5va是
港口 (
clk:在std_logic中:=’X’; – clk
areset:在std_logic中:=’X’; – 重启
a:在std_logic_vector(63 downto 0):=(其他=>’X’); – 一个
b:在std_logic_vector(63 downto 0)中:=(其他=>’X’); – b
q:out std_logic_vector(63 downto 0); – q
opSel:在std_logic_vector(0 downto 0):=(其他=>’X’ ) – opSel
);
结束组件FP_TEST_altera_fp_functions_160_xhvb5va;
计划在Quartus Prime软件的未来版本中修复。
没有回复内容