一、前言
初入职场,一直忙着熟悉工作,就没什么时间更新博客。今天受“利奇马”的影响,只好宅在家中,写写技术文章。芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能。模块端口动不动就几十上百个,手动编写代码伤不起。实现verilog模块例化模板的自动生成也算是我自砸饭碗的第一步了O(∩_∩)O!
二、代码设计
要自动生成模块例化模板总共分三步:1 打开设计文件,读取内容 2 正则匹配 3 打开指定上层文件,写入例化模板。涉及到的知识点主要有文件读写和正则匹配。该脚本分别用两个表达式匹配模块名称和端口列表,之后把两者按照verilog模块例化的代码规则写入到指定文件。具体细节上代码之后再说:
如果你对python感兴趣,我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:688244617
1 #!/usr/bin/python
2
3 import re
4 import os
5
6 #regex compile
7 regex_module = re.compile('(module)(\s+)(\w+)')
8
9 regex_ports = re.compile('''
10 (input|output) #0
11 (\s+) #1
12 (wire|reg\s+)? #2
13 (\[\w+\-1\:0\]\s+)? #3
14 (\w+) #4
15 ''