Python用于网表处理( 二 )
12 elif"p33"inline:
13 r_line = re.sub(r'\bp33\b', 'pch3', line) # replace pmos model
14 elif"rhrpo_3t"inline:
15 r_line = re.sub(r'\brhrpo_3t_ckt\b', 'rppo1rpo', line) # replace res model
16 elif"mim3_ckt"inline:
17 r_line = re.sub(r'\bmim3_ckt\b', 'mimcap', line) # replace cap model
18 else:
19 r_line = line # not change
20
21 ifre.search(r'(W=.*[un])(.*)(L=.*[un])', r_line):
22 write_file.write(re.sub(r'(W=.*[un])(.*)(L=.*[un])', r'\1*0.9\2\3*0.9', r_line)) # replace
23 elifre.search(r'(L=.*[un])(.*)(W=.*[un])', r_line):
24 write_file.write(re.sub(r'(L=.*[un])(.*)(W=.*[un])', r'\1*0.9\2\3*0.9', r_line)) # replace
25 elifre.search(r'(AREA)', r_line):
26 write_file.write(re.sub(r'(?P
27 else:
28 write_file.write(r_line)
29
30print("Finish!")
上下、左右滑动可以查看更多内容哦!
主要使用re.sub方法实现字符串替换 , 这里特别说明一下分组:在正则表达式匹配的时候可以使用小括号进行分组 , 后面这些分组是可以通过分组号进行调用的 , 分组功能在实际中很实用!以下是完成替换之后的网表 。
1************************************************************************
2* auCdl Netlist:
3*
4* Library Name: ref_circuits
5* Top Cell Name: bgr
6* View Name: schematic
7* Netlisted on: May 20 22:40:47 2020
8************************************************************************
9
10*.BIPOLAR
11*.RESI = 2000
12*.RESVAL
13*.CAPVAL
14*.DIOPERI
15*.DIOAREA
16*.EQUATION
17*.SCALE METER
18*.MEGA
19.PARAM
20
21
22
23************************************************************************
24* Library Name: ref_circuits
25* Cell Name: bgr
26* View Name: schematic
27************************************************************************
28
29.SUBCKT bgr GNDA PD SUB VBG VDDA
30*.PININFO PD:I VBG:O GNDA:B SUB:B VDDA:B
31XMM1 net30 PDN net56 SUB nch3 W=4u*0.9 L=350n*0.9 m=1
32XMM5 net29 net29 net28 SUB nch3 W=4u*0.9 L=1u*0.9 m=1
33XMM11 net30 net29 net50 SUB nch3 W=4u*0.9 L=1u*0.9 m=1
34XMM12 net36 net29 net49 SUB nch3 W=4u*0.9 L=1u*0.9 m=1
35XMM19 VBG PDP GNDA SUB nch3 W=4u*0.9 L=350n*0.9 m=1
36XMM16 net56 net19 GNDA SUB nch3 W=4u*0.9 L=350n*0.9 m=1
37XMM3 net19 VBG GNDA SUB nch3 W=2u*0.9 L=350n*0.9 m=1
38XMM6 net28 net28 GNDA SUB nch3 W=4u*0.9 L=1u*0.9 m=1
39XMM22 PDN PD GNDA SUB nch3 W=4u*0.9 L=350n*0.9 m=1
40XMM25 net50 net28 GNDA SUB nch3 W=4u*0.9 L=1u*0.9 m=2
41XMM13 net49 net28 GNDA SUB nch3 W=4u*0.9 L=1u*0.9 m=2
42XMM17 PDP PDN GNDA SUB nch3 W=4u*0.9 L=350n*0.9 m=1
43QQ1 SUB SUB INP pnp33a4 M=1 AREA=0.9*0.9*4e-12
44QQ0 SUB SUB net55 pnp33a4 M=8 AREA=0.9*0.9*4e-12
45XR6 net54 VBG SUB rppo1rpo M=1 W=2u*0.9 L=14u*0.9
46XR3 net54 VBG SUB rppo1rpo M=1 W=2u*0.9 L=7u*0.9
47XR2 net51 net52 SUB rppo1rpo M=1 W=2u*0.9 L=7u*0.9
48XR5 net51 net52 SUB rppo1rpo M=1 W=2u*0.9 L=14u*0.9
49XR4 INP net51 SUB rppo1rpo M=1 W=2u*0.9 L=168u*0.9
50XR1 INN net54 SUB rppo1rpo M=1 W=2u*0.9 L=168u*0.9
51XR0 net55 INN SUB rppo1rpo M=1 W=2u*0.9 L=21u*0.9
52XMM18 net30 PDN VDDA VDDA pch3 W=4u*0.9 L=300n*0.9 m=1
53XMM7 net22 net22 VDDA VDDA pch3 W=2u*0.9 L=1u*0.9 m=1
54XMM14 net32 net30 VDDA VDDA pch3 W=4u*0.9 L=1u*0.9 m=2
55XMM15 net29 net30 VDDA VDDA pch3 W=4u*0.9 L=1u*0.9 m=1
56XMM23 net52 net30 VDDA VDDA pch3 W=4u*0.9 L=1u*0.9 m=4
57XMM24 VBG net30 VDDA VDDA pch3 W=4u*0.9 L=1u*0.9 m=4
58XMM20 net36 net36 VDDA VDDA pch3 W=8u*0.9 L=2u*0.9 m=2
59XMM21 net30 net36 VDDA VDDA pch3 W=8u*0.9 L=2u*0.9 m=2
60XMM4 net21 net21 net22 VDDA pch3 W=2u*0.9 L=1u*0.9 m=1
61XMM8 net49 INN net32 net32 pch3 W=12u*0.9 L=1u*0.9 m=2
62XMM9 net50 INP net32 net32 pch3 W=12u*0.9 L=1u*0.9 m=2
63XMM0 net20 net20 net21 VDDA pch3 W=2u*0.9 L=1u*0.9 m=1
64XMM2 net19 VBG net20 VDDA pch3 W=2u*0.9 L=1u*0.9 m=1
65XMM26 PDN PD VDDA VDDA pch3 W=4u*0.9 L=300n*0.9 m=1
66XMM10 PDP PDN VDDA VDDA pch3 W=4u*0.9 L=300n*0.9 m=1
67XC0 net30 VBG mimcap L=20u*0.9 W=20u*0.9 MR=1
68.ENDS
上下、左右滑动可以查看更多内容哦!
【Python用于网表处理】上面脚本的使用有一定的局限性 , 不同的工艺厂可能器件模型名称都不一样 , 所以每次使用需要针对性地做一些修改 , 使用起来并不方便 。
可以采用参数传递的方式实现上面脚本的功能 , 针对不同的需求传递不同的参数 , 更加实用 。
改进的脚本
按照上面的要求 , 可以修改脚本接受传递参数 , 这样不需要每次使用时修改脚本内容 , 脚本用起来更加灵活也更加方便 。
1importre
2importos
3importsys
4
5# define a function for model replace
6def replace_model(old_model, new_model, str):
- 优化|微软亚洲研究院发布开源平台“群策 MARO” 用于多智能体资源调度优化
- 输送|新时达:“用于机器人码垛的输送系统”获发明专利
- 用于|用于半监督学习的图随机神经网络
- 核磁共振|研发用于教研的核磁共振量子计算机,「量旋科技」还想在超导量子技术上取得突破
- 地面|莱茵金属公司推出,用于武装侦察的新型地面机器人
- 告诉|阿里大佬告诉你如何一分钟利用Python在家告别会员看电影
- Python源码阅读-基础1
- Python调用时使用*和**
- 如何基于Python实现自动化控制鼠标和键盘操作
- 解决多版本的python冲突问题