• 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. Cadence Liberate Characterization of Complex Logic Cell...

Stats

  • Locked Locked
  • Replies 28
  • Subscribers 126
  • Views 26347
  • 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

Cadence Liberate Characterization of Complex Logic Cells

anurans
anurans over 6 years ago

Hi,

I am trying to characterize a combinatorial circuit which has 5 (A, B, ...., E) inputs and 3 outputs (X, Y, Z). As per the cell behavior, output Z does not depend on input E. When I perform the characterization without user defined "define_arc" s, the process fails trowing following error :

ERROR (LIB-54): Some output transitions did not cross both 'measure_slew_*' thresholds for arc of cell:'UTCOMX', r_pin:'E', r_pin dir:'r', pin:'Z', pin dir:'r', type:'combinational rise_transition' when: (!D * A * B * !C). To debug, review the saved simulation results for deck: delay_21. Possible solutions include setting 'extsim_exclusive' to 1 and 'sim_estimate_duration' to 0 with increased 'sim_duration' as needed, and rerun.

My questions are :

1. Can we use define_arc in following format to include only valid logical states [ in this case removing E (-related pin) to pin Z (- pin)] for the given cell ?

//Assume that pin_list order is A B C D E X Y Z

//define_arcs for A -> Z transitions
define_arc \
- vector {RXXXXXXR} \
- related_pin A \
- pin Z \
UTCOMX

define_arc \
- vector {RXXXXXXF} \
- related_pin A \
- pin Z \
UTCOMX

//Same routine goes for B -> Z, C -> Z .... and other combinatorial states except E -> Z !

2. In 1.) case, let's say we do not specify "- type" (i.e. hidden, power or delay) inside define_arc ! Does Liberate still calculate hidden, switching power and delay values for each define_arc state automatically ?

3. Is there an easy way to exclude E -> Z monitoring without specifying the define_arcs manually for all other states ?

Thanks in advance

