【问题标题】:VHDL/ModelSim - Could Not Find EntityVHDL/ModelSim - 找不到实体
【发布时间】:2013-01-10 11:16:22
【问题描述】:

我正在尝试模拟我的 VHDL 文件,但遇到以下错误:

# ** Error: (vcom-11) Could not find work.lab1.
# 
# ** Error: (vcom-1195) Cannot find expanded name "work.lab1".
# 
# ** Error: Unknown expanded name.
# ** Error: VHDL Compiler exiting
# ** Error: c:/altera/12.1/modelsim_ase/win32aloem/vcom failed.
# Error in macro ./DE2_TOP_run_msim_rtl_vhdl.do line 8
# c:/altera/12.1/modelsim_ase/win32aloem/vcom failed.
#     while executing
# "vcom -93 -work work"

在尝试仿真之前,我通过 Quartus II 和 ModelSim 编译器成功编译了代码。我的代码中确实有一个 lab1 实体和架构(我什至可以在 Quartus Project Navigator 的 Design Units 选项卡中看到它),所以我不太理解这个错误。有人知道这是什么原因吗?

【问题讨论】:

  • 试试这个:1) vlib 工作; 2)vmap工作工作; 3) vcom_the_lab1_file; 4) vcom_the_toplevel_file; 4)vsim work._the_toplevel_entity
  • 谢谢,成功了。那么我现在每次都必须输入吗?我的 lab1 和顶级实体也在同一个文件中,所以我假设我可以结合步骤 3 和 4,对吧?
  • 'vlib' 是创建一个库。 'vmap'是将目录'work'绑定到VHDL库'work'(检查modelsim.ini文件)。 Vcom 用于编译 VHDL 代码(Verilog 的“vlog”)。和“vsim”启动模拟器。您必须运行的内容取决于项目中已经存在的内容(=simulation 目录)。但大多数情况下,当您更改源代码和“vsim”进行模拟时,它只会出现“vcom”。但是所有这些事情也可以在 GUI 中完成。
  • 我会为每个实体/架构组合保留一个 VHDL 文件。

标签: simulation vhdl fpga modelsim


【解决方案1】:

当模拟器在编译顶层(DE2_TOP)时,它想知道使用的组件是什么样的。所以,你应该在编译上层组件之前编译下层组件。

我大多数时候解决这个问题的方法是以正确的顺序编译所有组件,然后使用 Modelsim 的 'vmake' ('vmake -work work > work.vmake') 命令从库中生成一个 makefile (工作)。一旦你有了makefile,你就可以使用(make -f work.vmake)来执行它。并且所有文件都会按顺序编译。

注意:Verilog 在这些方面要轻松得多...

【讨论】:

  • 感谢您的出色回答。在一些相关的说明中,您知道“U”值在 ModelSim 输出的“对象”窗口中的含义吗?我试图通过像这样在我的lab1实体中初始化来模拟我的四个FPGA按钮上的按钮按下:“key : in std_logic_vector(3 downto 0) := "0010";"。然而,即使在这样做之后,ModelSim 仍然为我的每个键提供一个“U”值。知道为什么吗?
  • 你最好用一些代码提出一个新问题。但是“U”是“std_logic”类型的“未初始化”状态。这是一个尚未设置的信号。
  • 我已将它作为一个新问题发布在这里:stackoverflow.com/questions/14540139/…
猜你喜欢
  • 2014-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多