• 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. Subthreshold Standard Cells Characterization by Liberat...

Stats

  • Locked Locked
  • Replies 20
  • Subscribers 125
  • Views 19190
  • 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

Subthreshold Standard Cells Characterization by Liberate

BarPouy
BarPouy over 5 years ago

Hi there,

I'm trying to characterize a standard cells library. I'm using tcl-files, based on RAK.

Nwell of cells in this library does not connected to VDD but also to VDDNW, which could have other values, e.g. 0 V. I set the voltages in char_setup file in this way:

set_vdd     -attributes {related_bias_pin VDDNW direction input voltage_name VDD}  VDD  ${VDD}

set_vdd     -type nwell -attributes {pysical_connection device_layer direction input voltage_name VDDNW }  VDDNW  0

set_gnd VSS 0

Please notice, that there is not any pin with the name VDDNW in the cells layout. For LVS of cells I added tapcell, comprising VDD, VDDNW and VSS, to the cell layout.

Characterization starts and aborts very fast without generating any desired results (see below message on the screen).

---------------------------------------------------------------

Starting on grid with 10 cpus
---- Template Generation start ----
---- Template Generation done ----
-- Characterization Summary --
0 warnings
0 errors

Starting on grid with 10 cpus
---- Characterization start ----
---- Characterization done ----
-- Characterization Summary --
0 warnings
0 errors

Starting on grid with 2 cpus
---- Write library start ----
---- Write library done ----
-- Write library Summary --
0 warnings
0 errors
0 monotonicity warnings

Starting on grid with 2 cpus
---- Write CCS library start ----
[5]    Done

--------------------------

The tool messages in the log file just after initialization step:

can't read "VDDNW": no such variable while executing

Question:

1.  For postlayout simulation I generated for each cells (inclusive tapcell) parasitics. Should I do extraction for each cell manually again or Liberate does this job?

   - in cell_list there are only the name of cells (not tapcell)

2. could be the missing of tapcell the reason of characterization abort?

I appreciate any suggestion of you.

Thanks a lot in advance!

BarPouy

  • Cancel
  • BarPouy
    BarPouy over 5 years ago in reply to Guangjun Cao

    Hi

    creating template file from scratc :

    Defining supplies, transition and delay thresholds, setting cell list, delay_template, power_template, const_template shold be manually created since these are user defined.This is clear.

    However my question is wether defining cells, leakage and arc for all cells of the library (!) have to be manually craeted in the template file or it will be automatically generated?

    In the manual scripting case: then what is the sense of

    "It is not required to define functionality or arcs for standard cell libraries. Liberate uses the patented technology “Inside-View”, to determine the functionality and the required arcs."?!

       * as we see in the following script, lots of lines are necessary for a cell with only two inputs!

    In the automatic case:, how can it be generated (with which commands)?

    Kind regards

    BarPouy

    if {[ALAPI_active_cell "cell_name"][ {

         define_cell \

                -inpit { A1 A2 } \

               -output { Y } \

               -pinlist  { A1 A2 Y } \

               -delay delay_template \

             power power_template \

         cell_name

    define_leakage -when "!A1 * !A2" cell_name
    define_leakage -when "!A1 * A2"  cell_name
    define_leakage -when "A1 * !A2"  cell_name
    define_leakage -when "A1 * A2"   cell_name

    # power arcs from  => A1  hidden
    define_arc \
           -type hidden \
           -when "!A2" \
           -vector {Rxx} \
           -pin A1 \
           cell_name

    # power arcs from  => A1  hidden
    define_arc \
           -type hidden \
           -when "!A2" \
           -vector {Fxx} \
           -pin A1 \
           cell_name

    # power arcs from  => A2  hidden
    define_arc \
           -type hidden \
           -when "!A1" \
           -vector {xRx} \
           -pin A2 \
           cell_name

    # power arcs from  => A2  hidden
    define_arc \
           -type hidden \
           -when "!A1" \
           -vector {xFx} \
           -pin A2 \
           cell_name

    # delay arcs from A1 => Z positive_unate combinational
    define_arc \
           -vector {RxR} \
           -related_pin A1 \
           -pin Z \
           cell_name

    # delay arcs from A1 => Z positive_unate combinational
    define_arc \
           -vector {FxF} \
           -related_pin A1 \
           -pin Z \
           cell_name

    # delay arcs from A2 => Z positive_unate combinational
    define_arc \
           -vector {xRR} \
           -related_pin A2 \
           -pin Z \
           cell_name

    # delay arcs from A2 => Z positive_unate combinational
    define_arc \
           -vector {xFF} \
           -related_pin A2 \
           -pin Z \
           cell_name

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

    Hi,

    I guess, the template file could be genarate partly by adding the folloeing lines to the template file after defining delay_, power_ and constraint_template

    set inputs  {I A1 A2 A3 A4 D SI SE CDN SD}
    set outputs {Z ZN Q}
    set clocks  {CP}
    set asyncs   {}

    define_cell \
            -input $inputs  -output $outputs  -clock $clocks  -async $asyncs \
            -constraint  constraint_template  \
            -delay       delay_template      \
            -power       power_template      \
            $cells

    However, I'm not sure, that this lesds to generate all arcs

    BarPouy

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

    Hi Guangjun

    While char I get ERROR

    ERROR (LIB-902): Failed to open file '~netlist/extracted/spice/rctyp/    .sp' for read. Check directory/file paths and permissions and rerun.
    ERROR (LIB-902): Failed to open file '~netlist/extracted/spice/rctyp/    .sp' for read. Check directory/file paths and permissions and rerun.

    All paths have an access right of drwxr-sr-x and all spice files -rw-r--r--

    What is the reason of this ERROR?

    Thanks

    Kind regards

    BarPouy

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

    Can you try to open this file with the exact name, '~netlist/extracted/spice/rctyp/    .sp' ? the space before .sp is the cause. If you are using cell-based netlist, make source there is no space after each '\'  where you define the cell list?

    Regards,

    Guangjun 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Guangjun Cao
    Guangjun Cao over 5 years ago in reply to Guangjun Cao
    Guangjun Cao said:
    make source

    sorry for the type, 'make sure'

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

    Thnak you Guangjun,

    exactly, that was the reason.

    Reagards

    BarPouy

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

    Hi Guangjun,

    Now it looks better!

    In order to generate arc automatically in the template I added in my basic template the following scrip, after defining slew, measure_slew and delay with set_var and after that set cell_list and defining index1 / index2

    set inputs  {I A1 A2 A3 A4 I0 I1 S D SI SE CDN SD}
    set outputs {Z ZN Q}
    set clocks  {CP}
    set asyncs   {}

    define_cell \
            -input $inputs  -output $outputs  -clock $clocks  -async $asyncs \
            -constraint  constraint_template_11x11 \
            -delay       delay_template_11x11      \
            -power       power_template_11x11      \
            $cell_list

    However the inputs list means the total inputs of all cells of the library, NOT of each cell. Now Librate generates a lot of ERROR, e.g. like this

    Initializing Spice
    *Info* No global model has been read in. Will expect model defined inside instance.
    ERROR (LIB-520): (char_library): The pin 'A3' 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.

    What is my mistake?

    Kind regards

    BarPouy

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

    I never use $variable to for pins. However, it should not cause error, I just tested with latest release. I do not any issue in the commands you shared. what you shared might not be related to the question you asked.

    The two errors are different. I suggest you check the netlist first. make sure you do not have leafcell related warning or error.

    try to do a test run with AN2d1 alone and go through the whole logfile. you might have overlooked something.

    I will not be available until Monday next week.

    Regards,

    Guangjun 

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

    based on your comments in another post, the problem might come from define_arc -vector command. -vector needs a -pinlist in define_cell. if you want arcs to be auto-generated, remove all define_arc command. if the problem still exists, use define_cell for each cell, replace $variable with real names. start with one cell that has problem. you may remove all other cells from $cells list, or use char_library -cells {your_cellname}  to selective characterize some cells. please read the manual.

    I am on vacation, hence delay in response.

    Regards,

    Guangjun

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

    Thank you Guanjun!

    As you suggested, I tried with define_cell for one cell. It seems to function. However there is one ERROR (max load of AN2d1:Z is less than min defiened load). I have to wait on free license and I will try agin.

    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