VHDL-2008阵列的分层信号访问

VHDL-2008阵列的分层信号访问,vhdl,Vhdl,我试图通过VHDL-2008分层名称访问阵列。我可以访问整个数组,但当我尝试访问单个数组元素时,会出现编译错误: ACOM: Error: COMP96_0015: tb.vhd : (13, 43): ':' expected. 是否可以访问单个数组元素?正确的语法是什么 这是我的密码: DUT library ieee; use ieee.std_logic_1164.all; entity dut is end entity dut; architecture rtl of dut

我试图通过VHDL-2008分层名称访问阵列。我可以访问整个数组,但当我尝试访问单个数组元素时,会出现编译错误:

ACOM: Error: COMP96_0015: tb.vhd : (13, 43): ':' expected.
是否可以访问单个数组元素?正确的语法是什么

这是我的密码:

DUT

library ieee;
use ieee.std_logic_1164.all;

entity dut is
end entity dut;

architecture rtl of dut is
    type t_data is array (natural range <>) of std_logic_vector(7 downto 0);
    signal s_data   : t_data(0 to 15)   := (others=>(others=>'1'));
begin
    --don't care
end architecture rtl;
ieee库;
使用ieee.std_logic_1164.all;
实体dut是
终端实体dut;
dut的rtl体系结构是
类型t_数据是标准_逻辑_向量(7到0)的数组(自然范围);
信号s_数据:t_数据(0到15):=(其他=>(其他=>'1');
开始
--不在乎
终端架构rtl;
TB

library ieee;
use ieee.std_logic_1164.all;

entity tb is
end entity tb;

architecture sim of tb is    
    signal s_data_0 : std_logic_vector(7 downto 0);
begin
    s_data_0    <=  << signal i_dut.s_data(0) : std_logic_vector(7 downto 0) >>;

    i_dut : entity work.dut;
end architecture sim;
ieee库;
使用ieee.std_logic_1164.all;
实体结核是
最终实体结核病;
tb-is的sim体系结构
信号s_数据_0:std_逻辑_向量(7到0);
开始
s_数据_0;
i_dut:entity work.dut;
终端架构sim;

来自另一个模拟器的错误消息解释了问题:

**错误:外部索引。vhd(23):(vcom-1307)外部名称必须表示整个对象,而不是对象的切片或索引名称。
verror讲述了一个精彩的故事:“vcom消息#1307:外部名称必须表示整个目标对象。形成外部对象的切片名称或索引名称时,离散范围或索引表达式必须出现在结束表示该对象的外部名称的结束符“>>”之后。[文件:IEEE Std 1076-2008 VHDL LRM-8.7外部名称]”。在这种情况下,索引名称(8.4)的前缀(8.1)是一个名称(8.1),可以包括外部名称(8.7)。片名称(8.5)的前缀相同。这就回答了两个OP问题。是否可以访问单个数组元素?是的。正确的语法是什么?从外部路径名中删除索引,修复外部名称中的类型(包括类型t_数据声明的可见性),并将索引表达式
(0)
放在>>之后。