UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 54914

2012.4 Vivado シミュレーション - XSIM の波形ウィンドウにレコードが間違って表示される

説明

ポートにまとまったレコードを割り当てようとすると、この信号の値が波形ウィンドウに正しく表示されません。しかし、その値はオブジェクト ウィンドウに正しく表示されています。問題のコードの一部は次のようになっています。

type AXIS32_DAT_STRUCT is record
  TVALID : std_logic;
  TDATA  : std_logic_vector(31 downto 0); 
  TLAST  : std_logic; 
  TUSER  : std_logic_vector(3 downto 0);
end record;

type AXIS32_DAT_STRUCT_ARRAY is ARRAY (natural range <>) of AXIS32_DAT_STRUCT;

signal 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")
);
 
signal y: AXIS32_DAT_STRUCT_ARRAY(1 downto 0);
 
y<=TEST_VECTOR(1 downto 0);
 
FOO0: FOO PORT MAP(
  -- Input interface
  x=> TEST_VECTOR(1 downto 0)
);

end Behavioral;

信号 y もオブジェクト ウィンドウには表示されていません。これはなぜですか。

ソリューション

信号 y はデザインのどこにも使用されていないため、シミュレーション中に最適化されます。この最適化をオフにするには、シミュレーション設定の [more compilation options] で --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 
);

end Behavioral;

添付ファイル

関連添付ファイル

タイトル サイズ File Type
chFPGA.vhd 2 KB VHD
XSIM_record.png 72 KB PNG
ISIM_record_corectdisplay.png 137 KB PNG
AR# 54914
作成日 03/14/2013
最終更新日 04/18/2013
ステータス アクティブ
タイプ 一般
デバイス
  • FPGA デバイス ファミリ
ツール
  • Vivado - 2012.4