• 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 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
  • BarPouy
    BarPouy over 5 years ago in reply to anurans

    Ok

    define_cell \
           -input {A1 A2 A3 D} \
           -output {Z ZN Q} \
           -clock {CP} \
           -delay delay_template_4x4 \
           -power power_template_4x4 \
           -constraint constraint_template_4x4 \
           {AN2d1 OR2d1 XOR2d1 AOI21d1 ND2d1 NRd1 XNRd1 DFd1}

    Inputs of {AN2d1 OR2d1 XOR2d1}: A1 A2 and its output: Z

    Inputs of {AOI21d1}: A1 A2 A3 and its output: ZN

    Inputs of {ND2d1 NR2d1 XNR2d1}: A1 A2 and its output: ZN

    Input of DFd1: D, clock: CP and its output: Q

    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