Adding complete technology LEF file. Updating sky130_fd_sc_ls 0.1.1. Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
diff --git a/tech/sky130_fd_sc_ls.tlef b/tech/sky130_fd_sc_ls.tlef index abed1a1..ad14973 100644 --- a/tech/sky130_fd_sc_ls.tlef +++ b/tech/sky130_fd_sc_ls.tlef
@@ -14,7 +14,7 @@ # # SPDX-License-Identifier: Apache-2.0 -VERSION 5.6 ; +VERSION 5.7 ; BUSBITCHARS "[]" ; DIVIDERCHAR "/" ; @@ -30,14 +30,726 @@ # Standard density, single height SITE unit - SYMMETRY y ; + SYMMETRY Y ; CLASS CORE ; - SIZE 0.480 BY 3.330 ; + SIZE 0.48 BY 3.33 ; END unit # Standard density, double height SITE unitdbl - SYMMETRY y ; + SYMMETRY Y ; CLASS CORE ; - SIZE 0.480 BY 6.660 ; -END unit + SIZE 0.48 BY 6.66 ; +END unitdbl + +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