adding unittest

This commit is contained in:
Muthu Annamalai 2023-05-04 22:43:04 -07:00
parent 81e089cb60
commit d2f3251528
1 changed files with 337 additions and 0 deletions

337
tests/liberty/XNOR2X1.lib Normal file
View File

@ -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"
);
}
}
}
}
}