167 lines
5.1 KiB
Tcsh
167 lines
5.1 KiB
Tcsh
|
|
#!/bin/csh
|
|||
|
|
|
|||
|
|
# Set the directory to be processed (default is the current directory)
|
|||
|
|
set case_dir = "../../case/config"
|
|||
|
|
|
|||
|
|
# If a directory is provided as a parameter, use that directory.
|
|||
|
|
#if ($#argv > 0) then
|
|||
|
|
# set case_dir = $argv
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
# Check if two directories and a log file are provided as parameters.
|
|||
|
|
if ( $#argv != 1 ) then
|
|||
|
|
echo "Usage: $0 SIM"
|
|||
|
|
exit 1
|
|||
|
|
endif
|
|||
|
|
|
|||
|
|
set SIM = $1
|
|||
|
|
|
|||
|
|
# Initialize Counter
|
|||
|
|
set dir_count = 1
|
|||
|
|
|
|||
|
|
# List all directories, and print their sequence numbers.
|
|||
|
|
echo "Listing directories in $case_dir :"
|
|||
|
|
foreach dir (`ls -d $case_dir/*/`)
|
|||
|
|
# set filelist = `basename $file .txt`
|
|||
|
|
echo "$dir_count : $dir"
|
|||
|
|
# echo "$count : $filelist"
|
|||
|
|
@ dir_count++
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
# Obtain the sequence number input by the user from the command line.
|
|||
|
|
echo -n "Enter the start number: "
|
|||
|
|
set start = $<
|
|||
|
|
echo -n "Enter the end number: "
|
|||
|
|
set end = $<
|
|||
|
|
echo -n "Whether save sim files? 1: save; 0: delete."
|
|||
|
|
echo -n "Enter your choice: "
|
|||
|
|
set save = $<
|
|||
|
|
if ("$save" == "") then
|
|||
|
|
set save = 0
|
|||
|
|
endif
|
|||
|
|
|
|||
|
|
make -s comp WAVE=$save
|
|||
|
|
|
|||
|
|
if ( $start < 1 || $end > $dir_count - 1 || $start > $end ) then
|
|||
|
|
echo "Invalid directory range. Please enter a valid range."
|
|||
|
|
exit 1
|
|||
|
|
endif
|
|||
|
|
|
|||
|
|
set selected_dirs = ()
|
|||
|
|
@ dir_index = 1
|
|||
|
|
foreach dir (`ls -d $case_dir/*/`)
|
|||
|
|
if ( $dir_index >= $start && $dir_index <= $end ) then
|
|||
|
|
set selected_dirs = ($selected_dirs $dir)
|
|||
|
|
endif
|
|||
|
|
@ dir_index++
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
foreach folder ($selected_dirs)
|
|||
|
|
echo "Processing folder: $folder"
|
|||
|
|
|
|||
|
|
# 获取文件夹中的所有 TXT 文件
|
|||
|
|
set file_list = ($folder/*.txt)
|
|||
|
|
set txt_count = $#file_list
|
|||
|
|
# 产生对应的文件夹地址
|
|||
|
|
set gather_folder = `echo $folder | sed 's|/config/|/gather/|'`
|
|||
|
|
set result_folder = `echo $folder | sed 's|../../case/config/|result/|g'`
|
|||
|
|
set coverage_folder = `echo $folder | sed 's|../../case/config/|coverage/|g'`
|
|||
|
|
|
|||
|
|
# 打印 result_folder 的值
|
|||
|
|
echo "Result folder: $result_folder"
|
|||
|
|
mkdir -p $gather_folder
|
|||
|
|
# 检查是否有 TXT 文件
|
|||
|
|
if ( $#file_list == 0 ) then
|
|||
|
|
echo "No .txt files found in $folder. Skipping..."
|
|||
|
|
continue
|
|||
|
|
endif
|
|||
|
|
mkdir -p $result_folder
|
|||
|
|
# TB从这些文件中读取case,result等文件的路径
|
|||
|
|
set temp_files = ("case_temp.txt" "data_temp.txt" "result_temp.txt")
|
|||
|
|
# 遍历文件列表,检查是否存在,不存在则创建,这样git就不用追踪这些txt文件了
|
|||
|
|
foreach file ($temp_files)
|
|||
|
|
if ( ! -e $file ) then
|
|||
|
|
touch $file
|
|||
|
|
endif
|
|||
|
|
end
|
|||
|
|
#遍历文件夹中的所有 TXT 文件
|
|||
|
|
@ i = 1
|
|||
|
|
foreach file ($file_list)
|
|||
|
|
# echo "Processing file: $file"
|
|||
|
|
# set file_list = ($case_dir/*.txt)
|
|||
|
|
|
|||
|
|
set rstdir = "./data_$SIM"
|
|||
|
|
mkdir -p $rstdir
|
|||
|
|
|
|||
|
|
while ( $i <= $txt_count )
|
|||
|
|
set filename = `basename $file_list[$i] .txt`
|
|||
|
|
set filen = `basename $file_list[$i]`
|
|||
|
|
set dirname = `dirname $file_list[$i]`
|
|||
|
|
# 拼接目标文件路径
|
|||
|
|
set gather_file = "$gather_folder/$filename.txt"
|
|||
|
|
set result_file = "$result_folder/$filename.txt"
|
|||
|
|
# 创建result等相关文件
|
|||
|
|
set file_lists = ($result_file)
|
|||
|
|
# 遍历文件列表,检查并创建文件
|
|||
|
|
foreach file ($file_lists)
|
|||
|
|
touch $file
|
|||
|
|
echo "" > $file
|
|||
|
|
# 输出创建文件的状态
|
|||
|
|
if ( $status == 0 ) then
|
|||
|
|
echo "File $file created successfully."
|
|||
|
|
else
|
|||
|
|
echo "Failed to create file $file."
|
|||
|
|
endif
|
|||
|
|
end
|
|||
|
|
# Create directories corresponding to filenames
|
|||
|
|
set newdir = "./work_$SIM/$filename"
|
|||
|
|
mkdir -p $newdir
|
|||
|
|
# echo $status
|
|||
|
|
if ( $status == 0 ) then
|
|||
|
|
echo "Directory $newdir created successfully."
|
|||
|
|
else
|
|||
|
|
echo "Failed to create directory $newdir."
|
|||
|
|
endif
|
|||
|
|
# echo "Directory $newdir created."
|
|||
|
|
# Copy the simv file to the corresponding folder.
|
|||
|
|
echo "Copy the simv file to the $newdir folder."
|
|||
|
|
\cp -f ./simv $newdir/
|
|||
|
|
\cp -rf simv.daidir $newdir/
|
|||
|
|
|
|||
|
|
\cp -f ./backup/Makefile $newdir/
|
|||
|
|
\cp -f ./backup/filelist_syn.f $newdir/
|
|||
|
|
\cp -f ./backup/filelist_vlg.f $newdir/
|
|||
|
|
|
|||
|
|
echo "" > ./case_temp.txt
|
|||
|
|
echo "" > ./data_temp.txt
|
|||
|
|
echo "" > ./result_temp.txt
|
|||
|
|
echo " ../../$file_list[$i]" >> case_temp.txt
|
|||
|
|
echo " ../../${result_file}" >> result_temp.txt
|
|||
|
|
set result = "data_$SIM"
|
|||
|
|
|
|||
|
|
set new_dir = `echo "$dirname" | sed 's|../../case/config|'$result'|'`
|
|||
|
|
mkdir -p $new_dir
|
|||
|
|
set result = "$new_dir/$filen"
|
|||
|
|
touch $result
|
|||
|
|
|
|||
|
|
echo "../../$result" >> data_temp.txt
|
|||
|
|
cd $newdir/
|
|||
|
|
# Run "run" command in makefile
|
|||
|
|
./simv -l sim.log -cm line+cond+fsm+tgl+branch -cm_dir ../../$coverage_folder -cm_name $filename "+ENABLE_FSDB=$save"
|
|||
|
|
cd ../../
|
|||
|
|
if ( $save == 0 ) then
|
|||
|
|
rm -rf $newdir
|
|||
|
|
endif
|
|||
|
|
@ i++
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|