由于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软件的未来版本中修复。





没有回复内容