子类型指示的非法语法 VHDL200X
Illegal syntax for subtype indication VHDL200X
我正在尝试创建一个 "dynamic" 二维数组,我可以在我的实体中使用泛型进行设置。
我遵循了第 32 页 https://s3.amazonaws.com/verificationhorizons.verificationacademy.com/volume-8_issue-3/articles/stream/vhdl-2008-why-it-matters_vh-v8-i3.pdf 中的示例。
我的类型在包中的声明(TypeDeclarations):
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
package TypeDeclarations is
-- Type BusArray -----------------------------------------------------
-- Can be used by: DArray((Y - 1) downto 0)((X - 1) downto 0); --
--
type TArray is array (natural range <>) of std_logic_vector; --
--
----------------------------------------------------------------------
end package;
我的实体:
-- Libraries
library ieee;
use ieee.std_logic_1164.all;
-- Own libraries
use work.TypeDeclarations.all;
entity DynamicRegisterSet is
generic (
INPUT_DATAWIDTH : integer := 1;
OUTPUT_DATAWIDTH : integer := 8;
N_REGISTERS : integer := 1);
port (
MCLK : in std_logic := '0';
WE : in std_logic := '0';
-- input data
DATA : in std_logic_vector((INPUT_DATAWIDTH-1) downto 0) := (others => '0');
SEL : in integer range 0 to (INPUT_DATAWIDTH-1) := 0;
-- in/output data (register set)
REGISTERSET : inout TArray((N_REGISTERS-1) downto 0)((OUTPUT_DATAWIDTH-1) downto 0) := (others => (others => '0')));
end DynamicRegisterSet;
这是我第一次使用更新后的编译器 (VHDL200X),我认为我没有做错,但否则我不会收到此消息:
VHDL\CommonBlocks\DynamicRegisterSet\Sources\DynamicRegisterSet.vhd" Line 25: Illegal syntax for subtype indication
有人有什么建议吗?非常感谢,谢谢!
Xilinx ISE 14.7 不支持 VHDL-2008...
它们支持一手完整的 VHDL-2002/2008 功能,但不支持不受约束的数组元素。
Vivado 在 2016.1 中添加了 VHDL-2008 支持并将其设置为默认值。但据我所知,它没有完整的 VHDL-2008 支持。
Xilinx XST 综合用户指南在 VHDL 部分列出了这些功能。 (抱歉,我的 phone 上没有 UG 号码。)
伊势
ISE 根本不支持 VHDL-2008。阅读有关 Xilinx forum or from XST guide ISE12 ISE14
的更多详细信息
Supported VHDL IEEE Standards
XST supports the following VHDL IEEE standards:
- Std1076-1987
- Std1076-1993
- Std1076-2006
Note Std 1076-2006 is only partially implemented.
维瓦多
Vivado 有一套可合成的 VHDL-2008 结构。在 UG901 中阅读更多详细信息
(支持的 VHDL-2008 功能 章节)
我正在尝试创建一个 "dynamic" 二维数组,我可以在我的实体中使用泛型进行设置。
我遵循了第 32 页 https://s3.amazonaws.com/verificationhorizons.verificationacademy.com/volume-8_issue-3/articles/stream/vhdl-2008-why-it-matters_vh-v8-i3.pdf 中的示例。
我的类型在包中的声明(TypeDeclarations):
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
package TypeDeclarations is
-- Type BusArray -----------------------------------------------------
-- Can be used by: DArray((Y - 1) downto 0)((X - 1) downto 0); --
--
type TArray is array (natural range <>) of std_logic_vector; --
--
----------------------------------------------------------------------
end package;
我的实体:
-- Libraries
library ieee;
use ieee.std_logic_1164.all;
-- Own libraries
use work.TypeDeclarations.all;
entity DynamicRegisterSet is
generic (
INPUT_DATAWIDTH : integer := 1;
OUTPUT_DATAWIDTH : integer := 8;
N_REGISTERS : integer := 1);
port (
MCLK : in std_logic := '0';
WE : in std_logic := '0';
-- input data
DATA : in std_logic_vector((INPUT_DATAWIDTH-1) downto 0) := (others => '0');
SEL : in integer range 0 to (INPUT_DATAWIDTH-1) := 0;
-- in/output data (register set)
REGISTERSET : inout TArray((N_REGISTERS-1) downto 0)((OUTPUT_DATAWIDTH-1) downto 0) := (others => (others => '0')));
end DynamicRegisterSet;
这是我第一次使用更新后的编译器 (VHDL200X),我认为我没有做错,但否则我不会收到此消息:
VHDL\CommonBlocks\DynamicRegisterSet\Sources\DynamicRegisterSet.vhd" Line 25: Illegal syntax for subtype indication
有人有什么建议吗?非常感谢,谢谢!
Xilinx ISE 14.7 不支持 VHDL-2008...
它们支持一手完整的 VHDL-2002/2008 功能,但不支持不受约束的数组元素。
Vivado 在 2016.1 中添加了 VHDL-2008 支持并将其设置为默认值。但据我所知,它没有完整的 VHDL-2008 支持。
Xilinx XST 综合用户指南在 VHDL 部分列出了这些功能。 (抱歉,我的 phone 上没有 UG 号码。)
伊势
ISE 根本不支持 VHDL-2008。阅读有关 Xilinx forum or from XST guide ISE12 ISE14
的更多详细信息Supported VHDL IEEE Standards
XST supports the following VHDL IEEE standards:
- Std1076-1987
- Std1076-1993
- Std1076-2006
Note Std 1076-2006 is only partially implemented.
维瓦多
Vivado 有一套可合成的 VHDL-2008 结构。在 UG901 中阅读更多详细信息 (支持的 VHDL-2008 功能 章节)