• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. Liberate-max_transition

Stats

  • Locked Locked
  • Replies 22
  • Subscribers 126
  • Views 20402
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Liberate-max_transition

fengye
fengye over 6 years ago

Hi, everyone,

     When I use liberate to characterize some standard cells, like OAI21M0R at much lower voltage 0.3V. I set  such parameter with auto-index.

set_var max_transition 1.2e-7
set_var min_transition 1.0e-8
set_var min_output_cap 1e-17

However, I get the following error reminder

.........*Error* (char_library -auto_index) : the maximum load for OAI21M1R:Z is smaller than the specified min_output_cap (5.80844e-18F <= 1e-17F). This problem might be caused by insufficient drive strength or a max_transition value that is too small.

If I increase the max_transition value, the D-flipflop cannot meet the sequential timing. Did anyone meet this question?

  • Cancel
Parents
  • Guangjun Cao
    Guangjun Cao over 6 years ago

    Hi Fengye,

    The min_output-cap is already very small. Are you sure your cell/model works fine at the give voltage? Does the error occur at all slew or just the max_transition? If increasing the max_transition works for some cells bu causes issue with other cells, you may have to use define_index command to change the slew or load table for other cells. You can get a template following the steps below,

    1. use -auto-index -trial options in char_libarary command and generate a template library, with the max_transition that is the maximum of all the transitions.

    2. use write_template to generate a template file

    3. adding define_index commands to change the slew or load table on cell/pin basis.

    Regards,

    Guangjun

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fengye
    fengye over 6 years ago in reply to Guangjun Cao


    Hi, Guangjun, thanks for your reply.My cell can normally work at the given voltage 0.3V. I have simulated with Hspice. The error occur with the cell OAI21M0R, OAI21M1R,... The error information mainly concern about maximum load for the cell pin and min_output_cap. According to the reminder,if I increase the max_transition, the sequential cell D-flipflop will meet error for removal time.
    I don't know how to set proper index value for the cell, so I choose the auto_index. I remember you said,"min_transition is the minimum transition of the cells in your library. max_transition can be defined based on the actual design the library is used for. "
    Now, for this question, do I need to use define_index? How I can properly set the proper index value?
    Hope to receive your reply in your free time.
    Regars,
    fengye

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • fengye
    fengye over 6 years ago in reply to Guangjun Cao


    Hi, Guangjun, thanks for your reply.My cell can normally work at the given voltage 0.3V. I have simulated with Hspice. The error occur with the cell OAI21M0R, OAI21M1R,... The error information mainly concern about maximum load for the cell pin and min_output_cap. According to the reminder,if I increase the max_transition, the sequential cell D-flipflop will meet error for removal time.
    I don't know how to set proper index value for the cell, so I choose the auto_index. I remember you said,"min_transition is the minimum transition of the cells in your library. max_transition can be defined based on the actual design the library is used for. "
    Now, for this question, do I need to use define_index? How I can properly set the proper index value?
    Hope to receive your reply in your free time.
    Regars,
    fengye

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Guangjun Cao
    Guangjun Cao over 6 years ago in reply to fengye

    Hi Fengye,

    If you remove define the index table manually without -auto_index, does the error still occur?

    Thanks,

    Guangjun

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fengye
    fengye over 6 years ago in reply to Guangjun Cao

    Hi, Guangjun. If I remove the auto_index from char_library, and I add ""

    define_template -type delay \
    -index_1 {12 22 37 50 60 70 80 90 100 110 120 } \
    -index_2 {0.001 0.002 0.0035 0.005 0.0065 0.008 0.0095 0.011 0.0125 0.014 0.016 } \
    delay_template_11x11

    define_template -type power \
    -index_1 {12 22 37 50 60 70 80 90 100 110 120 } \
    -index_2 {0.001 0.002 0.0035 0.005 0.0065 0.008 0.0095 0.011 0.0125 0.014 0.016 } \
    power_template_11x11

    The new error occurs, like "ERROR (LIB-174): (char_library): The template 'delay_template_11x11' has an unreasonable '-index_1' slew value of: 100 nanoseconds which is greater than the sim_duration (1e-07 seconds). Update the 'define_template' and 'define_index' commands or the sim_duration in the Tcl script and rerun."

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Guangjun Cao
    Guangjun Cao over 6 years ago in reply to fengye

    Hi,

    with the slew index table, the max slew is 120ns, which is bigger than your sim_duration of 1e-7s. You may sue sim_duration to increase its value. you may also need to set sim_estimate_duration=0

    Regards,

    Guangjun

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fengye
    fengye over 6 years ago in reply to Guangjun Cao

    Hi,

    After I set sim_duration =1e-5s, and  sim_estimate_duration=0, there is no error. But all the value of the table is casual, which may lead inaccurate library. I still don't know why it cannot work with auto_index, and max_transion=120n

    Regards,

    fengye

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fengye
    fengye over 6 years ago in reply to Guangjun Cao

    Hi, Guangjun,

    The following are some warnings for the auto_index setting. 

    .WARNING (LIB-411): An estimated max load value of 3.17381e-16F will be used for slew: '3.80423e-07s' pin: 'Z' of cell: 'AOI21M0R' because the auto_index algorithm failed to determine the max load using bisection. This can occur when the inside-view algorithm cannot determine a valid vector. Add appropriate 'define_arc' commands specific to pin 'Z' and rerun.
    WARNING (LIB-411): An estimated max load value of 2.80317e-16F will be used for slew: '4.52601e-07s' pin: 'Z' of cell: 'AOI21M1R' because the auto_index algorithm failed to determine the max load using bisection. This can occur when the inside-view algorithm cannot determine a valid vector. Add appropriate 'define_arc' commands specific to pin 'Z' and rerun.

    How should I set the proper index value?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Guangjun Cao
    Guangjun Cao over 6 years ago in reply to fengye

    Hi Fengye,

    have you run Spectre simulation with the max slew and min/max load? do you see output transition within the range of slew index?

    Regards,

    guangjun

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fengye
    fengye over 6 years ago in reply to Guangjun Cao

    Hi, Guangjun,

       Thanks for your reply! Happy mid-autumn day to you!  I run hspice simulation for OAI21M0R with input slew=120n, load= 1fF, the output rise transition=42.3ns, fall transition=30.5ns,(from 10% to 90%). If the load=16fF, the output rise transition=265ns, fall transition=91ns.

    The ouutput behaves the normal function. Is the maximum transition unreasonable? 

    Regards,

    fengye

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Guangjun Cao
    Guangjun Cao over 6 years ago in reply to fengye

    Hi Fengye,

    happy mid-fall day.

    I suggest you not to use auto_index in this case.

    Regards,

    guangjun

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fengye
    fengye over 6 years ago in reply to Guangjun Cao

    Hi Guangjun,

      If I don't use the auto_index, I don't know how to properly set up the concrete index value for delay and power. The index value maybe liner or squard. I don't find any reference about how to get proper index value. This is important for define_template and define_index. Can you give me some suggestions?

    Regards,

    fengye 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Guangjun Cao
    Guangjun Cao over 6 years ago in reply to fengye

    This is no absolutely right or wrong, when it comes to index table. As a general guidance, you may use the scaling factor below. when using it with -auto_index flow, you can copy/paste the lines to your template. If you do not use auto_index flow, it can also be sued as a guidance for defining index table.

    #these three variables must be defined by users, depending on design/PVTs

     max_transition 9.587e-10
    set_var min_transition 2.4e-12
    set_var min_output_cap 1.4e-16

    #do not change these, for simplicity

    set_var scale_tran_by_template 1
    set_var scale_load_by_template 1

    #these scaling factor factor can be changed based on preference. a value of "1" instruct the tool to use the max_transition that is defined above. for constraint slews, if a smaller max_transition is preferred for either pin/related_pin, reduce the last digit to less than 1, and the rest accordingly. mpw slews usually have the same table with const_refn. If a pin requires different index table from the default one defined in define-cell command, use define_index to override the default.  

    set input_slews {0 0.007843 0.02363 0.05511 0.1181 0.2441 0.4961 1}              ;#for input slew
    set output_loads {0 0.007821 0.02346 0.05503 0.1182 0.2441 0.4961 1}            
    set const_data {0 0.06672 0.2 0.4667 1}
    set const_refn {0 0.06672 0.2 0.4667 1}
    set mpw_rslew {0 0.06672 0.2 0.4667 1}


    define_template -type delay \
    -index_1 $input_slews \
    -index_2 $output_loads \
    delay_template_8x8

    define_template -type power \
    -index_1 $input_slews \
    -index_2 $output_loads \
    power_template_8x8

    define_template -type constraint \
    -index_1 $const_data \
    -index_2 $const_refn \
    constraint_template_5x5

    I hope this helps.

    Guangjun

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information