【问题标题】:Can't compile VHDL package - Modelsim error: (vcom-1576) expecting END无法编译 VHDL 包 - Modelsim 错误:(vcom-1576) 期待 END
【发布时间】:2018-10-11 13:23:42
【问题描述】:

很简单,但我正在拔头发,需要一些新鲜的眼睛。问题在下面详细说明,最初我遇到了一个包含多个项目的更大包裹的问题,因此将所有内容都剥离了基础,仍然无法解决......

提前致谢

g

简单代码:

----------------------------------
--  LIBRARY_DECLARATIONS
----------------------------------
library STD;
use     STD.standard.all;
----------------------------------
library IEEE;
use     IEEE.std_logic_1164.all;
----------------------------------
--  PACKAGE_DECLARATION
----------------------------------
package Dummy_pkg is

   component dummy_comp is
      (
         SIG_IN  : in    std_logic;
         SIG_BI  : inout std_logic;
         SIG_OUT : out   std_logic
      );
   end component dummy_comp;

end package TB_PHAS_FPGA_DUT_pkg;

package body TB_PHAS_FPGA_DUT_pkg is
end package body TB_PHAS_FPGA_DUT_pkg;

这是我从 Modelsim(MS 版)得到的错误:

vcom -reportprogress 300 -work work C:/_WorkDir/pkg_issue/Dummy_pkg.vhd
# Model Technology ModelSim Microsemi vcom 10.5c Compiler 2016.07 Jul 21 2016
# Start time: 13:49:21 on Oct 11,2018
# vcom -reportprogress 300 -work work C:/_WorkDir/pkg_issue/Dummy_pkg.vhd 
# -- Loading package STANDARD
# -- Loading package TEXTIO
# -- Loading package std_logic_1164
# -- Compiling package Dummy_pkg
# ** Error: C:/_WorkDir/pkg_issue/Dummy_pkg.vhd(20): near "(": (vcom-1576) expecting END.
# End time: 13:49:21 on Oct 11,2018, Elapsed time: 0:00:00
# Errors: 1, Warnings: 0

【问题讨论】:

    标签: compilation package vhdl modelsim


    【解决方案1】:

    你的意思是:

       component dummy_comp is
          port                           --  <--------------------
          (
             SIG_IN  : in    std_logic;
             SIG_BI  : inout std_logic;
             SIG_OUT : out   std_logic
          );
       end component dummy_comp;
    

    【讨论】:

    • 感谢马特,新鲜的眼睛.. 我自己也弄明白了 - 也应该刷新屏幕!!。
    【解决方案2】:

    知道了 - 我在组件声明中缺少“端口”.... 总是在您发布之后...典型...抱歉浪费时间。
    rgds,克。

    【讨论】:

    • 你有什么理由把组件放在一个包里?如果 dummy_comp 的源代码也是 VHDL,则根本不需要组件声明。从 VHDL '93 开始,您可以使用直接实例化。这样编译起来更快,因为它将您的实例化与实体进行比较,而不是与组件进行比较,然后如果 comp 与实体不匹配,则稍后在映射阶段查找错误。只有当实体不是用 VHDL 编写时才真正需要组件。
    • @Tricky 在需要组件时有更多用例。至少他是使用包来声明组件,而不是把代码复制到每个需要组件的架构中!
    • @paebbels。请说明在哪里。如果源是 VHDL,那么除非因为实体尚未完成而正在编译,否则我需要组件的唯一情况是源不是 VHDL(Verilog、Netlist 等)。
    • @Tricky 解释这一点需要的不仅仅是对此答案的评论,而且超出了范围。请在 StackOverflow 上创建后续问题或直接在 Gitter 上问我(相同的用户名)。
    • 嗨,我使用包,所以结构文件只包含实例化。这是用于测试平台,是大型骨架测试工具的一部分...我同意@Tricky,这是一种更简洁的方法,而且更常见 - 事实上,我将几乎所有东西都放在一个包中 - 类型、常量 procs/fns 等。在这种情况下,组件是虚拟组件,仅用于驱动 dummy_dut 上的输出。当我创建实体时,我忘记使用“端口”这个词,所以我的比较工具没有找到它……我想我已经这样做了 10 多年了——正如我所说的女学生错误!!.. 干杯偷看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多