53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
#! /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])
|