外部プログラムを Tcl 内から呼び出して、戻された結果を取り込むことができます。外部プログラムまたはコマンドを呼び出す場合、未知の Tcl コマンドを OS (Windows/Linux) に送信して実行する自動メカニズムもありますが、常に手動で指定することをお勧めします。これには、exec
コマンドを使用します。
スクリプトがすべてのホスト OS (Windows または Linux) および Vivado モード (Tcl モード、GUI、またはバッチ モード) で動作するようにするためには、exec
コマンドを使用して結果が同じになるようにしておくことが重要です。
次の例 (Linux) では、run
コマンドを呼び出して、ls
ディレクトリの下のすべてのファイルとディレクトリのリストを取得しています。
vivado% set result [exec ls]
vivado% foreach element [split $result \n] { ... }
Windows での同等の例は次のとおりです。
vivado% set result [exec cmd /c dir /B]
vivado% foreach element [split $result \n] { ... }
exec
を付けずに ls
コマンドを呼び出すと、一部の Vivado モードでスクリプトがエラーになる可能性があるので、注意してください (Vivado IDE (統合設計環境)/Tcl モード vs バッチ モードを参照)。
次の例では、Perl スクリプトを実行して、その結果を Tcl 環境に送信しています。exec
コマンドで /bin/perl
(ユーザー環境と一致すると想定) を呼び出すことで、Perl スクリプト自体が呼び出されます。
vivado% set result [exec /bin/perl <path_to>/my_perl_script.pl]