stineje / CharLib

Open-source repository for a standard-cell library characterizer using complete open-source tools
GNU General Public License v2.0
18 stars 2 forks source link

Incorrect indexes in Liberty file (timing constraint group) #28

Open vermut42 opened 7 months ago

vermut42 commented 7 months ago

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:

  1. Make index_2 in "setup" and "hold" section equal to index_1, because in this case both indexes refer to slews (data and clock)
  2. Add way to set array of clock slews separately
infinitymdm commented 7 months ago

I believe your second solution is the correct way to do this (off the top of my head - need to check the standard). Thanks for posting the issue!