****************************************************************
* benchmark(cnf) *
****************************************************************
(1)文件名-------------------------------------------c FILE: aim-100-1_6-yes1-1.cnf
(2) 介绍文字
(3) 变量个数和子句个数--------------------------------p cnf 100 160
(4)子句----------------------------------------------11 13 27 0
****************************************************************
* C++转换器 *
****************************************************************
//每个模块之间随机连接
//把1到50的变量随即排序,根据var的规模选择vector?
void get_rand(int a[],int num)
{
srand((unsigned)time(NULL));//用系统时间初始化,且至多在rand()之间用一次
for(int i=0;i<num;i++)
{
产生随机数c,a[]中无,放入;有重新产
}
}
//每条链路之间随机连接
void get_rand1(int a[],int num)
{
srand((unsigned)time(NULL));
每一个变量初始值随机
}
//1.获取每个测试用例的字句数和变量数
bool get_var_clause_num( string cnf_file_name, int &var_num, int &clause_num)
{
ifstream cnf_file(cnf_file_name.c_str());//?
}
//2.读取每行字句数,处理,转换成verilog,
bool build_cnf( string cnf_file_name, int var_num, int clause_num )
{
(1)建写文件cnf2------------------------------------ofstream cnf2verilog(result_file_name.c_str());
(2)实现随机----------------------------------------get_rand(rand,var_num);
get_rand1(rand1,var_num);
(3)写固有模块
(4)逻辑处理
//逻辑处理
for(int i=1;i<=var_num;i++)
{
while(!cnf_file.eof())
{
处理到子句位置
}
while(!cnf_file.eof())
{
(1) 存子句中的变量到aa1
(2) 判断当前子句是否有 i 或着 -i, 若i和-i都存在,重言式不需要处理
(3) 只存在 i, 写 i 的蕴涵推理
(4) 只存在 i, 写 -i 的蕴涵推理
}
按照存在 i 或者 -i 的子句个数写固有逻辑
}
}
cnf2verilog<<"wire Gclear;"<<endl;???
cnf2verilog<<"fsm"<<rand1[1]<<???
always,begin,???
int main(int argc, char** argv)//argc 两个表示./a.out自身 **.cnf
{
if((argc<2) | (argc>2))
{
std::cout<<"usage:\tcnf2verilog cnf_file"<<endl;
exit(0);
}
int var_name,cause_num;
if( !get_var_clause_num( argv[1],var_name,cause_num) )
{
exit(0);
}
if( !build_cnf( argv[1],var_name,cause_num) )
{
exit(0);//???
}
return 0;
}
sum=10
for dir2 in `find ./*.cnf`
do
for ((i=1;i<=10;i++))
do
sleep 1s
./a.out $dir2
mkdir $sum
mv *.v top.v
mv *.v ./$sum
cp $dir2 ./$sum
sum=$(($sum+1))
echo $sum
done
done
for dir in `find ./* -maxdepth 1 -type d`
do
cp -f ./xdc/*.tcl ./xdc/*.txt ./xdc/*.xdc ./xdc/*.lnk $dir
done
find *.cnf >0dir.txt
cat -n 0dir.txt >00dir.txt
rm 0dir.txt
mkdir 0
cp 00dir.txt 0
cp *.cnf 0