• 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 SKILL
  3. *Error* eval: undefined function – hiGraphicMode

Stats

  • Locked Locked
  • Replies 11
  • Subscribers 143
  • Views 26947
  • 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

*Error* eval: undefined function – hiGraphicMode

Duy Hien
Duy Hien over 11 years ago

Hi everyone,

I have encountered a new problem on Cadence: *Error* eval: undefined function – hiGraphicMode

This is solution suggested by Cadence [Virtuoso Custom Placement and Rounting Preparation Guide]:

Solution: Check that the pcells in your design do not use SKILL functions

■ That are not available to the translator

■ That work with window graphics

Alternatively, translate in foreground mode so that all necessary SKILL functions are available to the translator.

Can you explain to me what exactly I have to do, please?

Thank you so much.

 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    You didn't give much to go on - for example, what exactly you were doing when the error occurred, and where it was reported.

    My guess is you're running some background program which is failing because there's a call to hiGraphicMode in the libInit.il of a library - this would be solved typically by ensuring the code does:

    when(isCallable('hiGraphicMode)
      ... the code which calls hiGraphicMode()
    )

    But hard to be more precise without some better pointers.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Duy Hien
    Duy Hien over 11 years ago

    Hi Andrew,

    When I ran LVS, LVS failed and reported an incorrect connection. And I saw that error in CIW.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    Posting more (or all) of the CDS.log would probably help - it would give some context as to what you're doing.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Duy Hien
    Duy Hien over 11 years ago

    Thank Andrew,

    Here is the CDS.log when I run LVS:

    MGC_CALIBRE_LVS_RUNSET_FILE=/tmp/<name>.runset1

    //  Calibre layout-server initialized successfully at socket 9189, host localhost.

    Starting LVS on top cell in window:3...

    Calibre settings...

    Using runset MGC_CALIBRE_LVS_RUNSET_FILE = /tmp/< name>.runset1.

    t

    //  Calibre Interactive - LVS  v2012.4_16.11    Mon Nov 12 15:46:48 PST 2012

    //

    //             Copyright Mentor Graphics Corporation 1996-2012

    //                             All Rights Reserved.

    //         THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION

    //            WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION

    //              OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.

    //

    //  Mentor Graphics software executing under x86-64 Linux

    //

    //  Running on Linux <host> 2.6.18-371.3.1.el5xen #1 SMP Thu Dec 5 13:32:01 EST 2013 x86_64

    //  64 bit virtual addressing enabled

    //

    //  Starting time: Mon Jan 13 00:38:02 2014

    //

    //  calinteractive license acquired.

    //  Calibre Interactive authorized.

     

    *** Calibre Interactive: Exporting layout for library "test", cell "test1", view "layout" ***

     

    Virtuoso Framework License (111) was checked out successfully. Total checkout time was 0.10s.

     

    ********************************************************************************

    Product   : Virtuoso(R) XStream Out

    Program   : @(#)$CDS: strmout version 6.1.5 06/11/2013 19:34 (sjfnl003) $

              : sub-version  IC6.1.5.500.17

    Started at: 13-Jan-2014  00:38:23

    User Name : <user>

    Host Name : <host>

    Directory : <working_dir>

    CADENCE Design Systems, Inc.

    ********************************************************************************

    Info: Cellview Rev Num:99,  Tech Rev Num:59

     

    Loading <vendor> PDK <technology> procedures...

    <vendor> PDK <technology> Device Status Table loaded.

     

    *Error* eval: undefined function - hiGraphicMode

     

    WARNING (XSTRM-20): Output Stream file '/<working_dir>/test1.calibre.db' already exists. It will be overwritten.

    INFO (XSTRM-217): Reading the layer map file, /<install_dir>/<tech>.layermap

    INFO (XSTRM-162): You have not used the viaMap option. If the OpenAccess design has native oaVia instances, use the -viaMap option for preserving oaVia instances in a Stream Out - Stream In round trip. Using the -viaMap option improves performance and VM usage of applications using the Streamed-In design.  For details on the viaMap option, refer to the "Design Data Translator's Reference" guide for XStream.

     

    Summary of Options :

    library                                 test

    strmFile                         /<working_dir>/calibre_lvs/test1.calibre.db

    topCell                                 test1

    view                                    layout

    logFile                                 ./PIPO.LOG

    hierDepth                               20

    layerMap                         /<install_dir>/<tech>.layermap

    case                                    Preserve

    convertDot                              node

     

    INFO (XSTRM-223): 1. Translating cellView test/test1/layout as STRUCTURE test1

    INFO (XSTRM-223): 2. Translating cellView <tech>/oprppres/layout as STRUCTURE oprppres_CDNS_389541103790

    INFO (XSTRM-223): 3. Translating cellView <tech>/mim/layout as STRUCTURE mim_CDNS_389541103791

     

    Summary of Objects Translated:

          Scalar Instances:                       2

          Array Instances:                        0

          Polygons:                               0

          Paths:                                  0

          Rectangles:                             96

          Lines:                                  0

          Arcs:                                   0

          Donuts:                                 0

          Dots:                                   0

          Ellipses:                               0

          Boundaries:                             0

          Area Blockages:         

                   0

          Layer Blockages:                        0

          Area Halos:                             0

          Markers:                                0

          Rows:                                   0

          Standard Vias                           0

          Custom Vias:                            0

          Pathsegs:                               0

          Text:                                   4

          Cells:                                  3

     

    Elapsed Time: 0.4s   User Time: 0.4s   CPU Time: 0.1s   Peak VM: 569KB

     

    INFO (XSTRM-234): Translation completed. '0' error(s) and '1' warning(s) found.

     

    Loading layers.cxt

    Loading .simrc file: ./.simrc

     

    *** Calibre Interactive: Exporting netlist for library "test", cell "test1", view "schematic" ***

     

    Virtuoso Framework License (111) was checked out successfully. Total checkout time was 0.11s.

     

    Loading <vendor> PDK <technology> procedures...

    <vendor> PDK <technology> Device Status Table loaded.

     

    *Error* eval: undefined function - hiGraphicMode

     

    Running Artist Hierarchical Netlisting ...

     

     

    End netlisting Jan 13 00:38:26 2014

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    OK, given that the messages are coming from stream out and CDL netlisting (both of which happen in background, at least by default, and probably in the Calibre LVS interface), it appears likely that it is indeed something in the libInit.il of the technology library. Can you check?

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Duy Hien
    Duy Hien over 11 years ago

    Hi Andrew,

    I have seen libInit.il file in technology library. I found this code:

    attFile = strcat(ddGetObj("<tech>")~>readPath "/deviceStatTable.il")

     if( isFile( attFile ) then

       load(attFile)

       printf("<Vendor> PDK <tech> Device Status Table loaded. \n \n")

     else

       warn("Device Status Table for IBM PDK not found and thus not loaded.")

     );if

     

     ; Only for IC6 / Open Access in graphic mode : Set correct via dimensions

     when(and(getd('dbGetDatabaseType) dbGetDatabaseType()=="OpenAccess")  && hiGraphicMode()

       envSetVal("layout" "wireViaParamCalcMode" 'cyclic "viaDefDefaults")

     );when 

     Up to blue lines, I think it is correct because I saw the line <Vendor> PDK <tech> Device Status Table loaded. was printed in CIW. I have 2 questions:

    (1) What is the function of function hiGraphicMode()

    (2) How can I fix the error?

    Thank you so much. 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dmay
    dmay over 11 years ago

    1. This command tells Cadence if it is running in graphics mode or not. It is probably not defined when running streamout or lef/def.

    2. Try checking to see if the function is defined:

     when(and(getd('dbGetDatabaseType) dbGetDatabaseType()=="OpenAccess")  && and(getd('hiGraphicMode) hiGraphicMode())

       envSetVal("layout" "wireViaParamCalcMode" 'cyclic "viaDefDefaults")

     );when 

    Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    Thanks Derek for answering. 

    A small suggestion. In this case it won't make any difference, but I would suggest using isCallable('funcName) rather than getd('funcName) in such checks. getd tells you whether the function is defined already, whereas isCallable tells you whether it is defined or whether it would be defined once auto loaded (ie if it is autoloadable). That's a better test because sometimes the function you're testing for is in a context which has not yet been loaded but would be loaded if you called the function.

    Kind Regards,

    Andrew 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Duy Hien
    Duy Hien over 11 years ago

    Thank Derek and Andrew,

    After I edit the libInit.il, the error disappears. However, I would like to ask for you guys check the report for me, please.

     

    After getd(‘hiGraphicMode) was used:

    Loading <PDK_name> procedures...

    <PDK_name> Device Status Table loaded.

     

    INFO (XSTRM-217): Reading the layer map file, /<install_dir>/<tech>.layermap

    INFO (XSTRM-162): You have not used the viaMap option. If the OpenAccess design has native oaVia instances, use the -viaMap option for preserving oaVia instances in a Stream Out - Stream In round trip. Using the -viaMap option improves performance and VM usage of applications using the Streamed-In design.  For details on the viaMap option, refer to the "Design Data Translator's Reference" guide for XStream.

     

    Summary of Options :

    library                                 test

    strmFile                                /<working_dir>/test3.calibre.db

    topCell                                 test3

    view                                    layout

    logFile                                 ./PIPO.LOG

    hierDepth                               20

    layerMap                                /<install_dir>/<tech>.layermap

    case                                    Preserve

    convertDot                              node

     

    INFO (XSTRM-223): 1. Translating cellView test/test3/layout as STRUCTURE test3

    INFO (XSTRM-223): 2. Translating cellView <tech>/oprppres/layout as STRUCTURE oprppres_CDNS_389684966730

     

    Summary of Objects Translated:

          Scalar Instances:                       2

          Array Instances:                        0

          Polygons:                               0

          Paths:                                  0

          Rectangles:                             16

          Lines:                                  0

          Arcs:                                   0

          Donuts:                                 0

          Dots:                                   0

          Ellipses:                               0

          Boundaries:                             0

          Area Blockages:                         0

          Layer Blockages:                        0

          Area Halos:                             0

          Markers:                                0

          Rows:                                   0

          Standard Vias                           0

          Custom Vias:                            0

          Pathsegs:                               0

          Text:                                   3

          Cells:                                  2

     

    Elapsed Time: 0.3s   User Time: 0.4s   CPU Time: 0.0s   Peak VM: 463KB

     

    INFO (XSTRM-234): Translation completed. '0' error(s) and '1' warning(s) found.

     

    Loading .simrc file: ./.simrc

     

    *** Calibre Interactive: Exporting netlist for library "test", cell "test3", view "schematic" ***

     

    Virtuoso Framework License (111) was checked out successfully. Total checkout time was 0.10s.

     

    Loading <PDK_name>  procedures...

    <PDK_name> Device Status Table loaded.

     

    Running Artist Hierarchical Netlisting ...

     

    End netlisting Jan 14 16:36:08 2014

     

    After isCallable(‘hiGraphicMode) was used:

    Loading <PDK_name> procedures...

    <PDK_name> Device Status Table loaded.

     

    INFO (XSTRM-217): Reading the layer map file, /<installed_dir>/<tech>.layermap

    INFO (XSTRM-162): You have not used the viaMap option. If the OpenAccess design has native oaVia instances, use the -viaMap option for preserving oaVia instances in a Stream Out - Stream In round trip. Using the -viaMap option improves performance and VM usage of applications using the Streamed-In design.  For details on the viaMap option, refer to the "Design Data Translator's Reference" guide for XStream.

     

    Summary of Options :

    library                                 test

    strmFile                                /<working_dir>/test3.calibre.db

    topCell                                 test3

    view                                    layout

    logFile                                 ./PIPO.LOG

    hierDepth                               20

    layerMap                                /<install_dir>/<tech>.layermap

    case                                    Preserve

    convertDot                              node

     

    INFO (XSTRM-223): 1. Translating cellView test/test3/layout as STRUCTURE test3

    INFO (XSTRM-223): 2. Translating cellView <tech>/oprppres/layout as STRUCTURE oprppres_CDNS_389683750510

     

    Summary of Objects Translated:

          Scalar Instances:                       2

          Array Instances:                        0

          Polygons:                               0

          Paths:                                  0

          Rectangles:                             16

          Lines:                                  0

          Arcs:                                   0

          Donuts:                                 0

          Dots:                                   0

          Ellipses:                               0

          Boundaries:                             0

          Area Blockages:                         0

          Layer Blockages:                        0

          Area Halos:                             0

          Markers:                                0

          Rows:                                   0

          Standard Vias                           0

          Custom Vias:                            0

          Pathsegs:                               0

          Text:                                   3

          Cells:                                  2

     

    Elapsed Time: 0.4s   User Time: 0.4s   CPU Time: 0.0s   Peak VM: 463KB

     

    INFO (XSTRM-234): Translation completed. '0' error(s) and '1' warning(s) found.

     

    Loading layers.cxt

    Loading .simrc file: ./.simrc

     

    *** Calibre Interactive: Exporting netlist for library "test", cell "test3", view "schematic" ***

     

    Virtuoso Framework License (111) was checked out successfully. Total checkout time was 0.18s.

     

    Loading <PDK_name> procedures...

    <PDK_name> Device Status Table loaded.

     

    Running Artist Hierarchical Netlisting ...

     

    End netlisting Jan 14 16:15:52 2014

     

    I would like to ask one more question. I created 2 cells for test, one cell have LVS clean, the other one is not.

    When I ran LVS in the cell which has LVS clean, *Error* eval: undefined function – hiGraphicMode did not occur. The Calibre RVE displayed the same result when getd(‘hiGraphicMode) or isCallable(‘hiGraphicMode) were used, i.e LVS is correct.

    When I ran LVS in the cell which has LVS not machted, Calibre LVS still generated the RVE result, i.e LVS is incorrect (missing port), even though the *Error* eval: undefined function – hiGraphicMode occurred. After getd(‘hiGraphicMode) or isCallable(‘hiGraphicMode) functions were used, The Calibre RVE displays the same result: incorrect (missing port).

     

    So, I wonder that did I setup correct environments?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

     As I mentioned, in this case it won't matter whether you use getd or isCallable (because hiGraphicMode will be defined (or not) as soon as the application starts).

    The LVS error is almost certainly nothing to do with this error - all that would result in is that it doesn't set a particular cdsenv setting - and that wouldn't affect LVS. So the error was non-critical in this case.

    So your LVS error is simply that you have an LVS error - a missing port. You'll have to debug that as usual (and as it's a Calibre error, I can't really help you, since it's not a Cadence product and I only have limited Mentor Calibre experience).

    Regards,

    Andrew.

    • 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