Updated and new cells
diff --git a/cells/gds/LOFTY.gds b/cells/gds/LOFTY.gds new file mode 100644 index 0000000..2e28ac4 --- /dev/null +++ b/cells/gds/LOFTY.gds Binary files differ
diff --git a/cells/lef/AND2X1.lef b/cells/lef/AND2X1.lef index 2b2fbbc..4678076 100644 --- a/cells/lef/AND2X1.lef +++ b/cells/lef/AND2X1.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 5.760 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/AND2X2.lef b/cells/lef/AND2X2.lef index 5c4c9e3..a6ad78b 100644 --- a/cells/lef/AND2X2.lef +++ b/cells/lef/AND2X2.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 5.760 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/AOI21X1.lef b/cells/lef/AOI21X1.lef index 2a364e5..746dd95 100644 --- a/cells/lef/AOI21X1.lef +++ b/cells/lef/AOI21X1.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 5.760 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/AOI22X1.lef b/cells/lef/AOI22X1.lef index d37cec6..dffb0de 100644 --- a/cells/lef/AOI22X1.lef +++ b/cells/lef/AOI22X1.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 7.200 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/BUFX2.lef b/cells/lef/BUFX2.lef index 70f5d75..9b8ac6c 100644 --- a/cells/lef/BUFX2.lef +++ b/cells/lef/BUFX2.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 4.320 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/BUFX4.lef b/cells/lef/BUFX4.lef index c61076d..2c25e11 100644 --- a/cells/lef/BUFX4.lef +++ b/cells/lef/BUFX4.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 5.760 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/CLKBUF1.lef b/cells/lef/CLKBUF1.lef index 6ebaa05..e54e104 100644 --- a/cells/lef/CLKBUF1.lef +++ b/cells/lef/CLKBUF1.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 12.960 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/HAX1.lef b/cells/lef/HAX1.lef index 31e9d20..a1398a9 100644 --- a/cells/lef/HAX1.lef +++ b/cells/lef/HAX1.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 15.840 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/INV.lef b/cells/lef/INV.lef index 0784f3a..c80033f 100644 --- a/cells/lef/INV.lef +++ b/cells/lef/INV.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 2.880 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/INVX1.lef b/cells/lef/INVX1.lef index 47b48fb..adccadb 100644 --- a/cells/lef/INVX1.lef +++ b/cells/lef/INVX1.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 2.880 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/INVX2.lef b/cells/lef/INVX2.lef index ef6aee3..8a4db41 100644 --- a/cells/lef/INVX2.lef +++ b/cells/lef/INVX2.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 2.880 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/INVX4.lef b/cells/lef/INVX4.lef index 8588178..fa46143 100644 --- a/cells/lef/INVX4.lef +++ b/cells/lef/INVX4.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 4.320 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/INVX8.lef b/cells/lef/INVX8.lef index e3c5d0d..9985013 100644 --- a/cells/lef/INVX8.lef +++ b/cells/lef/INVX8.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 7.200 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/LATCH.lef b/cells/lef/LATCH.lef index 55afbba..09c6256 100644 --- a/cells/lef/LATCH.lef +++ b/cells/lef/LATCH.lef
@@ -8,7 +8,7 @@ ORIGIN 0.000 0.000 ; SIZE 10.080 BY 3.330 ; SYMMETRY X Y R90 ; - SITE unithd ; + SITE unit ; PIN vdd DIRECTION INOUT ; USE POWER ;
diff --git a/cells/lef/LOFTY.lef b/cells/lef/LOFTY.lef new file mode 100644 index 0000000..6fe954b --- /dev/null +++ b/cells/lef/LOFTY.lef
@@ -0,0 +1,167 @@ +VERSION 5.7 ; + NOWIREEXTENSIONATPIN ON ; + DIVIDERCHAR "/" ; + BUSBITCHARS "[]" ; +MACRO LOFTY + CLASS CORE ; + FOREIGN LOFTY ; + ORIGIN 0.000 0.000 ; + SIZE 21.600 BY 3.330 ; + SYMMETRY X Y R90 ; + SITE unit ; + PIN vdd + DIRECTION INOUT ; + USE POWER ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 0.000 3.090 21.600 3.570 ; + END + END vdd + PIN gnd + DIRECTION INOUT ; + USE GROUND ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 0.000 -0.240 21.600 0.240 ; + END + END gnd + PIN Q + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 2.020 2.290 2.550 2.580 ; + RECT 2.090 0.690 2.230 2.290 ; + RECT 2.020 0.400 2.310 0.690 ; + END + END Q + PIN ASEL_P + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 5.620 1.750 5.910 2.040 ; + RECT 5.690 1.090 5.830 1.750 ; + RECT 5.620 0.800 5.910 1.090 ; + END + END ASEL_P + PIN USEXOR_N + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 15.700 0.750 15.990 0.820 ; + RECT 20.020 0.750 20.310 0.820 ; + RECT 15.700 0.610 20.310 0.750 ; + RECT 15.700 0.530 15.990 0.610 ; + RECT 20.020 0.530 20.310 0.610 ; + END + END USEXOR_N + PIN USEMUX_N + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 0.890 2.230 1.750 2.370 ; + RECT 0.890 0.690 1.030 2.230 ; + RECT 1.540 2.170 1.750 2.230 ; + RECT 1.540 2.040 1.830 2.170 ; + RECT 1.300 1.880 1.830 2.040 ; + RECT 1.300 1.750 1.590 1.880 ; + RECT 1.370 1.090 1.510 1.750 ; + RECT 1.300 0.800 1.590 1.090 ; + RECT 0.820 0.400 1.110 0.690 ; + END + END USEMUX_N + PIN USEXOR_P + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 17.140 1.750 17.430 2.040 ; + END + PORT + LAYER met1 ; + RECT 8.500 1.750 8.790 2.040 ; + END + END USEXOR_P + PIN ASEL_N + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 7.060 1.340 7.350 1.630 ; + RECT 7.130 1.090 7.270 1.340 ; + RECT 7.060 0.800 7.350 1.090 ; + END + END ASEL_N + PIN BSEL_N + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 18.580 1.340 18.870 2.040 ; + END + END BSEL_N + PIN BSEL_P + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 14.260 1.340 14.550 1.630 ; + END + END BSEL_P + PIN MUXSEL_P + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 7.540 2.500 7.830 2.580 ; + RECT 7.540 2.360 9.190 2.500 ; + RECT 7.540 2.290 7.830 2.360 ; + RECT 9.050 2.230 9.190 2.360 ; + RECT 10.420 2.230 10.710 2.310 ; + RECT 11.620 2.230 11.910 2.310 ; + RECT 9.050 2.090 10.710 2.230 ; + RECT 10.420 2.040 10.710 2.090 ; + RECT 10.970 2.090 11.910 2.230 ; + RECT 10.970 2.040 11.110 2.090 ; + RECT 10.420 2.020 11.110 2.040 ; + RECT 11.620 2.040 11.910 2.090 ; + RECT 11.620 2.020 12.150 2.040 ; + RECT 10.660 1.820 11.110 2.020 ; + RECT 10.660 1.750 10.950 1.820 ; + RECT 11.860 1.750 12.150 2.020 ; + END + END MUXSEL_P + PIN USEMUX_P + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + LAYER met1 ; + RECT 2.570 2.230 3.430 2.370 ; + RECT 2.570 2.170 2.790 2.230 ; + RECT 2.500 2.040 2.790 2.170 ; + RECT 2.500 1.880 3.030 2.040 ; + RECT 2.740 1.750 3.030 1.880 ; + RECT 2.810 1.090 2.950 1.750 ; + RECT 3.290 1.500 3.430 2.230 ; + RECT 3.220 1.210 3.510 1.500 ; + RECT 2.740 0.800 3.030 1.090 ; + END + END USEMUX_P +END LOFTY +END LIBRARY +
diff --git a/cells/lef/fixup.pl b/cells/lef/fixup.pl index ae9f1be..9eadf77 100644 --- a/cells/lef/fixup.pl +++ b/cells/lef/fixup.pl
@@ -12,9 +12,9 @@ while(<LEFIN>) { $pin=$1 if(m/PIN (\w+)/); - s/SYMMETRY X Y R90/SITE unithd/; + s/SYMMETRY X Y R90/SITE unit/; s/SITE CORE/SYMMETRY X Y R90/; - #s/SITE unithd.*//; + #s/SITE unit.*//; s/metal2/met1/; s/VDD/vdd/; s/GND/gnd/;
diff --git a/cells/lef/orig/LOFTY.lef b/cells/lef/orig/LOFTY.lef new file mode 100644 index 0000000..f66e02a --- /dev/null +++ b/cells/lef/orig/LOFTY.lef
@@ -0,0 +1,209 @@ +MACRO LOFTY + CLASS CORE ; + FOREIGN LOFTY 0 0 ; + ORIGIN 0 0 ; + SYMMETRY X Y R90 ; + SITE CORE ; + PIN VDD + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 0.00000000 3.09000000 21.60000000 3.57000000 ; + END + END VDD + + PIN GND + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 0.00000000 -0.24000000 21.60000000 0.24000000 ; + END + END GND + + PIN Q + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 2.01500000 0.39500000 2.30500000 0.68500000 ; + RECT 2.09000000 0.68500000 2.23000000 2.28500000 ; + RECT 2.01500000 2.28500000 2.54500000 2.57500000 ; + END + END Q + + PIN ASEL_P + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 5.61500000 0.80000000 5.90500000 1.09000000 ; + RECT 5.69000000 1.09000000 5.83000000 1.74500000 ; + RECT 5.61500000 1.74500000 5.90500000 2.03500000 ; + END + END ASEL_P + + PIN USEXOR_N + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 15.69500000 0.53000000 15.98500000 0.60500000 ; + RECT 20.01500000 0.53000000 20.30500000 0.60500000 ; + RECT 15.69500000 0.60500000 20.30500000 0.74500000 ; + RECT 15.69500000 0.74500000 15.98500000 0.82000000 ; + RECT 20.01500000 0.74500000 20.30500000 0.82000000 ; + END + END USEXOR_N + + PIN USEMUX_N + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 0.81500000 0.39500000 1.10500000 0.68500000 ; + RECT 1.29500000 0.80000000 1.58500000 1.09000000 ; + RECT 1.37000000 1.09000000 1.51000000 1.74500000 ; + RECT 1.29500000 1.74500000 1.58500000 1.88000000 ; + RECT 1.29500000 1.88000000 1.82500000 2.03500000 ; + RECT 1.53500000 2.03500000 1.82500000 2.17000000 ; + RECT 0.89000000 0.68500000 1.03000000 2.22500000 ; + RECT 1.53500000 2.17000000 1.75000000 2.22500000 ; + RECT 0.89000000 2.22500000 1.75000000 2.36500000 ; + END + END USEMUX_N + + PIN USEXOR_P + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 8.49500000 1.74500000 8.78500000 2.03500000 ; + LAYER metal2 ; + RECT 17.13500000 1.74500000 17.42500000 2.03500000 ; + END + END USEXOR_P + + PIN ASEL_N + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 7.05500000 0.80000000 7.34500000 1.09000000 ; + RECT 7.13000000 1.09000000 7.27000000 1.34000000 ; + RECT 7.05500000 1.34000000 7.34500000 1.63000000 ; + END + END ASEL_N + + PIN BSEL_N + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 18.57500000 1.34000000 18.86500000 2.03500000 ; + END + END BSEL_N + + PIN BSEL_P + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 14.25500000 1.34000000 14.54500000 1.63000000 ; + END + END BSEL_P + + PIN MUXSEL_P + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 10.65500000 1.74500000 10.94500000 1.82000000 ; + RECT 10.65500000 1.82000000 11.11000000 2.01500000 ; + RECT 11.85500000 1.74500000 12.14500000 2.01500000 ; + RECT 11.61500000 2.01500000 12.14500000 2.03500000 ; + RECT 10.41500000 2.01500000 11.11000000 2.03500000 ; + RECT 10.41500000 2.03500000 10.70500000 2.09000000 ; + RECT 10.97000000 2.03500000 11.11000000 2.09000000 ; + RECT 11.61500000 2.03500000 11.90500000 2.09000000 ; + RECT 10.97000000 2.09000000 11.90500000 2.23000000 ; + RECT 9.05000000 2.09000000 10.70500000 2.23000000 ; + RECT 10.41500000 2.23000000 10.70500000 2.30500000 ; + RECT 11.61500000 2.23000000 11.90500000 2.30500000 ; + RECT 7.53500000 2.28500000 7.82500000 2.36000000 ; + RECT 9.05000000 2.23000000 9.19000000 2.36000000 ; + RECT 7.53500000 2.36000000 9.19000000 2.50000000 ; + RECT 7.53500000 2.50000000 7.82500000 2.57500000 ; + END + END MUXSEL_P + + PIN USEMUX_P + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 2.73500000 0.80000000 3.02500000 1.09000000 ; + RECT 3.21500000 1.20500000 3.50500000 1.49500000 ; + RECT 2.81000000 1.09000000 2.95000000 1.74500000 ; + RECT 2.73500000 1.74500000 3.02500000 1.88000000 ; + RECT 2.49500000 1.88000000 3.02500000 2.03500000 ; + RECT 2.49500000 2.03500000 2.78500000 2.17000000 ; + RECT 2.57000000 2.17000000 2.78500000 2.22500000 ; + RECT 3.29000000 1.49500000 3.43000000 2.22500000 ; + RECT 2.57000000 2.22500000 3.43000000 2.36500000 ; + END + END USEMUX_P + + PIN MUXSEL_N + DIRECTION INOUT ; + USE SIGNAL ; + SHAPE ABUTMENT ; + PORT + CLASS CORE ; + LAYER metal2 ; + RECT 10.65500000 1.74500000 10.94500000 1.82000000 ; + RECT 10.65500000 1.82000000 11.11000000 2.01500000 ; + RECT 11.85500000 1.74500000 12.14500000 2.01500000 ; + RECT 11.61500000 2.01500000 12.14500000 2.03500000 ; + RECT 10.41500000 2.01500000 11.11000000 2.03500000 ; + RECT 10.41500000 2.03500000 10.70500000 2.09000000 ; + RECT 10.97000000 2.03500000 11.11000000 2.09000000 ; + RECT 11.61500000 2.03500000 11.90500000 2.09000000 ; + RECT 10.97000000 2.09000000 11.90500000 2.23000000 ; + RECT 9.05000000 2.09000000 10.70500000 2.23000000 ; + RECT 10.41500000 2.23000000 10.70500000 2.30500000 ; + RECT 11.61500000 2.23000000 11.90500000 2.30500000 ; + RECT 7.53500000 2.28500000 7.82500000 2.36000000 ; + RECT 9.05000000 2.23000000 9.19000000 2.36000000 ; + RECT 7.53500000 2.36000000 9.19000000 2.50000000 ; + RECT 7.53500000 2.50000000 7.82500000 2.57500000 ; + END + END MUXSEL_N + + +END LOFTY
diff --git a/cells/lib/MUX2X1.lib b/cells/lib/MUX2X1.lib new file mode 100644 index 0000000..8e6ba75 --- /dev/null +++ b/cells/lib/MUX2X1.lib
@@ -0,0 +1,399 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (MUX2X1) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (S) { + capacitance: 0.009256673995156848; + direction: input; + fall_capacitance: 0.008174605299069488; + rise_capacitance: 0.01033874269124421; + } + pin (B) { + capacitance: 0.007621740826129985; + direction: input; + fall_capacitance: 0.008845710726223829; + rise_capacitance: 0.0063977709260361415; + } + pin (A) { + capacitance: 0.006381443680226534; + direction: input; + fall_capacitance: 0.007825475707159937; + rise_capacitance: 0.00493741165329313; + } + pin (Y) { + direction: output; + function: "(!(A & B & S + A & B & !S + A & S & !B + B & !A & !S))"; + timing () { + related_pin: "S"; + timing_sense: non_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.015477, 0.019600, 0.024190, 0.025747, 0.046287", \ + "0.090314, 0.087100, 0.090495, 0.101960, 0.176908", \ + "0.167236, 0.162506, 0.162337, 0.167647, 0.271944", \ + "0.321537, 0.315074, 0.311756, 0.311149, 0.436391", \ + "1.560714, 1.552503, 1.545002, 1.533689, 1.520599" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.009379, 0.017036, 0.023092, 0.027221, 0.047575", \ + "0.098648, 0.096570, 0.098493, 0.106357, 0.189094", \ + "0.192045, 0.187310, 0.185345, 0.186620, 0.293971", \ + "0.380085, 0.373558, 0.368111, 0.361746, 0.471469", \ + "1.891180, 1.882519, 1.872679, 1.854529, 1.753166" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.025354, 0.032783, 0.050461, 0.087201, 0.566081", \ + "0.133109, 0.134458, 0.135941, 0.157612, 0.603315", \ + "0.244639, 0.245101, 0.245522, 0.253219, 0.662135", \ + "0.469661, 0.469241, 0.469216, 0.469325, 0.758422", \ + "2.271840, 2.271929, 2.271941, 2.271927, 2.283161" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.022515, 0.036555, 0.054175, 0.094241, 0.572428", \ + "0.157940, 0.158368, 0.159664, 0.178650, 0.640716", \ + "0.288080, 0.288326, 0.288348, 0.292800, 0.713717", \ + "0.548431, 0.548597, 0.548599, 0.548675, 0.846377", \ + "2.640854, 2.640882, 2.640837, 2.640903, 2.646773" + ); + } + } + timing () { + related_pin: "B"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.012479, 0.020703, 0.023751, 0.026480, -0.020258", \ + "0.088791, 0.092407, 0.096269, 0.106017, 0.140677", \ + "0.166519, 0.167928, 0.170594, 0.176829, 0.252652", \ + "0.321088, 0.321765, 0.322714, 0.325872, 0.431855", \ + "1.560825, 1.560508, 1.559318, 1.557534, 1.590909" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.024075, 0.029303, 0.036113, 0.042909, 0.139365", \ + "0.116212, 0.118239, 0.123057, 0.135164, 0.298599", \ + "0.209808, 0.210879, 0.213787, 0.223211, 0.408707", \ + "0.398464, 0.398636, 0.399777, 0.405563, 0.586820", \ + "1.910071, 1.909315, 1.908318, 1.908149, 1.983973" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.021856, 0.029483, 0.041747, 0.075580, 0.318538", \ + "0.133491, 0.132145, 0.135514, 0.149421, 0.455212", \ + "0.245429, 0.244447, 0.244614, 0.249182, 0.551752", \ + "0.469502, 0.469644, 0.469460, 0.469734, 0.678108", \ + "2.271768, 2.271699, 2.271790, 2.271724, 2.274762" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.026927, 0.031637, 0.041603, 0.073132, 0.327601", \ + "0.157522, 0.158503, 0.158749, 0.168029, 0.467796", \ + "0.288182, 0.288023, 0.288247, 0.289518, 0.550457", \ + "0.548628, 0.548713, 0.548726, 0.548715, 0.704382", \ + "2.641050, 2.641120, 2.641079, 2.641124, 2.641113" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.019428, 0.021891, 0.024080, 0.024293, -0.020282", \ + "0.097729, 0.098072, 0.099347, 0.107474, 0.140891", \ + "0.174738, 0.174194, 0.175185, 0.179883, 0.252844", \ + "0.329664, 0.328818, 0.328461, 0.330406, 0.432450", \ + "1.569311, 1.568266, 1.566635, 1.564341, 1.594321" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.015958, 0.028273, 0.035331, 0.042097, 0.139507", \ + "0.109992, 0.113793, 0.120225, 0.134598, 0.298772", \ + "0.203874, 0.205671, 0.209819, 0.221705, 0.408455", \ + "0.392495, 0.393164, 0.395366, 0.402419, 0.586497", \ + "1.904233, 1.903472, 1.903098, 1.903613, 1.981673" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.020684, 0.027469, 0.040684, 0.075372, 0.321139", \ + "0.131690, 0.132092, 0.134409, 0.147611, 0.454546", \ + "0.244572, 0.244857, 0.245585, 0.248273, 0.551845", \ + "0.469953, 0.470028, 0.469684, 0.470070, 0.677392", \ + "2.272005, 2.271976, 2.272124, 2.272035, 2.274938" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.034906, 0.034011, 0.041604, 0.074407, 0.329883", \ + "0.157071, 0.157736, 0.156957, 0.168367, 0.468419", \ + "0.288086, 0.287766, 0.287721, 0.290181, 0.550707", \ + "0.548081, 0.548418, 0.548486, 0.548470, 0.704390", \ + "2.640667, 2.640718, 2.640731, 2.640752, 2.640649" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/lib/NAND2X1.lib b/cells/lib/NAND2X1.lib new file mode 100644 index 0000000..19e69a6 --- /dev/null +++ b/cells/lib/NAND2X1.lib
@@ -0,0 +1,329 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (NAND2X1) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (B) { + capacitance: 0.00495623189256475; + direction: input; + fall_capacitance: 0.005761587126333127; + rise_capacitance: 0.004150876658796372; + } + pin (A) { + capacitance: 0.00639318508707538; + direction: input; + fall_capacitance: 0.007850955022359487; + rise_capacitance: 0.004935415151791272; + } + pin (Y) { + direction: output; + function: "(!A & B)"; + timing () { + related_pin: "B"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.005849, 0.004437, 0.002225, -0.008486, -0.130057", \ + "0.046388, 0.043249, 0.046999, 0.048115, -0.018501", \ + "0.090291, 0.082811, 0.082216, 0.086712, 0.056313", \ + "0.178331, 0.167829, 0.160916, 0.157445, 0.175397", \ + "0.883390, 0.870337, 0.854738, 0.827352, 0.802406" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.013792, 0.016361, 0.025056, 0.033074, 0.175602", \ + "0.108490, 0.103780, 0.105147, 0.117790, 0.315278", \ + "0.202467, 0.196392, 0.193875, 0.197687, 0.411516", \ + "0.391201, 0.384138, 0.378135, 0.373850, 0.567320", \ + "1.903046, 1.894605, 1.884531, 1.867051, 1.824897" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.009695, 0.029312, 0.048608, 0.093281, 0.629805", \ + "0.078056, 0.082987, 0.099284, 0.142653, 0.690195", \ + "0.150388, 0.151272, 0.161350, 0.191067, 0.765186", \ + "0.290688, 0.289222, 0.292426, 0.310086, 0.876476", \ + "1.422106, 1.422288, 1.421889, 1.421871, 1.682533" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.014730, 0.023408, 0.040311, 0.078487, 0.617549", \ + "0.143671, 0.145673, 0.147214, 0.163072, 0.604300", \ + "0.274318, 0.273786, 0.274511, 0.279238, 0.636700", \ + "0.534800, 0.535162, 0.534899, 0.535215, 0.783182", \ + "2.627058, 2.627242, 2.627155, 2.627074, 2.630378" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.007196, 0.006952, 0.007019, 0.002025, -0.085579", \ + "0.048073, 0.045085, 0.049525, 0.053219, 0.022142", \ + "0.092047, 0.084523, 0.084238, 0.090031, 0.092503", \ + "0.180017, 0.169497, 0.162833, 0.159983, 0.207124", \ + "0.885060, 0.872012, 0.856446, 0.829185, 0.814262" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.015633, 0.021506, 0.028394, 0.039572, 0.149899", \ + "0.108272, 0.110667, 0.117688, 0.132659, 0.322650", \ + "0.202415, 0.203429, 0.208041, 0.220813, 0.436827", \ + "0.390997, 0.391221, 0.393703, 0.402725, 0.616168", \ + "1.902658, 1.901593, 1.901395, 1.902809, 2.012938" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.012945, 0.031804, 0.051562, 0.097848, 0.530404", \ + "0.082605, 0.085877, 0.102513, 0.146986, 0.675477", \ + "0.153507, 0.154155, 0.164693, 0.195301, 0.762310", \ + "0.293780, 0.292627, 0.295499, 0.313420, 0.886530", \ + "1.425247, 1.425396, 1.425085, 1.425078, 1.692913" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.014326, 0.019054, 0.029916, 0.064625, 0.487291", \ + "0.145515, 0.145739, 0.144059, 0.152642, 0.440611", \ + "0.274715, 0.273489, 0.274007, 0.274498, 0.467583", \ + "0.534478, 0.535194, 0.535121, 0.535184, 0.639625", \ + "2.627046, 2.627208, 2.627161, 2.627179, 2.627235" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/lib/NAND3X1.lib b/cells/lib/NAND3X1.lib new file mode 100644 index 0000000..8ae0b0a --- /dev/null +++ b/cells/lib/NAND3X1.lib
@@ -0,0 +1,399 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (NAND3X1) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (C) { + capacitance: 0.0049475602037443766; + direction: input; + fall_capacitance: 0.00574550349282349; + rise_capacitance: 0.004149616914665264; + } + pin (B) { + capacitance: 0.0056720092179016355; + direction: input; + fall_capacitance: 0.006513434336879236; + rise_capacitance: 0.0048305840989240345; + } + pin (A) { + capacitance: 0.00639281784839878; + direction: input; + fall_capacitance: 0.00785033270340369; + rise_capacitance: 0.0049353029933938706; + } + pin (Y) { + direction: output; + function: "(!A & B & C)"; + timing () { + related_pin: "C"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.006743, 0.005016, 0.001565, -0.011749, -0.174318", \ + "0.047706, 0.044014, 0.046942, 0.046061, -0.062176", \ + "0.091627, 0.083788, 0.082464, 0.085303, 0.015523", \ + "0.179686, 0.168911, 0.161469, 0.156671, 0.140314", \ + "0.884745, 0.871646, 0.855834, 0.827730, 0.787692" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.021450, 0.026780, 0.036138, 0.051156, 0.240752", \ + "0.141321, 0.138431, 0.140867, 0.154160, 0.407189", \ + "0.261734, 0.256641, 0.255261, 0.261805, 0.519595", \ + "0.501953, 0.495945, 0.491598, 0.490071, 0.706700", \ + "2.425213, 2.418226, 2.409901, 2.395913, 2.391369" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.011465, 0.029932, 0.047360, 0.089549, 0.523956", \ + "0.080202, 0.084521, 0.100586, 0.143486, 0.643649", \ + "0.152614, 0.153064, 0.163285, 0.192620, 0.727829", \ + "0.292789, 0.291706, 0.294483, 0.312038, 0.856442", \ + "1.424319, 1.424428, 1.424111, 1.424077, 1.684916" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.023400, 0.030385, 0.036793, 0.077633, 0.501790", \ + "0.190321, 0.189918, 0.190315, 0.199221, 0.487718", \ + "0.356855, 0.356030, 0.356029, 0.356551, 0.562588", \ + "0.690022, 0.690543, 0.690506, 0.690555, 0.811600", \ + "3.365843, 3.365797, 3.365863, 3.365868, 3.365810" + ); + } + } + timing () { + related_pin: "B"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.008334, 0.007216, 0.005700, -0.003192, -0.138009", \ + "0.049525, 0.045812, 0.049273, 0.049818, -0.030773", \ + "0.093522, 0.085734, 0.084386, 0.088138, 0.042191", \ + "0.181477, 0.170617, 0.163356, 0.158916, 0.163222", \ + "0.886560, 0.873387, 0.857606, 0.829593, 0.796379" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.023842, 0.028921, 0.038612, 0.052716, 0.222042", \ + "0.141887, 0.143909, 0.149119, 0.164220, 0.404600", \ + "0.261324, 0.261760, 0.265215, 0.276500, 0.527421", \ + "0.501628, 0.500687, 0.501928, 0.509042, 0.732336", \ + "2.424686, 2.422462, 2.420742, 2.419460, 2.508042" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.014708, 0.032599, 0.052399, 0.096681, 0.513554", \ + "0.084340, 0.087175, 0.104373, 0.147370, 0.652229", \ + "0.155755, 0.155756, 0.166557, 0.196533, 0.737741", \ + "0.295954, 0.295123, 0.297528, 0.315324, 0.869188", \ + "1.427488, 1.427517, 1.427300, 1.427279, 1.694092" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.023791, 0.028479, 0.033736, 0.068750, 0.456314", \ + "0.190317, 0.190047, 0.189241, 0.193568, 0.414810", \ + "0.356056, 0.356011, 0.356369, 0.355755, 0.487881", \ + "0.690508, 0.690541, 0.690522, 0.690519, 0.753026", \ + "3.365855, 3.365789, 3.365799, 3.365867, 3.365823" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.008972, 0.008268, 0.008643, 0.001970, -0.101488", \ + "0.051257, 0.047583, 0.051333, 0.053538, -0.001472", \ + "0.095356, 0.087565, 0.086323, 0.091056, 0.070441", \ + "0.183312, 0.172348, 0.165227, 0.161181, 0.187191", \ + "0.888366, 0.875180, 0.859388, 0.831456, 0.805980" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.020795, 0.029793, 0.038560, 0.050262, 0.188785", \ + "0.138390, 0.142029, 0.147535, 0.160844, 0.367966", \ + "0.257617, 0.259067, 0.261812, 0.272019, 0.491794", \ + "0.497805, 0.497186, 0.497402, 0.502803, 0.696298", \ + "2.420816, 2.418080, 2.414398, 2.409953, 2.462120" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.017292, 0.034566, 0.057624, 0.100464, 0.554013", \ + "0.086449, 0.091297, 0.109325, 0.151351, 0.684952", \ + "0.158837, 0.158653, 0.169957, 0.201757, 0.763039", \ + "0.298884, 0.298357, 0.300621, 0.319480, 0.888696", \ + "1.430569, 1.430607, 1.430474, 1.430460, 1.704460" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.024001, 0.027232, 0.035786, 0.067592, 0.495578", \ + "0.190876, 0.191071, 0.189818, 0.194805, 0.453280", \ + "0.356122, 0.356782, 0.355698, 0.356058, 0.506856", \ + "0.690537, 0.690105, 0.690542, 0.690408, 0.762544", \ + "3.365836, 3.365860, 3.365857, 3.365836, 3.365849" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/lib/NOR2X1.lib b/cells/lib/NOR2X1.lib new file mode 100644 index 0000000..9d13318 --- /dev/null +++ b/cells/lib/NOR2X1.lib
@@ -0,0 +1,329 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (NOR2X1) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (B) { + capacitance: 0.006303448359239213; + direction: input; + fall_capacitance: 0.006299461029458945; + rise_capacitance: 0.0063074356890194805; + } + pin (A) { + capacitance: 0.007595806558045583; + direction: input; + fall_capacitance: 0.008891411713164614; + rise_capacitance: 0.0063002014029265516; + } + pin (Y) { + direction: output; + function: "(!A & !B)"; + timing () { + related_pin: "B"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.011806, 0.013869, 0.017728, 0.018913, 0.043152", \ + "0.090701, 0.085913, 0.088689, 0.100157, 0.196930", \ + "0.168953, 0.162029, 0.161187, 0.166322, 0.300875", \ + "0.323595, 0.315317, 0.311154, 0.310040, 0.465699", \ + "1.563273, 1.553700, 1.544833, 1.531939, 1.541900" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.005936, 0.007846, 0.008974, 0.004744, -0.003026", \ + "0.046711, 0.047264, 0.052185, 0.058295, 0.096068", \ + "0.091147, 0.089514, 0.090542, 0.098390, 0.165025", \ + "0.180055, 0.176882, 0.175000, 0.175107, 0.275546", \ + "0.895253, 0.891498, 0.886774, 0.878409, 0.897352" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.011999, 0.022379, 0.043415, 0.084297, 0.702241", \ + "0.125846, 0.126296, 0.129026, 0.143562, 0.670887", \ + "0.236273, 0.236852, 0.235333, 0.245157, 0.662164", \ + "0.460758, 0.460362, 0.461218, 0.460426, 0.741521", \ + "2.263379, 2.263387, 2.263261, 2.263270, 2.274816" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.011676, 0.032976, 0.056268, 0.109537, 0.710905", \ + "0.092517, 0.100885, 0.113823, 0.157999, 0.799871", \ + "0.178759, 0.179128, 0.190132, 0.222605, 0.875172", \ + "0.349115, 0.349295, 0.352632, 0.369786, 0.981780", \ + "1.725874, 1.726029, 1.727042, 1.726377, 1.981658" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.012986, 0.016763, 0.019649, 0.026720, -0.007723", \ + "0.091508, 0.092784, 0.095177, 0.106380, 0.166698", \ + "0.168932, 0.168743, 0.171095, 0.177886, 0.281195", \ + "0.323606, 0.323192, 0.323918, 0.327812, 0.460072", \ + "1.563504, 1.562605, 1.561243, 1.560037, 1.617792" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.008571, 0.012259, 0.016219, 0.019628, 0.069884", \ + "0.050623, 0.051267, 0.056425, 0.066606, 0.159854", \ + "0.095165, 0.093119, 0.094604, 0.103938, 0.223425", \ + "0.183791, 0.180470, 0.178804, 0.179941, 0.324263", \ + "0.898914, 0.895013, 0.890412, 0.882094, 0.915185" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.011911, 0.020658, 0.034736, 0.070430, 0.635528", \ + "0.125379, 0.123991, 0.127246, 0.137364, 0.573702", \ + "0.237050, 0.236795, 0.237035, 0.239467, 0.551121", \ + "0.461112, 0.461207, 0.460365, 0.461268, 0.627986", \ + "2.263335, 2.263310, 2.263383, 2.263356, 2.265017" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.019230, 0.039782, 0.064283, 0.115340, 0.682539", \ + "0.099372, 0.109056, 0.124310, 0.167393, 0.824099", \ + "0.186034, 0.187618, 0.197839, 0.231703, 0.904179", \ + "0.357146, 0.356648, 0.360384, 0.378918, 1.012930", \ + "1.733504, 1.733696, 1.734753, 1.734098, 2.001564" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/lib/NOR3X1.lib b/cells/lib/NOR3X1.lib new file mode 100644 index 0000000..753b07e --- /dev/null +++ b/cells/lib/NOR3X1.lib
@@ -0,0 +1,399 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (NOR3X1) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (C) { + capacitance: 0.008851268942232223; + direction: input; + fall_capacitance: 0.007192740516108539; + rise_capacitance: 0.01050979736835591; + } + pin (B) { + capacitance: 0.008467308012434688; + direction: input; + fall_capacitance: 0.006491035832102533; + rise_capacitance: 0.010443580192766843; + } + pin (A) { + capacitance: 0.011319336983488502; + direction: input; + fall_capacitance: 0.012153813915844755; + rise_capacitance: 0.010484860051132246; + } + pin (Y) { + direction: output; + function: "(!A & !B & !C)"; + timing () { + related_pin: "C"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.019861, 0.013951, 0.010393, 0.010614, -0.095224", \ + "0.073806, 0.065433, 0.065471, 0.070741, 0.031362", \ + "0.126961, 0.116836, 0.114849, 0.117995, 0.121232", \ + "0.229374, 0.218604, 0.214181, 0.213278, 0.265478", \ + "1.052068, 1.040930, 1.032640, 1.022067, 1.050983" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.007431, 0.014436, 0.021041, 0.026061, 0.147747", \ + "0.048089, 0.051199, 0.058718, 0.073619, 0.235306", \ + "0.092679, 0.092234, 0.095807, 0.109560, 0.295852", \ + "0.181227, 0.178365, 0.178683, 0.184095, 0.391655", \ + "0.896652, 0.891924, 0.887935, 0.881387, 0.953533" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.017662, 0.024101, 0.048536, 0.089682, 0.758844", \ + "0.096073, 0.094132, 0.101399, 0.124739, 0.723967", \ + "0.170991, 0.170809, 0.171462, 0.183197, 0.697268", \ + "0.322446, 0.322746, 0.321943, 0.324630, 0.702708", \ + "1.546214, 1.546427, 1.546374, 1.546212, 1.604669" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.016377, 0.048611, 0.062895, 0.114022, 0.768870", \ + "0.097096, 0.107288, 0.124463, 0.164913, 0.849231", \ + "0.182999, 0.185111, 0.195260, 0.230117, 0.915649", \ + "0.353304, 0.352681, 0.357067, 0.377842, 1.011080", \ + "1.730018, 1.729723, 1.730358, 1.730359, 2.006705" + ); + } + } + timing () { + related_pin: "B"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.021404, 0.018148, 0.016999, 0.012352, -0.116477", \ + "0.073113, 0.069999, 0.071591, 0.077030, 0.012719", \ + "0.125310, 0.121160, 0.121831, 0.125821, 0.106267", \ + "0.228280, 0.223844, 0.223033, 0.224372, 0.254111", \ + "1.050975, 1.046727, 1.044059, 1.040846, 1.071937" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.009259, 0.023322, 0.030630, 0.037613, 0.214445", \ + "0.054518, 0.059015, 0.066642, 0.084249, 0.290662", \ + "0.099361, 0.100171, 0.103972, 0.118556, 0.346076", \ + "0.188116, 0.185793, 0.186314, 0.192750, 0.434451", \ + "0.903486, 0.899552, 0.895434, 0.889058, 0.974970" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.018177, 0.025953, 0.042317, 0.080707, 0.708600", \ + "0.095725, 0.094902, 0.100379, 0.117184, 0.657595", \ + "0.169936, 0.168818, 0.169550, 0.178176, 0.623126", \ + "0.322532, 0.321898, 0.322594, 0.323057, 0.620469", \ + "1.546325, 1.546425, 1.546433, 1.546433, 1.575338" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.027725, 0.061597, 0.100203, 0.128616, 0.760467", \ + "0.111045, 0.120997, 0.139653, 0.183957, 0.880925", \ + "0.197036, 0.200197, 0.212478, 0.247249, 0.949581", \ + "0.368936, 0.368337, 0.372047, 0.394425, 1.042426", \ + "1.745637, 1.745218, 1.745426, 1.745645, 2.034164" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.021535, 0.020687, 0.018209, 0.011098, -0.159177", \ + "0.073633, 0.071954, 0.071241, 0.072771, -0.039713", \ + "0.126395, 0.123666, 0.122260, 0.121428, 0.047912", \ + "0.228694, 0.226313, 0.223648, 0.220474, 0.190997", \ + "1.051376, 1.049091, 1.044628, 1.037782, 1.009584" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.006124, 0.029256, 0.038292, 0.053214, 0.282467", \ + "0.059066, 0.066388, 0.074590, 0.095077, 0.348409", \ + "0.104913, 0.107511, 0.112061, 0.127680, 0.398783", \ + "0.193938, 0.193305, 0.193982, 0.201534, 0.479599", \ + "0.910076, 0.906960, 0.902862, 0.896691, 0.998792" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.018579, 0.025146, 0.039182, 0.078947, 0.732260", \ + "0.095594, 0.095225, 0.095216, 0.111960, 0.683970", \ + "0.171029, 0.169347, 0.171096, 0.178076, 0.654431", \ + "0.322754, 0.321497, 0.322026, 0.323327, 0.642474", \ + "1.546326, 1.546372, 1.546374, 1.546417, 1.579783" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.032924, 0.073273, 0.111837, 0.141861, 0.820044", \ + "0.127458, 0.138303, 0.154962, 0.200434, 0.924242", \ + "0.212672, 0.215586, 0.228733, 0.265521, 0.987165", \ + "0.383595, 0.383606, 0.388604, 0.411154, 1.077362", \ + "1.760289, 1.760204, 1.760698, 1.760729, 2.064944" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/lib/OAI21X1.lib b/cells/lib/OAI21X1.lib new file mode 100644 index 0000000..7cfea33 --- /dev/null +++ b/cells/lib/OAI21X1.lib
@@ -0,0 +1,399 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (OAI21X1) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (C) { + capacitance: 0.0049685503383930275; + direction: input; + fall_capacitance: 0.0057337054132807755; + rise_capacitance: 0.004203395263505281; + } + pin (B) { + capacitance: 0.004817269329420684; + direction: input; + fall_capacitance: 0.0046993715663027884; + rise_capacitance: 0.004935167092538579; + } + pin (A) { + capacitance: 0.006365887451121313; + direction: input; + fall_capacitance: 0.007796116485619777; + rise_capacitance: 0.004935658416622851; + } + pin (Y) { + direction: output; + function: "(!(A & B & C + A & C & !B + B & C & !A))"; + timing () { + related_pin: "C"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.006353, 0.006873, 0.004977, -0.002571, -0.112220", \ + "0.047648, 0.044522, 0.048480, 0.050680, -0.005504", \ + "0.091575, 0.084317, 0.083496, 0.088598, 0.067928", \ + "0.179609, 0.168970, 0.162303, 0.158976, 0.185631", \ + "0.884619, 0.871536, 0.855984, 0.828850, 0.807127" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.012322, 0.018627, 0.025819, 0.036380, 0.166985", \ + "0.097230, 0.095251, 0.097606, 0.110133, 0.295266", \ + "0.182685, 0.178288, 0.176909, 0.181932, 0.384599", \ + "0.354450, 0.348364, 0.343303, 0.339898, 0.530677", \ + "1.731053, 1.722975, 1.713352, 1.696916, 1.662491" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.011924, 0.030898, 0.053284, 0.100971, 0.670100", \ + "0.080583, 0.085685, 0.102082, 0.143609, 0.716365", \ + "0.152800, 0.152883, 0.163222, 0.193150, 0.778215", \ + "0.292893, 0.292086, 0.294393, 0.311669, 0.881950", \ + "1.424263, 1.424245, 1.424087, 1.424045, 1.683357" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.017139, 0.026739, 0.044276, 0.087758, 0.660076", \ + "0.138283, 0.139729, 0.142997, 0.162743, 0.650333", \ + "0.260560, 0.259671, 0.260078, 0.269467, 0.681289", \ + "0.503775, 0.503479, 0.503665, 0.504685, 0.808692", \ + "2.459384, 2.459439, 2.459425, 2.459497, 2.482154" + ); + } + } + timing () { + related_pin: "B"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.018084, 0.018785, 0.021524, 0.021254, 0.031017", \ + "0.096634, 0.090653, 0.091567, 0.101191, 0.181020", \ + "0.173780, 0.166489, 0.164402, 0.167176, 0.281781", \ + "0.328645, 0.320024, 0.314801, 0.311087, 0.444609", \ + "1.568475, 1.558747, 1.549393, 1.535231, 1.517075" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.011853, 0.020828, 0.025802, 0.032296, 0.061131", \ + "0.103764, 0.107281, 0.113180, 0.125736, 0.245046", \ + "0.197462, 0.198933, 0.202960, 0.213251, 0.366132", \ + "0.386134, 0.386285, 0.388197, 0.395136, 0.557258", \ + "1.897752, 1.896544, 1.895986, 1.896513, 1.969418" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.020867, 0.029939, 0.052329, 0.091938, 0.451438", \ + "0.133406, 0.133983, 0.137806, 0.156667, 0.613530", \ + "0.245013, 0.245383, 0.244613, 0.254696, 0.705512", \ + "0.469706, 0.469327, 0.469422, 0.469157, 0.813809", \ + "2.271618, 2.271785, 2.271663, 2.271774, 2.288526" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.015697, 0.022510, 0.033468, 0.066107, 0.425032", \ + "0.144870, 0.144572, 0.145000, 0.157604, 0.462980", \ + "0.274162, 0.274051, 0.273949, 0.276993, 0.536593", \ + "0.535317, 0.535340, 0.535460, 0.535384, 0.689730", \ + "2.627338, 2.627345, 2.627342, 2.627355, 2.627455" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.018803, 0.021401, 0.023344, 0.023872, -0.022124", \ + "0.097043, 0.097462, 0.098807, 0.107122, 0.140271", \ + "0.174167, 0.173694, 0.174835, 0.179375, 0.252462", \ + "0.329045, 0.328268, 0.328060, 0.330094, 0.432085", \ + "1.568689, 1.567669, 1.566082, 1.563994, 1.593864" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.014567, 0.027648, 0.035349, 0.041047, 0.137832", \ + "0.108453, 0.112569, 0.119206, 0.133016, 0.297203", \ + "0.202396, 0.204223, 0.208700, 0.219958, 0.407822", \ + "0.391026, 0.391383, 0.393600, 0.400955, 0.585908", \ + "1.902735, 1.901651, 1.901085, 1.901740, 1.980348" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.019300, 0.027658, 0.041698, 0.074827, 0.320959", \ + "0.131626, 0.131992, 0.134734, 0.149048, 0.454028", \ + "0.244112, 0.244371, 0.245398, 0.247897, 0.550953", \ + "0.469602, 0.469661, 0.469275, 0.469732, 0.677618", \ + "2.271672, 2.271613, 2.271813, 2.271710, 2.274668" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.031706, 0.032612, 0.040602, 0.073394, 0.328383", \ + "0.155420, 0.155629, 0.156550, 0.167050, 0.465518", \ + "0.286331, 0.286147, 0.286318, 0.287490, 0.548717", \ + "0.546344, 0.546313, 0.546743, 0.546937, 0.703383", \ + "2.638909, 2.638879, 2.638882, 2.638975, 2.638890" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/lib/OAI22X1.lib b/cells/lib/OAI22X1.lib new file mode 100644 index 0000000..6c9ec6b --- /dev/null +++ b/cells/lib/OAI22X1.lib
@@ -0,0 +1,469 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (OAI22X1) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (D) { + capacitance: 0.0021453532257938264; + direction: input; + fall_capacitance: 6.164254229978021e-05; + rise_capacitance: 0.004229063909287872; + } + pin (C) { + capacitance: 0.004976915596377423; + direction: input; + fall_capacitance: 0.0057238940867746484; + rise_capacitance: 0.004229937105980198; + } + pin (B) { + capacitance: 0.004810999172966173; + direction: input; + fall_capacitance: 0.004686782002117296; + rise_capacitance: 0.00493521634381505; + } + pin (A) { + capacitance: 0.006365536753506552; + direction: input; + fall_capacitance: 0.007795205171653458; + rise_capacitance: 0.004935868335359646; + } + pin (Y) { + direction: output; + function: "((A & B & !C & !D + C & D & !A & !B + A & !B & !C & !D + B & !A & !C & !D + C & !A & !B & !D + D & !A & !B & !C + !A & !B & !C & !D))"; + timing () { + related_pin: "D"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.016262, 0.017741, 0.020452, 0.019420, -0.001499", \ + "0.095678, 0.090075, 0.091093, 0.099982, 0.152775", \ + "0.173776, 0.166259, 0.163962, 0.166726, 0.258406", \ + "0.328418, 0.319872, 0.314598, 0.311147, 0.428538", \ + "1.568201, 1.558608, 1.549384, 1.535559, 1.515136" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.011023, 0.018232, 0.023273, 0.028038, 0.082251", \ + "0.094341, 0.092670, 0.094113, 0.103646, 0.217383", \ + "0.179868, 0.175244, 0.173130, 0.174945, 0.311623", \ + "0.351607, 0.345183, 0.339617, 0.333200, 0.467646", \ + "1.728098, 1.719804, 1.710141, 1.692568, 1.611799" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.018975, 0.028562, 0.049415, 0.089237, 0.641577", \ + "0.132997, 0.132685, 0.135462, 0.153560, 0.651633", \ + "0.243979, 0.244016, 0.242906, 0.252668, 0.698762", \ + "0.467681, 0.467640, 0.468098, 0.467574, 0.795527", \ + "2.270165, 2.270194, 2.270075, 2.270158, 2.286886" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.019197, 0.039255, 0.052110, 0.097009, 0.642401", \ + "0.140956, 0.141396, 0.146191, 0.171523, 0.712509", \ + "0.262540, 0.262555, 0.262471, 0.273651, 0.778925", \ + "0.505956, 0.505722, 0.505888, 0.507033, 0.894213", \ + "2.461475, 2.461430, 2.461494, 2.461469, 2.493082" + ); + } + } + timing () { + related_pin: "C"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.017359, 0.020602, 0.022466, 0.024654, -0.046754", \ + "0.096705, 0.096946, 0.098584, 0.106282, 0.121532", \ + "0.173777, 0.173577, 0.174431, 0.178939, 0.237315", \ + "0.328617, 0.328111, 0.327825, 0.329774, 0.421297", \ + "1.568418, 1.567576, 1.565970, 1.563848, 1.593553" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.015022, 0.024347, 0.031623, 0.040631, 0.158538", \ + "0.099036, 0.097739, 0.100219, 0.111280, 0.279679", \ + "0.184670, 0.180259, 0.178658, 0.181740, 0.365006", \ + "0.356322, 0.350056, 0.344803, 0.339143, 0.507264", \ + "1.732880, 1.724663, 1.714991, 1.697579, 1.627329" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.019084, 0.026776, 0.039823, 0.075672, 0.535237", \ + "0.131377, 0.131261, 0.132692, 0.145125, 0.516016", \ + "0.243564, 0.243531, 0.243534, 0.246588, 0.558890", \ + "0.468225, 0.468179, 0.468042, 0.468205, 0.664320", \ + "2.270088, 2.270095, 2.270133, 2.270106, 2.272980" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.031510, 0.049989, 0.062355, 0.106040, 0.586348", \ + "0.151694, 0.152790, 0.156527, 0.182644, 0.731793", \ + "0.273221, 0.273269, 0.273901, 0.284371, 0.805125", \ + "0.516486, 0.516519, 0.516581, 0.517538, 0.918731", \ + "2.472286, 2.472287, 2.472233, 2.472242, 2.503889" + ); + } + } + timing () { + related_pin: "B"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.022460, 0.023823, 0.028185, 0.032725, 0.048628", \ + "0.101758, 0.095743, 0.096537, 0.106002, 0.192478", \ + "0.178737, 0.171298, 0.169438, 0.172294, 0.292379", \ + "0.333714, 0.324980, 0.319961, 0.316508, 0.454253", \ + "1.573522, 1.563797, 1.554566, 1.540634, 1.526335" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.009970, 0.022403, 0.029546, 0.034700, 0.068167", \ + "0.096913, 0.101219, 0.107825, 0.121609, 0.232622", \ + "0.185623, 0.187325, 0.191482, 0.202034, 0.347414", \ + "0.363642, 0.363571, 0.365553, 0.371659, 0.531408", \ + "1.789848, 1.787982, 1.786798, 1.785978, 1.851027" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.027669, 0.035784, 0.054151, 0.092799, 0.482183", \ + "0.140384, 0.141035, 0.144045, 0.162603, 0.615320", \ + "0.251926, 0.252443, 0.252459, 0.260421, 0.699195", \ + "0.477068, 0.477037, 0.476614, 0.476926, 0.805486", \ + "2.279001, 2.279001, 2.279030, 2.279108, 2.294719" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.026136, 0.039819, 0.039716, 0.074663, 0.449468", \ + "0.141886, 0.142241, 0.143245, 0.158332, 0.500963", \ + "0.262746, 0.262952, 0.263172, 0.266752, 0.568096", \ + "0.505553, 0.505524, 0.505320, 0.505778, 0.700928", \ + "2.453307, 2.453357, 2.453377, 2.453355, 2.454709" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: negative_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.023283, 0.026391, 0.030097, 0.032328, -0.001253", \ + "0.101980, 0.102170, 0.104068, 0.112129, 0.154938", \ + "0.179362, 0.178895, 0.179701, 0.184772, 0.265473", \ + "0.334131, 0.333374, 0.333035, 0.335245, 0.443256", \ + "1.573764, 1.572736, 1.571134, 1.569023, 1.603107" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.012521, 0.028199, 0.037706, 0.047850, 0.141476", \ + "0.101182, 0.106075, 0.113456, 0.128856, 0.286674", \ + "0.190018, 0.192261, 0.196376, 0.207802, 0.390952", \ + "0.368057, 0.368351, 0.370519, 0.377256, 0.561629", \ + "1.794406, 1.792708, 1.791509, 1.790815, 1.862031" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.027862, 0.033354, 0.044936, 0.077255, 0.353604", \ + "0.140814, 0.140720, 0.141271, 0.155440, 0.462296", \ + "0.251891, 0.251950, 0.252170, 0.254649, 0.552226", \ + "0.476737, 0.476901, 0.476974, 0.476945, 0.673929", \ + "2.279056, 2.278996, 2.279039, 2.278966, 2.281603" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.033370, 0.057996, 0.048428, 0.083327, 0.382049", \ + "0.151938, 0.153699, 0.154923, 0.169228, 0.507796", \ + "0.273900, 0.273102, 0.273602, 0.276988, 0.582041", \ + "0.516030, 0.516117, 0.516125, 0.516348, 0.713735", \ + "2.464090, 2.464052, 2.464047, 2.464139, 2.465296" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/lib/OR2X1.lib b/cells/lib/OR2X1.lib new file mode 100644 index 0000000..116bb16 --- /dev/null +++ b/cells/lib/OR2X1.lib
@@ -0,0 +1,329 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (OR2X1) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (B) { + capacitance: 0.007576401997672222; + direction: input; + fall_capacitance: 0.008853042755779209; + rise_capacitance: 0.006299761239565236; + } + pin (A) { + capacitance: 0.006280956134443613; + direction: input; + fall_capacitance: 0.006252202564509515; + rise_capacitance: 0.006309709704377711; + } + pin (Y) { + direction: output; + function: "(!!A & !B)"; + timing () { + related_pin: "B"; + timing_sense: positive_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "-0.002737, 0.013249, 0.024740, 0.030135, 0.058150", \ + "0.042967, 0.048920, 0.058700, 0.066027, 0.128620", \ + "0.085691, 0.083076, 0.088849, 0.098329, 0.169802", \ + "0.172823, 0.161427, 0.160431, 0.161812, 0.229754", \ + "0.876988, 0.854756, 0.839524, 0.814610, 0.732242" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.029512, 0.033910, 0.037914, 0.050330, 0.052929", \ + "0.070267, 0.072997, 0.078009, 0.091347, 0.135739", \ + "0.112746, 0.114735, 0.118673, 0.130593, 0.209389", \ + "0.200112, 0.201924, 0.204703, 0.213815, 0.340853", \ + "0.914821, 0.916103, 0.917764, 0.922353, 1.006921" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.016092, 0.057938, 0.095965, 0.165885, 0.705458", \ + "0.078905, 0.104180, 0.138126, 0.202710, 0.704503", \ + "0.148545, 0.161533, 0.188973, 0.232451, 0.725913", \ + "0.289045, 0.288648, 0.297219, 0.323752, 0.788330", \ + "1.420575, 1.420547, 1.420296, 1.420209, 1.575305" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.024665, 0.028188, 0.037838, 0.067587, 0.608216", \ + "0.097377, 0.097071, 0.100693, 0.117571, 0.616589", \ + "0.178290, 0.178809, 0.181589, 0.191054, 0.624945", \ + "0.348706, 0.349016, 0.349686, 0.352764, 0.697194", \ + "1.725555, 1.725371, 1.726655, 1.725685, 1.854607" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: positive_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "-0.002786, -0.022525, 0.019015, 0.011670, -0.014214", \ + "0.041859, 0.043298, 0.052130, 0.057857, 0.058886", \ + "0.085034, 0.078556, 0.083166, 0.090278, 0.102558", \ + "0.172887, 0.158458, 0.155718, 0.154087, 0.173297", \ + "0.877505, 0.854378, 0.837626, 0.810046, 0.720442" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.028690, 0.031248, 0.037463, 0.044487, 0.100482", \ + "0.069107, 0.069828, 0.076360, 0.091636, 0.185145", \ + "0.112034, 0.111088, 0.115798, 0.129197, 0.254233", \ + "0.199087, 0.197989, 0.201090, 0.209121, 0.374419", \ + "0.914050, 0.911951, 0.913051, 0.915105, 1.007909" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.013392, 0.052206, 0.087689, 0.154666, 0.691395", \ + "0.076707, 0.097805, 0.133251, 0.196593, 0.689662", \ + "0.148818, 0.159357, 0.181649, 0.221635, 0.720108", \ + "0.288045, 0.289252, 0.294522, 0.318177, 0.791961", \ + "1.420335, 1.420191, 1.420219, 1.420439, 1.583354" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.024973, 0.029481, 0.044119, 0.082711, 0.664635", \ + "0.097225, 0.099096, 0.107079, 0.133341, 0.664451", \ + "0.179958, 0.178788, 0.182955, 0.202839, 0.677564", \ + "0.347947, 0.348719, 0.349929, 0.358002, 0.742083", \ + "1.725186, 1.725383, 1.725427, 1.725691, 1.862987" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/lib/OR2X2.lib b/cells/lib/OR2X2.lib new file mode 100644 index 0000000..d818b4d --- /dev/null +++ b/cells/lib/OR2X2.lib
@@ -0,0 +1,329 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (OR2X2) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (B) { + capacitance: 0.007576401997672222; + direction: input; + fall_capacitance: 0.008853042755779209; + rise_capacitance: 0.006299761239565236; + } + pin (A) { + capacitance: 0.006280956134443613; + direction: input; + fall_capacitance: 0.006252202564509515; + rise_capacitance: 0.006309709704377711; + } + pin (Y) { + direction: output; + function: "(!!A & !B)"; + timing () { + related_pin: "B"; + timing_sense: positive_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "-0.002737, 0.013249, 0.024740, 0.030135, 0.058150", \ + "0.042967, 0.048920, 0.058700, 0.066027, 0.128620", \ + "0.085691, 0.083076, 0.088849, 0.098329, 0.169802", \ + "0.172823, 0.161427, 0.160431, 0.161812, 0.229754", \ + "0.876988, 0.854756, 0.839524, 0.814610, 0.732242" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.029512, 0.033910, 0.037914, 0.050330, 0.052929", \ + "0.070267, 0.072997, 0.078009, 0.091347, 0.135739", \ + "0.112746, 0.114735, 0.118673, 0.130593, 0.209389", \ + "0.200112, 0.201924, 0.204703, 0.213815, 0.340853", \ + "0.914821, 0.916103, 0.917764, 0.922353, 1.006921" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.016092, 0.057938, 0.095965, 0.165885, 0.705458", \ + "0.078905, 0.104180, 0.138126, 0.202710, 0.704503", \ + "0.148545, 0.161533, 0.188973, 0.232451, 0.725913", \ + "0.289045, 0.288648, 0.297219, 0.323752, 0.788330", \ + "1.420575, 1.420547, 1.420296, 1.420209, 1.575305" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.024665, 0.028188, 0.037838, 0.067587, 0.608216", \ + "0.097377, 0.097071, 0.100693, 0.117571, 0.616589", \ + "0.178290, 0.178809, 0.181589, 0.191054, 0.624945", \ + "0.348706, 0.349016, 0.349686, 0.352764, 0.697194", \ + "1.725555, 1.725371, 1.726655, 1.725685, 1.854607" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: positive_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "-0.002786, -0.022525, 0.019015, 0.011670, -0.014214", \ + "0.041859, 0.043298, 0.052130, 0.057857, 0.058886", \ + "0.085034, 0.078556, 0.083166, 0.090278, 0.102558", \ + "0.172887, 0.158458, 0.155718, 0.154087, 0.173297", \ + "0.877505, 0.854378, 0.837626, 0.810046, 0.720442" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.028690, 0.031248, 0.037463, 0.044487, 0.100482", \ + "0.069107, 0.069828, 0.076360, 0.091636, 0.185145", \ + "0.112034, 0.111088, 0.115798, 0.129197, 0.254233", \ + "0.199087, 0.197989, 0.201090, 0.209121, 0.374419", \ + "0.914050, 0.911951, 0.913051, 0.915105, 1.007909" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.013392, 0.052206, 0.087689, 0.154666, 0.691395", \ + "0.076707, 0.097805, 0.133251, 0.196593, 0.689662", \ + "0.148818, 0.159357, 0.181649, 0.221635, 0.720108", \ + "0.288045, 0.289252, 0.294522, 0.318177, 0.791961", \ + "1.420335, 1.420191, 1.420219, 1.420439, 1.583354" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.024973, 0.029481, 0.044119, 0.082711, 0.664635", \ + "0.097225, 0.099096, 0.107079, 0.133341, 0.664451", \ + "0.179958, 0.178788, 0.182955, 0.202839, 0.677564", \ + "0.347947, 0.348719, 0.349929, 0.358002, 0.742083", \ + "1.725186, 1.725383, 1.725427, 1.725691, 1.862987" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/lib/XNOR2X1.lib b/cells/lib/XNOR2X1.lib new file mode 100644 index 0000000..90b0b93 --- /dev/null +++ b/cells/lib/XNOR2X1.lib
@@ -0,0 +1,329 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (XNOR2X1) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (B) { + capacitance: 0.013514822660098; + direction: input; + fall_capacitance: 0.01444352653236194; + rise_capacitance: 0.012586118787834062; + } + pin (A) { + capacitance: 0.01216821188263561; + direction: input; + fall_capacitance: 0.01160051626672843; + rise_capacitance: 0.01273590749854279; + } + pin (Y) { + direction: output; + function: "(!(A & !B + B & !A))"; + timing () { + related_pin: "B"; + timing_sense: non_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.016692, 0.026466, 0.032210, 0.035327, 0.047236", \ + "0.091623, 0.096157, 0.101268, 0.112236, 0.182896", \ + "0.168714, 0.171487, 0.175299, 0.184006, 0.283106", \ + "0.323178, 0.324836, 0.326819, 0.332014, 0.455088", \ + "1.562758, 1.563072, 1.562761, 1.562230, 1.609484" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.026885, 0.032485, 0.038933, 0.047083, 0.088356", \ + "0.117931, 0.120641, 0.124872, 0.135278, 0.246294", \ + "0.211363, 0.213025, 0.215480, 0.223412, 0.363623", \ + "0.399691, 0.400466, 0.401437, 0.406163, 0.555052", \ + "1.911060, 1.910782, 1.909790, 1.909219, 1.963747" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.025286, 0.030976, 0.039578, 0.069148, 0.271887", \ + "0.132863, 0.133148, 0.134699, 0.146335, 0.398431", \ + "0.245392, 0.244781, 0.245027, 0.248852, 0.500046", \ + "0.469752, 0.469734, 0.469539, 0.469707, 0.636982", \ + "2.271914, 2.271860, 2.271907, 2.271883, 2.273532" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.028424, 0.032113, 0.039714, 0.069558, 0.259508", \ + "0.158149, 0.158097, 0.158297, 0.165758, 0.432914", \ + "0.288248, 0.287926, 0.287602, 0.288201, 0.539323", \ + "0.548453, 0.548729, 0.548771, 0.548859, 0.704675", \ + "2.640916, 2.640957, 2.640961, 2.640975, 2.640935" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: non_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.013989, 0.017922, 0.023819, 0.023910, 0.045077", \ + "0.087124, 0.084574, 0.088506, 0.101490, 0.176795", \ + "0.164482, 0.158794, 0.159586, 0.166358, 0.271935", \ + "0.318605, 0.311099, 0.308187, 0.308499, 0.436242", \ + "1.557737, 1.548082, 1.540255, 1.529227, 1.518552" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.013397, 0.017881, 0.023473, 0.028401, 0.048333", \ + "0.105060, 0.099768, 0.099684, 0.107137, 0.189063", \ + "0.198273, 0.190917, 0.187291, 0.187394, 0.294003", \ + "0.386416, 0.377286, 0.370618, 0.362674, 0.471656", \ + "1.897499, 1.886493, 1.875774, 1.856923, 1.754103" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.024118, 0.038502, 0.063416, 0.087635, 0.566949", \ + "0.133840, 0.133055, 0.136674, 0.159516, 0.603141", \ + "0.245168, 0.244344, 0.245288, 0.252595, 0.662450", \ + "0.469128, 0.469774, 0.469389, 0.469661, 0.759403", \ + "2.272025, 2.271869, 2.271945, 2.272010, 2.283692" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.025980, 0.033978, 0.052062, 0.093692, 0.572048", \ + "0.158104, 0.158727, 0.159581, 0.178242, 0.640536", \ + "0.287711, 0.288211, 0.287992, 0.293228, 0.713557", \ + "0.548627, 0.548574, 0.548857, 0.548865, 0.845995", \ + "2.640933, 2.640942, 2.640979, 2.640983, 2.646792" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/lib/XOR2X1.lib b/cells/lib/XOR2X1.lib new file mode 100644 index 0000000..d941f1f --- /dev/null +++ b/cells/lib/XOR2X1.lib
@@ -0,0 +1,329 @@ +library (ls05_stdcells) { + capacitive_load_unit (1.0, pf); + current_unit: "1uA"; + default_operating_conditions: typical; + delay_model: table_lookup; + in_place_swap_mode: match_footprint; + input_threshold_pct_fall: 50.0; + input_threshold_pct_rise: 50.0; + leakage_power_unit: "1nW"; + nom_process: 1.0; + nom_temperature: 25.0; + nom_voltage: 5.0; + output_threshold_pct_fall: 50.0; + output_threshold_pct_rise: 50.0; + pulling_resistance_unit: "1kohm"; + slew_lower_threshold_pct_fall: 20.0; + slew_lower_threshold_pct_rise: 20.0; + slew_upper_threshold_pct_fall: 80.0; + slew_upper_threshold_pct_rise: 80.0; + time_unit: "1ns"; + voltage_unit: "1V"; + operating_conditions (typical) { + process: 1.0; + temperature: 25.0; + voltage: 5.0; + } + lu_table_template (delay_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + lu_table_template (delay_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_net_transition; + } + lu_table_template (delay_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_net_transition; + } + power_lut_template (energy_template_5x5) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_5x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + power_lut_template (energy_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: total_output_net_capacitance; + variable_2: input_transition_time; + } + lu_table_template (hold_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (hold_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + power_lut_template (passive_energy_template_5x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: input_transition_time; + } + power_lut_template (passive_energy_template_6x1) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: input_transition_time; + } + lu_table_template (recovery_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (recovery_template_6x6) { + index_1 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (removal_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x5) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + lu_table_template (setup_template_3x6) { + index_1 ( + "1000.0, 1001.0, 1002.0" + ); + index_2 ( + "1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0" + ); + variable_1: related_pin_transition; + variable_2: constrained_pin_transition; + } + cell (XOR2X1) { + area: 1.0; + cell_leakage_power: 0.1173; + pin (B) { + capacitance: 0.012276358158465816; + direction: input; + fall_capacitance: 0.013427310434186409; + rise_capacitance: 0.011125405882745222; + } + pin (A) { + capacitance: 0.00749442073476893; + direction: input; + fall_capacitance: 0.009072357734937673; + rise_capacitance: 0.005916483734600188; + } + pin (Y) { + direction: output; + function: "(!(A & B + !A & !B))"; + timing () { + related_pin: "B"; + timing_sense: non_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.014892, 0.026098, 0.032153, 0.035628, 0.047318", \ + "0.092224, 0.096655, 0.101443, 0.112719, 0.182767", \ + "0.169673, 0.171668, 0.175532, 0.183060, 0.283111", \ + "0.324128, 0.324946, 0.326965, 0.330982, 0.455128", \ + "1.563499, 1.563195, 1.562797, 1.561380, 1.609543" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.024062, 0.032769, 0.038614, 0.047550, 0.088606", \ + "0.116083, 0.118915, 0.123597, 0.135586, 0.246157", \ + "0.209677, 0.211048, 0.214246, 0.222844, 0.363632", \ + "0.398099, 0.398428, 0.399744, 0.404595, 0.555144", \ + "1.909496, 1.908653, 1.907693, 1.906646, 1.962945" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.025254, 0.046375, 0.039294, 0.072021, 0.273173", \ + "0.133780, 0.132393, 0.135503, 0.147696, 0.398969", \ + "0.244610, 0.245358, 0.245256, 0.247565, 0.499327", \ + "0.469332, 0.469791, 0.469256, 0.469907, 0.636792", \ + "2.271962, 2.271926, 2.271949, 2.271912, 2.273340" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.030994, 0.031460, 0.039808, 0.071119, 0.265648", \ + "0.158547, 0.158367, 0.159273, 0.166528, 0.433196", \ + "0.288225, 0.287669, 0.287878, 0.288591, 0.539227", \ + "0.548600, 0.548684, 0.548694, 0.548722, 0.704892", \ + "2.640937, 2.640941, 2.640938, 2.640974, 2.640919" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: non_unate; + cell_rise (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.012892, 0.017730, 0.023813, 0.027360, 0.044820", \ + "0.088467, 0.084827, 0.087953, 0.101073, 0.177048", \ + "0.165423, 0.159431, 0.159037, 0.166450, 0.271959", \ + "0.319577, 0.311467, 0.307870, 0.308677, 0.436355", \ + "1.558626, 1.548309, 1.540221, 1.529215, 1.518702" + ); + } + cell_fall (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.016957, 0.021051, 0.026086, 0.031933, 0.049325", \ + "0.105617, 0.101524, 0.101659, 0.109154, 0.189216", \ + "0.199262, 0.192615, 0.189350, 0.188747, 0.294117", \ + "0.387542, 0.379182, 0.372626, 0.364699, 0.471910", \ + "1.898845, 1.888610, 1.878187, 1.859516, 1.755959" + ); + } + rise_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.023742, 0.042643, 0.072286, 0.090530, 0.566724", \ + "0.132629, 0.134268, 0.137045, 0.160242, 0.603489", \ + "0.244817, 0.245637, 0.244852, 0.253117, 0.662530", \ + "0.469395, 0.469226, 0.469550, 0.469622, 0.758597", \ + "2.271920, 2.272019, 2.271961, 2.271949, 2.283313" + ); + } + fall_transition (delay_template_5x5) { + index_1 ( + "0.000500, 0.050000, 0.100000, 0.200000, 1.000000" + ); + index_2 ( + "0.010000, 0.050000, 0.100000, 0.200000, 1.500000" + ); + values ( + "0.029158, 0.032762, 0.049130, 0.090068, 0.563023", \ + "0.158384, 0.157282, 0.158756, 0.175473, 0.633346", \ + "0.287824, 0.288245, 0.288387, 0.291586, 0.711223", \ + "0.548431, 0.548524, 0.548547, 0.548816, 0.844417", \ + "2.640867, 2.640887, 2.640922, 2.640988, 2.646707" + ); + } + } + } + } +} \ No newline at end of file
diff --git a/cells/mag/LOFTY.mag b/cells/mag/LOFTY.mag new file mode 100644 index 0000000..39ac33f --- /dev/null +++ b/cells/mag/LOFTY.mag
@@ -0,0 +1,670 @@ +magic +# Generated by librecell +tech sky130A +timestamp 1621192485 +<< nwell >> +rect 0 179 2160 333 +rect 27 333 1990 340 +<< viali >> +rect 1336 19 1353 36 +rect 1360 19 1377 36 +rect 1768 19 1785 36 +rect 1792 19 1809 36 +rect 88 46 105 63 +rect 208 46 225 63 +rect 352 46 369 63 +rect 472 46 489 63 +rect 520 46 537 63 +rect 712 46 729 63 +rect 760 46 777 63 +rect 808 46 825 63 +rect 952 46 969 63 +rect 1480 46 1497 63 +rect 1504 46 1521 63 +rect 2056 46 2073 63 +rect 1576 59 1593 76 +rect 2008 59 2025 76 +rect 136 86 153 103 +rect 280 86 297 103 +rect 568 86 585 103 +rect 712 86 729 103 +rect 328 127 345 144 +rect 664 127 681 144 +rect 712 140 729 157 +rect 1288 140 1305 157 +rect 1432 140 1449 157 +rect 1624 140 1641 157 +rect 1864 140 1881 157 +rect 136 181 153 198 +rect 280 181 297 198 +rect 568 181 585 198 +rect 664 181 681 198 +rect 856 181 873 198 +rect 1072 181 1089 198 +rect 1192 181 1209 198 +rect 1720 181 1737 198 +rect 1864 181 1881 198 +rect 160 194 177 211 +rect 256 194 273 211 +rect 1048 208 1065 225 +rect 1168 208 1185 225 +rect 1384 208 1401 225 +rect 1456 208 1473 225 +rect 1600 221 1617 238 +rect 1912 221 1929 238 +rect 208 235 225 252 +rect 232 235 249 252 +rect 352 235 369 252 +rect 568 235 585 252 +rect 760 235 777 252 +rect 928 248 945 265 +rect 952 248 969 265 +rect 1480 248 1497 265 +rect 1504 248 1521 265 +rect 88 275 105 292 +rect 544 275 561 292 +<< poly >> +rect 137 11 152 78 +rect 128 78 161 111 +rect 281 11 296 78 +rect 272 78 305 111 +rect 569 11 584 78 +rect 560 78 593 111 +rect 713 11 728 78 +rect 704 78 737 111 +rect 857 11 872 78 +rect 848 78 881 111 +rect 1001 11 1016 78 +rect 992 78 1025 111 +rect 1145 11 1160 78 +rect 1136 78 1169 111 +rect 1289 11 1304 78 +rect 1280 78 1313 111 +rect 1433 11 1448 78 +rect 1424 78 1457 111 +rect 1577 11 1592 78 +rect 1568 78 1601 111 +rect 1721 11 1736 78 +rect 1712 78 1745 111 +rect 1865 11 1880 78 +rect 1856 78 1889 111 +rect 2009 11 2024 78 +rect 2000 78 2033 111 +rect 128 173 161 206 +rect 137 206 152 330 +rect 272 173 305 206 +rect 281 206 296 330 +rect 560 173 593 206 +rect 569 206 584 330 +rect 704 173 737 206 +rect 713 206 728 330 +rect 848 173 881 206 +rect 857 206 872 330 +rect 992 173 1025 206 +rect 1001 206 1016 330 +rect 1136 173 1169 206 +rect 1145 206 1160 330 +rect 1280 173 1313 206 +rect 1289 206 1304 330 +rect 1424 173 1457 206 +rect 1433 206 1448 330 +rect 1568 173 1601 206 +rect 1577 206 1592 330 +rect 1712 173 1745 206 +rect 1721 206 1736 330 +rect 1856 173 1889 206 +rect 1865 206 1880 330 +<< properties >> +string FIXED_BBOX 0 0 2160 333 +<< li1 >> +rect 1184 11 1241 44 +rect 1328 11 1385 44 +rect 1760 11 1817 44 +rect 1904 11 1961 44 +rect 472 5 657 11 +rect 472 11 689 22 +rect 632 22 689 44 +rect 472 22 489 63 +rect 712 -9 1065 9 +rect 1040 9 1065 11 +rect 1040 11 1073 19 +rect 1088 11 1121 19 +rect 1040 19 1121 36 +rect 1040 36 1073 44 +rect 1088 36 1121 44 +rect 712 9 729 63 +rect 80 38 113 71 +rect 200 11 257 44 +rect 200 44 233 71 +rect 344 38 377 71 +rect 512 38 545 71 +rect 752 38 785 71 +rect 800 38 833 71 +rect 920 24 977 57 +rect 944 57 977 71 +rect 1472 38 1529 71 +rect 2048 38 2081 71 +rect 128 78 161 111 +rect 272 78 305 111 +rect 560 78 593 111 +rect 704 78 737 111 +rect 2008 59 2025 78 +rect 2000 78 2033 111 +rect 328 127 681 144 +rect 1640 11 1697 38 +rect 1616 38 1697 44 +rect 1616 44 1649 71 +rect 1624 71 1641 157 +rect 1856 78 1889 111 +rect 1864 111 1881 157 +rect 560 173 593 181 +rect 560 181 681 198 +rect 560 198 593 206 +rect 712 140 729 173 +rect 704 173 737 206 +rect 848 78 881 111 +rect 856 111 873 173 +rect 848 173 881 206 +rect 1000 167 1089 173 +rect 992 173 1089 184 +rect 1072 184 1089 198 +rect 992 184 1025 206 +rect 992 78 1025 111 +rect 1000 111 1017 127 +rect 1000 127 1161 144 +rect 1144 144 1161 167 +rect 1144 167 1209 173 +rect 1136 173 1209 184 +rect 1192 184 1209 198 +rect 1136 184 1169 206 +rect 1280 78 1313 111 +rect 1288 111 1305 173 +rect 1280 173 1313 206 +rect 1424 78 1457 111 +rect 1432 111 1449 173 +rect 1424 173 1457 206 +rect 1576 59 1593 78 +rect 1568 78 1601 111 +rect 1576 111 1593 173 +rect 1568 173 1601 206 +rect 1712 78 1745 111 +rect 1720 111 1737 173 +rect 1712 173 1745 206 +rect 1856 173 1889 206 +rect 128 173 161 194 +rect 272 173 305 194 +rect 128 194 305 206 +rect 160 206 273 211 +rect 1136 78 1169 86 +rect 1136 86 1257 103 +rect 1136 103 1169 111 +rect 1168 208 1185 221 +rect 1240 103 1257 221 +rect 1168 221 1257 238 +rect 1456 208 1545 221 +rect 1456 221 1617 225 +rect 1528 225 1617 238 +rect 1384 208 1401 213 +rect 1352 213 1409 246 +rect 1640 213 1697 246 +rect 1784 213 1841 246 +rect 1904 213 1937 246 +rect 776 213 833 235 +rect 568 235 833 246 +rect 568 246 777 252 +rect 200 227 257 260 +rect 344 227 377 260 +rect 1048 208 1065 213 +rect 1040 213 1073 227 +rect 1040 227 1121 246 +rect 1064 246 1121 260 +rect 920 240 977 273 +rect 1472 240 1529 273 +rect 1184 254 1241 287 +rect 80 267 113 300 +rect 608 267 665 275 +rect 544 275 665 281 +rect 512 281 665 292 +rect 608 292 665 300 +rect 512 292 545 314 +rect 1616 281 1649 314 +rect 520 314 545 316 +rect 1616 314 1641 316 +rect 520 316 1641 333 +<< met1 >> +rect 0 -24 2160 24 +rect 1330 24 1383 42 +rect 1762 24 1815 42 +rect 346 40 375 47 +rect 466 40 495 47 +rect 346 47 495 61 +rect 346 61 375 69 +rect 466 61 495 69 +rect 946 40 975 61 +rect 1474 40 1527 61 +rect 946 61 1527 69 +rect 953 69 1495 75 +rect 1570 53 1599 61 +rect 2002 53 2031 61 +rect 1570 61 2031 75 +rect 1570 75 1599 82 +rect 2002 75 2031 82 +rect 754 40 783 47 +rect 802 40 831 47 +rect 754 47 831 61 +rect 754 61 783 69 +rect 802 61 831 69 +rect 2050 40 2079 69 +rect 809 69 823 101 +rect 2057 69 2071 101 +rect 809 101 2071 115 +rect 706 40 735 47 +rect 665 47 735 61 +rect 706 61 735 69 +rect 665 61 679 121 +rect 658 121 687 150 +rect 706 80 735 109 +rect 713 109 727 134 +rect 706 134 735 163 +rect 1426 134 1455 163 +rect 562 80 591 109 +rect 569 109 583 175 +rect 562 175 591 204 +rect 1282 134 1311 142 +rect 809 142 1311 156 +rect 1282 156 1311 163 +rect 658 175 687 182 +rect 809 156 823 182 +rect 658 182 823 196 +rect 658 196 687 204 +rect 850 175 879 204 +rect 1714 175 1743 204 +rect 1858 134 1887 204 +rect 1378 202 1407 209 +rect 1450 202 1479 209 +rect 1378 209 1479 223 +rect 1378 223 1407 231 +rect 1450 223 1479 231 +rect 82 40 111 69 +rect 130 80 159 109 +rect 137 109 151 175 +rect 130 175 159 188 +rect 130 188 183 204 +rect 154 204 183 217 +rect 89 69 103 223 +rect 154 217 175 223 +rect 89 223 175 237 +rect 274 80 303 109 +rect 322 121 351 150 +rect 281 109 295 175 +rect 274 175 303 188 +rect 250 188 303 204 +rect 250 204 279 217 +rect 257 217 279 223 +rect 329 150 343 223 +rect 257 223 343 237 +rect 1594 215 1623 223 +rect 1906 215 1935 223 +rect 1594 223 1935 237 +rect 1594 237 1623 244 +rect 1906 237 1935 244 +rect 202 40 231 69 +rect 209 69 223 229 +rect 202 229 255 258 +rect 346 229 375 236 +rect 562 229 591 236 +rect 346 236 591 250 +rect 346 250 375 258 +rect 562 250 591 258 +rect 1066 175 1095 182 +rect 1066 182 1111 202 +rect 1186 175 1215 202 +rect 1162 202 1215 204 +rect 1042 202 1111 204 +rect 1042 204 1071 209 +rect 1097 204 1111 209 +rect 1162 204 1191 209 +rect 1097 209 1191 223 +rect 905 209 1071 223 +rect 1042 223 1071 231 +rect 1162 223 1191 231 +rect 754 229 783 236 +rect 905 223 919 236 +rect 754 236 919 250 +rect 754 250 783 258 +rect 922 242 975 250 +rect 1474 242 1527 250 +rect 922 250 1527 264 +rect 922 264 975 271 +rect 1474 264 1527 271 +rect 82 269 111 277 +rect 538 269 567 277 +rect 82 277 567 291 +rect 82 291 111 298 +rect 538 291 567 298 +rect 514 40 543 47 +rect 514 47 631 61 +rect 514 61 543 69 +rect 1618 134 1647 142 +rect 1553 142 1647 156 +rect 1618 156 1647 163 +rect 617 61 631 290 +rect 1553 156 1567 290 +rect 617 290 1567 304 +rect 0 309 2160 357 +<< li1 >> +<< met1 >> +<< li1 >> +<< met1 >> +rect 0 -24 2160 24 +rect 1570 53 1599 61 +rect 2002 53 2031 61 +rect 1570 61 2031 75 +rect 1570 75 1599 82 +rect 2002 75 2031 82 +rect 706 80 735 109 +rect 713 109 727 134 +rect 706 134 735 163 +rect 1426 134 1455 163 +rect 562 80 591 109 +rect 569 109 583 175 +rect 562 175 591 204 +rect 1714 175 1743 204 +rect 1858 134 1887 204 +rect 82 40 111 69 +rect 130 80 159 109 +rect 137 109 151 175 +rect 130 175 159 188 +rect 130 188 183 204 +rect 154 204 183 217 +rect 89 69 103 223 +rect 154 217 175 223 +rect 89 223 175 237 +rect 274 80 303 109 +rect 322 121 351 150 +rect 281 109 295 175 +rect 274 175 303 188 +rect 250 188 303 204 +rect 250 204 279 217 +rect 257 217 279 223 +rect 329 150 343 223 +rect 257 223 343 237 +rect 202 40 231 69 +rect 209 69 223 229 +rect 202 229 255 258 +rect 1066 175 1095 182 +rect 1066 182 1111 202 +rect 1186 175 1215 202 +rect 1162 202 1215 204 +rect 1042 202 1111 204 +rect 1042 204 1071 209 +rect 1097 204 1111 209 +rect 1162 204 1191 209 +rect 1097 209 1191 223 +rect 905 209 1071 223 +rect 1042 223 1071 231 +rect 1162 223 1191 231 +rect 754 229 783 236 +rect 905 223 919 236 +rect 754 236 919 250 +rect 754 250 783 258 +rect 0 309 2160 357 +<< ndiffusion >> +rect 202 13 255 24 +rect 58 24 375 66 +rect 82 66 111 69 +rect 202 66 231 69 +rect 346 66 375 69 +rect 634 13 687 24 +rect 1042 13 1071 24 +rect 1090 13 1119 24 +rect 1186 13 1239 24 +rect 1330 13 1383 24 +rect 1642 13 1695 24 +rect 1762 13 1815 24 +rect 1906 13 1959 24 +rect 490 24 2103 66 +rect 514 66 543 69 +rect 754 66 783 69 +rect 802 66 831 69 +rect 946 66 975 69 +rect 1474 66 1527 69 +rect 1618 66 1647 69 +rect 2050 66 2079 69 +<< pdiffusion >> +rect 58 225 375 309 +rect 778 215 831 225 +rect 1042 215 1071 225 +rect 1354 215 1407 225 +rect 1642 215 1695 225 +rect 1786 215 1839 225 +rect 1906 215 1935 225 +rect 490 225 1959 309 +rect 514 309 543 312 +rect 1618 309 1647 312 +<< polycont >> +rect 136 86 153 103 +rect 280 86 297 103 +rect 568 86 585 103 +rect 712 86 729 103 +rect 856 86 873 103 +rect 1000 86 1017 103 +rect 1144 86 1161 103 +rect 1288 86 1305 103 +rect 1432 86 1449 103 +rect 1576 86 1593 103 +rect 1720 86 1737 103 +rect 1864 86 1881 103 +rect 2008 86 2025 103 +rect 136 181 153 198 +rect 280 181 297 198 +rect 568 181 585 198 +rect 712 181 729 198 +rect 856 181 873 198 +rect 1000 181 1017 198 +rect 1144 181 1161 198 +rect 1288 181 1305 198 +rect 1432 181 1449 198 +rect 1576 181 1593 198 +rect 1720 181 1737 198 +rect 1864 181 1881 198 +<< pdiffc >> +rect 784 221 801 238 +rect 808 221 825 238 +rect 1048 221 1065 238 +rect 1360 221 1377 238 +rect 1384 221 1401 238 +rect 1648 221 1665 238 +rect 1672 221 1689 238 +rect 1792 221 1809 238 +rect 1816 221 1833 238 +rect 1912 221 1929 238 +rect 208 235 225 252 +rect 232 235 249 252 +rect 352 235 369 252 +rect 1072 235 1089 252 +rect 1096 235 1113 252 +rect 928 248 945 265 +rect 952 248 969 265 +rect 1480 248 1497 265 +rect 1504 248 1521 265 +rect 1192 262 1209 279 +rect 1216 262 1233 279 +rect 88 275 105 292 +rect 616 275 633 292 +rect 640 275 657 292 +rect 520 289 537 306 +rect 1624 289 1641 306 +<< ndiffc >> +rect 208 19 225 36 +rect 232 19 249 36 +rect 640 19 657 36 +rect 664 19 681 36 +rect 1048 19 1065 36 +rect 1096 19 1113 36 +rect 1192 19 1209 36 +rect 1216 19 1233 36 +rect 1336 19 1353 36 +rect 1360 19 1377 36 +rect 1648 19 1665 36 +rect 1672 19 1689 36 +rect 1768 19 1785 36 +rect 1792 19 1809 36 +rect 1912 19 1929 36 +rect 1936 19 1953 36 +rect 928 32 945 49 +rect 88 46 105 63 +rect 208 46 225 63 +rect 352 46 369 63 +rect 520 46 537 63 +rect 760 46 777 63 +rect 808 46 825 63 +rect 952 32 969 63 +rect 1480 46 1497 63 +rect 1504 46 1521 63 +rect 1624 46 1641 63 +rect 2056 46 2073 63 +<< nplus >> +<< pplus >> +<< labels >> +rlabel met1 0 309 2160 357 0 VDD +port 1 se +rlabel met1 0 -24 2160 24 0 GND +port 2 se +rlabel met1 202 40 231 69 0 Q +port 3 se +rlabel met1 209 69 223 229 0 Q +port 4 se +rlabel met1 202 229 255 258 0 Q +port 5 se +rlabel met1 562 80 591 109 0 ASEL_P +port 6 se +rlabel met1 569 109 583 175 0 ASEL_P +port 7 se +rlabel met1 562 175 591 204 0 ASEL_P +port 8 se +rlabel met1 1570 53 1599 61 0 USEXOR_N +port 9 se +rlabel met1 2002 53 2031 61 0 USEXOR_N +port 10 se +rlabel met1 1570 61 2031 75 0 USEXOR_N +port 11 se +rlabel met1 1570 75 1599 82 0 USEXOR_N +port 12 se +rlabel met1 2002 75 2031 82 0 USEXOR_N +port 13 se +rlabel met1 82 40 111 69 0 USEMUX_N +port 14 se +rlabel met1 130 80 159 109 0 USEMUX_N +port 15 se +rlabel met1 137 109 151 175 0 USEMUX_N +port 16 se +rlabel met1 130 175 159 188 0 USEMUX_N +port 17 se +rlabel met1 130 188 183 204 0 USEMUX_N +port 18 se +rlabel met1 154 204 183 217 0 USEMUX_N +port 19 se +rlabel met1 89 69 103 223 0 USEMUX_N +port 20 se +rlabel met1 154 217 175 223 0 USEMUX_N +port 21 se +rlabel met1 89 223 175 237 0 USEMUX_N +port 22 se +rlabel met1 850 175 879 204 0 USEXOR_P +port 23 se +rlabel met1 1714 175 1743 204 0 USEXOR_P +port 24 se +rlabel met1 706 80 735 109 0 ASEL_N +port 25 se +rlabel met1 713 109 727 134 0 ASEL_N +port 26 se +rlabel met1 706 134 735 163 0 ASEL_N +port 27 se +rlabel met1 1858 134 1887 204 0 BSEL_N +port 28 se +rlabel met1 1426 134 1455 163 0 BSEL_P +port 29 se +rlabel met1 1066 175 1095 182 0 MUXSEL_P +port 30 se +rlabel met1 1066 182 1111 202 0 MUXSEL_P +port 31 se +rlabel met1 1186 175 1215 202 0 MUXSEL_P +port 32 se +rlabel met1 1162 202 1215 204 0 MUXSEL_P +port 33 se +rlabel met1 1042 202 1111 204 0 MUXSEL_P +port 34 se +rlabel met1 1042 204 1071 209 0 MUXSEL_P +port 35 se +rlabel met1 1097 204 1111 209 0 MUXSEL_P +port 36 se +rlabel met1 1162 204 1191 209 0 MUXSEL_P +port 37 se +rlabel met1 1097 209 1191 223 0 MUXSEL_P +port 38 se +rlabel met1 905 209 1071 223 0 MUXSEL_P +port 39 se +rlabel met1 1042 223 1071 231 0 MUXSEL_P +port 40 se +rlabel met1 1162 223 1191 231 0 MUXSEL_P +port 41 se +rlabel met1 754 229 783 236 0 MUXSEL_P +port 42 se +rlabel met1 905 223 919 236 0 MUXSEL_P +port 43 se +rlabel met1 754 236 919 250 0 MUXSEL_P +port 44 se +rlabel met1 754 250 783 258 0 MUXSEL_P +port 45 se +rlabel met1 274 80 303 109 0 USEMUX_P +port 46 se +rlabel met1 322 121 351 150 0 USEMUX_P +port 47 se +rlabel met1 281 109 295 175 0 USEMUX_P +port 48 se +rlabel met1 274 175 303 188 0 USEMUX_P +port 49 se +rlabel met1 250 188 303 204 0 USEMUX_P +port 50 se +rlabel met1 250 204 279 217 0 USEMUX_P +port 51 se +rlabel met1 257 217 279 223 0 USEMUX_P +port 52 se +rlabel met1 329 150 343 223 0 USEMUX_P +port 53 se +rlabel met1 257 223 343 237 0 USEMUX_P +port 54 se +rlabel met1 1066 175 1095 182 0 MUXSEL_N +port 55 se +rlabel met1 1066 182 1111 202 0 MUXSEL_N +port 56 se +rlabel met1 1186 175 1215 202 0 MUXSEL_N +port 57 se +rlabel met1 1162 202 1215 204 0 MUXSEL_N +port 58 se +rlabel met1 1042 202 1111 204 0 MUXSEL_N +port 59 se +rlabel met1 1042 204 1071 209 0 MUXSEL_N +port 60 se +rlabel met1 1097 204 1111 209 0 MUXSEL_N +port 61 se +rlabel met1 1162 204 1191 209 0 MUXSEL_N +port 62 se +rlabel met1 1097 209 1191 223 0 MUXSEL_N +port 63 se +rlabel met1 905 209 1071 223 0 MUXSEL_N +port 64 se +rlabel met1 1042 223 1071 231 0 MUXSEL_N +port 65 se +rlabel met1 1162 223 1191 231 0 MUXSEL_N +port 66 se +rlabel met1 754 229 783 236 0 MUXSEL_N +port 67 se +rlabel met1 905 223 919 236 0 MUXSEL_N +port 68 se +rlabel met1 754 236 919 250 0 MUXSEL_N +port 69 se +rlabel met1 754 250 783 258 0 MUXSEL_N +port 70 se +<< end >>
diff --git a/cells/mag/LOFTY2.mag b/cells/mag/LOFTY2.mag new file mode 100644 index 0000000..77b8b65 --- /dev/null +++ b/cells/mag/LOFTY2.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621276817 +<< end >>
diff --git a/cells/mag/MUX2X1.mag b/cells/mag/MUX2X1.mag new file mode 100644 index 0000000..4a9106a --- /dev/null +++ b/cells/mag/MUX2X1.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621276911 +<< end >>
diff --git a/cells/mag/NAND2X1.mag b/cells/mag/NAND2X1.mag new file mode 100644 index 0000000..77a1451 --- /dev/null +++ b/cells/mag/NAND2X1.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621277091 +<< end >>
diff --git a/cells/mag/NAND3X1.mag b/cells/mag/NAND3X1.mag new file mode 100644 index 0000000..2ec7a05 --- /dev/null +++ b/cells/mag/NAND3X1.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621277170 +<< end >>
diff --git a/cells/mag/NOR2.mag b/cells/mag/NOR2.mag new file mode 100644 index 0000000..c4ccf29 --- /dev/null +++ b/cells/mag/NOR2.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621277262 +<< end >>
diff --git a/cells/mag/NOR2X1.mag b/cells/mag/NOR2X1.mag new file mode 100644 index 0000000..a621033 --- /dev/null +++ b/cells/mag/NOR2X1.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621277284 +<< end >>
diff --git a/cells/mag/NOR3X1.mag b/cells/mag/NOR3X1.mag new file mode 100644 index 0000000..b8cf1f1 --- /dev/null +++ b/cells/mag/NOR3X1.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621277354 +<< end >>
diff --git a/cells/mag/OAI21X1.mag b/cells/mag/OAI21X1.mag new file mode 100644 index 0000000..713ad5a --- /dev/null +++ b/cells/mag/OAI21X1.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621277438 +<< end >>
diff --git a/cells/mag/OAI22X1.mag b/cells/mag/OAI22X1.mag new file mode 100644 index 0000000..56ac095 --- /dev/null +++ b/cells/mag/OAI22X1.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621277560 +<< end >>
diff --git a/cells/mag/OR2X1.mag b/cells/mag/OR2X1.mag new file mode 100644 index 0000000..2ae6dcd --- /dev/null +++ b/cells/mag/OR2X1.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621277831 +<< end >>
diff --git a/cells/mag/OR2X2.mag b/cells/mag/OR2X2.mag new file mode 100644 index 0000000..8baa737 --- /dev/null +++ b/cells/mag/OR2X2.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621277891 +<< end >>
diff --git a/cells/mag/XNOR2X1.mag b/cells/mag/XNOR2X1.mag new file mode 100644 index 0000000..f454691 --- /dev/null +++ b/cells/mag/XNOR2X1.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621277951 +<< end >>
diff --git a/cells/mag/XOR2X1.mag b/cells/mag/XOR2X1.mag new file mode 100644 index 0000000..fa9c48a --- /dev/null +++ b/cells/mag/XOR2X1.mag
@@ -0,0 +1,4 @@ +magic +tech sky130A +timestamp 1621278052 +<< end >>
diff --git a/cells/mag/corr.INVX1.mag b/cells/mag/corr.INVX1.mag new file mode 100644 index 0000000..1c42d38 --- /dev/null +++ b/cells/mag/corr.INVX1.mag
@@ -0,0 +1,88 @@ +magic +# Generated by librecell +tech sky130A +timestamp 1620330136 +<< nwell >> +rect 0 179 288 333 +rect 27 333 262 340 +<< viali >> +rect 64 19 81 36 +rect 184 46 201 63 +rect 136 86 153 103 +rect 136 181 153 198 +rect 184 221 201 238 +rect 64 289 81 306 +<< poly >> +rect 137 11 152 78 +rect 128 78 161 111 +rect 128 173 161 206 +rect 137 206 152 330 +<< properties >> +string FIXED_BBOX 0 0 288 333 +<< li1 >> +rect 56 11 89 44 +rect 176 38 209 71 +rect 128 78 161 111 +rect 128 173 161 206 +rect 176 213 209 246 +rect 56 281 89 314 +<< met1 >> +rect 0 -24 288 24 +rect 58 24 87 42 +rect 130 80 159 109 +rect 137 109 151 175 +rect 130 175 159 204 +rect 178 40 207 69 +rect 185 69 199 215 +rect 178 215 207 244 +rect 58 283 87 309 +rect 0 309 288 357 +<< li1 >> +<< met1 >> +<< li1 >> +<< met1 >> +rect 0 -24 288 24 +rect 130 80 159 109 +rect 137 109 151 175 +rect 130 175 159 204 +rect 178 40 207 69 +rect 185 69 199 215 +rect 178 215 207 244 +rect 0 309 288 357 +<< ndiffusion >> +rect 58 13 87 24 +rect 58 24 231 66 +rect 178 66 207 69 +<< pdiffusion >> +rect 178 215 207 225 +rect 58 225 231 309 +rect 58 309 87 312 +<< polycont >> +rect 136 86 153 103 +rect 136 181 153 198 +<< pdiffc >> +rect 184 221 201 238 +rect 64 289 81 306 +<< ndiffc >> +rect 64 19 81 36 +rect 184 46 201 63 +<< nplus >> +<< pplus >> +<< labels >> +rlabel met1 0 309 288 357 0 VDD +port 1 se +rlabel met1 0 -24 288 24 0 GND +port 2 se +rlabel met1 178 40 207 69 0 Y +port 3 se +rlabel met1 185 69 199 215 0 Y +port 4 se +rlabel met1 178 215 207 244 0 Y +port 5 se +rlabel met1 130 80 159 109 0 A +port 6 se +rlabel met1 137 109 151 175 0 A +port 7 se +rlabel met1 130 175 159 204 0 A +port 8 se +<< end >>