私はFindFile.tclの手順を書いています。 .v、.sv、.vhdのすべてのサブディレクトリがすべてリストに追加されます($ tb_file)。とにかくそれはそれらの部分を追加するだけです。おそらく、すべてのファイルを追加する必要があります。FindFiles:lappend issue
Result: Test_Plan.sv Test_Plan_Copy.sv sim_driver_2.sv Expected Result: Test_Plan.sv Test_Plan_Copy.sv sim_driver_1.sv sim_driver_2.sv
私はアウトして下さいどのような:それは二foreach文に行く前に $tb_file
は、リスト内の1つの要素を欠場します。
マイFindFile.tcl
proc FindFiles { MY_TB_DIR tb_file } {
set pwd [pwd];
# set tb_file $tb_file
set tb_file $tb_file
# puts "after proc call testbench files are $tb_file"
set MY_TB_DIR $MY_TB_DIR
puts "after proc call tb_dir $MY_TB_DIR"
set dir_file [glob -nocomplain -dir $MY_TB_DIR *];
# puts $dir_file
# set dir_file [glob -nocomplain *]
foreach item $dir_file {
set file [file tail $item];
puts $file;
switch -glob -- $file {
*.v {lappend tb_file $file
puts "Append $tb_file"
}
*.sv {lappend tb_file $file
puts "Append $tb_file"
}
*.vhd {lappend tb_file $file
# puts "Test bench file is $tb_file"
}
default {}
};
set tb_file $tb_file;
};
foreach item2 $dir_file {
# recurse - go into the sub directory
if { [file isdirectory $item2] } {
set sub_dir [file join $MY_TB_DIR $item2] ;
puts "\n\n before proc call $tb_file";
puts " \n\n sub_dir $sub_dir";
FindFiles $sub_dir $tb_file;
# FindFiles $sub_dir
}
};
# puts "Testbench are $tb_file"
cd $pwd
}
Plsのアドバイス。本当に感謝します。ありがとう。
アドバイス#1:使用tcllib fileutil :: findByPatternあなたは何をしたいのですか... http://tcllib.sourceforge.net/doc/fileutil.html – schlenk