python吃excel文件生成测试配置task

今天写了一个python的脚本,作用是吃进excel中的寄存器列表,生成设置寄存器值得指令task。我觉得这个还满有用的,以后可以用它来生成仿真测试的setup激励了。分享给大家

···

#!/usr/bin/python3

#1.利用import导入第三方库openpyxl

import os;

import openpyxl;

from openpyxl import load_workbook

#2.打开文件

#file_location = "/mnt/hgfs/share/python/test1.xlsx";

#file_location = "D:/share/test1.xlsx";

file_location = "D:/share/python/93010E_Register_list.xlsx";

#3.利用load_workbook载入表格的位置,加载表格

excel = load_workbook(file_location);

#4.通过get_sheet_by_name方法,来去读表格

table = excel.get_sheet_by_name('Summary');

#global i2c_page;

i2c_page ='FF';#给i2c_page设置初始值

# 处理行的page及命令

def page_set(page,dev_addr):

    str='';

    global i2c_page;

    if(page!=i2c_page):

        print(page);

     #切换page

        str='\t' + '//change i2c page register\n';

        str=str+'\t' + 'u_pmb_mstr_send_cmd_one_byte(7\'h'+dev_addr+',8\'h00'+',8\'h'+page+');\n';

        i2c_page = page;

    return str;

# 产生写寄存器的命令文本

def cmd_line_proc(dev_addr,page,cmd,reg_value,length,reg_name):

    ## print register name

    str=page_set(page,dev_addr);

    str=str+'\t' + '//'+reg_name+'\n';

    if(length=='0'):

        str =str +'\t'+'u_pmb_mstr_send_cmd_no_byte(7\'h'+dev_addr+',8\'h'+cmd+';\n';

    elif(length=='1'):

        str =str +'\t'+'u_pmb_mstr_send_cmd_one_byte(7\'h'+dev_addr+',8\'h'+cmd+',16\'h'+reg_value+');\n';

    elif(length=='2'):

        str =str +'\t'+'u_pmb_mstr_send_cmd_two_byte(7\'h'+dev_addr+',8\'h'+cmd+',16\'h'+reg_value+');\n';

    else:

        str ='\n';

    return str;

#5.通过指定行和列来获取具体单元格的值

def proc_cmds(n):

    line='';

    dev_addr = table.cell(row=n,column=2).value;

    page = table.cell(row=n,column=3).value;

    cmd  = table.cell(row=n,column=4).value;

    reg_value = table.cell(row=n,column=5).value;

    length = table.cell(row=n,column=6).value;

    reg_name = table.cell(row=n,column=7).value;

    print(dev_addr,page,cmd,reg_value,length);

    if(dev_addr==None):

        line='';

    else:

        line=cmd_line_proc(dev_addr,page,cmd,reg_value,length,reg_name);

    return line;

fo = open("task.v", mode='w+', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

print ("文件名: ", fo.name)

print ("是否已关闭 : ", fo.closed)

print ("访问模式 : ", fo.mode);

print ("第一次打开文件,打印读出的内容");

str = fo.read();

print (str);

fo.write( "task register_setting;\n" )

b = 'begin\n';

fo.write( b );

print(i2c_page);

for n in range(2, 300):

    c=proc_cmds(n);

    ## if present columm is empty, then no more commands need to be read

    if(c==''):

        break;

    else:

        fo.write( c );

fo.write("end\n");

fo.write("endtask");

···

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值