lin-win-share/DA4008_V1.2/sim/chip_top/regress.csh

167 lines
5.1 KiB
Tcsh
Raw Normal View History

2026-03-13 14:32:42 +08:00
#!/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