#! /usr/bin/env python3 import os import sys import pathlib from jinja2 import Template, Environment, FileSystemLoader """ Create ini for instruction bases cases Example: python3 flow/generate_instruction_ini.py /opt/sparrow/single_test_case/test_cases_v2_instruction/01_23_2020/testcases_csimhexd """ def get_inputs(this_dir): in_fn = ['seq.bin'] for i in range(1): t_fn = "seq{}.bin".format(i + 1) if pathlib.Path("{}/{}".format(this_dir, t_fn)).exists(): in_fn.append(t_fn) return in_fn def create_one_case_ini(i_dir, template): fn_ini = "{}/run_csim_720.ini".format(i_dir) inputs = get_inputs(i_dir) str_input = ','.join(inputs) size_csv = ','.join(['extend.csv']*len(inputs)) output = template.render(input_nodes=str_input, size_csv=size_csv) with open(fn_ini, "w") as f: f.write(output) def loop_all_cases(dir_base): case_all = list(pathlib.Path(dir_base).glob("*/*")) n_case = len(case_all) dir_lib = os.path.dirname(os.path.realpath(__file__)) file_loader = FileSystemLoader('{}/template'.format(dir_lib)) env = Environment(loader=file_loader) template = env.get_template('run_csim_instruction_based.ini') for i_dir, full_dir in enumerate(case_all): print("{}/{}: {}".format(i_dir, n_case, full_dir)) create_one_case_ini(full_dir, template) if __name__ == "__main__": loop_all_cases(sys.argv[1])