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
ステータス アーカイブ
種類 一般
People Also Viewed