こちらは本体。入力データと出力データそれぞれ、選ばれた時用と選ばれてない時用の2種類、計4種類(2×2)を準備する。
その後、1つのテストの設定にする。
#test.py
import openpyxl
from common_function import get_position_from_ws
from common_function import get_port_data_list
from common_function import peer_to_peer
hsize = 320
vsize = 240
base_port_row =0
base_port_column =0
in_select_list = []
in_no_select_list = []
in_color_list = []
out_select_list = []
out_no_select_list = []
out_color_list = []
wb = openpyxl.load_workbook(filename = 'sample_1.xlsx',data_only=True)
ws = wb.active
base_port_row,base_port_column = get_position_from_ws(ws,target_chr="port")
# [port name,sel_number,color,file name, bit width,reserve,hsize,vsize]
# in_select_list : [port_name,sel_number,1, file_name, bit_width,1, hsize,vsize]
# in_no_select_list : [port_name,sel_number,0, "empty.bin",bit_width,1, 0, 0 ]
in_select_list, in_no_select_list = get_port_data_list("in", ws,base_port_row,base_port_column,hsize,vsize)
# [port name,reg name,color,file name,bit width,reserve,hsize,vsize]
# out_select_list : [port_name,reg_name,1, file_name,bit_width,1, hsize,vsize]
# out_no_select_list : [port_name,reg_name,0, file_name,bit_width,1, 0, 0 ]
out_select_list, out_no_select_list = get_port_data_list("out",ws,base_port_row,base_port_column,hsize,vsize)
#peer to peer
data_testlist,color_testlist = peer_to_peer(ws,base_port_row,base_port_column,in_no_select_list,in_select_list,out_no_select_list,out_select_list)
print (data_testlist)
print (color_testlist)
#common_function.py
def to_bit_width(char_bit_width_raw):
data = char_bit_width_raw.replace('[','').replace(']','')
f_pos = data.find(':')
return int(data[:f_pos])+1
def get_position_from_ws(ws,target_chr):
for test in ws:
for data in test:
if data.value == str(target_chr) :
return data.row, data.column
def get_port_data_list(port_is,ws,base_port_row,base_port_column,hsize,vsize):
select_list = []
no_select_list = []
if (port_is == "in"):
for i in range(base_port_row+1,ws.max_row+1):
sel_number = ws.cell(i,base_port_column-2).value
bit_width = to_bit_width(ws.cell(i,base_port_column-1).value)
port_name = ws.cell(i,base_port_column-0).value
file_name = port_name + ".bin"
#port name,sel_number,color,file name, bit width,reserve,hsize,vsize
select = [port_name,sel_number,1, file_name, bit_width,1, hsize,vsize]
no_select = [port_name,sel_number,0, "empty.bin",bit_width,1, 0, 0 ]
select_list.append (select)
no_select_list.append (no_select)
if (port_is == "out"):
for i in range(base_port_column+1,ws.max_column+1):
reg_name = ws.cell(base_port_row-2,i).value
bit_width = to_bit_width(ws.cell(base_port_row-1,i).value)
port_name = ws.cell(base_port_row-0,i).value
file_name = port_name + ".bin"
#port name,reg name,color,file name,bit width,reserve,hsize,vsize
select = [port_name,reg_name,1, file_name,bit_width,1, hsize,vsize]
no_select = [port_name,reg_name,0, file_name,bit_width,1, 0, 0 ]
select_list.append (select)
no_select_list.append (no_select)
return select_list, no_select_list
def peer_to_peer(ws,base_port_row, base_port_column, in_no_select_list, in_select_list, out_no_select_list, out_select_list):
data_testlist = []
color_testlist = []
test_num = 0
in_num = 0
for i in range(base_port_row+1,ws.max_row):
out_num = 0
temp_in_list = in_no_select_list.copy()
temp_in_list[in_num] = in_select_list[in_num]
in_color_list = len(temp_in_list) * [len(temp_in_list[0])* [0]]
in_color_list[in_num] = [0,0,0,1,1]
sel_number = temp_in_list[in_num][1]
for j in range(base_port_column+1,ws.max_column):
if ws.cell(i,j).value is not None:
temp_out_list = out_no_select_list.copy()
temp_out_list[out_num] = out_select_list[out_num]
out_color_list = len(temp_out_list) * [len(temp_out_list[0])* [0]]
out_color_list[out_num] = [0,0,0,1,1]
temp_reg_list = len(temp_out_list) * [0]
temp_reg_list[out_num] = sel_number
reg_color_list = len(temp_reg_list) * [0]
reg_color_list[out_num] = 1
in_name_for_testlist = [data[0] for data in temp_in_list ]
out_name_for_testlist = [data[0] for data in temp_out_list]
reg_name_for_testlist = [data[1] for data in temp_out_list]
in_data_for_testlist = [data for test in temp_in_list for data in test[3:8]]
out_data_for_testlist = [data for test in temp_out_list for data in test[3:8]]
reg_data_for_testlist = temp_reg_list
data_testlist.append(in_data_for_testlist + out_data_for_testlist + [""] + reg_data_for_testlist)
in_color_for_testlist = [x for color in in_color_list for x in color]
out_color_for_testlist = [x for color in out_color_list for x in color]
reg_color_for_testlist = reg_color_list
color_testlist.append(in_color_for_testlist + out_color_for_testlist + [""] + reg_color_for_testlist)
test_num += 1
out_num += 1
return data_testlist, color_testlist