From 3c94a7b9f1a383fc61b12338d540f6d2205804b4 Mon Sep 17 00:00:00 2001 From: Piotr Binkowski Date: Wed, 23 Oct 2019 17:31:24 +0200 Subject: [PATCH] tools: add script for automatic conda tool revision tests Signed-off-by: Piotr Binkowski --- tools/compare-conda.py | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 tools/compare-conda.py diff --git a/tools/compare-conda.py b/tools/compare-conda.py new file mode 100755 index 0000000000000..be6793f7f7cdc --- /dev/null +++ b/tools/compare-conda.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 + +import os +import csv +import json +import argparse +import subprocess + +parser = argparse.ArgumentParser() + +parser.add_argument("count") + +args = parser.parse_args() + +tools = [ + 'odin_ii', 'tree-sitter-verilog', 'zachjs-sv2v', 'verilator', 'iverilog', + 'yosys', 'slang' +] + +packages = {} + +versions = {} + +for tool in tools: + cmd = 'conda search {} -c symbiflow --json'.format(tool) + proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) + log, _ = proc.communicate() + packages[tool] = json.loads(log) + +for p in packages: + versions[p] = [] + for r in packages[p][p]: + if r['version'] not in versions[p]: + versions[p].append(r['version']) + +os.system('rm -rf ./tests/generated') +os.system('make generate-tests') + +last_ver = {} + +used_versions = [] + +for i in range(1, int(args.count) + 1): + os.system('rm -rf ./out') + + for tool in tools: + try: + ver = versions[tool][-i] + except IndexError: + ver = last_ver[tool] + + last_ver[tool] = ver + + os.system('conda install -y -c symbiflow {}={}'.format(tool, ver)) + + print('{}={} installed'.format(tool, ver)) + + used_versions.append(last_ver.copy()) + + os.system('make -j12') + os.system('cp ./out/report/report.csv report-{}.csv'.format(i)) + +with open('out.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(tools) + for ver in used_versions: + row = [] + for v in ver: + row.append(ver[v]) + + writer.writerow(row)