AR# 31649

PCI Express 用 Endpoint Block Plus Wrapper v1.9 - Perl スクリプト turn_off_upper_lanes が GTX (FXT/TXT) で不正になる

説明

キーワード : Simulation, GTX, Downstream port, シミュレーション, Perl, スクリプト, ダウンストリーム ポート

既知の問題 : v1.9、v1.8

供給されているダウンストリーム ポートと共に VHDL x8 コアをシミュレーションするには、コアとの互換性を持たせるため、生成されたシミュレーション モデルを変更する Perl スクリプトが必要です。このスクリプトでは、シミュレーション ネットリストが変更され、上位 4 レーンの SIM_RECEIVER_DETECT_PASS0(1) (GTX4 および GTX6) がオフにされます。

この問題は、GTX_DUAL ではなく GTX_DUAL インスタンスが検索されるために発生します。GTX では SIM_RECEIVER_DETECT_PASS0 ではなく SIM_RECEIVER_DETECT_PASS_0 が検索されます。

次に正しいスクリプトを示します。

メモ : スクリプト内の <file name> には、生成ファイル名を入力する必要があります。この名前は、CORE Generator GUI で入力されたコア名を指します。

ソリューション

# The purpose of this script is to resolve a simulation issue that occurs when
# using the VHDL x8 pcie_blk_plus core in conjunction with the x4 downstream
# port that is provided along with the example testbench. This script hacks the
# x8 endpoint_blk_plus_v1_8fx.vhd core netlist and turns off SIM_RECEIVER_DETECT_PASS0(1)
# for the four upper lanes (GTX4 and GTX6). This is required so that the x4
# downstream port will correctly simulate in conjunction with the x8 core. This
# script is only being used for the x8 core configuration and only for the VHDL
# flow. The output of this file is <core name>..vhd. The original
# source file <core name>..vhd is left unchanged. Customers who intend to
# simulate the x8 VHDL pcie_blk_plus core with their own x8 downtream port should use the
# original source file <core name>.vhd and should not use this script to generate
# a modified core netlist.

$infile = '../../../<core name>.vhd';
$outfile = '../../../<core name>..vhd';
open(INFILE, $infile);
open(OUTFILE, ">$outfile");
@lines = <INFILE>;
close(INFILE);

$GTX4_found = 0;
$GTX6_found = 0;

foreach $_ (@lines)
{
if (/GTD_4_GT_i : GTX_DUAL/) {
print OUTFILE $_;
$GTX4_found = 1;
}
elsif (($GTX4_found == 1) && (/SIM_RECEIVER_DETECT_PASS_0/)) {
s/TRUE/FALSE/;
print OUTFILE $_;
}
elsif (($GTX4_found == 1) && (/SIM_RECEIVER_DETECT_PASS_1/)) {
s/TRUE/FALSE/;
print OUTFILE $_;
}
elsif (($GTX4_found == 1) && (/port map/)) {
print OUTFILE $_;
$GTX4_found = 0;
}
elsif (/GTD_6_GT_i : GTX_DUAL/) {
print OUTFILE $_;
$GTX6_found = 1;
}
elsif (($GTX6_found == 1) && (/SIM_RECEIVER_DETECT_PASS_0/)) {
s/TRUE/FALSE/;
print OUTFILE $_;
}
elsif (($GTX6_found == 1) && (/SIM_RECEIVER_DETECT_PASS_1/)) {
s/TRUE/FALSE/;
print OUTFILE $_;
}
elsif (($GTX6_found == 1) && (/port map/)) {
print OUTFILE $_;
$GTX6_found = 0;
}
else {
print OUTFILE $_;
}

}

close(OUTFILE);


改訂履歴
09/12/2008 - 初期リリース
AR# 31649
日付 12/15/2012
ステータス アクティブ
種類 一般