用正则表达式进行模块例化

  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、匹配要例化的信号以及后面的空白字符,将其放入空括号中。用之前版本类似的操作就行。

 

posted @ 2021-05-12 21:50  盲流98  阅读(189)  评论(0)    收藏  举报