Perl 脚本 如何 修改替换 文件中内容?
时间:10-02
整理:3721RD
点击:
各位大侠们,小弟对perl脚本不太熟悉,目前遇到个问题需要用脚本来处理。
Perl 脚本 如何 修改替换 文件中内容?
我抽出来的网表:usr/top.spic
.INCLUDE "./usr/cdl/digital_lib.cdl"
因为top.spic调用了digital_lib.cdl里面的部分cell,但digital_lib.cdl还要被其它文件所用,所以不能修改digital_lib.cdl的内容。
所以要在top.spic里,把调用digital_lib.cdl的cell的内容修改一下。
具体要求如下,将AAA:改为BBB:方式:
AAA:
XClk__I2 CLKNUHDV1 $PINS ZN=Clk__SOCECTS__N3 I=Clk__SOCECTS__N2
XClk__I1 CLKNUHDV2 $PINS ZN=Clk__L66_N0 I=Clk__SOCECTS__N1
XClk__L1_N0__CASCADE_L2_I0 CLKBUFUHDV2 $PINS Z=Clk__L1_N0__CASCADE_L2_N0
+ I=Clk__L1_N0
XClk__L67_I1 CLKNUHDV6 $PINS ZN=Clk__L67_N1 I=Clk__L66_N0
XClk__L66_I0 CLKBUFUHDV6 $PINS Z=Clk__SOCECTS__N0 I=Clk__L65_N0
XClk__L65_I0 CLKBUFUHDV1 $PINS Z=Clk__L65_N0 I=Clk__L64_N0
XClk__L63_I0 CLKBUFUHDV3 $PINS Z=Clk__SOCECTS__N4 I=Clk__L62_N0
XClk__L62_I0 CLKBUFUHDV1 $PINS Z=Clk__SOCECTS__N6 I=Clk__L61_N0
BBB:
XClk__I2 CLKNUHDV1 $PINS VDD=AVDD VSS=AGNDZN=Clk__SOCECTS__N3 I=Clk__SOCECTS__N2
XClk__I1 CLKNUHDV2 $PINS VDD=AVDD VSS=AGNDZN=Clk__L66_N0 I=Clk__SOCECTS__N1
XClk__L1_N0__CASCADE_L2_I0 CLKBUFUHDV2 $PINS VDD=AVDD VSS=AGNDZ=Clk__L1_N0__CASCADE_L2_N0
+ I=Clk__L1_N0
XClk__L67_I1 CLKNUHDV6 $PINS VDD=AVDD VSS=AGNDZN=Clk__L67_N1 I=Clk__L66_N0
XClk__L66_I0 CLKBUFUHDV6 $PINS VDD=AVDD VSS=AGNDZ=Clk__SOCECTS__N0 I=Clk__L65_N0
XClk__L65_I0 CLKBUFUHDV1 $PINS VDD=AVDD VSS=AGNDZ=Clk__L65_N0 I=Clk__L64_N0
XClk__L63_I0 CLKBUFUHDV3 $PINS VDD=AVDD VSS=AGNDZ=Clk__SOCECTS__N4 I=Clk__L62_N0
XClk__L62_I0 CLKBUFUHDV1 $PINS VDD=AVDD VSS=AGNDZ=Clk__SOCECTS__N6 I=Clk__L61_N0
Perl 脚本 如何 修改替换 文件中内容?
我抽出来的网表:usr/top.spic
.INCLUDE "./usr/cdl/digital_lib.cdl"
因为top.spic调用了digital_lib.cdl里面的部分cell,但digital_lib.cdl还要被其它文件所用,所以不能修改digital_lib.cdl的内容。
所以要在top.spic里,把调用digital_lib.cdl的cell的内容修改一下。
具体要求如下,将AAA:改为BBB:方式:
AAA:
XClk__I2 CLKNUHDV1 $PINS ZN=Clk__SOCECTS__N3 I=Clk__SOCECTS__N2
XClk__I1 CLKNUHDV2 $PINS ZN=Clk__L66_N0 I=Clk__SOCECTS__N1
XClk__L1_N0__CASCADE_L2_I0 CLKBUFUHDV2 $PINS Z=Clk__L1_N0__CASCADE_L2_N0
+ I=Clk__L1_N0
XClk__L67_I1 CLKNUHDV6 $PINS ZN=Clk__L67_N1 I=Clk__L66_N0
XClk__L66_I0 CLKBUFUHDV6 $PINS Z=Clk__SOCECTS__N0 I=Clk__L65_N0
XClk__L65_I0 CLKBUFUHDV1 $PINS Z=Clk__L65_N0 I=Clk__L64_N0
XClk__L63_I0 CLKBUFUHDV3 $PINS Z=Clk__SOCECTS__N4 I=Clk__L62_N0
XClk__L62_I0 CLKBUFUHDV1 $PINS Z=Clk__SOCECTS__N6 I=Clk__L61_N0
BBB:
XClk__I2 CLKNUHDV1 $PINS VDD=AVDD VSS=AGNDZN=Clk__SOCECTS__N3 I=Clk__SOCECTS__N2
XClk__I1 CLKNUHDV2 $PINS VDD=AVDD VSS=AGNDZN=Clk__L66_N0 I=Clk__SOCECTS__N1
XClk__L1_N0__CASCADE_L2_I0 CLKBUFUHDV2 $PINS VDD=AVDD VSS=AGNDZ=Clk__L1_N0__CASCADE_L2_N0
+ I=Clk__L1_N0
XClk__L67_I1 CLKNUHDV6 $PINS VDD=AVDD VSS=AGNDZN=Clk__L67_N1 I=Clk__L66_N0
XClk__L66_I0 CLKBUFUHDV6 $PINS VDD=AVDD VSS=AGNDZ=Clk__SOCECTS__N0 I=Clk__L65_N0
XClk__L65_I0 CLKBUFUHDV1 $PINS VDD=AVDD VSS=AGNDZ=Clk__L65_N0 I=Clk__L64_N0
XClk__L63_I0 CLKBUFUHDV3 $PINS VDD=AVDD VSS=AGNDZ=Clk__SOCECTS__N4 I=Clk__L62_N0
XClk__L62_I0 CLKBUFUHDV1 $PINS VDD=AVDD VSS=AGNDZ=Clk__SOCECTS__N6 I=Clk__L61_N0
补充一下,因为top.spic里的cell有的是调用digital_lib.cdl的,有的不是的。
cell名字的位置在语句中位置:
XClk__I2 CLKNUHDV1 $PINS ZN=Clk__SOCECTS__N3 I=Clk__SOCECTS__N2
XClk__I1 CLKNUHDV2 $PINS ZN=Clk__L66_N0 I=Clk__SOCECTS__N1
有很多更简单的方法,不一定要用perl解决。
vi编辑器里面整体替换,:m,ns/$PINS/$PINS A=BC=D /g (可以指定行)
或者用sed加一些匹配
谢谢大侠的帮忙,此问题已经解决了