问题描述
已知问题:v1.9,v1.8
对于使用提供的下游端口的VHDL x8 Core仿真,需要perl脚本来修改生成的仿真模型,以使其与提供的核心兼容。该脚本修改仿真网表并关闭四个上部通道(GTX4和GTX6)的SIM_RECEIVER_DETECT_PASS0(1)。
问题是它正在寻找GTP_DUAL实例而不是GTX_DUAL实例;对于GTX,它是SIM_RECEIVER_DETECT_PASS_0而不是SIM_RECEIVER_DETECT_PASS0。
正确的脚本如下。
注意:您必须将生成的文件名放在“<文件名>”的位置。这是在CORE Generator GUI中输入的核心名称。
解决/修复方法
#此脚本的目的是解决在何时发生的仿真问题
#使用VHDL x8 pcie_blk_plus内核和x4下游
与示例测试平台一起提供的#port。这个脚本很糟糕
#x8 endpoint_blk_plus_v1_8fx.vhd核心网表并关闭SIM_RECEIVER_DETECT_PASS0(1)
#为四个上层车道(GTX4和GTX6)。这是必需的,以便x4
#downder port将与x8核心一起正确仿真。这个
#scrip仅用于x8核心配置,仅用于VHDL
# 流。该文件的输出是<core name> .. vhd。原本的
#source文件<核心名称> .. vhd保持不变。打算的客户
#仿真x8 VHDL pcie_blk_plus核心用他们自己的x8 downtream端口应该使用
#original source file <core name> .vhd并且不应该使用此脚本来生成
#一个修改过的核心网表。
$ infile =’../../../ <核心名称> .vhd’;
$ outfile =’../../../ <核心名称> .. vhd’;
打开(INFILE,$ infile);
打开(OUTFILE,“> $ outfile”);
@lines = <INFILE>;
关闭(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;
}
其他{
print OUTFILE $ _;
}
}
关闭(OUTFILE);
修订记录
2008年9月9日 – 初步发布
没有回复内容