【python脚本】应用于verilog RTL的顶层模块互连集成工具

前言

在我年轻的时候,在例化了几个近百行接口的module,声明了还几百行的接口和wire后,精神就已经恍惚了,一直恍惚到今天。于是后来我尝试了各种办法来简化这个过程,包括生成简单的例化代码,通过VBA做例化文件等等,但是使用无法解决还是需要手动修改和连线的问题。

终于有一天我知道了verilogmode,所以我突然萌生一个想法,我也要做一个这样的工具来练一练手!

准备

做好的脚本我放在了固定路径下,之后在vimrc中补充这句话:

command! L :execute '%! /home/xiaotu/my_work/gen_link/gen_link -f %'
command! D :execute '%! /home/xiaotu/my_work/gen_link/gen_link -d -f %'

准备了几个需要在定层互连的模块:processing_unit、ctrl_unit、mem_unit,关于这几个模块的具体行为请参考:

【读书笔记】RISC存储程序机的电路设计

在此只罗列下三个模块的接口:

module processing_unit #(
	`include "C:/Users/gaoji/Desktop/RISC_SPM/src/para_def.v"
)(
	output [WORD_WD -1:0] instruction	,//to ctl
	output 			      zero_flag     ,//to ctl
	
	output [ADDR_WD 
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
以下是一个 Python 脚本,可以提取 Verilog 顶层信号: ```python import re # 打开 Verilog 文件 with open('example.v', 'r') as file: verilog = file.read() # 查找顶层模块名 match = re.search(r'module\s+(\w+)\s*\(', verilog) if not match: print('Error: Top-level module not found') exit() top_module = match.group(1) # 查找顶层端口 port_match = re.search(fr'module\s+{top_module}\s*\((.*?)\);', verilog, re.DOTALL) if not port_match: print('Error: Top-level port not found') exit() ports = port_match.group(1).split(',') # 提取顶层信号 signals = [] for port in ports: # 移除空格和注释 port = re.sub(r'\s+|\/\/.*|\/\*.*?\*\/', '', port) # 匹配信号名和方向 match = re.match(r'(\w+)\s*(\[\d+:\d+\])?\s*(.*)', port) if not match: continue name = match.group(1) direction = match.group(3) if direction == 'input': signals.append((name, 'in')) elif direction == 'output': signals.append((name, 'out')) elif direction == 'inout': signals.append((name, 'inout')) # 打印顶层信号 print('Top-level signals:') for signal in signals: print(f'{signal[0]} ({signal[1]})') ``` 使用方法: 1. 将上述代码保存为 `extract_top_signals.py` 文件。 2. 将 Verilog 文件保存为 `example.v` 文件,与 `extract_top_signals.py` 文件放在同一目录下。 3. 执行以下命令:`python extract_top_signals.py`。 4. 脚本将会输出顶层模块的信号列表。 请注意,该脚本仅适用于简单的 Verilog 文件,对于复杂的文件可能需要进行适当的修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尼德兰的喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值