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

4.21 Virtex-II PAR - 「FATAL_ERROR:Route:basrtsanity.c:169:1.8 - Process will terminate...」というエラー メッセージが表示される

説明

キーワード : basrtsanity, 169, PAR, FX, Y, 配置配線

重要度 : 標準

概要 :
デザインの配線が問題なく実行された後に、次のようなエラー メッセージが表示されます。

"FATAL_ERROR:Route:basrtsanity.c:169:1.8 - Process will terminate. To resolve this error, please consult the Answers Database and other online resources at http://support.xilinx.com";

(メモ : すべての basrtsanity エラーが同じではありません。 このアンサーは、配線終了後にエラーが発生した Virtex-II デザインのみに有効です。 問題のあった個所を見つけるには、次の Perl スクリプトの情報を参照してください。)

エラーが発生するのは、配線データ構造に問題があると配線ツールが判断した場合のみです。 エラーの正確な理由は判別が困難であるため、このように一般的なエラー メッセージが表示されます。

この場合の原因は、MAP のパック ツールのバグです。Y 出力ピンの LUT と F6MUX 間に競合があるスライスがコンフィギュレーションされてしまうためにエラーが発生します。 F6MUX は FX から Y へのルートスルーを使用して、FX ピンから直接届かないロード ピンに接続する必要があります。 この競合のために、Y ピンに信号が 2 つ足りないと配線ツールで判断され、basrtsanity エラーが発生します。

ソリューション

1

この問題は、最新版の 4.2i サービス パックで修正されています。サービス パックは次のサイトから入手できます。
http://support.xilinx.co.jp/support/techsup/sw_updates
この修正は、4.2i サービス パック 3 以降に含まれます。

2

次の Perl スクリプトをコマンド ラインの引数として NCD ファイルと使用すると、FX/Y の競合が存在するかどうかがわかります。 このスクリプトは XDL ユーティリティを使用するため、スクリプトを実行するシェルに含まれる XILINX 変数が有効である必要があります。 このスクリプトを実行すると、競合を含むスライスがすべて識別できます。

問題のロジックが識別された後は、XBLKNM 属性を含まれている LUT に適用してください。これで、競合のある F6MUX のパックを回避できます。 この場合の UCF 構文は次のようになります。

INST "lut_name" XBLKNM = some_name ;

-------------cut here--------------
#!/usr/local/bin/perl5

@ncd_root=split(/\./,$ARGV[0]);
`xdl -nopips -ncd2xdl $ncd_root[0]`;

open (FILE,"$ncd_root[0].xdl");
while(<file>){
chomp;
@fields=split(/\s+/);

# Detect net record
if ($fields[0] eq "net"){
$net_name=$fields[1];
$net="1";
}

# Detect end of net record
if ($fields[1] eq "#" && $fields[2] eq "net"){
$net="0";
}

# Detect FX or F5 pin
if ($net eq "1" && $fields[1] eq "outpin" && $fields[3] eq "FX"){
$comp_name=$fields[2];
$pin_type="$fields[3]";
$bad_load="0";
$conflict="0";

# Search for conflicts
open (FILE2,"$ncd_root[0].xdl");
while(<file2>){
chomp;
@fields2=split(/\s+/);

# Detect Load Type
if ($fields2[0] eq "net" && $fields2[1] eq "$net_name"){
$net2="1";
}

if ($net2 eq "1" && $fields[1] eq "inpin" && $fields[3] ne "FXINA" &&
$fields[3] ne "FXINB"){
$bad_load="1";
}

# Detect Fanout
if ($fields2[1] eq "#" && $fields2[2] eq "net" && $fields2[3] eq
"$net_name"){
$fanout=$fields2[4];
$net2="0";
}

# Detect component site name.
if ($fields2[0] eq "inst" && $fields2[1] eq "$comp_name"){
$site_name=$fields2[6];
}

# Detect conflicting Y pin.
if ($fields2[1] eq "outpin" && $fields2[2] eq "$comp_name" && $pin_type eq
"FX" && $fields2[3] eq "Y") {
$conflict="1";
}

}
if ($conflict eq "1" && ($bad_load eq "1" || $fanout ne "loads=1")) {
print "An FX/Y conflict has been detected at component $comp_name at site
$site_name.\n";
}
close FILE2;

}
}
exit;
AR# 14241
日付 08/20/2003
ステータス アーカイブ
種類 一般
このページをブックマークに追加