- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Modelsim 的 VHDL 编译器 (vcom) 对 SublimeText (VHDL 2008) 进行代码检查。在初始化一组标准逻辑向量时,我收到以下警告:
vcom: warning Warning - (vcom-1320) Type of expression "(OTHERS => '0')" is ambiguous; using element type STD_LOGIC_VECTOR, not aggregate type t_a_reg.
library ieee;
use ieee.std_logic_1164.all;
entity module is
port
(
clk : in std_logic;
rst : in std_logic;
...
);
end entity;
architecture rtl of module is
type t_a_reg is array (integer range <>) of std_logic_vector(15 downto 0);
signal s_event_reg : t_a_reg(1 downto 0) := (others => (others => '0')); -- this gives the warning
...
begin
...
end architecture;
我通过输入
verror 1320
来检查 Modelsim在 tcl 控制台中,它给出了以下解释:
vcom Message # 1320:The expression of each element association of an array aggregate can beof the element type or the type of the aggregate itself. When an arrayaggregate is of an array type whose element subtype is composite, it ispossible for certain kinds of its element association expressions to beinterpreted as being potentially either of these two types. This willnormally happen only if the ambiguous expression is itself an aggregate(because the type of an aggregate must be determined solely from thecontext in which the aggregate appears, excluding the aggregate itselfbut using the fact that the type of the aggregate shall be a compositetype) or a function call that identifies two overloaded functions.This ambiguity is resolved in favor of the element type to supportbackwards compatibility with prior versions of VHDL, in which theelement type was the only type considered.[DOC: IEEE Std 1076-2008 VHDL LRM - 9.3.3.3 Array aggregates]
type t_a_reg is array (integer range <>) of std_logic_vector(15 downto 0);
signal s_event_reg : t_a_reg(1 downto 0) := (others => x"0000"); -- no warning
第二种方法非常冗长,我不太喜欢它:
subtype t_vec is std_logic_vector(15 downto 0);
constant c_vec_init : t_vec := (others => '0');
type t_a_reg is array (integer range <>) of std_logic_vector(15 downto 0);
signal s_event_reg : t_a_reg(1 downto 0) := (others => c_vec_init); -- no warning
问题是:是否有正确的 VHDL-2008 初始化数组的方法,所以我没有收到警告?这个问题更像是一个哲学问题,因为代码有效。我只是想知道,如果我遗漏了什么。
type t_a_reg is array (integer range <>) of std_logic_vector(15 downto 0);
signal s_event_reg : t_a_reg(1 downto 0) := (others => std_logic_vector'(others => '0'));
然而,这会产生一个真正的错误:
vcom: error - Error - (vcom-1076) OTHERS choice cannot be used in unconstrained array aggregate.
最佳答案
如何使用类型限定:
signal s_event_reg : t_a_reg(1 downto 0) := (others => std_logic_vector'(others => '0'));
-- ^^^^^^^^^^^^^^^^^
关于arrays - Modelsim VHDL 阵列初始化发出警告 (vcom-1320),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62895187/
在 Fedora 22 64 位中安装了带有 Modelsim 的 Quartus 13.0。在 32 位中运行 Quartus,因为否则我会遇到很多很多问题。不过,我可以启动 Quartus、创建项
我正在寻找一种在 GUI 模式下在 ModelSim View 中切换网络叶名称的方法。换句话说,相当于按“切换叶名称 全名”按钮: 我知道添加短名称的方法。例如,我一直在使用这样的代码: add
您好,所有使用 Mentor Graphic Modelsim 工具的 SystemVerilog 专家。 我正在编写一个监控任务来处理一个简单的 PCI 单字写/读总线事件。出于某种原因,EDApl
我可以通过执行"file"->“最近的项目”来打开 Modelsim 项目文件。但是我不知道有任何其他方式来打开项目。如果我使用"file"->“打开”,它只会打开单个文件,而不是项目。如何打开项目?
我正在运行 ModelSim 10.3d,并且我在一个包中包含以下代码: package core_params_types is type array_1d_logic is array (
对不起,新手问题。 我正在尝试了解 FPGA 编程。 在我在 FPGA 板上花费 1000 美元之前: 如果我只想学习 Verilog,我可以完全在 Modelsim 中运行它吗? (我意识到有一些时
我在使用 ModelSim Student Edition 10.2c 运行 Verilog 项目时遇到问题。一切都没有错误地编译,但是我在运行时收到以下错误: # vsim -gui work.te
使用 Modelsim,我想测试一个代码,但一个信号始终未初始化。这里有一段代码用来解释 Modelsim 的问题: -- Signal Declaration signal shifter
我目前正在使用 Modelsim 10.1 和 ISE 13.4 并运行一个非常简单的测试平台。所有代码都是VHDL。 前几天我在使用 VHDL 的 assert 语句时遇到了麻烦:错误和警告被输出到
是否可以使用 Modelsim 在编译时定义一个 generic 值? 我需要编译一个包含 generate 语句的文件,这些语句根据我的 generic bool 值关闭和打开。 我没有成功尝试以下
我知道什么时候使用 report和 severity Modelsim 将仿真时刻显示为发送到控制台的消息的一部分。无论如何,是否可以将这个时间瞬间“获取”为字符串变量,以便我可以用这个“时间”字符串
我需要获取几个信号的值,以便根据仿真检查它们(仿真是在 Matlab 中进行的)。有很多值,我想将它们放入一个文件中,以便我可以在脚本中运行它并避免手动复制这些值。 有没有办法自动将多个信号的值打印到
我正在通过 ModelSim 运行一些 VHDL。每个错误和警告都有自己的错误代码(例如:(vcom-1292) Slice range direction "downto" specified in
我在verilog中做了一个低通滤波器。我也为此做了一个测试台。主要的Verilog代码似乎已编译,没有任何错误。但是,当我尝试编译测试平台时,遇到一个无法解决的错误。如果有人可以帮助我,我将不胜感激
我可以进行 ModelSim 模拟以在信号上显示文本(而不是数值)吗?我有几个状态机状态, localparam S_IDLE = 2'b00; localparam S_START = 2'b01
我正在使用 Ubuntu Linux 14.04 LTS 和 Altera Quartus 15.0 网络版,由于许可错误,我很难模拟我的设计。我正在为 VEEK-MT 设计一个 LCD_driver
我刚刚在 Ubuntu 16.04.1 上安装了最新版本的 ModelSim。但是我无法使用此命令启动软件 ./vsim。它总是说 bash: ./vsim: No such file or dire
我有一个 VHDL 包,它定义了一个函数(前向声明)和一个常量。常量的值由该函数计算,其主体位于包体中。 截至目前,ModelSim/QuestaSim 是唯一不喜欢此代码的工具。它需要 2 个包,所
我在代码中使用带符号的定点数。为了更容易验证这些值,我想看看它们在波形中代表的实数。例如,假设: // 1bit signal, 4bits integer, 4bits fraction
我正在为 Modelsim 上的 d 触发器编写 VHDL 代码,当我尝试对其进行仿真时出现错误: Error: (vsim-3601) Iteration limit reached at time
我是一名优秀的程序员,十分优秀!