How to unset XKEYSYMDB?

Discussion in 'Cadence' started by comp.cad.cadence, Mar 18, 2005.

  1. Hello, all

    I am trying to use a new PDK.

    This PDK requests:
    1) set some environments such as OPUSDIR = <Cadence_install_path>
    2) link Cadence_install_path>/tools/dfII/local
    -> <design_kit_install>/xxxxxxx/local
    But the change will bother other CDS users who're using other PDK. So a
    Cadence install with all files linking to the Cadence install is
    created, except for the "local" which is linked to
    <design_kit_install>/xxxxxx/local

    The reason for the link is that the PDK provides some utility and menus
    there.

    Then I execute the PDK script which set some envs and then invoke
    Cadence from OPUSDIR (OPUSDIR is set to the path of created Cadence
    mentioned above in 2).

    The problem I met is like I can't use keyboard to type in many menus
    and windows. Most of the warning message is like:
    --------------------------------------------------------------
    \o Warning: translation table syntax error: Unknown keysym name:
    osfActivate
    \o Warning: ... found while parsing ':<Key>osfActivate:
    ManagerParentActivate()'
    .......
    \o Warning: Cannot convert string "<Key>SunCopy" to type VirtualBinding

    .......
    --------------------------------------------------------------

    I googled and found a few similar questions asked before. It is said to
    have something to do with "unset XKEYSYMDB".
    I just wonder when I need unset the env? before running the
    script/Cadence or what? And once the env is unset, the Cadence I guess
    can't find right keyboard mapping. So what will Cadence do after that?
    Thanks for reading through this little long story. Any comments will be
    appreciated much.

    -Andy
     
    comp.cad.cadence, Mar 18, 2005
    #1
  2. Hi Andy,

    The question is, where is XKEYSYMDB being set? Is it in a system file (eg.
    /etc/bashrc), or in your own dotfiles (eg. ~/.bashrc, ~/.cshrc, etc)? I've
    seen a few people who've had this problem, and in all cases they were setting
    it up themselves, it was NOT set by the system. The value of XKEYSYMDB was, in
    case you were wondering, completely platform-specific and entirely
    inappropriate for non-Solaris platforms, which was when they noticed the problem.

    If you are setting it yourself in your own dotfiles, the simple solution is to
    remove that line and logout/log back in. If you don't want to go to the extent
    of logging out and in again, then you could put a line in your shell startup
    file (~/.cshrc for csh, ~/.bashrc for bash, etc) which explicitly unsets the
    variable (since it will be set in your login environment, all new shells will
    inherit this unless you either logout or explicitly unset it).

    Don't worry about the tools not being able to find the keymap - this is really
    nothing we're doing explicitly with the tools, it's a low-level X thing. Once
    you unset XKEYSYMDB, you shouldn't have any more problems, but if you do, one
    other cause of being unable to use the mouse or keyboard are the locale
    environment variables - from 'man locale':

    LANG=locale_x
    LC_CTYPE="locale_x"
    LC_NUMERIC="locale_x"
    LC_TIME="locale_x"
    LC_COLLATE=locale_y
    LC_MONETARY="locale_x"
    LC_MESSAGES="locale_x"
    LC_ALL=

    You probably won't have too many (or any) of these set, but I've seen problems
    if they're set to "C". If you still experience problems after unsetting your
    XKEYSYMDB envar, try playing about with your locale settings. LANG=C usually
    causes problems, for some reason - if you have this set, try unsetting it and
    see if that helps.

    Let me know if this doesn't work...

    Regards,
    Graeme.
     
    Graeme Bunyan, Mar 18, 2005
    #2
  3. comp.cad.cadence

    Guest Guest

    You pretty much should never have XKEYSYMDB set. When it is not set, the
    XKeysymDB file is found in the default location -- in /usr/openwin/lib/X11 on
    a Solaris system.

    In most cases you WANT to use the default XKeysymDB file because it is the
    correct one for the system.

    The only time XKEYSYMDB should be set is when you have a specific reason.
    Such as a long time ago before Solaris when the SunOS XKeysymDB file didn't
    have keys required for NetScape, so you needed to point to NetScape's
    XKeysymDB file when running NetScape.

    But this is no longer necessary for NetScape, since Solaris has a proper
    XKeysymDB.

    -Pete Zakel
    ()

    "I only like two kinds of men: domestic and foreign."

    - Mae West
     
    Guest, Mar 18, 2005
    #3
  4. Hi, Graeme, Pete and all

    Thanks so much for reading my post and reply. I tried what you guys
    said but I was still out of luck. I should have specified the problem
    in more detail. Actually, as far as I try the only weird thing only
    happens to the libManager Window. When you opened a schematic or analog
    artist window, the keyboard and mouse work well. But the libManager was
    dumb to the input from keyboard but responsed to mouse well. I guess
    that it has nothing to do with the XKEYSYMDB. Any more comments?

    rgds

    -Andy
     
    comp.cad.cadence, Mar 21, 2005
    #4
  5. comp.cad.cadence

    Guest Guest

    That could be due to your locale settings.

    Try "setenv LANG C" before starting the tools and see if that makes a
    difference.

    -Pete Zakel
    ()

    "God requireth not a uniformity of religion."

    -Roger Williams
     
    Guest, Mar 21, 2005
    #5
  6. (Cont'd )

    Hello, there

    I am back with some new episodes about the problem still haunting me.
    Still thousands of thanks to those read and replied my post.
    After some try and communication with PDK support staff, the potential
    reason to cause the problem still focuses on setting of XKEYSYMDB.
    As I described above, a script is executed to invoke Cadence and
    meanwhile introduce some menu and utility specific to the PDK. When I
    started up Cadence and typed

    getShellEnvVar("XKEYSYMDB")

    in the CIW window, I got the response like

    /syn/hercules/.../.../XKeysymDB

    The support staff told me that if the synopsis' XKeysymDB is sourced,
    the key mapping of Cadence will be messed up there.
    The script is executed in Bourne shell (the first line of the script is
    #! /bin/sh). And even if I inserted the lines

    unset XKEYSYMDB
    or
    XKEYSYMDB="usr/X11R6/lib/X11/XKeysymDB"
    export XKEYSYMDB

    before invoking Cadence in the script, I still got the same result by
    executing getShellEnvVar("XKEYSYMDB").
    I guess that the var XKEYSYMDB is overrided somewhere I dont know. My
    login shell is tcsh and I didn't find some conflict from the system
    profile file.
    I dont know much about Unix on the system level, so I am still looking
    forward to any comments here. Thanks!

    -Andy
     
    comp.cad.cadence, Apr 1, 2005
    #6
  7. I also attach the script below. I had to modify the script a little for
    some reason.


    #! /bin/sh
    # This script is enhanced to be worked for both Solaris & Linux
    # It will launch data from /designPackages which can do:
    #
    #
    # Read "I" for environment setup for 12 different binaries that
    # integrate into this PDK.
    # Read "II" to setup your EDA binaries.
    # Read "III" for the upcoming change log.
    #-----------------------------------------------------------------------------
    #
    #-----------------------------------------------------------------------------

    # I. Make sure the following environment variables and
    # defined/installed at your site.
    # ----------------MUST
    INSTALL/setup----------------------------------------
    # DPPDK - DesignPackages installation path
    # default is: /designPackages
    # OPUSDIR - Cadence 50 installation path
    # default is: /cad/cadence.IC50
    # -----------------Optional install/setup if the following tool will
    be used
    # avanti_home_dir - Advanti Hercules tool installation path
    # default is: /cad/avanti/hercules
    # HSPICEDIR - Spice installation path
    # default is: /cad/hspice
    # LDV - 50 Verilog path
    # default is: /cad/cadence.LDV50
    # NEOCELLDIR - NEO cell installation path
    # default is: /cad/cadence.neocell_500
    # NASSDA_HOME - NASSDA HSIMD simulation installation path
    #
    # ASSURAHOME - ASSURA installation path
    # default is: /cad/cadence.assura_500
    # STARRCXTHOME - starRCXT installation path
    # default is: /cad/avanti/star-rcxt
    # CCTHOME -Virtuoso Custom Router(VCR)
    # VCR/CCAR software installation.
    # default is: /cad/cadence.ICC
    # ACV_ROOT - Aptivia Setup
    # default is:/cad/cadence.VSDE33/tools/acv
    # DRACULAHOME - /cad/dracula
    #------------------------------------------------------------------------------

    # II. If the above env(s) are not defined in default path,
    # you have two choices:
    #------------------------------------------------------------------------------
    # 1. setenv before you invoke this script
    # 2. Commented the following lines and edit your
    # own path between the double quote.
    # DPPDK="" export PDKHOME
    # OPUSDIR="" export OPUSDIR
    # avanti_home_dir="" export avanti_home_dir
    # HSPICEDIR="" export HSPICEDIR
    # LDV="" export LDV
    # NEOCELLDIR="" export NEOCELLDIR
    # NASSDA_HOME="" export NASSDA_HOME
    # ASSURAHOME="" export ASSURAHOME
    # STARRCXTHOME="" export STARRCXTHOME
    # CCTHOME="" export CCTHOME
    # ACV_ROOT="" export ACV_ROOT
    # DRACULAHOME="" export DRACULAHOME
    #--------------------------------------------------------
    #
    #--------------------------------------------------------
    #
    #
    #
    PDKOS=`uname | grep Linux`

    if [ ! "$PDKOS" ]; then
    PDKOS="SunOS"
    fi

    export PDKOS
    PDK50date="2004-09-02"
    #
    # yvonne to do it might cause license issue
    #
    if [ ! "$CDS_LIC_FILE" ]; then
    CDS_LIC_FILE=""
    export CDS_LIC_FILE
    fi

    if [ ! "$CDS_LIC_TIMEOUT" ]; then
    CDS_LIC_TIMEOUT=300
    export CDS_LIC_TIMEOUT
    fi

    if [ "$PDKOS" = "Linux" ]; then
    if [ ! "$LD_ASSUME_KERNEL" ]; then
    LD_ASSUME_KERNEL="2.4.1"
    export LD_ASSUME_KERNEL
    fi
    fi

    AVLAST="no"
    #-------------------------------------------------
    # WARNING........WARNING......WARNING............
    # Don't modify anything after this line, otherwise
    # you might messed up the PDK flow.
    #-------------------------------------------------
    # --------------------
    # Parsing command line
    # --------------------
    CMDNAME=`basename $0`
    usage () {
    echo "Usage: $CMDNAME [command-options]" >&2
    echo " where the command-options can be:" >&2
    echo " -rel Rn.n" >&2
    echo " -rel Rn.nalpha " >&2
    echo " -log <Redirect CDS running LOG file>" >&2
    echo " -help" >&2
    echo " -display host:display.screen" >&2
    echo " -PDKuser da" >&2
    echo " -<cadence command options>" >&2
    exit 2
    }

    # Check if there is .process file exist in
    # the current work directory. If not, print
    # message and exit.
    #---------------------------------------------
    if [ ! -f .process ]; then
    echo "*PDK error* Please specify processname in .process file in
    current working directory"
    echo " -PDK Environment Group"
    echo ""
    exit 1
    fi

    echo ""
    echo ""
    echo "
    echo ""

    if [ -f "./cds.lib" ]; then
    ANALIB=`cat ./cds.lib | grep
    '\$LIBRARY_RELEASE/\$GENERIC/setup/libraryPath/current/cds.lib'`
    if [ ! "$ANALIB" ]; then
    echo "Notification....."
    echo "Please add the following line in ./cds.lib file for
    analogLib definition "
    echo ""
    echo " INCLUDE
    \$LIBRARY_RELEASE/\$GENERIC/setup/libraryPath/current/cds.lib"
    echo ""
    fi
    fi


    SUFV="_50"
    export SUFV
    CURT="current"
    export CURT
    usr=`whoami`
    export usr
    PDKPROCESS=`cat ./.process | tr -d ' '`
    export PDKPROCESS
    if [ $PDKPROCESS = "generic" ]; then
    echo ""
    echo " PDK Error....."
    echo " The .process file cannot specify generic process"
    echo " please modify it and re-start"
    exit
    fi

    if [ "$PDKOS" = "SunOS" ]; then
    if [ ! "$OPENWINHOME" ]; then
    OPENWINHOME="/usr/openwin"
    export OPENWINHOME
    fi

    if [ $OPENWINHOME ]
    then
    if [ $LD_LIBRARY_PATH ]
    then
    LD_LIBRARY_PATH="$OPENWINHOME/lib:$LD_LIBRARY_PATH"
    else
    LD_LIBRARY_PATH="$OPENWINHOME/lib"
    fi
    export LD_LIBRARY_PATH
    fi
    fi
    #----------------------------
    # Advanti tools physical path
    #----------------------------
    HOST=`hostname`
    export HOST

    if [ "$PDKOS" = "Linux" ]; then
    if [ ! "$avanti_home_dir" ]; then
    avanti_home_dir="/cad/avanti/hercules"
    export avanti_home_dir
    fi

    if [ -d "${avanti_home_dir}/bin" ]; then
    PATH="$avanti_home_dir/bin/IA.32:$PATH"
    export PATH
    fi

    if [ ! "$HERCULES_HOME_DIR" ]; then
    HERCULES_HOME_DIR=$avanti_home_dir
    export HERCULES_HOME_DIR
    fi
    if [ -d "${HERCULES_HOME_DIR}/bin" ]; then
    PATH="$PATH:$avanti_home_dir/bin/IA.32"
    export PATH
    fi
    else
    if [ ! "$avanti_home_dir" ]; then
    avanti_home_dir="/cad/avanti/hercules"
    export avanti_home_dir
    fi

    if [ -d "${avanti_home_dir}/bin" ]; then
    PATH="$avanti_home_dir/bin:$PATH"
    export PATH
    fi

    if [ ! "$HERCULES_HOME_DIR" ]; then
    HERCULES_HOME_DIR=$avanti_home_dir
    export HERCULES_HOME_DIR
    fi

    if [ -d "${HERCULES_HOME_DIR}/bin" ]; then
    PATH="$PATH:$avanti_home_dir/bin"
    export PATH
    fi
    fi
    PDKAVANTI="yes"
    if [ ! -d "${avanti_home_dir}" ]; then
    PDKAVANTI="no"
    fi
    export PDKAVANTI

    # yvonne
    if [ "$PDKOS" = "Linux" ]; then
    if [ ! "$STARRCXTHOME" ]; then
    STARRCXTHOME="/cad/avanti/star-rcxt"
    PATH=$STARRCXTHOME/IA.32_star-rcxt/bin:$PATH
    export STARRCXTHOME
    fi
    else
    if [ ! "$STARRCXTHOME" ]; then
    STARRCXTHOME="/cad/avanti/star-rcxt"
    PATH=$STARRCXTHOME/SUN.64_star-rcxt/bin:$PATH
    export STARRCXTHOME
    fi
    fi

    #--------------------------
    # Aptivia Setup
    #--------------------------
    if [ ! "$ACV_ROOT" ] ; then
    ACV_ROOT="/cad/cadence.VSDE33/tools/acv"
    export ACV_ROOT
    fi

    if [ -d "${ACV_ROOT}/bin" ] ; then
    PATH="$ACV_ROOT/bin:$PATH"
    export PATH
    fi

    #----------------------------
    # hspice path
    #----------------------------
    if [ ! "$HSPICEDIR" ]; then
    HSPICEDIR="/cad/hspice"
    export HSPICEDIR
    fi
    #----------------------------
    # Cadence tools physical path
    #----------------------------
    if [ "$PDKOS" = "Linux" ]; then
    if [ ! "$OPUSDIR" ]; then
    OPUSDIR="/cad/cadence.IC50"
    export OPUSDIR
    echo ""
    echo ""
    fi
    else
    if [ ! "$OPUSDIR" ]; then
    OPUSDIR="/cad/cadence.IC50"
    export OPUSDIR
    echo ""
    echo ""
    fi
    fi

    if [ "$PDKOS" = "Linux" ]; then
    PDKtmp=`ls -al $OPUSDIR/tools | grep 'tools\.lnx'`
    if [ ! "$PDKtmp" ]; then
    echo ""
    echo "***Cadence Installation Error:"
    echo " The cadence IC50 tool installation path...."
    echo " $OPUSDIR/tools NOT Linux version"
    echo ""
    echo " correct Cadence Linux installation"
    echo " - PDK Environment Group"
    echo ""
    exit
    fi
    else
    PDKtmp=`ls -al $OPUSDIR/tools | grep 'tools\.sun'`
    if [ ! "$PDKtmp" ]; then
    echo ""
    echo "***Cadence Installation Error:"
    echo " The cadence IC50 tool installation path...."
    echo " $OPUSDIR/tools NOT Solaris version"
    echo ""

    echo ""
    exit
    fi
    fi
    if [ $PDKOS = "Linux" ]; then
    PDKtmp=`ls -al $OPUSDIR/tools/dfII/local | grep '\.lnx'`
    if [ ! "$PDKtmp" ]; then
    echo "***PDK50 Installtion error:"
    echo " The cadence IC50 tool installation path...."
    echo " $OPUSDIR/tools/dfII/local "
    echo " IS NOT LINKED to PDK50 Linux Version"
    echo ""
    echo ""
    exit
    fi
    fi

    #----------------------------
    # Verilog Path
    #---------------------------
    if [ ! "$LDV" ]; then
    LDV="/cad/cadence.LDV51"
    export LDV
    fi

    if [ -d "${LDV}/tools/bin" ]; then
    PATH="$LDV/tools/bin:$LDV/tools/verilog/bin:$PATH"
    export PATH
    fi

    CDS_INST_DIR="$OPUSDIR"
    export CDS_INST_DIR
    CDSHOME="$CDS_INST_DIR"
    export CDSHOME

    CDS_SITE="$OPUSDIR/tools/dfII/local"
    export CDS_SITE
    LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${CDS_INST_DIR}/tools/lib"
    export LD_LIBRARY_PATH

    CDS_Netlisting_Mode="Analog"
    export CDS_Netlisting_Mode

    tblquote () {
    echo
    "========================================================================"
    }
    #
    # Set PDK Default Settings
    # please do not touch after this line
    # It is for whole architecture of PDK tools
    #-----------------------------------------------------
    : ${PDKUSER:="designer"}
    : ${LIBRARYAREA:="release"}
    : ${SKILLAREA:="release"}
    : ${RELEASEID:="release"}

    # initial arglist is null
    CDSARGS=

    if [ "$PDKOS" = "Linux" ]; then
    if [ -f $HOME/.cdsinit50.lnx ] ; then
    echo ""
    echo "PDK50 Copy .cdsinit50.lnx to .cdsinit in your home directory"
    /bin/cp $HOME/.cdsinit50.lnx $HOME/.cdsinit
    fi

    if [ -f $HOME/.cdsenv50.lnx ] ; then
    echo "PDK50 Copy .cdsenv50.lnx to .cdsenv in your home directory"
    echo ""
    /bin/cp $HOME/.cdsenv50.lnx $HOME/.cdsenv
    fi
    else
    if [ -f $HOME/.cdsinit50 ] ; then
    echo ""
    echo "PDK50 Copy .cdsinit50 to .cdsinit in your home directory"
    /usr/bin/cp $HOME/.cdsinit50 $HOME/.cdsinit
    fi

    if [ -f $HOME/.cdsenv50 ] ; then
    echo "PDK50 Copy .cdsenv50 to .cdsenv in your home directory"
    echo ""
    /usr/bin/cp $HOME/.cdsenv50 $HOME/.cdsenv
    fi
    fi

    #
    #add for project management directory
    #
    if [ "$PDKOS" = "Linux" ]; then
    if [ -f ./.cdsinit50.lnx ] ; then
    if [ ! -f ./.cdsinit ] ; then
    echo "PDK50 Copy .cdsinit50.lnx to .cdsinit in your current
    working directory"
    /bin/cp ./.cdsinit50.lnx ./.cdsinit
    chmod 777 ./.cdsinit
    fi
    fi

    if [ -f ./.cdsenv50.lnx ] ; then
    if [ ! -f ./.cdsenv.lnx ] ; then
    echo "PDK50: Copy .cdsenv50 to .cdsenv in your current working
    directory"
    /bin/cp ./.cdsenv50.lnx ./.cdsenv
    chmod 777 ./.cdsenv
    fi
    fi

    else
    if [ -f ./.cdsinit50 ] ; then
    if [ ! -f ./.cdsinit ] ; then
    echo "PDK50 Copy .cdsinit50 to .cdsinit in your current working
    directory"
    /usr/bin/cp ./.cdsinit50 ./.cdsinit
    chmod 777 ./.cdsinit
    fi
    fi

    if [ -f ./.cdsenv50 ] ; then
    if [ ! -f ./.cdsenv ] ; then
    echo "PDK50: Copy .cdsenv50 to .cdsenv in your current working
    directory"
    /usr/bin/cp ./.cdsenv50 ./.cdsenv
    chmod 777 ./.cdsenv
    fi
    fi
    fi
    #CDS_AUTO_64BIT="ALL"
    #export CDS_AUTO_64BIT

    NOVS="t"
    export NOVS

    ###########################
    # cshrc setup
    ########################
    # Default executable is icfb.
    EXECUTABLE=icfb
    export EXECUTABLE

    # Parse command line args.
    while [ $# -gt 0 ]; do
    case $1 in
    -help | -h)
    usage
    ;;
    -display | -dis | -d)
    # Set the environment display variable so
    # that all sub-clients can be started on
    # the correct display.
    if [ $# -lt 2 ]; then
    echo "${CMDNAME}: $1 option requires a display name"
    exit 2
    fi
    shift
    DISPLAY="$1"
    export DISPLAY
    ;;
    -nodefkeys)
    # Set the environment variable for no default
    # bindkeys to be loaded.
    NODEFKEYS=1
    export NODEFKEYS
    ;;
    -exec | -e)
    # Set a user defined OPUS executable
    if [ $# -lt 2 ]; then
    echo "${CMDNAME}: $1 option requires an executable file
    name"
    exit 2
    fi
    shift
    EXECUTABLE="$1"
    ;;
    -PDKuser)
    # Set PDK User
    if [ $# -lt 2 ]; then
    echo "${CMDNAME}: $1 option requires one argument"
    exit 2
    fi
    if [ $2 = "designer" ] || [ $2 = "da" ] || [ $2 = "PDKmd" ] ;
    then
    echo " WARNING.........."
    echo " PDK developers is no longer using this script.
    This script will invoke "
    echo " /designPackages data. Please invoke the script
    at:"
    echo " /cad/bin/PDK50dev"
    exit
    else
    echo "${CMDNAME}: \"$2\" is not a valid value for \"$1\"."
    echo " Valid values are \"designer\" and \"da\"."
    exit 2
    fi
    shift
    ;;
    -novs)
    NOVS="t"
    export NOVS
    ;;
    -vs)
    NOVS=""
    export NOVS
    ;;
    -avlast)
    AVLAST="yes"
    export AVLAST
    ;;
    -toolcheck)
    PDKTOOLCHECK="t"
    export PDKTOOLCHECK
    ;;
    -release | -rel)
    # Set the area for skill (test or release)
    if [ $PDKUSER = "da" ]; then
    echo "${CMDNAME}: -release option not available"
    exit 2
    fi
    #
    # no /cad/PDK50/.../release number any more *
    #
    RELEASEID="release_$2"
    LIBRARYAREA="release_$2"
    SKILLAREA="release_$2"
    CURT="$2"
    export CURT
    shift
    ;;
    *)
    CDSARGS="$CDSARGS $1"
    ;;
    esac
    shift
    done

    DEV="public"
    export DEV

    if [ "$PDKOS" = "Linux" ]; then
    GENERIC="generic.lnx"
    else
    GENERIC="generic"
    fi

    export GENERIC
    #
    # LIBRARY_RELEASE /cad/PDK50/public/generic_50/release
    #
    if [ ! "$DPPDK" ]; then
    DPPDK="/designPackages"
    export DPPDK
    fi

    if [ ! "$PDKHOME" ]; then
    PDKHOME="$DPPDK/$PDKPROCESS/$CURT/tools/PDK"
    export PDKHOME
    fi

    if [ ! "$LIBRARY_RELEASE" ]; then
    if [ "$PDKOS" = "Linux" ]; then
    LIBRARY_RELEASE="$PDKHOME/public/generic_50.lnx/release"

    PDKSKILLDIR="$PDKHOME/public/generic_50.lnx/release/$GENERIC/skill"
    else
    LIBRARY_RELEASE="$PDKHOME/public/$GENERIC$SUFV/release"

    PDKSKILLDIR="$PDKHOME/public/$GENERIC$SUFV/release/$GENERIC/skill"
    fi
    fi

    if [ ! "$PROCESS_RELEASE" ]; then
    PROCESS_RELEASE="$PDKHOME/public/$PDKPROCESS$SUFV/release"
    fi

    export PDKHOME
    export RELEASEID
    export PDKUSER
    export SKILLAREA
    export PDKSKILLDIR
    export LIBRARYAREA
    export LIBRARY_RELEASE
    export PROCESS_RELEASE

    export EXECUTABLE

    #-----------------------------------
    # neocell required
    # todo NEOHOME need to final define
    #-----------------------------------
    if [ ! "$LM_LICENSE_FILE" ]; then
    LM_LICENSE_FILE=""
    export LM_LICENSE_FILE
    fi

    if [ "$PDKOS" = "Linux" ]; then
    if [ ! "$NEOCELLDIR" ]; then
    ##NEOCELLDIR="/cad/cadence.neocell_500"
    NEOCELLDIR="/cad/cadence.NEOCELL34"
    export NEOCELLDIR
    NEOCELLARCH="$NEOCELLDIR/tools/NeoCell/bin"
    NEOHOME="$NEOCELLDIR/tools/NeoCell/bin"

    LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$NEOCELLDIR/tools/NeoCell/lib.linux"
    export LD_LIBRARY_PATH
    export NEOCELLARCH
    export NEOHOME
    fi
    else
    if [ ! "$NEOCELLDIR" ]; then
    NEOCELLDIR="/cad/cadence.neocell_500"
    export NEOCELLDIR
    NEOCELLARCH="$NEOCELLDIR/tools/NeoCell/bin"
    NEOHOME="$NEOCELLDIR/tools/NeoCell/bin"
    export NEOCELLARCH
    export NEOHOME
    fi
    fi

    if [ "$PDKOS" = "Linux" ]; then
    if [ ! "$CCTHOME" ]; then
    CCTHOME="/cad/cadence.ICC11133/tools.lnx86/iccraft/bin"
    export CCTHOME
    fi
    else
    if [ ! "$CCTHOME" ]; then
    CCTHOME="/cad/cadence.ICC/tools/iccraft/bin"
    export CCTHOME
    fi
    fi

    if [ -d "$CCTHOME" ]; then
    PATH="$CCTHOME:$PATH"
    export PATH
    fi


    PDKNEOCELL="no"
    NEOHOME="$NEOCELLDIR/tools/NeoCell"
    if [ -d "${NEOHOME}/bin" ]; then
    PDKNEOCELL="yes"
    # Yvonne Lin This change valid after 06/30/2004
    # if [ ! "$XPATH" ]; then
    # XPATH="$OPENWINHOME/bin:$OPENWINHOME/demo"
    # PATH=$XPATH:$PATH
    # fi
    # SHELL="/bin/csh"
    # VALIDDIR="$CDS_INST_DIR/tools"
    PATH="${NEOHOME}/bin:$PATH"
    # NEOTEMP="./tmp"

    # export NEOTEMP
    export NEOHOME
    export PATH
    # export XPATH
    # export VALIDDIR
    fi

    export PDKNEOCELL

    #
    # HSIM integration setup
    #
    if [ ! "$NASSDA_HOME" ]; then
    NASSDA_HOME="/cad/hsim"
    fi

    if [ -d "${NASSDA_HOME}/bin" ]; then
    PDKHSIM="yes"
    NASSDA_ARTISTIF="${LIBRARY_RELEASE}/$GENERIC/hsimGUI/current"
    PATH=$NASSDA_HOME/bin:$PATH
    export PATH
    export NASSDA_HOME
    export NASSDA_ARTISTIF
    fi
    export PDKHSIM
    export NASSDA_HOME

    if [ "$PDKOS" = "Linux" ]; then
    if [ ! "$ASSURAHOME" ]; then
    ASSURAHOME="/cad/cadence.assura_500"
    fi
    else
    if [ ! "$ASSURAHOME" ]; then
    ASSURAHOME="/cad/cadence.assura_500"
    fi
    fi

    if [ -d "$PROCESS_RELEASE/$PDKPROCESS/techfiles/ASSURA" ]; then
    if [ -d "${ASSURAHOME}/tools/assura/bin" ]; then
    PATH=$ASSURAHOME/tools/assura/bin:$PATH
    export PATH
    export ASSURAHOME
    fi
    fi


    if [ -d "$PROCESS_RELEASE/$PDKPROCESS/dracula" ]; then
    if [ ! "$DRACULAHOME" ]; then
    DRACULAHOME="/cad/dracula"
    fi
    PATH=$DRACULAHOME/bin:$PATH
    export PATH
    export DRACULAHOME
    fi

    if [ $PDKTOOLCHECK ]; then
    echo "";
    echo "-----------------------------Invocation PDK50 script:
    $PDK50date"
    #----Cadence----------
    echo ""; echo ""; tblquote
    if [ "$OPUSDIR" ]; then
    if [ -d "${OPUSDIR}/tools/dfII/bin" ]; then
    wkdir=`pwd`; cd $OPUSDIR; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "5033"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 Error ** Cadence path
    (\$OPUSDIR):$OPUSDIR is not OPUS 5.0"
    else
    echo "--PDK50 INFO -- Cadence path
    (\$OPUSDIR):$OPUSDIR OK"
    fi; cd $wkdir
    else
    echo "**PDK50 Error ** Cadence path
    (\$OPUSDIR):$OPUSDIR is not a valid OPUS 5.0 directory"
    fi fi
    #----ASSURA-------------
    if [ "$ASSURAHOME" ]; then
    if [ -d "${ASSURAHOME}/tools/dfII/bin" ]; then
    wkdir=`pwd`; cd $ASSURAHOME; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "500"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 Error ** Assura path
    (\$ASSURAHOME):$ASSURAHOME incompatible in OPUS 5.0"
    else
    echo "--PDK50 INFO -- Assura path
    (\$ASSURAHOME):$ASSURAHOME OK"
    fi; cd $wkdir
    else
    echo "**PDK50 Error ** Assura path
    (\$ASSURAHOME):$ASSURAHOME is NOT installed"
    fi fi
    #----aptivia-------------
    if [ "$ACV_ROOT" ]; then
    if [ -d "${ACV_ROOT}/bin" ]; then
    wkdir=`pwd`; cd $ACV_ROOT; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "33"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 Error ** Aptivia path
    (\$ACV_ROOT):$ACV_ROOT incompatible in OPUS 5.0"
    else
    echo "--PDK50 INFO -- Aptivia path
    (\$ACV_ROOT):$ACV_ROOT OK"
    fi; cd $wkdir
    else
    echo "**PDK50 Error ** Aptivia path
    (\$ACV_ROOT):$ACV_ROOT is NOT installed"
    fi fi


    #----Hercules----------
    if [ "$avanti_home_dir" ]; then
    if [ -d "${avanti_home_dir}/bin" ]; then
    wkdir=`pwd`; cd $avanti_home_dir; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "2003"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 WARNING** Hercules path
    (\$avanti_home_dir):$avanti_home_dir is out-of-date"
    else
    echo "--PDK50 INFO -- Hercules path
    (\$avanti_home_dir):$avanti_home_dir OK"
    fi; cd $wkdir
    else
    echo "**PDK50 WARNING** Hercules path
    (\$avanti_home_dir):$avanti_home_dir is NOT installed"
    fi fi
    #----HSIM----------
    if [ "$NASSDA_HOME" ]; then
    if [ -d "${NASSDA_HOME}/bin" ]; then
    wkdir=`pwd`; cd $NASSDA_HOME; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "3.0"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 WARNING** Hsim path
    (\$NASSDA_HOME):$NASSDA_HOME is out-of-date"
    else
    echo "--PDK50 INFO -- Hsim path
    (\$NASSDA_HOME):$NASSDA_HOME OK"
    fi; cd $wkdir
    else
    echo "**PDK50 WARNING** Hsim path
    (\$NASSDA_HOME):$NASSDA_HOME is NOT installed"
    fi fi
    #----HSIM----------
    if [ "$HSPICEDIR" ]; then
    if [ -d "${HSPICEDIR}/bin" ]; then
    wkdir=`pwd`; cd $HSPICEDIR; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "2002"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 WARNING** hspice path
    (\$HSPICEDIR):$HSPICEDIR is out-of-date"
    else
    echo "--PDK50 INFO -- hspice path
    (\$HSPICEDIR):$HSPICEDIR OK"
    fi; cd $wkdir
    else
    echo "**PDK50 WARNING** hspice path
    (\$HSPICEDIR):$HSPICEDIR is NOT installed"
    fi fi

    #----verilog----------
    if [ "$LDV" ]; then
    if [ -d "${LDV}/tools/bin" ]; then
    wkdir=`pwd`; cd $LDV; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "LDV5"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 WARNING** Verilog path (\$LDV):$LDV is
    out-of-date"
    else
    echo "--PDK50 INFO -- Verilog path (\$LDV):$LDV
    OK"
    fi; cd $wkdir
    else
    echo "**PDK50 WARNING** Verilog path (\$LDV):$LDV is
    NOT installed"
    fi fi
    #----NEOCELL----------
    if [ "$NEOCELLDIR" ]; then
    if [ -d "${NEOCELLDIR}/tools/NeoCell/bin" ]; then
    wkdir=`pwd`; cd $NEOCELLDIR; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "335"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 WARNING** neocell path
    (\$NEOCELLDIR):$NEOCELLDIR is out-of-date"
    else
    echo "--PDK50 INFO -- neocell path
    (\$NEOCELLDIR):$NEOCELLDIR OK"
    fi; cd $wkdir
    else
    echo "**PDK50 WARNING** neocell path
    (\$NEOCELLDIR):$NEOCELLDIR is NOT installed"
    fi fi
    #----VCR----------
    if [ "$CCTHOME" ]; then
    if [ -d "$CCTHOME" ]; then
    wkdir=`pwd`; cd $CCTHOME; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "ICC111"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 WARNING** VCR Custom Router path
    (\$CCTHOME):$CCTHOME is out-of-date"
    else
    echo "--PDK50 INFO -- VCR Custom Router path
    (\$CCTHOME):$CCTHOME OK"
    fi; cd $wkdir
    else
    echo "**PDK50 WARNING** VCR Custom Router path
    (\$CCTHOME):$CCTHOME is NOT installed"
    fi fi


    #----STARRCXT----------
    if [ "$STARRCXTHOME" ]; then
    if [ -d "${STARRCXTHOME}/SUN.64_star-rcxt/bin" ]; then
    wkdir=`pwd`; cd $STARRCXTHOME; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "2003"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 WARNING** starrcxt path
    (\$STARRCXTHOME):$STARRCXTHOME is out-of-date"
    else
    echo "--PDK50 INFO -- starrcxt path
    (\$STARRCXTHOME):$STARRCXTHOME OK"
    fi; cd $wkdir
    else
    echo "**PDK50 WARNING** starrcxt path
    (\$STARRCXTHOME):$STARRCXTHOME is NOT installed"
    fi fi
    #----dracula----------
    if [ "$DRACULAHOME" ]; then
    if [ -d "${DRACULAHOME}/bin" ]; then
    wkdir=`pwd`; cd $DRACULAHOME; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "4.8"`
    if [ ! "$_vv" ]; then
    echo "**PDK50 WARNING** Dracula path
    (\$DRACULAHOME):$DRACULAHOME is out-of-date"
    else
    echo "--PDK50 INFO -- Dracula path
    (\$DRACULAHOME):$DRACULAHOME OK"
    fi; cd $wkdir
    else
    echo "**PDK50 WARNING** Dracula path
    (\$DRACULAHOME):$DRACULAHOME is NOT installed"
    fi fi
    tblquote
    exit 3
    fi
    #
    # After setup the PDK wrapper, invoke cadence tool
    #
    if [ ! -f "${OPUSDIR}/tools/dfII/bin/${EXECUTABLE}" ]
    then
    echo "PDK50 error* Cannot find Cadence executable path :"
    echo " ${OPUSDIR}/tools/dfII/bin/${EXECUTABLE}."
    exit 3
    fi

    VSPATH=$OPUSDIR/tools/bin
    export VSPATH

    # CDS_AUTO_CKIN="all"
    export CDS_AUTO_CKIN
    #
    # pm set up
    #
    PDK442PMPATH=""
    if [ -f ./.project ]; then
    PROJECTDIR=`pwd`
    PDK442PMPATH=${PROJECTDIR}/work_${usr}
    if [ "$AVLAST" = "no" ]; then
    if [ -f $PDK442PMPATH/.assuraLastRun ]; then
    mv $PDK442PMPATH/.assuraLastRun
    $PDK442PMPATH/.assuraLastRun.PDKbk
    chmod 775 $PDK442PMPATH/.assuraLastRun.PDKbk
    fi
    if [ -f $PDK442PMPATH/.drc.Last.state ]; then
    mv $PDK442PMPATH/.drc.Last.state
    $PDK442PMPATH/.drc.Last.state.PDKbk
    chmod 775 $PDK442PMPATH/.drc.Last.state.PDKbk
    fi
    if [ -f $PDK442PMPATH/.lvs.Last.state ]; then
    mv $PDK442PMPATH/.lvs.Last.state
    $PDK442PMPATH/.lvs.Last.state.PDKbk
    chmod 775 $PDK442PMPATH/.lvs.Last.state.PDKbk
    fi
    if [ -f $PDK442PMPATH/.rcx.Last.state ]; then
    mv $PDK442PMPATH/.rcx.Last.state
    $PDK442PMPATH/.rcx.Last.state.PDKbk
    chmod 775 $PDK442PMPATH/.rcx.Last.state.PDKbk
    fi

    fi
    else
    if [ "$AVLAST" = "no" ]; then
    if [ -f ./.assuraLastRun ]; then
    mv ./.assuraLastRun ./.assuraLastRun.PDKbk
    chmod 775 ./.assuraLastRun.PDKbk
    fi
    if [ -f ./.drc.Last.state ]; then
    mv ./.drc.Last.state ./.drc.Last.state.PDKbk
    chmod 775 ./.drc.Last.state.PDKbk
    fi
    if [ -f ./.lvs.Last.state ]; then
    mv ./.lvs.Last.state ./.lvs.Last.state.PDKbk
    chmod 775 ./.lvs.Last.state.PDKbk
    fi
    if [ -f ./.rcx.Last.state ]; then
    mv ./.rcx.Last.state ./.rcx.Last.state.PDKbk
    chmod 775 ./.rcx.Last.state.PDKbk
    fi
    fi
    fi

    export PDK442PMPATH

    #
    # /designPackages/$PDKPROCESS/$CURT/tools/PDK/public/$PDKPROCESS$SUFV
    # /designPackages/$PDKPROCESS/$CURT/tools/PDK/public/$GENERIC
    #
    PDK50Install="ok"

    if [ ! -d $PROCESS_RELEASE ]; then
    echo ""
    echo " **PDK50 Install Error** No <$PDKPROCESS> PDK50 Design Data
    in "
    echo " --> $PROCESS_RELEASE"
    PDK50Install="no"
    fi

    if [ ! -d $LIBRARY_RELEASE ]; then
    echo ""
    echo " **PDK50 Install Error** No PDK50 generic release in"
    echo " --> $LIBRARY_RELEASE"
    PDK50Install="no"
    fi

    if [ $CURT = "release" ]; then
    releaseID=`/usr/ucb/ls -al $PDKHOME | awk '{print $10}'`
    else
    releaseID=$CURT
    fi

    if [ $CURT = "current" ]; then
    if [ "$PDKOS" = "Linux" ]; then
    releaseID=`/bin/ls -al $DPPDK/$PDKPROCESS/current | awk '{print
    $11}'`
    else
    releaseID=`/usr/ucb/ls -al $DPPDK/$PDKPROCESS/current | awk
    '{print $10}'`
    fi
    fi

    if [ $PDK50Install != "ok" ]; then
    echo "
    ---------------------------------------------------------------------------"
    echo ""
    echo " - PDK Environment Group"
    echo ""
    exit
    else
    echo ""
    echo " PDK50 : Invoke $PDKPROCESS $releaseID"
    echo " PDK50 Data :$PDKHOME/public"
    fi

    if [ -d "/usr/openwin/bin" ]; then
    PATH="$PATH:/usr/openwin/bin"
    export PATH
    fi

    if [ -d "/usr/bin" ]; then
    PATH="$PATH:/usr/bin"
    export PATH
    fi

    if [ -d "/usr/ucb" ]; then
    PATH="$PATH:/usr/ucb"
    export PATH
    fi

    PATH=$OPUSDIR/tools/dfII/bin:$OPUSDIR/tools/bin:$PATH

    if [ -d "${HSPICEDIR}/bin" ]; then
    PATH="$HSPICEDIR/bin:$PATH"
    export PATH
    fi


    if [ ! "$CLS_CDSD_COMPATIBILITY_LOCKING" ] ; then
    CLS_CDSD_COMPATIBILITY_LOCKING="NO"
    export CLS_CDSD_COMPATIBILITY_LOCKING
    fi

    echo ""
    echo ""
    echo " You are running......OS type: $PDKOS"
    echo ""
    #
    # Add the CDS.log file for each user at ~projectDir/work_<userName>
    # requested by Fort Collin
    if [ "$YDEBUG" ]; then
    echo ""
    echo ".....LIBRARY_RELEASE......$LIBRARY_RELEASE"
    echo ".....PROCESS .............$PROCESS_RELEASE"
    echo ".....OPUS.........$OPUSDIR"
    echo ".....PDKSKILLDIR..$PDKSKILLDIR"
    echo ".....PDKOS........$PDKOS"
    echo ".....GENERIC......$GENERIC"
    fi
    if [ "$PDKSITE" = "fc" ] ; then
    if [ ! "$CDS_LOG_VERSION" ] ; then
    CDS_LOG_VERSION=sequential
    export CDS_LOG_VERSION
    fi

    if [ ! "$CLS_CDSD_COMPATIBILITY_LOCKING" ] ; then
    CLS_CDSD_COMPATIBILITY_LOCKING="NO"
    export CLS_CDSD_COMPATIBILITY_LOCKING
    fi

    if [ "$PDK442PMPATH" != "" ] ; then
    if [ ! "$CDS_LOG_PATH" ] ; then
    CDS_LOG_PATH=$PDK442PMPATH
    export CDS_LOG_PATH
    fi
    else
    if [ ! "$CDS_LOG_PATH" ] ; then
    CDS_LOG_PATH="."
    export CDS_LOG_PATH
    fi
    fi
    FCLOGFILE="CDS.log.$3`date '+20%y%m%d%H%M%S'`"
    export FCLOGFILE
    $EXECUTABLE $CDSARGS -log "${CDS_LOG_PATH}/${FCLOGFILE}"
    else
    $EXECUTABLE $CDSARGS
    fi

    exit 0
     
    comp.cad.cadence, Apr 1, 2005
    #7
  8. Hi Andy,


    This is strange... so in the script you posted, you have unset XKEYSYMDB before
    calling the exe and it's still set?:

    unset XKEYSYMDB # <---------------*******

    if [ "$PDKSITE" = "fc" ] ; then
    if [ ! "$CDS_LOG_VERSION" ] ; then
    CDS_LOG_VERSION=sequential
    export CDS_LOG_VERSION
    fi

    if [ ! "$CLS_CDSD_COMPATIBILITY_LOCKING" ] ; then
    CLS_CDSD_COMPATIBILITY_LOCKING="NO"
    export CLS_CDSD_COMPATIBILITY_LOCKING
    fi

    if [ "$PDK442PMPATH" != "" ] ; then
    if [ ! "$CDS_LOG_PATH" ] ; then
    CDS_LOG_PATH=$PDK442PMPATH
    export CDS_LOG_PATH
    fi
    else
    if [ ! "$CDS_LOG_PATH" ] ; then
    CDS_LOG_PATH="."
    export CDS_LOG_PATH
    fi
    fi
    FCLOGFILE="CDS.log.$3`date '+20%y%m%d%H%M%S'`"
    export FCLOGFILE
    $EXECUTABLE $CDSARGS -log "${CDS_LOG_PATH}/${FCLOGFILE}"
    else
    $EXECUTABLE $CDSARGS
    fi


    If you start a new shell, is XKEYSYMDB set by default? If it is, you probably
    need to figure out where this is being set. If you are on Linux (I couldn't
    see any mention of the OS you're using, but this issue usually crops up on
    Linux), then try doing 'Ctrl-Alt-F1' to go to a virtual terminal and login.
    See if XKEYSYMDB is set after you login. If so, you probably need to trace
    what you are sourcing in your ~/.tcshrc (assuming tcsh is your default shell
    and you're not starting it manually after the default shell is invoked).
    (Press 'Ctrl-Alt-F7' to get back to your X session!). Do any other users have
    XKEYXYMDB set when they login, or is it set when they start a Cadence product?

    The manpage for tcsh indicates a number of files which you may want to look into:

    ------------------------
    FILES
    /etc/csh.cshrc Read first by every shell. ConvexOS, Stellix and Intel
    use /etc/cshrc and NeXTs use /etc/cshrc.std. A/UX,
    AMIX, Cray and IRIX have no equivalent in csh(1), but
    read this file in tcsh anyway. Solaris 2.x does not
    have it either, but tcsh reads /etc/.cshrc. (+)
    /etc/csh.login Read by login shells after /etc/csh.cshrc. ConvexOS,
    Stellix and Intel use /etc/login, NeXTs use
    /etc/login.std, Solaris 2.x uses /etc/.login and A/UX,
    AMIX, Cray and IRIX use /etc/cshrc.
    ~/.tcshrc (+) Read by every shell after /etc/csh.cshrc or its equiva-
    lent.
    ~/.cshrc Read by every shell, if ~/.tcshrc doesn't exist, after
    /etc/csh.cshrc or its equivalent. This manual uses
    `~/.tcshrc' to mean `~/.tcshrc or, if ~/.tcshrc is not
    found, ~/.cshrc'.
    ~/.history Read by login shells after ~/.tcshrc if savehist is
    set, but see also histfile.
    ~/.login Read by login shells after ~/.tcshrc or ~/.history.
    The shell may be compiled to read ~/.login before
    instead of after ~/.tcshrc and ~/.history; see the ver-
    sion shell variable.
    ~/.cshdirs (+) Read by login shells after ~/.login if savedirs is set,
    but see also dirsfile.
    /etc/csh.logout Read by login shells at logout. ConvexOS, Stellix and
    Intel use /etc/logout and NeXTs use /etc/logout.std.
    A/UX, AMIX, Cray and IRIX have no equivalent in csh(1),
    but read this file in tcsh anyway. Solaris 2.x does
    not have it either, but tcsh reads /etc/.logout. (+)
    ~/.logout Read by login shells at logout after /etc/csh.logout or
    its equivalent.
    ------------------------

    Have you asked the support staff if they know where it's being set? Are you
    sourcing any Synopsis setup scripts anywhere in your tcsh config files?

    Failing that, you may want to just try a grep :)

    Something like this may do it:

    grep XKEYSYMDB .[a-zA-Z0-9]*
    grep XKEYSYMDB /etc/*

    Of course, if you're sourcing something which sets this, the greps above won't
    find it - you'll have to manually inspect each file your shell initialization
    sources to see if it is setting XKEYSYMDB (or loading another file which does).

    Regards,
    Graeme.
     
    Graeme Bunyan, Apr 1, 2005
    #8
  9. That's probably because it should be "unsetenv XKEYSYMDB" not
    "unset XKEYSYMDB". unset is the csh command to unset a shell variable.
    unsetenv is the csh command to unset an environment variable.

    Andrew.
     
    Andrew Beckett, Apr 4, 2005
    #9
  10. Just to illustrate this:

    andrewb_15> setenv FRED hello
    andrewb_16> unset FRED
    andrewb_17> echo $FRED
    hello
    andrewb_18> unsetenv FRED
    andrewb_19> echo $FRED
    FRED: Undefined variable
     
    Andrew Beckett, Apr 4, 2005
    #10
  11. Andrew, the script looks like beeing written in sh (use of export,
    syntax of if, ...) , and for sh unset remove the environment variable.

    Yours,
     
    Jean-Marc Bourguet, Apr 4, 2005
    #11
  12. Jean-Marc,

    You're quite right. I don't think I've had enough coffee this morning
    (actually I've not had _any_ coffee) and so I missed the fact that it was
    a Bourne shell script.

    Silly me.

    Andrew.
     
    Andrew Beckett, Apr 4, 2005
    #12
  13. Andrew, Bunyan

    I tried according to what you said. But still out of luck there.
    As I told you before, I found that the var XKEYSYMDB was set to the
    path below

    "/syn/hercules/lib/X11/XKeysymDB"

    which might mess up the Cadence key mapping.

    However I found that actually there's no such a directory "/lib" under
    "/syn/hercules" in our Unix system, which might be a one expected by
    the PDK. Since the PDK requests that environment var "avanti_home_dir"
    be set to the path of installation directory of avanti Hercules (which
    is /syn/hercules in our case). I took a try to change it to a fake path
    like "/syn1/hercules". This did make a fool of Cadence/PDK. Right now
    we are free of the typing problem in the Cadence libManager and all
    warnings from that. When I check the setting of XKEYSYMDB in CIW
    window, Cadence returns me

    XKEYSYMDB="/usr/X11R6/lib/X11/XKeysymDB", which should be a correct
    response.

    But still a little problem there, when I open "create->new library",
    the menu appears without "attach to a library" option. So I will talk
    to our administrator to do further test on that.
    Thanks a lot!

    -Andy
     
    comp.cad.cadence, Apr 4, 2005
    #13
  14. Dude, that's my *last* name! ;)
    If I understand this correctly, setting "avanti_home_dir" to a non-existent
    path causes the XKEYSYMDB to remain at the /usr/X11R6/... value above? Does
    your setup (eg. .cshrc or any other files you source) use avanti_home_dir
    anywhere, in particular, does it source any files from that directory? I'm
    guessing that, somewhere in /syn/hercules is the file which is setting
    XKEYSYMDB - try a recursive grep and see what you come up with.

    Regards,
    Graeme.
     
    Graeme Bunyan, Apr 5, 2005
    #14
  15. It looks like his script is actually a Bourne shell script, in which
    case unset is correct.

    (It's generally preferred to write shell scripts in Bourne; I've
    encountered some radically broken implementations of csh on fairly
    common platforms...)
     
    David Cuthbert, Apr 5, 2005
    #15
  16. comp.cad.cadence

    Guest Guest

    Also, Bourne sh tends to be have less overhead than csh.

    -Pete Zakel
    ()

    "Time is nature's way of making sure that everything doesn't happen at once."
     
    Guest, Apr 5, 2005
    #16
  17. Oh, Graeme

    I'm terribly sorry for that. I should have used "Mr. Bunyan" in my last
    post.

    As you predicted, I did find that there exist the shell files
    "hercules_setup.csh" and "hercules_setup.sh" under the directory
    "/syn/hercules". Also there's setup about the environment var of
    "XKEYSYMDB" in these files. But I am still confused here.

    I pick up all of setup involved with "avanti_home_dir" from the script
    and paste them as below.

    if [ ! "$avanti_home_dir" ]; then
    avanti_home_dir="/cad/avanti/hercules"
    export avanti_home_dir
    fi

    if [ -d "${avanti_home_dir}/bin" ]; then
    PATH="$avanti_home_dir/bin:$PATH"
    export PATH
    fi

    if [ ! "$HERCULES_HOME_DIR" ]; then
    HERCULES_HOME_DIR=$avanti_home_dir
    export HERCULES_HOME_DIR
    fi

    if [ -d "${HERCULES_HOME_DIR}/bin" ]; then
    PATH="$PATH:$avanti_home_dir/bin"
    export PATH
    fi
    .......
    ACEAVANTI="yes"
    if [ ! -d "${avanti_home_dir}" ]; then
    ACEAVANTI="no"
    fi
    export ACEAVANTI
    .......
    if [ "$avanti_home_dir" ]; then
    if [ -d "${avanti_home_dir}/bin" ]; then
    wkdir=`pwd`; cd $avanti_home_dir; tmpdir=`pwd`
    _vv=`echo $tmpdir | grep "2003"`
    if [ ! "$_vv" ]; then
    echo "**ACE50 WARNING** Hercules path
    (\$avanti_home_dir):$avanti_home_dir is out-of-date"
    else
    echo "--ACE50 INFO -- Hercules path
    (\$avanti_home_dir):$avanti_home_dir OK"
    fi; cd $wkdir
    else
    echo "**ACE50 WARNING** Hercules path
    (\$avanti_home_dir):$avanti_home_dir is NOT installed"
    fi fi

    Actually I didn't see the script source the hercules' setup anywhere. I
    guess that the script never touched the hercules' setup files at all.
    In our Unix system, the file "XKeysymDB" is located under
    "/syn/hercules/lib-u/X11" whereas the script actually set the var
    "XKEYSYMDB" to "/syn/hercules/lib/X11" after manually setting
    "avanti_home_dir" to "/syn/hercules". It means somewhere there exists
    some setting like this:

    XKEYSYMDB=$avanti_home_dir/lib/X11/XKeysymDB ( However we dont have the
    directory "/lib" there.)

    The script essentially setup some environment vars for Cadence and then
    invoke icfb. I just wonder why it also do some business with Hercules
    in the same script. Does it inform that Syn and Cad are co-operating
    with each other?
    Thanks!

    -Andy
     
    comp.cad.cadence, Apr 6, 2005
    #17
  18. comp.cad.cadence

    G Vandevalk Guest

    Have you tried "trace"ing the binary and flagging every OS file system
    access.
    It is tedious, but you can track down where it gets set!

    -- G
     
    G Vandevalk, Apr 6, 2005
    #18
  19. Hi, G

    I really like to try what you said. But I don't know much about how to
    do in Unix world. Could you give me further hints on that? Thanks a
    lot!

    -Andy
     
    comp.cad.cadence, Apr 6, 2005
    #19
  20. Unfortunately, environment variable read/writes do not involve system
    calls (the entire environment is held in userspace). strace, truss,
    etc., won't see the write.
     
    David Cuthbert, Apr 6, 2005
    #20
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.