After test run I see that templates in Liberty file:
lu_table_template (hold_template_5x5) {
variable_1 : related_pin_transition;
variable_2 : constrained_pin_transition;
index_1 ("0.015, 0.04, 0.08, 0.2, 0.4");
index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
}
lu_table_template (setup_template_5x5) {
variable_1 : related_pin_transition;
variable_2 : constrained_pin_transition;
index_1 ("0.015, 0.04, 0.08, 0.2, 0.4");
index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
}
lu_table_template (delay_template_5x5) {
variable_1 : input_net_transition;
variable_2 : total_output_net_capacitance;
index_1 ("0.015, 0.04, 0.08, 0.2, 0.4");
index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
}
index_2 in "delay" section numerically equal index_2 in "setup" and "hold" section. This behavior doesn't match Liberty standard.
I see two ways to solve this problem:
Make index_2 in "setup" and "hold" section equal to index_1, because in this case both indexes refer to slews (data and clock)
After test run I see that templates in Liberty file: lu_table_template (hold_template_5x5) { variable_1 : related_pin_transition; variable_2 : constrained_pin_transition; index_1 ("0.015, 0.04, 0.08, 0.2, 0.4"); index_2 ("0.06, 0.18, 0.42, 0.6, 1.2"); } lu_table_template (setup_template_5x5) { variable_1 : related_pin_transition; variable_2 : constrained_pin_transition; index_1 ("0.015, 0.04, 0.08, 0.2, 0.4"); index_2 ("0.06, 0.18, 0.42, 0.6, 1.2"); } lu_table_template (delay_template_5x5) { variable_1 : input_net_transition; variable_2 : total_output_net_capacitance; index_1 ("0.015, 0.04, 0.08, 0.2, 0.4"); index_2 ("0.06, 0.18, 0.42, 0.6, 1.2"); }
index_2 in "delay" section numerically equal index_2 in "setup" and "hold" section. This behavior doesn't match Liberty standard. I see two ways to solve this problem: