Adding complete technology LEF file.
Updating sky130_fd_sc_hvl 0.0.3.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
diff --git a/tech/sky130_fd_sc_hvl.tlef b/tech/sky130_fd_sc_hvl.tlef
index b8fcf16..06d4673 100644
--- a/tech/sky130_fd_sc_hvl.tlef
+++ b/tech/sky130_fd_sc_hvl.tlef
@@ -14,7 +14,7 @@
#
# SPDX-License-Identifier: Apache-2.0
-VERSION 5.6 ;
+VERSION 5.7 ;
BUSBITCHARS "[]" ;
DIVIDERCHAR "/" ;
@@ -30,14 +30,726 @@
# High voltage, single height
SITE unithv
- SYMMETRY y ;
+ SYMMETRY Y ;
CLASS CORE ;
- SIZE 0.480 BY 4.070 ;
+ SIZE 0.48 BY 4.07 ;
END unithv
# High voltage, double height
SITE unithvdbl
- SYMMETRY y ;
+ SYMMETRY Y ;
CLASS CORE ;
- SIZE 0.480 BY 8.140 ;
+ SIZE 0.48 BY 8.14 ;
END unithvdbl
+
+LAYER li1
+ TYPE ROUTING ;
+ DIRECTION VERTICAL ;
+
+ PITCH 0.48 ;
+ MINWIDTH 0.17 ;
+
+ WIDTH 0.17 ; # LI 1
+ # SPACING 0.17 ; # LI 2
+ SPACINGTABLE
+ PARALLELRUNLENGTH 0
+ WIDTH 0 0.17 ;
+ AREA 0.0561 ; # LI 6
+ THICKNESS 0.1 ;
+ EDGECAPACITANCE 3.26E-6 ;
+ CAPACITANCE CPERSQDIST 36.9E-6 ;
+ RESISTANCE RPERSQ 12.2 ;
+
+ ANTENNADIFFSIDEAREARATIO PWL ( ( 0 75 ) ( 0.0125 75 ) ( 0.0225 85.125 ) ( 22.5 10200 ) ) ;
+END li1
+
+LAYER mcon
+ TYPE CUT ;
+
+ WIDTH 0.17 ; # Mcon 1
+ SPACING 0.19 ; # Mcon 2
+ ENCLOSURE BELOW 0 0 ; # Mcon 4
+ ENCLOSURE ABOVE 0.03 0.06 ; # Met1 4 / Met1 5
+
+ ANTENNADIFFAREARATIO PWL ( ( 0 3 ) ( 0.0125 3 ) ( 0.0225 3.405 ) ( 22.5 408 ) ) ;
+ DCCURRENTDENSITY AVERAGE 0.36 ; # mA per via Iavg_max at Tj = 90oC
+
+END mcon
+
+LAYER met1
+ TYPE ROUTING ;
+ DIRECTION HORIZONTAL ;
+
+ PITCH 0.37 ;
+ MINENCLOSEDAREA 0.14 ;
+ MINWIDTH 0.14 ;
+
+ WIDTH 0.14 ; # Met1 1
+ # SPACING 0.14 ; # Met1 2
+ # SPACING 0.28 RANGE 3.001 100 ; # Met1 3b
+ SPACINGTABLE
+ PARALLELRUNLENGTH 0
+ WIDTH 0 0.14
+ WIDTH 3 0.28 ;
+ AREA 0.083 ; # Met1 6
+ THICKNESS 0.35 ;
+
+ ANTENNADIFFSIDEAREARATIO PWL ( ( 0 400 ) ( 0.0125 400 ) ( 0.0225 2609 ) ( 22.5 11600 ) ) ;
+
+ EDGECAPACITANCE 1.79E-6 ;
+ CAPACITANCE CPERSQDIST 25.8E-6 ;
+ DCCURRENTDENSITY AVERAGE 2.8 ; # mA/um Iavg_max at Tj = 90oC
+ ACCURRENTDENSITY RMS 6.1 ; # mA/um Irms_max at Tj = 90oC
+
+ RESISTANCE RPERSQ 0.125 ;
+END met1
+
+LAYER via
+ TYPE CUT ;
+ WIDTH 0.15 ; # Via 1a
+ SPACING 0.17 ; # Via 2
+ ENCLOSURE BELOW 0.055 0.085 ; # Via 4a / Via 5a
+ ENCLOSURE ABOVE 0.055 0.085 ; # Met2 4 / Met2 5
+
+ ANTENNADIFFAREARATIO PWL ( ( 0 6 ) ( 0.0125 6 ) ( 0.0225 6.81 ) ( 22.5 816 ) ) ;
+ DCCURRENTDENSITY AVERAGE 0.29 ; # mA per via Iavg_max at Tj = 90oC
+END via
+
+LAYER met2
+ TYPE ROUTING ;
+ DIRECTION VERTICAL ;
+
+ PITCH 0.48 ;
+ MINENCLOSEDAREA 0.14 ;
+ MINWIDTH 0.14 ;
+
+ WIDTH 0.14 ; # Met2 1
+ # SPACING 0.14 ; # Met2 2
+ # SPACING 0.28 RANGE 3.001 100 ; # Met2 3b
+ SPACINGTABLE
+ PARALLELRUNLENGTH 0
+ WIDTH 0 0.14
+ WIDTH 3 0.28 ;
+ AREA 0.0676 ; # Met2 6
+ THICKNESS 0.35 ;
+
+ EDGECAPACITANCE 1.22E-6 ;
+ CAPACITANCE CPERSQDIST 17.5E-6 ;
+ RESISTANCE RPERSQ 0.125 ;
+ DCCURRENTDENSITY AVERAGE 2.8 ; # mA/um Iavg_max at Tj = 90oC
+ ACCURRENTDENSITY RMS 6.1 ; # mA/um Irms_max at Tj = 90oC
+ ANTENNADIFFSIDEAREARATIO PWL ( ( 0 400 ) ( 0.0125 400 ) ( 0.0225 2609 ) ( 22.5 11600 ) ) ;
+END met2
+
+# ******** Layer via2, type routing, number 44 **************
+LAYER via2
+ TYPE CUT ;
+ WIDTH 0.2 ; # Via2 1
+ SPACING 0.2 ; # Via2 2
+ ENCLOSURE BELOW 0.04 0.085 ; # Via2 4
+ ENCLOSURE ABOVE 0.065 0.065 ; # Met3 4
+ ANTENNADIFFAREARATIO PWL ( ( 0 6 ) ( 0.0125 6 ) ( 0.0225 6.81 ) ( 22.5 816 ) ) ;
+ DCCURRENTDENSITY AVERAGE 0.48 ; # mA per via Iavg_max at Tj = 90oC
+END via2
+
+LAYER met3
+ TYPE ROUTING ;
+ DIRECTION HORIZONTAL ;
+
+ PITCH 0.74 ;
+ MINWIDTH 0.3 ;
+
+ WIDTH 0.3 ; # Met3 1
+ # SPACING 0.3 ; # Met3 2
+ SPACINGTABLE
+ PARALLELRUNLENGTH 0
+ WIDTH 0 0.3
+ WIDTH 3 0.4 ;
+ AREA 0.24 ; # Met3 6
+ THICKNESS 0.8 ;
+
+ EDGECAPACITANCE 1.86E-6 ;
+ CAPACITANCE CPERSQDIST 12.6E-6 ;
+ RESISTANCE RPERSQ 0.047 ;
+ DCCURRENTDENSITY AVERAGE 6.8 ; # mA/um Iavg_max at Tj = 90oC
+ ACCURRENTDENSITY RMS 14.9 ; # mA/um Irms_max at Tj = 90oC
+
+ ANTENNADIFFSIDEAREARATIO PWL ( ( 0 400 ) ( 0.0125 400 ) ( 0.0225 2609 ) ( 22.5 11600 ) ) ;
+END met3
+
+LAYER via3
+ TYPE CUT ;
+ WIDTH 0.2 ; # Via3 1
+ SPACING 0.2 ; # Via3 2
+ ENCLOSURE BELOW 0.06 0.09 ; # Via3 4 / Via3 5
+ ENCLOSURE ABOVE 0.065 0.065 ; # Met4 3
+ ANTENNADIFFAREARATIO PWL ( ( 0 6 ) ( 0.0125 6 ) ( 0.0225 6.81 ) ( 22.5 816 ) ) ;
+ DCCURRENTDENSITY AVERAGE 0.48 ; # mA per via Iavg_max at Tj = 90oC
+END via3
+
+LAYER met4
+ TYPE ROUTING ;
+ DIRECTION VERTICAL ;
+
+ PITCH 0.96 ;
+ MINWIDTH 0.3 ;
+
+ WIDTH 0.3 ; # Met4 1
+ # SPACING 0.3 ; # Met4 2
+ SPACINGTABLE
+ PARALLELRUNLENGTH 0
+ WIDTH 0 0.3
+ WIDTH 3 0.4 ;
+ AREA 0.24 ; # Met4 4a
+
+ THICKNESS 0.8 ;
+
+ EDGECAPACITANCE 1.29E-6 ;
+ CAPACITANCE CPERSQDIST 8.67E-6 ;
+ RESISTANCE RPERSQ 0.047 ;
+ DCCURRENTDENSITY AVERAGE 6.8 ; # mA/um Iavg_max at Tj = 90oC
+ ACCURRENTDENSITY RMS 14.9 ; # mA/um Irms_max at Tj = 90oC
+
+ ANTENNADIFFSIDEAREARATIO PWL ( ( 0 400 ) ( 0.0125 400 ) ( 0.0225 2609 ) ( 22.5 11600 ) ) ;
+END met4
+
+LAYER via4
+ TYPE CUT ;
+
+ WIDTH 0.8 ; # Via4 1
+ SPACING 0.8 ; # Via4 2
+ ENCLOSURE BELOW 0.19 0.19 ; # Via4 4
+ ENCLOSURE ABOVE 0.31 0.31 ; # Met5 3
+ ANTENNADIFFAREARATIO PWL ( ( 0 6 ) ( 0.0125 6 ) ( 0.0225 6.81 ) ( 22.5 816 ) ) ;
+ DCCURRENTDENSITY AVERAGE 2.49 ; # mA per via Iavg_max at Tj = 90oC
+END via4
+
+LAYER met5
+ TYPE ROUTING ;
+ DIRECTION HORIZONTAL ;
+
+ PITCH 3.33 ;
+ MINWIDTH 1.6 ;
+
+ WIDTH 1.6 ; # Met5 1
+ #SPACING 1.6 ; # Met5 2
+ SPACINGTABLE
+ PARALLELRUNLENGTH 0
+ WIDTH 0 1.6 ;
+ AREA 4 ; # Met5 4
+
+ THICKNESS 1.2 ;
+
+ EDGECAPACITANCE 4.96E-6 ;
+ CAPACITANCE CPERSQDIST 6.48E-6 ;
+ RESISTANCE RPERSQ 0.0285 ;
+ DCCURRENTDENSITY AVERAGE 10.17 ; # mA/um Iavg_max at Tj = 90oC
+ ACCURRENTDENSITY RMS 22.34 ; # mA/um Irms_max at Tj = 90oC
+
+ ANTENNADIFFSIDEAREARATIO PWL ( ( 0 400 ) ( 0.0125 400 ) ( 0.0225 2609 ) ( 22.5 11600 ) ) ;
+END met5
+
+
+### Routing via cells section ###
+# Plus via rule, metals are along the prefered direction
+VIA L1M1_PR DEFAULT
+ LAYER mcon ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ LAYER li1 ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ LAYER met1 ;
+ RECT -0.145 -0.115 0.145 0.115 ;
+END L1M1_PR
+
+VIARULE L1M1_PR GENERATE
+ LAYER li1 ;
+ ENCLOSURE 0 0 ;
+ LAYER met1 ;
+ ENCLOSURE 0.06 0.03 ;
+ LAYER mcon ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ SPACING 0.36 BY 0.36 ;
+END L1M1_PR
+
+# Plus via rule, metals are along the non prefered direction
+VIA L1M1_PR_R DEFAULT
+ LAYER mcon ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ LAYER li1 ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ LAYER met1 ;
+ RECT -0.115 -0.145 0.115 0.145 ;
+END L1M1_PR_R
+
+VIARULE L1M1_PR_R GENERATE
+ LAYER li1 ;
+ ENCLOSURE 0 0 ;
+ LAYER met1 ;
+ ENCLOSURE 0.03 0.06 ;
+ LAYER mcon ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ SPACING 0.36 BY 0.36 ;
+END L1M1_PR_R
+
+# Minus via rule, lower layer metal is along prefered direction
+VIA L1M1_PR_M DEFAULT
+ LAYER mcon ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ LAYER li1 ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ LAYER met1 ;
+ RECT -0.115 -0.145 0.115 0.145 ;
+END L1M1_PR_M
+
+VIARULE L1M1_PR_M GENERATE
+ LAYER li1 ;
+ ENCLOSURE 0 0 ;
+ LAYER met1 ;
+ ENCLOSURE 0.03 0.06 ;
+ LAYER mcon ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ SPACING 0.36 BY 0.36 ;
+END L1M1_PR_M
+
+# Minus via rule, upper layer metal is along prefered direction
+VIA L1M1_PR_MR DEFAULT
+ LAYER mcon ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ LAYER li1 ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ LAYER met1 ;
+ RECT -0.145 -0.115 0.145 0.115 ;
+END L1M1_PR_MR
+
+VIARULE L1M1_PR_MR GENERATE
+ LAYER li1 ;
+ ENCLOSURE 0 0 ;
+ LAYER met1 ;
+ ENCLOSURE 0.06 0.03 ;
+ LAYER mcon ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ SPACING 0.36 BY 0.36 ;
+END L1M1_PR_MR
+
+# Centered via rule, we really do not want to use it
+VIA L1M1_PR_C DEFAULT
+ LAYER mcon ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ LAYER li1 ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ LAYER met1 ;
+ RECT -0.145 -0.145 0.145 0.145 ;
+END L1M1_PR_C
+
+VIARULE L1M1_PR_C GENERATE
+ LAYER li1 ;
+ ENCLOSURE 0 0 ;
+ LAYER met1 ;
+ ENCLOSURE 0.06 0.06 ;
+ LAYER mcon ;
+ RECT -0.085 -0.085 0.085 0.085 ;
+ SPACING 0.36 BY 0.36 ;
+END L1M1_PR_C
+
+# Plus via rule, metals are along the prefered direction
+VIA M1M2_PR DEFAULT
+ LAYER via ;
+ RECT -0.075 -0.075 0.075 0.075 ;
+ LAYER met1 ;
+ RECT -0.16 -0.13 0.16 0.13 ;
+ LAYER met2 ;
+ RECT -0.13 -0.16 0.13 0.16 ;
+END M1M2_PR
+
+VIARULE M1M2_PR GENERATE
+ LAYER met1 ;
+ ENCLOSURE 0.085 0.055 ;
+ LAYER met2 ;
+ ENCLOSURE 0.055 0.085 ;
+ LAYER via ;
+ RECT -0.075 -0.075 0.075 0.075 ;
+ SPACING 0.32 BY 0.32 ;
+END M1M2_PR
+
+# Plus via rule, metals are along the non prefered direction
+VIA M1M2_PR_R DEFAULT
+ LAYER via ;
+ RECT -0.075 -0.075 0.075 0.075 ;
+ LAYER met1 ;
+ RECT -0.13 -0.16 0.13 0.16 ;
+ LAYER met2 ;
+ RECT -0.16 -0.13 0.16 0.13 ;
+END M1M2_PR_R
+
+VIARULE M1M2_PR_R GENERATE
+ LAYER met1 ;
+ ENCLOSURE 0.055 0.085 ;
+ LAYER met2 ;
+ ENCLOSURE 0.085 0.055 ;
+ LAYER via ;
+ RECT -0.075 -0.075 0.075 0.075 ;
+ SPACING 0.32 BY 0.32 ;
+END M1M2_PR_R
+
+# Minus via rule, lower layer metal is along prefered direction
+VIA M1M2_PR_M DEFAULT
+ LAYER via ;
+ RECT -0.075 -0.075 0.075 0.075 ;
+ LAYER met1 ;
+ RECT -0.16 -0.13 0.16 0.13 ;
+ LAYER met2 ;
+ RECT -0.16 -0.13 0.16 0.13 ;
+END M1M2_PR_M
+
+VIARULE M1M2_PR_M GENERATE
+ LAYER met1 ;
+ ENCLOSURE 0.085 0.055 ;
+ LAYER met2 ;
+ ENCLOSURE 0.085 0.055 ;
+ LAYER via ;
+ RECT -0.075 -0.075 0.075 0.075 ;
+ SPACING 0.32 BY 0.32 ;
+END M1M2_PR_M
+
+# Minus via rule, upper layer metal is along prefered direction
+VIA M1M2_PR_MR DEFAULT
+ LAYER via ;
+ RECT -0.075 -0.075 0.075 0.075 ;
+ LAYER met1 ;
+ RECT -0.13 -0.16 0.13 0.16 ;
+ LAYER met2 ;
+ RECT -0.13 -0.16 0.13 0.16 ;
+END M1M2_PR_MR
+
+VIARULE M1M2_PR_MR GENERATE
+ LAYER met1 ;
+ ENCLOSURE 0.055 0.085 ;
+ LAYER met2 ;
+ ENCLOSURE 0.055 0.085 ;
+ LAYER via ;
+ RECT -0.075 -0.075 0.075 0.075 ;
+ SPACING 0.32 BY 0.32 ;
+END M1M2_PR_MR
+
+# Centered via rule, we really do not want to use it
+VIA M1M2_PR_C DEFAULT
+ LAYER via ;
+ RECT -0.075 -0.075 0.075 0.075 ;
+ LAYER met1 ;
+ RECT -0.16 -0.16 0.16 0.16 ;
+ LAYER met2 ;
+ RECT -0.16 -0.16 0.16 0.16 ;
+END M1M2_PR_C
+
+VIARULE M1M2_PR_C GENERATE
+ LAYER met1 ;
+ ENCLOSURE 0.085 0.085 ;
+ LAYER met2 ;
+ ENCLOSURE 0.085 0.085 ;
+ LAYER via ;
+ RECT -0.075 -0.075 0.075 0.075 ;
+ SPACING 0.32 BY 0.32 ;
+END M1M2_PR_C
+
+# Plus via rule, metals are along the prefered direction
+VIA M2M3_PR DEFAULT
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ LAYER met2 ;
+ RECT -0.14 -0.185 0.14 0.185 ;
+ LAYER met3 ;
+ RECT -0.165 -0.165 0.165 0.165 ;
+END M2M3_PR
+
+VIARULE M2M3_PR GENERATE
+ LAYER met2 ;
+ ENCLOSURE 0.04 0.085 ;
+ LAYER met3 ;
+ ENCLOSURE 0.065 0.065 ;
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.4 BY 0.4 ;
+END M2M3_PR
+
+# Plus via rule, metals are along the non prefered direction
+VIA M2M3_PR_R DEFAULT
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ LAYER met2 ;
+ RECT -0.185 -0.14 0.185 0.14 ;
+ LAYER met3 ;
+ RECT -0.165 -0.165 0.165 0.165 ;
+END M2M3_PR_R
+
+VIARULE M2M3_PR_R GENERATE
+ LAYER met2 ;
+ ENCLOSURE 0.085 0.04 ;
+ LAYER met3 ;
+ ENCLOSURE 0.065 0.065 ;
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.4 BY 0.4 ;
+END M2M3_PR_R
+
+# Minus via rule, lower layer metal is along prefered direction
+VIA M2M3_PR_M DEFAULT
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ LAYER met2 ;
+ RECT -0.14 -0.185 0.14 0.185 ;
+ LAYER met3 ;
+ RECT -0.165 -0.165 0.165 0.165 ;
+END M2M3_PR_M
+
+VIARULE M2M3_PR_M GENERATE
+ LAYER met2 ;
+ ENCLOSURE 0.04 0.085 ;
+ LAYER met3 ;
+ ENCLOSURE 0.065 0.065 ;
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.4 BY 0.4 ;
+END M2M3_PR_M
+
+# Minus via rule, upper layer metal is along prefered direction
+VIA M2M3_PR_MR DEFAULT
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ LAYER met2 ;
+ RECT -0.185 -0.14 0.185 0.14 ;
+ LAYER met3 ;
+ RECT -0.165 -0.165 0.165 0.165 ;
+END M2M3_PR_MR
+
+VIARULE M2M3_PR_MR GENERATE
+ LAYER met2 ;
+ ENCLOSURE 0.085 0.04 ;
+ LAYER met3 ;
+ ENCLOSURE 0.065 0.065 ;
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.4 BY 0.4 ;
+END M2M3_PR_MR
+
+# Centered via rule, we really do not want to use it
+VIA M2M3_PR_C DEFAULT
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ LAYER met2 ;
+ RECT -0.185 -0.185 0.185 0.185 ;
+ LAYER met3 ;
+ RECT -0.165 -0.165 0.165 0.165 ;
+END M2M3_PR_C
+
+VIARULE M2M3_PR_C GENERATE
+ LAYER met2 ;
+ ENCLOSURE 0.085 0.085 ;
+ LAYER met3 ;
+ ENCLOSURE 0.065 0.065 ;
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.4 BY 0.4 ;
+END M2M3_PR_C
+
+# Plus via rule, metals are along the prefered direction
+VIA M3M4_PR DEFAULT
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ LAYER met3 ;
+ RECT -0.19 -0.16 0.19 0.16 ;
+ LAYER met4 ;
+ RECT -0.165 -0.165 0.165 0.165 ;
+END M3M4_PR
+
+VIARULE M3M4_PR GENERATE
+ LAYER met3 ;
+ ENCLOSURE 0.09 0.06 ;
+ LAYER met4 ;
+ ENCLOSURE 0.065 0.065 ;
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.4 BY 0.4 ;
+END M3M4_PR
+
+# Plus via rule, metals are along the non prefered direction
+VIA M3M4_PR_R DEFAULT
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ LAYER met3 ;
+ RECT -0.16 -0.19 0.16 0.19 ;
+ LAYER met4 ;
+ RECT -0.165 -0.165 0.165 0.165 ;
+END M3M4_PR_R
+
+VIARULE M3M4_PR_R GENERATE
+ LAYER met3 ;
+ ENCLOSURE 0.06 0.09 ;
+ LAYER met4 ;
+ ENCLOSURE 0.065 0.065 ;
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.4 BY 0.4 ;
+END M3M4_PR_R
+
+# Minus via rule, lower layer metal is along prefered direction
+VIA M3M4_PR_M DEFAULT
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ LAYER met3 ;
+ RECT -0.19 -0.16 0.19 0.16 ;
+ LAYER met4 ;
+ RECT -0.165 -0.165 0.165 0.165 ;
+END M3M4_PR_M
+
+VIARULE M3M4_PR_M GENERATE
+ LAYER met3 ;
+ ENCLOSURE 0.09 0.06 ;
+ LAYER met4 ;
+ ENCLOSURE 0.065 0.065 ;
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.4 BY 0.4 ;
+END M3M4_PR_M
+
+# Minus via rule, upper layer metal is along prefered direction
+VIA M3M4_PR_MR DEFAULT
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ LAYER met3 ;
+ RECT -0.16 -0.19 0.16 0.19 ;
+ LAYER met4 ;
+ RECT -0.165 -0.165 0.165 0.165 ;
+END M3M4_PR_MR
+
+VIARULE M3M4_PR_MR GENERATE
+ LAYER met3 ;
+ ENCLOSURE 0.06 0.09 ;
+ LAYER met4 ;
+ ENCLOSURE 0.065 0.065 ;
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.4 BY 0.4 ;
+END M3M4_PR_MR
+
+# Centered via rule, we really do not want to use it
+VIA M3M4_PR_C DEFAULT
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ LAYER met3 ;
+ RECT -0.19 -0.19 0.19 0.19 ;
+ LAYER met4 ;
+ RECT -0.165 -0.165 0.165 0.165 ;
+END M3M4_PR_C
+
+VIARULE M3M4_PR_C GENERATE
+ LAYER met3 ;
+ ENCLOSURE 0.09 0.09 ;
+ LAYER met4 ;
+ ENCLOSURE 0.065 0.065 ;
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.4 BY 0.4 ;
+END M3M4_PR_C
+
+# Plus via rule, metals are along the prefered direction
+VIA M4M5_PR DEFAULT
+ LAYER via4 ;
+ RECT -0.4 -0.4 0.4 0.4 ;
+ LAYER met4 ;
+ RECT -0.59 -0.59 0.59 0.59 ;
+ LAYER met5 ;
+ RECT -0.71 -0.71 0.71 0.71 ;
+END M4M5_PR
+
+VIARULE M4M5_PR GENERATE
+ LAYER met4 ;
+ ENCLOSURE 0.19 0.19 ;
+ LAYER met5 ;
+ ENCLOSURE 0.31 0.31 ;
+ LAYER via4 ;
+ RECT -0.4 -0.4 0.4 0.4 ;
+ SPACING 1.6 BY 1.6 ;
+END M4M5_PR
+
+# Plus via rule, metals are along the non prefered direction
+VIA M4M5_PR_R DEFAULT
+ LAYER via4 ;
+ RECT -0.4 -0.4 0.4 0.4 ;
+ LAYER met4 ;
+ RECT -0.59 -0.59 0.59 0.59 ;
+ LAYER met5 ;
+ RECT -0.71 -0.71 0.71 0.71 ;
+END M4M5_PR_R
+
+VIARULE M4M5_PR_R GENERATE
+ LAYER met4 ;
+ ENCLOSURE 0.19 0.19 ;
+ LAYER met5 ;
+ ENCLOSURE 0.31 0.31 ;
+ LAYER via4 ;
+ RECT -0.4 -0.4 0.4 0.4 ;
+ SPACING 1.6 BY 1.6 ;
+END M4M5_PR_R
+
+# Minus via rule, lower layer metal is along prefered direction
+VIA M4M5_PR_M DEFAULT
+ LAYER via4 ;
+ RECT -0.4 -0.4 0.4 0.4 ;
+ LAYER met4 ;
+ RECT -0.59 -0.59 0.59 0.59 ;
+ LAYER met5 ;
+ RECT -0.71 -0.71 0.71 0.71 ;
+END M4M5_PR_M
+
+VIARULE M4M5_PR_M GENERATE
+ LAYER met4 ;
+ ENCLOSURE 0.19 0.19 ;
+ LAYER met5 ;
+ ENCLOSURE 0.31 0.31 ;
+ LAYER via4 ;
+ RECT -0.4 -0.4 0.4 0.4 ;
+ SPACING 1.6 BY 1.6 ;
+END M4M5_PR_M
+
+# Minus via rule, upper layer metal is along prefered direction
+VIA M4M5_PR_MR DEFAULT
+ LAYER via4 ;
+ RECT -0.4 -0.4 0.4 0.4 ;
+ LAYER met4 ;
+ RECT -0.59 -0.59 0.59 0.59 ;
+ LAYER met5 ;
+ RECT -0.71 -0.71 0.71 0.71 ;
+END M4M5_PR_MR
+
+VIARULE M4M5_PR_MR GENERATE
+ LAYER met4 ;
+ ENCLOSURE 0.19 0.19 ;
+ LAYER met5 ;
+ ENCLOSURE 0.31 0.31 ;
+ LAYER via4 ;
+ RECT -0.4 -0.4 0.4 0.4 ;
+ SPACING 1.6 BY 1.6 ;
+END M4M5_PR_MR
+
+# Centered via rule, we really do not want to use it
+VIA M4M5_PR_C DEFAULT
+ LAYER via4 ;
+ RECT -0.4 -0.4 0.4 0.4 ;
+ LAYER met4 ;
+ RECT -0.59 -0.59 0.59 0.59 ;
+ LAYER met5 ;
+ RECT -0.71 -0.71 0.71 0.71 ;
+END M4M5_PR_C
+
+VIARULE M4M5_PR_C GENERATE
+ LAYER met4 ;
+ ENCLOSURE 0.19 0.19 ;
+ LAYER met5 ;
+ ENCLOSURE 0.31 0.31 ;
+ LAYER via4 ;
+ RECT -0.4 -0.4 0.4 0.4 ;
+ SPACING 1.6 BY 1.6 ;
+END M4M5_PR_C
+### end of single via cells ###
+
+END LIBRARY