kneron_model_converter/vendor/sys_flow/generate_instruction_ini.py
2026-01-28 06:16:04 +00:00

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])