一、前言
初入职场,一直忙着熟悉工作,就没什么时间更新博客。今天受“利奇马”的影响,只好宅在家中,写写技术文章。芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能。模块端口动不动就几十上百个,手动编写代码伤不起。实现verilog模块例化模板的自动生成也算是我自砸饭碗的第一步了O(∩_∩)O!
二、代码设计
要自动生成模块例化模板总共分三步:1打开设计文件,读取内容2正则匹配3打开指定上层文件,写入例化模板。涉及到的知识点主要有文件读写和正则匹配。该脚本分别用两个表达式匹配模块名称和端口列表,之后把两者按照verilog模块例化的代码规则写入到指定文件。具体细节上代码之后再说:
1#!/usr/bin/python
2
3importre
4importos
5
6#regexcompile
7regex_module=re.compile('(module)(\s+)(\w+)')
8
9regex_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''',re.VERBOSE)
16
17directory=os.getcwd()
18#openthedesignfile
19file_design=input('Pl