用正则表达式进行模块例化
IC设计、验证中,在搭建环境或者设计top层时,往往需要将对应的模块例化进相应的代码中,而如果要例化的模块接口比较多,达到上百个,一个个的去修改格式就比较麻烦,使用正则表达式可以节省时间。
|
需要用到的正则表达式 |
说明 |
|
\( \) |
选中括弧中的内容,可以分别用\1和\2再次引用第1个括弧和第二个括弧中的内容 例子:s/\(123\)456\(789\)/\1efg\2 表达式意思:将123456789替换成123efg789 |
|
. |
匹配任意一个字符 |
|
\s |
匹配空白字符,包括tab和空格 |
|
\+ |
匹配多个“\+”前的内容 例子:\s\+ 表达式意思:匹配多个空格 |


完成从左到右的替换需要使用
:33,218s/\(\s\+\)\(.\+\),/\1.\2(\2),
说明
范围行号 匹配句首的多个tab或者空格 匹配接口内容
之后所有的例化只需要更改行号,然后改一下最后一个接口就可以了(最后一个接口没有“,”结尾,正则表达式匹配不到)
:33,218s/\(\s\+\)\(.\+\),/\1.\2(\2),
//-----------------------------------------------------------------------------------------------------------------------------------------21/8/7 editing
之前的做法发现例化的括号中的信号是上下不对齐的,现在想了想除了去找相关的插件,也可以在原来的基础上改进一下。
具体做法:1、将每一行要例化的信号后面插入多个空格,使得任意一行总字符长度大于两倍的最长信号的字符长度。具体用替换就行。
2、每一行要例化的信号后面插入一列空括号 。具体用列操作就行。
3、匹配要例化的信号以及后面的空白字符,将其放入空括号中。用之前版本类似的操作就行。
浙公网安备 33010602011771号