当前位置:首页 > Software > Python > 正文内容

(原创)使用Python提取Vivado工程的RTL代码

chanra1n2年前 (2023-05-21)Python3629

在工程文件夹下运行Python程序即可

#Author       : /
#Description  : 从Vivado的项目文件夹中提取rtl文件,用于LEDA调试
#Time         : 20220805
#Verision     : 0.1
#CopyRights   : myfpga.cn All Right Reservers. 

import os
import shutil
import xml.etree.ElementTree as ET
for temp_file in os.listdir():
    if temp_file.endswith(".xpr") :
        prj_name_temp = os.path.splitext(temp_file)
        prj_name = prj_name_temp[0]
        os.mkdir(prj_name+'_rtl')
        tree = ET.ElementTree(file=temp_file)
        root = tree.getroot()
        for elem in tree.iter(tag='File'):
            file_path = elem.attrib['Path']
            file_path = file_path.replace('$PSRCDIR','./'+prj_name+'.srcs')
            if(file_path.endswith(".v") or file_path.endswith(".vh") or file_path.endswith(".vhd") or file_path.endswith(".vhdl") or file_path.endswith(".sv")
            or file_path.endswith(".V") or file_path.endswith(".VH") or file_path.endswith(".VHD") or file_path.endswith(".VHDL") or file_path.endswith(".SV")):
                #print(file_path)
                try:
                    shutil.copyfile(file_path,prj_name+'_rtl/'+os.path.basename(file_path))
                except:
                    print('ERROR:'+prj_name+'_rtl/'+os.path.basename(file_path))


扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://myfpga.cn/index.php/post/309.html

分享给朋友:

“(原创)使用Python提取Vivado工程的RTL代码” 的相关文章

2.Python中的基本运算

2.Python中的基本运算

我们打开Python,请你尝试输入如下算式并尝试理解有什么为什么是这样的?1+1 1+1.0 1-2 2-3.5 1*1 1*1.1 1/2 2/1 2/3 3/2 3//2 3/1.0 5/2.5我们不难得到如下结果2 2.0 -1 -1.5 1 1.1 0.5...

Python关于turtle的函数名

Python关于turtle的函数名

turtle.forward(distance)                   向当前画笔方向移动distance像素长度turtle.backward(distance)              向当前画笔相反方向移动distance像素长度turtle.right(degree)    ...

math库的使用

math库的使用

math库包括4个数学常数math.pi      圆周率math.e       自然对数math.inf     正无穷大,负无穷大为-math.infmath.nan     非浮点数标记math库常用函数math.cell(x)      向上取整,返回不小于x的最小整数math.facto...

for循环

for循环

range()函数range(start,end,step)range()函数返回一个可迭代对象(可理解为一个序列,序列中的数包括start,不包括end)例如range(1,101),返回1-100的序列。range(101),范围0-100的序列。range(1,100,2),返回1,3,5.....

  索引运算符【】

索引运算符【】

选择字符串的子序列语法【start:finish】        start:子序列开始位置的索引值        finish:子序列结束位置的下一个字符的索引值如果不提供start或者finish,默认start为第一个字符,finish为最后一个字符。例如>>>my_str=...

搜索字符串

搜索字符串

常用搜索字符串中子串的方法str.count(substring)      返回str中substring子串出现的无覆盖的次数str.find(s1)                    返回s1在这个字符串的最低下标,如果字符串中不存在s1,则返回-1str.rfind(s1)       ...