首页 > 编程语言 >verilog文件到tb的简单python脚本

verilog文件到tb的简单python脚本

时间:2024-10-11 15:54:02浏览次数:9  
标签:end python lines re verilog print input line tb

使用

python3 verilog_to_tb.py test.v
需要注意的是,例化时并没有去掉最后的逗号,手动去除下。

verilog_to_tb.py

import sys
import re
def read_file(file):
    with open(file,'r') as f:
        lines = f.readlines()
    return lines
def main():
    lines = read_file('test.v')
    for line in lines:
        if(re.search(r'input\s+(\[\d+:0\])?\s*(\w*),?',line)):
            print(re.sub(r'input\s+(\[\d+:0\])?\s*(\w*),?',r'reg  \1  \2;',line),end='')
    for line in lines:
        if(re.search(r'output\s+(?:reg\s+)?(\[\d+:0\])?\s*(\w*),?',line)):
            print(re.sub(r'output\s+(?:reg\s+)?(\[\d+:0\])?\s*(\w*),?',r'wire  \1  \2;',line),end='')
    print('initial')
    print('begin')
    for line in lines:
        if(re.search(r'input\s+(\[\d+:0\])?\s*(\w*),?',line)):
            print(re.sub(r'input\s+(\[(\d+):0\])?\s*(\w*),?',r"assign \3 = \2'b0;",line),end='')
    print('end')
    for line in lines:
        if(re.search(r'module\s+(\w*)\(',line)):
            print(re.sub(r'module\s+(\w*)\(',r'\1 u_\1 (',line),end='')
            break
    print("  //input ports")
    for line in lines:
        if(re.search(r'input\s+(\[\d+:0\])?\s*(\w*),?',line)):
            print(re.sub(r'input\s+(\[\d+:0\])?\s*(\w*),?',r'  .\2(\2),',line),end='')
    print("  //output ports")
    for line in lines:
       if(re.search(r'output\s+(?:reg\s+)?(\[\d+:0\])?\s*(\w*),?',line)):
           print(re.sub(r'output\s+(?:reg\s+)?(\[\d+:0\])?\s*(\w*),?',r'  .\2(\2),',line),end='')
    print(');')
if __name__=="__main__":
    main()

标签:end,python,lines,re,verilog,print,input,line,tb
From: https://www.cnblogs.com/xzh-personal-issue/p/18458526

相关文章

  • Python编程:创意爱心表白代码集
    在寻找一种特别的方式来表达你的爱意吗?使用Python编程,你可以创造出独一无二的爱心图案,为你的表白增添一份特别的浪漫。这里为你精选了六种不同风格的爱心表白代码,让你的创意和情感通过代码展现出来。话不多说,咱直接上代码!1.紫色浪漫:心形表白#1-1导入turtle模块进行设计......
  • Python 装饰器
    Python装饰器1.装饰器是什么装饰器是Python中的一种高级函数,用于在不修改原始函数代码的前提下,动态地为函数或类增加功能。它本质上是一个函数,接受另一个函数或类作为参数,并返回一个新的函数或类。装饰器的基本语法defdecorator(func):defwrapper(*args,**kwargs)......
  • 教你如何免费获取股票数据用python、JavaScript (Node.js)、JAVA等多种语言的实例代码
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • centos7 安装Python3及配置环境变量
    centos7安装Python3并配置环境变量亲测有效python官网(linux下载地址、版本可自选):https://www.python.org/ftp/python/一、添加阿里云第三方扩展源仓库(安装拓展源仓库才能安装yum安装openssl11openssl11-devel,python源码编译必须要openssl11或以上版本)备注,我这里是把pyhto......
  • 雷达图怎么绘制?!超简单,一次性告诉你Python和R绘制方法~~
    今天给大家介绍的的图表为雷达图(Radar/Spiderchart),这种类型图表在生活中较常使用,是一种以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。较常用的场景多为分析企业经营状况(收益性、生产性、流动性、安全性和成长性)。本期推文......
  • python 09-pycharm连接远程服务器
    准备一个云服务器(linux操作系统)找一个免费试用的服务器用于练习,这里用这个服务器:在pycharm中连接服务器‌-VirtualEnvironment‌:‌Python的虚拟环境,‌允许每个项目拥有独立的库和解释器,‌避免依赖冲突。‌通过virtualenv等工具创建,‌适用于隔离项目依赖。‌‌-Sy......
  • Jupyter Notebook 中同时使用 Python 和 R
    要在JupyterNotebook中同时使用Python和R,可以通过rpy2库来实现。以下是具体步骤:安装rpy2(如果尚未安装):pipinstallrpy2在JupyterNotebook中加载R包:可以在Python代码单元中使用rpy2的importr函数来加载R包。下面是一个示例代码,展示如何加载neuroba......
  • python scapy发包、抓包、分析
    importosimporttelnetlibfromscapy.allimport*fromscapy.layers.inetimport*fromscapy.allimportsniff#pac=dir(scapy.layers)#print(pac)#执行代码后,会输出Scapy中的各层#print(explore(scapy.layers.l2))#查看各种二层协议#print(explore(sc......
  • Python+Layui后台管理
    项目简介:主要分为这几个模块:创建任务、发布任务、任务清单、修改任务、取消任务、个人填写日志、日志记录。1.任务列表模糊查询:提供搜索框,支持用户输入关键词进行模糊查询。操作按钮:分配任务、公司内部创建任务2.公司内部创建任务任务表单主要是有:客户单位、合同名称、联系......
  • Python高级库与框架:提升你的开发效率
    引言在Python的世界中,有着无数强大且灵活的库和框架,它们大大提升了开发的效率和能力。无论是在数据分析、机器学习、Web开发,还是爬虫等领域,掌握这些高级库与框架都能帮助你更快速地完成任务。不过,新手在使用这些库和框架时,常常会遇到一些困难和误区。今天,我们将一起探索一些流......