From 061c66e888458c4c1eeacd955d10a594630431ee Mon Sep 17 00:00:00 2001 From: YuhangQ Date: Thu, 9 Mar 2023 05:45:39 +0000 Subject: [PATCH] =?UTF-8?q?python=E8=84=9A=E6=9C=AC=E5=8F=AA=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E4=B8=8D=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- atpg | Bin 74736 -> 77680 bytes check.log | 35 +++++++++++++++++++++++-------- exp_result/ATPG-LS_b10.bench.txt | 2 +- exp_result/ATPG-LS_b11.bench.txt | 2 +- ls.cpp | 2 +- report/atpg-ls.txt | 30 ++++++++++++++++++++++++++ run_exp.py | 8 ++++++- 7 files changed, 66 insertions(+), 13 deletions(-) create mode 100644 report/atpg-ls.txt diff --git a/atpg b/atpg index 0d5a10dd79a366872fafed1a7d298009b17e71ef..771043cae3b5eb04ba0718c615693c90cf92dc25 100755 GIT binary patch literal 77680 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 diff --git a/check.log b/check.log index b73880f..c2859ca 100644 --- a/check.log +++ b/check.log @@ -1,9 +1,26 @@ -[1/26] 任务 ./benchmark/c17.bench -[2/26] 任务 ./benchmark/b06.bench -[3/26] 任务 ./benchmark/b01.bench -[4/26] 任务 ./benchmark/b03.bench -[5/26] 任务 ./benchmark/b10.bench -[6/26] 任务 ./benchmark/b09.bench -[7/26] 任务 ./benchmark/b08.bench -[8/26] 任务 ./benchmark/c880.bench -[9/26] 任务 ./benchmark/c499.bench +[1/26] 任务 ./benchmark/b22.bench +[2/26] 任务 ./benchmark/b17.bench +[3/26] 任务 ./benchmark/c5315.bench +[4/26] 任务 ./benchmark/b13.bench +[5/26] 任务 ./benchmark/b03.bench +[6/26] 任务 ./benchmark/c880.bench +[7/26] 任务 ./benchmark/b10.bench +[8/26] 任务 ./benchmark/c6288.bench +[9/26] 任务 ./benchmark/c1355.bench +[10/26] 任务 ./benchmark/b20.bench +[11/26] 任务 ./benchmark/c17.bench +[12/26] 任务 ./benchmark/b07.bench +[13/26] 任务 ./benchmark/b01.bench +[14/26] 任务 ./benchmark/c432.bench +[15/26] 任务 ./benchmark/b11.bench +[16/26] 任务 ./benchmark/b08.bench +[17/26] 任务 ./benchmark/c3540.bench +[18/26] 任务 ./benchmark/c2670.bench +[19/26] 任务 ./benchmark/b09.bench +[20/26] 任务 ./benchmark/c7552.bench +[21/26] 任务 ./benchmark/b04.bench +[22/26] 任务 ./benchmark/b12.bench +[23/26] 任务 ./benchmark/b21.bench +[24/26] 任务 ./benchmark/b06.bench +[25/26] 任务 ./benchmark/c499.bench +[26/26] 任务 ./benchmark/c1908.bench diff --git a/exp_result/ATPG-LS_b10.bench.txt b/exp_result/ATPG-LS_b10.bench.txt index 5e0327e..0b54168 100644 --- a/exp_result/ATPG-LS_b10.bench.txt +++ b/exp_result/ATPG-LS_b10.bench.txt @@ -425,7 +425,7 @@ checking valid circuit ... result: 1. [SOL] flip: 0, stem: 0, fault:51. flip_cnt: 0, stem_cnt: 91, fault_cnt:108 coverage: 100.000% pattern: 33 before: 4 now: 0 checking valid circuit ... result: 1. - + real 0m36.403s user 0m36.398s sys 0m0.000s diff --git a/exp_result/ATPG-LS_b11.bench.txt b/exp_result/ATPG-LS_b11.bench.txt index 9bdd5cb..e644aaf 100644 --- a/exp_result/ATPG-LS_b11.bench.txt +++ b/exp_result/ATPG-LS_b11.bench.txt @@ -1294,4 +1294,4 @@ coverage: 95.688% pattern: 44 before: 37 now: 37 checking valid circuit ... result: 1. [SOL] flip: 0, stem: 0, fault:0. flip_cnt: 0, stem_cnt: 214, fault_cnt:162 coverage: 95.688% pattern: 44 before: 37 now: 37 -checking valid circuit ... result: 1. +checking valid circuit ... result: 1. diff --git a/ls.cpp b/ls.cpp index 0b53b26..00f5f08 100644 --- a/ls.cpp +++ b/ls.cpp @@ -109,7 +109,7 @@ bool Circuit::local_search(std::unordered_set &faults) { CC[suc->id] = 1; } - //printf("[UP] flip: %lld, stem: %lld, fault:%lld. flip_cnt: %lld, stem_cnt: %lld, fault_cnt:%lld\n", flip_total_weight, stem_total_weight, fault_total_weight, flip_total_cnt, stem_total_cnt, fault_total_cnt); + printf("[UP] flip: %lld, stem: %lld, fault:%lld. flip_cnt: %lld, stem_cnt: %lld, fault_cnt:%lld\n", flip_total_weight, stem_total_weight, fault_total_weight, flip_total_cnt, stem_total_cnt, fault_total_cnt); } } diff --git a/report/atpg-ls.txt b/report/atpg-ls.txt new file mode 100644 index 0000000..31f3b05 --- /dev/null +++ b/report/atpg-ls.txt @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------------------------------- +| data | fault coverage(ATPG-LS) | time(ATPG-LS) | cube(ATPG-LS) | pattern(ATPG-LS) | +| ----------------------- | ----------------------- | ------------- | ------------- | ---------------- | +| ./benchmark/c6288.bench | 99.653 | -*- | 27 | 27 | +| ./benchmark/c17.bench | 100.000 | -*- | 4 | 4 | +| ./benchmark/b17.bench | ERROR | -*- | ERROR | ERROR | +| ./benchmark/b22.bench | ERROR | -*- | ERROR | ERROR | +| ./benchmark/b13.bench | 95.652 | -*- | 35 | 35 | +| ./benchmark/c880.bench | 100.000 | -*- | 45 | 45 | +| ./benchmark/b07.bench | 90.453 | -*- | 26 | 26 | +| ./benchmark/c432.bench | 99.235 | -*- | 29 | 29 | +| ./benchmark/c5315.bench | ERROR | -*- | ERROR | ERROR | +| ./benchmark/b20.bench | ERROR | -*- | ERROR | ERROR | +| ./benchmark/c1355.bench | 99.744 | -*- | 103 | 103 | +| ./benchmark/b01.bench | 100.000 | -*- | 15 | 15 | +| ./benchmark/b10.bench | 100.000 | -*- | 33 | 33 | +| ./benchmark/b03.bench | 100.000 | -*- | 18 | 18 | +| ./benchmark/b11.bench | 95.688 | -*- | 44 | 44 | +| ./benchmark/b08.bench | 100.000 | -*- | 34 | 34 | +| ./benchmark/c3540.bench | 90.169 | -*- | 96 | 96 | +| ./benchmark/c2670.bench | 82.609 | -*- | 53 | 53 | +| ./benchmark/b09.bench | 100.000 | -*- | 20 | 20 | +| ./benchmark/c7552.bench | 95.133 | -*- | 103 | 103 | +| ./benchmark/b04.bench | 73.424 | -*- | 15 | 15 | +| ./benchmark/b12.bench | ERROR | -*- | ERROR | ERROR | +| ./benchmark/b21.bench | ERROR | -*- | ERROR | ERROR | +| ./benchmark/b06.bench | 100.000 | -*- | 13 | 13 | +| ./benchmark/c499.bench | 100.000 | -*- | 55 | 55 | +| ./benchmark/c1908.bench | 99.179 | -*- | 91 | 91 | +-------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/run_exp.py b/run_exp.py index 018cbad..08b62a2 100644 --- a/run_exp.py +++ b/run_exp.py @@ -60,6 +60,10 @@ class ATPGLS: print("anal:" + output_file) content = open(output_file, "r").read() p1 = re.compile(r'coverage\s*:\s*(\d+\.\d+)\s*%', re.S) + + if len(p1.findall(content)) == 0: + return("ERROR", "ERROR", "ERROR") + coverage = p1.findall(content)[-1] p2 = re.compile(r'pattern\s*:\s*(\d+)', re.S) cube = p2.findall(content)[-1] @@ -182,7 +186,9 @@ def multiprocess_run_solver(solver, input_file): (path, filename) = os.path.split(input_file) out_file = os.path.join(res_dir,"%s_%s.txt" % (solver.name, filename)) - (status, time) = solver.run(input_file, out_file, TIMEOUT) + #(status, time) = solver.run(input_file, out_file, TIMEOUT) + time = "-*-" + status = ExitStatus.normal fault = "-*-" cube = "-*-"