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# 31649

Endpoint Block Plus Wrapper v1.9 for PCI Express - turn_off_upper_lanes Perl Script incorrect for GTX (FXT/TXT)

Description

Known Issue: v1.9, v1.8

For VHDL x8 Core simulation with the provided downstream port, a perl script is required to modify the generated simulation model to make it compatible with the provided core. The script modifies the simulation netlist and turns off SIM_RECEIVER_DETECT_PASS0(1) for the four upper lanes (GTX4 and GTX6).

The problem is that it is looking for GTP_DUAL instances instead of GTX_DUAL instances; and for GTX, it is SIM_RECEIVER_DETECT_PASS_0 instead of SIM_RECEIVER_DETECT_PASS0.

The correct script is below.

NOTE: You must put the generated file name where it says "<file name>". This is the name of the core entered in the CORE Generator GUI.

Solution

# 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);

Revision History

09/12/2008 - Initial Release

AR# 31649
Date Created 09/12/2008
Last Updated 12/15/2012
Status Active
Type General Article