2012.4 Vivado-Simulation  –  XSIM波形窗口中记录的数组聚合显示不正确-Xilinx-AMD社区-FPGA CPLD-ChipDebug

2012.4 Vivado-Simulation – XSIM波形窗口中记录的数组聚合显示不正确

描述

当我尝试将一组记录分配给一个端口时,该信号的值在波形窗口中没有正确显示。但是,它的值在对象窗口中可以正确显示。以下是相关代码的一部分:

类型AXIS32_DAT_STRUCT是记录
TVALID:std_logic;
TDATA:std_logic_vector(31 downto 0);
TLAST:std_logic;
TUSER:std_logic_vector(3 downto 0);
结束记录;

类型AXIS32_DAT_STRUCT_ARRAY是AXIS32_DAT_STRUCT的ARRAY(自然范围<>);

信号TEST_VECTOR:AXIS32_DAT_STRUCT_ARRAY(2 downto 0):=(
0 =>(
TVALID> ‘1’,
TDATA => X “12345678”,
TLAST> ‘1’,
TUSER => “1111”),
1 =>(
TVALID> ‘1’,
TDATA => X “12345678”,
TLAST> ‘1’,
TUSER => “1111”),
2 =>(
TVALID> ‘1’,
TDATA => X “12345678”,
TLAST> ‘1’,
TUSER => “1111”)
);

信号y:AXIS32_DAT_STRUCT_ARRAY(1 downto 0);

y <= TEST_VECTOR(1 downto 0);

FOO0:FOO PORT MAP(
– 输入界面
x => TEST_VECTOR(1 downto 0)
);

结束行为;

信号’y’在对象窗口中也不可见。这是什么原因?

信号’y’不用于设计的任何部分,因此在仿真期间进行优化。要禁用此优化,请在仿真设置的“更多编译选项”中写入开关–O0。

在上面的代码中,信号’y.TDATA’的值被正确显示(即,X’12345678),而’x.TDATA’的值在波形窗口中被错误地显示为(X’48d159e3)。此问题与其他记录成员(即x.TVALID,x.TLAST,x.TUSER)相同。

上面的代码在ISIM中正确仿真。附上ISIM和XSIM的屏幕截图以及代码以供参考。

在XSIM中解决此问题的方法是将记录数组的聚合分配给中间信号,然后将此信号连接到正式端口,如下所示:

y <= TEST_VECTOR(1 downto 0);

FOO0:FOO PORT MAP(
x => y
);

结束行为;

附件

相关附件

名称 文件大小 文件类型
chFPGA.vhd 2 KB VHD
XSIM_record.png 72 KB PNG
ISIM_record_corectdisplay.png 137 KB PNG
请登录后发表评论

    没有回复内容