How to unset XKEYSYMDB?

C

comp.cad.cadence

Guest
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 wrote:
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.
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.
 
In article <1111120638.451161.82290@l41g2000cwc.googlegroups.com> "comp.cad.cadence" <wudhead@yahoo.com> writes:

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?
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
(phz@seeheader.nospam)

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

- Mae West
 
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
 
In article <1111435930.129595.97650@l41g2000cwc.googlegroups.com> "comp.cad.cadence" <wudhead@yahoo.com> writes:
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?
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
(phz@seeheader.nospam)

"God requireth not a uniformity of religion."

-Roger Williams
 
comp.cad.cadence wrote:

/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!
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.
 
[Repost - I posted this a few hours ago but it hasn't yet appeared for some
reason. Posting it again in the hope that the first one vanished into a black
hole. Unfortunately I know it's waiting in said black hole for this mail, at
which point it will appear and I'll look like a fool (an April fool, as it
were) for posting the same thing twice...]

comp.cad.cadence wrote:

/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!
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 +---_-----------+ email: graemeb@cadence.com
Senior Member of Technical Staff | c a d e n c e | Research & Development
Cadence Design Systems +---------------+ Phone: +44(0)1506 596123
The Alba Campus, Livingston, Scotland EH54 7HH Fax: +44(0)1506 596167
 
On Fri, 01 Apr 2005 11:00:18 +0100, Graeme Bunyan
<graemebdontlikespam@cadence.com> wrote:

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 # <---------------*******
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.
 
On Mon, 04 Apr 2005 09:03:49 +0100, Andrew Beckett
<andrewb@DcEaLdEeTnEcTe.HcIoSm> wrote:

On Fri, 01 Apr 2005 11:00:18 +0100, Graeme Bunyan
graemebdontlikespam@cadence.com> wrote:

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 # <---------------*******


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.
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 <andrewb@DcEaLdEeTnEcTe.HcIoSm> writes:

On Fri, 01 Apr 2005 11:00:18 +0100, Graeme Bunyan
graemebdontlikespam@cadence.com> wrote:

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 # <---------------*******


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, 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
 
On 04 Apr 2005 10:14:18 +0200, Jean-Marc Bourguet <jm@bourguet.org> wrote:

Andrew Beckett <andrewb@DcEaLdEeTnEcTe.HcIoSm> writes:

On Fri, 01 Apr 2005 11:00:18 +0100, Graeme Bunyan
graemebdontlikespam@cadence.com> wrote:

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 # <---------------*******


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, 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,

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.
 
comp.cad.cadence wrote:
Andrew, Bunyan
Dude, that's my *last* name! ;)

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.
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.
 
Andrew Beckett wrote:
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.
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 dacut at cadence dot com
Cadence Design Systems +1 (412) 599-1820
 
In article <425301c2$1@news.cadence.com> David Cuthbert <"dacut at cadence dot com"> writes:

(It's generally preferred to write shell scripts in Bourne; I've
encountered some radically broken implementations of csh on fairly
common platforms...)
Also, Bourne sh tends to be have less overhead than csh.

-Pete Zakel
(phz@seeheader.nospam)

"Time is nature's way of making sure that everything doesn't happen at once."
 
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

"comp.cad.cadence" <wudhead@yahoo.com> wrote in message
news:1112761914.542036.247350@g14g2000cwa.googlegroups.com...
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
 
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.
Mmmh... it could be in one of the .cdsinit files.
I would suggest you do the following tests to find out.

1) in your script do echo $XKEYSYMDB right after you unset it, and once again right before calling
the cadence executable.
If it's not set then it's being set during initialization of cadence.
If it is set then, that's weird. You could also try
set XKEYSYMBD=
export XKEYSYMDB

2) If 1) succeeds, then empty your .cdsinit and iteratively add the commands by small blocks to find
out which one is setting this variable.
If you have any third-party skill scripts executed to set-up integration of a tool inside the
cadence environment, then that's probably the place to look for (most probably, hercules as i can
see from the value you provided...)

cheers,

stéphane
 
G Vandevalk wrote:
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!
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 dacut at cadence dot com
Cadence Design Systems +1 (412) 599-1820
 
(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
 
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="27000@xxxxx.com"
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 " (default location: /designPackages/<.process>/current)"
&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="27000@xxx.com"
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
 
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
 

Welcome to EDABoard.com

Sponsor

Back
Top