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

Vivado - delete_run コマンドのある Tcl ループが原因でプログラム異常停止になる (EXCEPTION_ ACCESS_ VIOLATION)

説明

プロジェクトを作成し、合成を実行し、インプリメンテーションを実行するためのスクリプトがあります。このスクリプトには、既存 run を消去するための次のようなループがあります。

foreach run_name $previous_runs {
delete_run -quiet ${run_name}
  file delete -force ${run_name}
}

スクリプトを実行すると、エラーが発生して次のようなエラー メッセージが表示されます。

Abnormal program termination (EXCEPTION_ACCESS_VIOLATION)

この問題の回避策を教えてください。

ソリューション

この使用例では、前回の run が Tcl スクリプトによって削除されるので、ヌル ポインターとなり、ツールがクラッシュしてしまいます。

2 番目の反復は次のとおりです。

delete_run
foreach run_name $previous_runs {
    delete_run -quiet ${run_name}
    file delete -force ${run_name}
}

このスクリプトの previous_runs にはオブジェクトの synth_1impl_1 が含まれています。つまり、最初の delete_runsynth_1 が削除されるため、impl_1 も削除されてしまうことになります。 2 番目の反復で、run_name は不正ポインターとなり、ツールがクラッシュします。

目的の動作は、次のようにスクリプトを記述すると得られます。

set previous_syn_runs [get_runs -filter {IS_SYNTHESIS==1}] foreach syn_run_name $previous_syn_runs {
    #Check that the run still exists and was not deleted as a by product
    #of deleting another run.
    if {[lsearch [get_runs] ${syn_run_name}] != -1} {
        delete_run -quiet ${syn_run_name}
        file delete -force ${syn_run_name}
    }
}

また、reset_run を実行して run ディレクトリを消去することもできますが、run 名は GUI に残ります。

注記 : Vivado Design Suite 2013.4 では、delete_run コマンドが delete_runs に変更されています。Vivado 2013.4 およびそれ以降のツール バージョンでは、すべての run を消去するには detele_runs $all_runs の実行を推奨します。

AR# 51444
作成日 10/19/2012
最終更新日 01/15/2014
ステータス アクティブ
タイプ 一般
ツール
  • Vivado Design Suite