【发布时间】:2017-12-27 12:28:43
【问题描述】:
我有以下类型
type VECTOR_ARRAY_TYPE is array(natural range <>) of std_logic_vector;
我在我的实体中使用如下:
entity mux is
generic (
sel_width : positive := 2;
data_width : positive := 3
);
port (
d : in VECTOR_ARRAY_TYPE(2**sel_width - 1 downto 0)(data_width - 1 downto 0);
sel : in std_logic_vector(sel_width - 1 downto 0);
q : out std_logic_vector(data_width - 1 downto 0)
);
end mux;
我正在使用 Vivado 2017.1 并将文件标记为 VHDL 2008。文件合成得非常好,但在尝试运行模拟时出现以下错误:
ERROR: [XSIM 43-4187] File "/project_dir/sources_1/new/alu_data.vhd" Line 42 : The "Vhdl 2008 Unconstrained Array Type as Subtype in Array Type Definition" is not supported yet for simulation.
它所指的行号就是上面的类型定义。
是不是错误是正确的,无约束的数组类型不能用于模拟?或者我需要更改某个设置以以不同方式配置模拟器?
谢谢。
【问题讨论】:
-
完全正确。您可以随时尝试最新版本 (v2017.4)。
-
你的用法是正确的。您需要将其作为错误提交给 Xilinx。这是 IEEE 标准化的 10 年和 Accellera 标准化的 12 年。不能说他们没有足够的时间来实施它。
-
对于映射到二进制类型和模拟的综合来说,详细说明是完全不同的。用户指南 901(综合)列出了支持的不受约束的元素类型(第 8 章 VHDL-2008 语言支持,支持的 VHDL-2008 功能,类型)。用户指南 900(逻辑仿真)表 C-1 在 2017 年没有更改。对于支持具有无约束元素子类型的未绑定数组类型(IEEE Std 1076-2008 5.3.2)的模拟器,您几乎可以使用 ALDEC 或 Modelsim数组类型,5.3.2.1 通用)。
-
@JHBonarius “证明需求”是一些 EDA 供应商也称之为市场驱动的东西。因此,我们都需要提交错误报告来证明需求。事实上,我们需要的是一个具有标准化测试用例的网站和一种自动将它们提交给供应商的方法——这样一个人可以生成报告,每个希望该功能工作的人都可以提交它——从而证明对该功能的需求.
-
@JHBonarius 不要失去希望。像 SystemVerilog 这样的竞争性事情应该主要完成。我们的时间段是现在。提交那些错误。大声抱怨损坏的功能。