Ranaya

  • Cancel
  • Guangjun Cao
    Guangjun Cao over 6 years ago

    1. if you want to make sure all possible arcs to be characterized, you can start with char_library -trial to generate a dummy .lib file, Then, use read_library-->write_template -verbose to dump all the arcs found by Liberate. Next, you can review the define_arc commands and remove all invalid arcs. finally, using the modified template, you can use char_library -user_arcs_only to do the full characterisation.

    2. the template you created in "1" should have all arcs. in any case, when -user_arcs is used, Liberate should also characterize hidden arcs;

    3. if you want liberate to do an fully automated characterisation without a template, you can use define_arc -ignore -pin Z -related_pin E -pin_dr <R or F> -related_pin_dir <R or F> cellname to exclude an arc.

    Regards,

    Guangjun

    • Cancel
    • Vote Up +2 Vote Down
    • Cancel
  • anurans
    anurans over 6 years ago in reply to Guangjun Cao

    Dear Guangjun,

    Thanks alot, the -ignore switch did the trick ! And generation of dummy.lib as you said seems to be very helpful in such a situation as it reflect all the arcs.

    Regards

    Ranaya 

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

    Hi,

    I ran into another issue when converting .lib to .db. I use Synopsys Design Compiler for that. Now the tool complains "There is no timing arc available from pin E to Z" and the conversion fails. Is there a way to bypass this error or is the trick "ignoring" not the right thing to do here ?

    Thanks

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

    If your cell does not have a valid E-->Z arc and this is correct, then there is a bug with the compiler unless there is an option to ignore this. But you have to ask  the tool vendor.

    Guangjun

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

    Dear Guangjun,

    Could you please kindly take a look at the following post made : 

    community.cadence.com/.../input-capacitance-characterization-in-cadence-liberate

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • BarPouy
    BarPouy over 5 years ago

    Hi anurans

    I wanted to generate automatically all cells definition (define_cell) and all arcs definition (define_arc) for all cells of the library in the template.tcl file. I put in this file after defining  slew, measure_slew, delay, set cell_list, indexes the following script:

     set  inputs {I A1 A2 A3 A4 I0 I1 S D SI SE CDN SD}    --- total inputs of cells in the library

     set  outputs {Z ZN Q}                                                          --- total ouputs of cells in the library  

     set  clockss { CP}

     set  asyncs { }    

    define_cell \

              -input $inputs  -outputs  -clock $clocks  -async $asyncs \

              -constraint  constraint_template_11x11 \

              -delay         delay_template_11x11 \

              -power        power_template_11x11 \

            $cell_list

     define_arc \  

              - vector {RXXR} \                 -- assume the maximal inputs of a cell is 4  

              - related_pin $inputs \    

               - pin $outputs \    

               $cell_list  

     define_arc \  

             - vector {FXXF} \  

             - related_pin $inputs \    

             - pin $outputs \

            $cell_list  

    It seems it does not function.

    What is the best way to define all cells and its arcs?

    Kind regards

    BarPouy

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • anurans
    anurans over 5 years ago in reply to BarPouy

    Hello,

    To generate all the cell and arc definitions, you may use (as Guangjun stated earlier): 

    char_library -trial; //to generate a dummy .lib file, Then,

    read_library existing.lib
    write_template -verbose liberate_templates // to dump all the arcs found

    This will generate all the arcs related to hidden, timing, constraints etc. If you had already done this, you should look at the log file for any possible issues. If its less descriptive, add following before char_library command : 

    #####--------------------------------------------------------------------------------------------------------------------------------------------------
    ##### Debug variables
    #####--------------------------------------------------------------------------------------------------------------------------------------------------
    #select_index -style 1x1 ;# run only 1st point in table

    set_var bisection_info 4 ;# print additional bisection search info to output log
    set_var power_info 2 ;# print additional power calculation info of table's 1st point to file decks/po

    set_var ski_enable 0
    set_var extsim_save_passed all ;# save all run decks and output files
    set_var extsim_save_failed all ;# save all run decks and output files
    set_var extsim_save_verify 2 ;# save verify deck
    set_var extsim_deck_dir [file normalize "Liberate_Out/decks"] ;# specify directory for SPICE decks and output files
    set_var extsim_tar_cmd "" ;# disable tgz of simulation decks and run logs
    #####-------------------------------------------------------------------------------------------------------------------------------------------------

    liberate char.tcl |& tee char.log // your log file

    This would give you a thorough look to the issues you have. May be you should do the debugging ONLY to the erroneous cells, otherwise you will end up having a very large deck file.

    Anuradha

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • BarPouy
    BarPouy over 5 years ago in reply to anurans

    Hello,

    Thank you for your suggestion.

    I tried with >char_library -trial, however the "Command not found"! Maybe with >liberate char_library -trial ? 

    Then I tried with my top scrip and generate only for one cell, as Guangjun suggested. A  .trial.ldb.gz file is generated. After ungzip of this file I tried to read it. >read_library thisFile.ldb (should be converted to .lib ?),  again, "Command not found"!

    Regards

    BarPouy

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Guangjun Cao
    Guangjun Cao over 5 years ago in reply to BarPouy

    -trial is an option for char_library. Please read the manual on char_library command! I suggest you either take a Liberate training, or go though a RAK to understand Liberate flow/command.

    Regards,

    Guangjun

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • BarPouy
    BarPouy over 5 years ago in reply to Guangjun Cao

    You are right, a training is very helpful! However at the moment I've not possibility to do that. Actually I read RAK, I will read through RAK again.

    For one cell it seems I came further! Now I have this WARNING / ERROR.

    WARNING (LIB-411): An estimated max load value of 2.8181e-16F will be used for slew: '7.61097e-09s' pin: 'Z' of cell: 'AN2d1' 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.

    *Error* (char_library -auto_index) : the maximum load for AN2d1:Z is smaller than the specified min_output_cap (2.8181e-16F <= 1.07555e-15F).  This problem might be caused by insufficient drive strength or a max_transition value that is too small. 

    Regards

    BarPouy

    • 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