diff --git a/tests/liberty/XNOR2X1.lib b/tests/liberty/XNOR2X1.lib new file mode 100644 index 000000000..0bb285ef7 --- /dev/null +++ b/tests/liberty/XNOR2X1.lib @@ -0,0 +1,337 @@ +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: 206080.0; + cell_leakage_power: 0.1173; + pin (B) { + capacitance: 0.007869572376285055; + direction: input; + fall_capacitance: 0.00787170816777918; + rise_capacitance: 0.007867436584790931; + } + pin (A) { + capacitance: 0.006181892203766934; + direction: input; + fall_capacitance: 0.006286246429833927; + rise_capacitance: 0.006077537977699941; + } + pin (Y) { + direction: output; + function: "!(B&!A|!B&A)"; + timing () { + related_pin: "B"; + timing_sense: non_unate; + cell_rise (delay_template_6x6) { + index_1 ( + "0.100000, 0.500000, 1.200000, 3.000000, 4.000000, 5.000000" + ); + index_2 ( + "0.060000, 0.240000, 0.480000, 0.900000, 1.200000, 1.800000" + ); + values ( + "0.216615, 0.255249, 0.335937, 0.462500, 0.520313, 0.565625", \ + "0.777736, 0.782028, 0.837500, 1.065625, 1.179688, 1.273438", \ + "1.527774, 1.518945, 1.546875, 1.720781, 1.847266, 1.981250", \ + "2.840291, 2.822515, 2.825000, 2.928125, 3.018750, 3.126562", \ + "3.780926, 3.758589, 3.751563, 3.818750, 3.890625, 3.982812", \ + "5.659064, 5.632141, 5.609375, 5.634375, 5.681250, 5.743750" + ); + } + cell_fall (delay_template_6x6) { + index_1 ( + "0.100000, 0.500000, 1.200000, 3.000000, 4.000000, 5.000000" + ); + index_2 ( + "0.060000, 0.240000, 0.480000, 0.900000, 1.200000, 1.800000" + ); + values ( + "0.141297, 0.176563, 0.201562, 0.210938, 0.210938, 0.204688", \ + "0.483116, 0.506250, 0.566094, 0.681250, 0.709375, 0.725000", \ + "0.935771, 0.954688, 1.003125, 1.171875, 1.251563, 1.303125", \ + "1.729021, 1.750000, 1.787500, 1.925000, 2.017188, 2.118750", \ + "2.303892, 2.307813, 2.350000, 2.476562, 2.557813, 2.650000", \ + "3.431826, 3.451562, 3.482812, 3.590625, 3.660938, 3.739063" + ); + } + rise_transition (delay_template_6x6) { + index_1 ( + "0.100000, 0.500000, 1.200000, 3.000000, 4.000000, 5.000000" + ); + index_2 ( + "0.060000, 0.240000, 0.480000, 0.900000, 1.200000, 1.800000" + ); + values ( + "0.301313, 0.323519, 0.432031, 0.843750, 1.059375, 1.275000", \ + "1.118750, 1.120547, 1.139063, 1.348906, 1.528125, 1.746875", \ + "2.212500, 2.209375, 2.210469, 2.298437, 2.406250, 2.534375", \ + "4.121875, 4.121875, 4.121875, 4.126562, 4.164063, 4.234375", \ + "5.487500, 5.487500, 5.487500, 5.489062, 5.495312, 5.528125", \ + "8.218750, 8.218750, 8.218750, 8.218750, 8.218750, 8.219531" + ); + } + fall_transition (delay_template_6x6) { + index_1 ( + "0.100000, 0.500000, 1.200000, 3.000000, 4.000000, 5.000000" + ); + index_2 ( + "0.060000, 0.240000, 0.480000, 0.900000, 1.200000, 1.800000" + ); + values ( + "0.177720, 0.238125, 0.437500, 0.945313, 1.215625, 1.478125", \ + "0.646864, 0.647852, 0.729688, 1.185938, 1.476563, 1.762500", \ + "1.278125, 1.276953, 1.290625, 1.568750, 1.804687, 2.075000", \ + "2.381250, 2.381250, 2.381094, 2.478125, 2.623437, 2.807812", \ + "3.170313, 3.168750, 3.171875, 3.201562, 3.298438, 3.440625", \ + "4.746875, 4.746875, 4.746875, 4.748281, 4.768750, 4.834375" + ); + } + } + timing () { + related_pin: "A"; + timing_sense: non_unate; + cell_rise (delay_template_6x6) { + index_1 ( + "0.100000, 0.500000, 1.200000, 3.000000, 4.000000, 5.000000" + ); + index_2 ( + "0.060000, 0.240000, 0.480000, 0.900000, 1.200000, 1.800000" + ); + values ( + "0.198661, 0.238874, 0.325000, 0.464063, 0.525000, 0.578125", \ + "0.751696, 0.739750, 0.796875, 1.043750, 1.162500, 1.262500", \ + "1.500349, 1.465688, 1.475000, 1.656836, 1.798594, 1.940625", \ + "2.813049, 2.758763, 2.725000, 2.800000, 2.895312, 3.010937", \ + "3.752184, 3.693634, 3.639063, 3.659375, 3.725000, 3.818750", \ + "5.630379, 5.564431, 5.484375, 5.431250, 5.453125, 5.504687" + ); + } + cell_fall (delay_template_6x6) { + index_1 ( + "0.100000, 0.500000, 1.200000, 3.000000, 4.000000, 5.000000" + ); + index_2 ( + "0.060000, 0.240000, 0.480000, 0.900000, 1.200000, 1.800000" + ); + values ( + "0.119260, 0.143750, 0.154687, 0.148438, 0.143750, 0.131250", \ + "0.455345, 0.435938, 0.485937, 0.550000, 0.560938, 0.564063", \ + "0.908764, 0.868750, 0.867188, 1.003125, 1.046875, 1.070313", \ + "1.699465, 1.653125, 1.606250, 1.662656, 1.746875, 1.831250", \ + "2.272986, 2.210938, 2.153125, 2.148437, 2.210469, 2.295117", \ + "3.404215, 3.351562, 3.270312, 3.175000, 3.195313, 3.240625" + ); + } + rise_transition (delay_template_6x6) { + index_1 ( + "0.100000, 0.500000, 1.200000, 3.000000, 4.000000, 5.000000" + ); + index_2 ( + "0.060000, 0.240000, 0.480000, 0.900000, 1.200000, 1.800000" + ); + values ( + "0.301159, 0.338560, 0.480469, 0.989063, 1.300000, 1.620313", \ + "1.120312, 1.118594, 1.159375, 1.468594, 1.687500, 1.934375", \ + "2.210938, 2.212500, 2.212695, 2.381250, 2.545312, 2.726562", \ + "4.121875, 4.121875, 4.121875, 4.146875, 4.232813, 4.357812", \ + "5.487500, 5.487500, 5.487500, 5.487500, 5.520312, 5.600000", \ + "8.218750, 8.218750, 8.218750, 8.218750, 8.218750, 8.228125" + ); + } + fall_transition (delay_template_6x6) { + index_1 ( + "0.100000, 0.500000, 1.200000, 3.000000, 4.000000, 5.000000" + ); + index_2 ( + "0.060000, 0.240000, 0.480000, 0.900000, 1.200000, 1.800000" + ); + values ( + "0.176166, 0.285586, 0.559375, 1.195313, 1.535938, 1.873438", \ + "0.646209, 0.662500, 0.823438, 1.507813, 1.900000, 2.271875", \ + "1.278125, 1.276250, 1.337500, 1.825000, 2.195469, 2.595313", \ + "2.381250, 2.381250, 2.384961, 2.650000, 2.907812, 3.201562", \ + "3.168750, 3.168750, 3.172031, 3.325000, 3.531250, 3.779687", \ + "4.748437, 4.746875, 4.745312, 4.779687, 4.896875, 5.076562" + ); + } + } + } + } +} \ No newline at end of file