• 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 26360
  • 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
Parents
  • 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
  • Guangjun Cao
    Guangjun Cao over 5 years ago in reply to BarPouy

    1.Check the manual for correct sytanx and use these commands,

    set_var extsim_deck_dir full-path-here

    set_var extsim_save_failed deck

    set_var exism_save_passed none

    2. If your run has failed characterization at simulation stage, go to the deck dir. You will see saved deck dir or a tarball. Inside each sub dir, you will see a map.list. open this file you will see where the failure is. Find the deck (sim.sp)for the failed char, remove save=nooutput, then run spectra on it. 

    3. Start viva with ade license. Open the simulation results and check the waveform.

    4. Review the settings and variables in the deck-- are they the same as your own test bench? If not, either your test bench or the characterization settings need to be corrected.

    Tip. select_index 2x2 may use min/max indecis, which makes the debug easier.

    Guangjun

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

    Hi Guangjun, Hi anurans,

    Thank you for your tips. I'm following it.

    Kind regards

    BarPouy

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

    Hello Guangjun

    Automatically generation of the template (with defined cells) for the cells having the same inputs /outputs, e.g. AN2d1 /OR2d1 (inputs: A1 A2) can be doen. However, If I mix such cells with the cells having more inputs /outpus or other inputs /outputs, e.g. AOI21.d1 (inputs: A1 A2 A3) or DFd1 (inputs: D, clock: CP, output: Q), then the template will not be generated and gives ERROR (see please below). It's clear, if I write for each class of cells, having the same inputs / outputs, a separate define_cell,  then this issue does not occur. There is an example of generating automatically template in the page 48 to 50 of 'Virtuoso Liberate Reference Maual', Version 18.1, section 'TCL Command File'. It shows that it might be possible to generate template of different class of cells like {NAND2X4 NOR2X2 DFFX1} just with one general define_cell.

    What is my mistake?

    Thanks!

    Kind regards

    BarPouy

    ERROR (LIB-520): (char_library): The pin 'D' is not defined for cell 'AN2d1'. This cell will be ignored. Check the netlist and make sure it is consistent with 'define_cell' command.

    ERROR (LIB-203): (char_library): Cell 'AN2d1' is scheduled for characterization but has no netlist, has an empty subckt or has no port on the subckt. This cell will be skipped. Check the netlist and rerun.

    ERROR (LIB-520): (char_library): The pin 'CP' is not defined for cell 'DFd1'. This cell will be ignored. Check the netlist and make sure it is consistent with 'define_cell' command.

    ERROR (LIB-203): (char_library): Cell 'DFd1' is scheduled for characterization but has no netlist, has an empty subckt or has no port on the subckt. This cell will be skipped. Check the netlist and rerun.

    ERROR (LIB-520): (char_library): The pin 'D' is not defined for cell 'OR2d1'. This cell will be ignored. Check the netlist and make sure it is consistent with 'define_cell' command.

    ERROR (LIB-203): (char_library): Cell 'OR2d1' is scheduled for characterization but has no netlist, has an empty subckt or has no port on the subckt. This cell will be skipped. Check the netlist and rerun.

    WARNING (LIB-961): (char_library): Leakage deck initialization was requested using '.ic', but the 'leakage_sim_duration' was set to '0'. This may lead to unexpected leakage characterization results. Change 'leakage_sim_duration' to a positive non-zero value in seconds or change the setting of 'set_sim_init_condition' and rerun.

    Building library database

    Processing cell: AN2d1

    Processing cell: DFd1

    Processing cell: OR2d1

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

    With the information you have provided, I could not make any useful suggestions to solve your issue.

    If you do not want to waste time, I suggest you to use define_cell for each cell. I do not see any benefit of using one define_cell for all or a group cells.

    Guangjun

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

    First, clarify this ! Are you trying to generate a template/arcs automatically from a good (perfectly usable) existing library (That's what I had grasped) ?

    Then you don't even need to worry about defining multiple "define_cells" ! 

    read_library existing_good.lib
    write_template -verbose Template_Set 

    This "Template_Set" is the starting template for all the cells in the library. This only specifies the define_cells and load/slew index values for all the cells without delay/power/constraints arcs. You may need to adjust the min/max trans/caps for your need.

    Then when running a "re-characterization" on the same set, let's say, for different corners, use char_library -trial instead of char_library -ccs (or whatever method). Then this generate a trial.lib file that should have additional information related to the missing arcs in earlier step. So that you can re-generate a template file from this trial .lib including all the arcs/define_cells for all the cells without bothering about I/O s of each cell.

    Anuradha

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

    Dear anurans,

    Thank you for your suggestion.

    Yes I'm generating a template/arcs automatically from a  library, generated by your suggested commands in last friday.

    #char_library -trial

    char_library

    write_library cornerName.lib

    read_library  cornerName.lib

    write_template -verbose cornerName.template

    I generated just for six cells in two groups (group1: Inputs: {A1 A2}, output: Z, group2: Inputs: {A1 A2 A3}, output: ZN). However I wrote two different define_cell. It's generated a correct template comprising all arcs of these cells. Als .lib file covers only these cells. In this file, all delay_template_4x4 and power_template_4x4 with index_1, index_2 and values are included .

    My question from Guangjun was why it does not function when I write just one define_cell, which Liberate Manual advises. It's clear it does function when I write for each cell group one define_cell.

    However for the rest of cells, existing in the directory where the mentioned six characterized cells are placed, delivers, e.g.

    *Error* (char_library) : Cell xxxxd1 is scheduled for characterization but has no define_cell command. 

    Even if I gave the following min /max values


    set_var max_transition 1.601e-08
    set_var min_transition 5.579e-12
    set_var min_output_cap 9.25e-16
    set_var scale_tran_by_template 1
    set_var scale_load_by_template 1

    but it's generated in the template the following values. maybe dut to the command set_var scale_* 1?

    set_var max_transition 1e-09
    set_var min_transition 1e-15
    set_var min_output_cap 1e-15

    It's also generated cornerName.trial.ldb.gz. However it's not generated further data (data sheet). Maybe due to the above mentioned ERROR?

    Thanks a lot!

    BarPouy

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

    1. the set_var commands you listed has nothing to do with this error.

    BarPouy said:
    *Error* (char_library) : Cell xxxxd1 is scheduled for characterization but has no define_cell command

    2. there is no point wasting your time on getting your scripts with one define_cell working. 

    3. I can see you are still building up your knowledge on Liberate/characterization flow. In such a case, it is extreme important to stick to basics and not be carried away.

    Guangjun

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

    The problem is, as Guangjun stated, your post does not provide any insightful information to the issue you have. Atleast you could share the define_cell template information here or in a https://pastebin.com/ link. I bet, the pin order in your single define_cell command does not match with the pins you have in cells.

    Anuradha

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

    I do not believe this issue is worth further discussion, until one define_cell for each cell is used. There is no point to look into all the scripts. The approach, clearly as it has been, has caused more problem than offering benefit! 

    IT IS NOT A GOOD APPROACH TO USE $VARIABES FOR CELL/PIN ETC, SPECIALLY BEFORE ONE BECOMES AN EXPERIENCE tcl/LIBERATE USER.

    Guangjun

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Guangjun Cao
    Guangjun Cao over 5 years ago in reply to Guangjun Cao
    Guangjun Cao said:
    EXPERIENCE

    experienced.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Reply
  • Guangjun Cao
    Guangjun Cao over 5 years ago in reply to Guangjun Cao
    Guangjun Cao said:
    EXPERIENCE

    experienced.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Children
No Data

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