Archive for the ‘Cadence’ Category

I had a problem where one user could not print in BoardStation. The problem was that nothing happened when they went to print. It turned out to be a problem for me as well. I had one other user on a different computer that didn’t have this problem. So I made sure that all the same packages were installed on both computers and that the same settings were used. It didn’t matter, the ezprint window would not pop up in any BoardStation program.

After a day of messing around with things, I finally found the problem was in the setting of LD_LIBRARY_PATH. If I included the directory containing the library that specctra needed (/net/sw/cadence/spb/spb16.5/tools.lnx86/lib) then the print file wouldn’t appear. If I took that library out, the print window popped up without a problem.

Unfortunately, without that library, the specctra program would not run. And both of our engineers still use specctra for routing. So I wanted to get both programs working correctly at the same time.

The solution was to add /lib and /usr/lib to the beginning of the LD_LIBRARY_PATH environment variable. So now my LD_LIBRARY_PATH variable looks like this:

$ printenv LD_LIBRARY_PATH
/lib:/usr/lib:/net/sw/cadence/spb/spb16.5/tools.lnx86/lib:/usr/lib64/root:/net/sw/wxWidgets-2.8.12/x64/lib

and both programs work correctly.

We had just upgraded to the latest version of the IBM_PDK, V1.7.0.0. This version has QRC files in IBM_PDK/cmrf8sf/V1.7.0.0DM/Assura.


$ pwd
/net/sw/mosis/IBM_PDK/cmrf8sf/V1.7.0.0DM/Assura
$ ll
total 16
drwxr-xr-x 2 maryh mosis 4096 Jun  9 07:57 doc
drwxr-xr-x 2 maryh mosis 4096 May  5 12:07 DRC
drwxr-xr-x 2 maryh mosis 4096 May  5 12:07 LVS
drwxr-xr-x 3 maryh mosis 4096 Jun  7 07:23 QRC
$ ll QRC
total 4
drwxr-xr-x 2 maryh edg 4096 Jun  7 07:25 32
$ ll QRC/32
total 211564
lrwxrwxrwx 1 maryh edg       18 Jun  9 07:57 bind.cdl -> ../../LVS/bind.cdl
lrwxrwxrwx 1 maryh edg       19 Jun  9 07:57 bind.rul -> ../../LVS/bind.vldb
lrwxrwxrwx 1 maryh edg       19 Jun  9 07:57 bind.vldb -> ../../LVS/bind.vldb
-r--r--r-- 1 maryh edg 17940790 Jun  7 07:23 cap_coeff.dat
-r--r--r-- 1 maryh edg     8377 Jun  7 07:23 capgen_cmd.cmd
-r--r--r-- 1 maryh edg 86090796 Jun  7 07:23 caps2d
-r--r--r-- 1 maryh edg 15406838 Jun  7 07:24 capsw3d
lrwxrwxrwx 1 maryh edg       21 Jun  9 07:57 compare.cdl -> ../../LVS/compare.cdl
lrwxrwxrwx 1 maryh edg       22 Jun  9 07:57 compare.rul -> ../../LVS/compare.vldb
lrwxrwxrwx 1 maryh edg       22 Jun  9 07:57 compare.vldb -> ../../LVS/compare.vldb
lrwxrwxrwx 1 maryh edg       24 Jun  9 07:57 deviceInfo.rul -> ../../LVS/deviceInfo.rul
lrwxrwxrwx 1 maryh edg       17 Jun  9 07:57 drc.rul -> ../../DRC/drc.rul
lrwxrwxrwx 1 maryh edg       17 Jun  9 07:57 esd.rul -> ../../DRC/esd.rul
lrwxrwxrwx 1 maryh edg       23 Jun  9 07:57 extract.rul -> ../../LVS/extract32.rul
lrwxrwxrwx 1 maryh edg       19 Jun  9 07:57 float.rul -> ../../DRC/float.rul
lrwxrwxrwx 1 maryh edg       20 Jun  9 07:57 global.rul -> ../../DRC/global.rul
lrwxrwxrwx 1 maryh edg       19 Jun  9 07:57 local.rul -> ../../DRC/local.rul
-r--r--r-- 1 maryh edg   101051 Jun  7 07:24 lvsfile
lrwxrwxrwx 1 maryh edg       24 Jun  9 07:57 LVSinclude.rsf -> ../../LVS/LVSinclude.rsf
-r--r--r-- 1 maryh edg     2193 Jun  7 07:24 p2lvsfile
-r--r--r-- 1 maryh edg     2202 Jun  7 07:24 _p2lvsfile
-r--r--r-- 1 maryh edg  3180640 Jun  7 07:24 paxfile_coeff
-r--r--r-- 1 maryh edg     6238 Jun  7 07:24 _procfile
-r--r--r-- 1 maryh edg 45125149 Jun  7 07:24 qrcTechFile
lrwxrwxrwx 1 maryh edg       12 Jun  9 07:57 RCXdspfINIT -> RCXspiceINIT
-r--r--r-- 1 maryh edg 48317492 Jun  7 07:24 rcxfs.dat
-r--r--r-- 1 maryh edg   180614 Jun  7 07:24 RCXspiceINIT

Unfortunately, whenever we ran Assura -> QRC, we would get an error like this:

WARNING (PAXSXTN-221210): cap_coeff.dat version 0 is out-of-date; need to be 5.

ERROR (PAXSXTN-221211): Please re-generate cap_coeff.dat using latest capgen.

ERROR (LBRCXM-620): Bad return status from RCX run (./rcx 0). 0xff00


INFO (LBRCXM-709): *****  QRC terminated abnormally  *****

The solution was (as root) to go to the QRC/32 directory and run capgen_cmd.cmd.

[root@server 32]$ ./capgen_cmd.cmd 


     Techgen(tm) Tech file Generator.


INFO (LBMISC-215205): 
*** Cadence Extraction QRC Techgen -trans VERSION 7.1 Linux 32 bit - (Wed Jul 23 07:38:37 PDT 2008)  ***



INFO (CAPGEN-41199): 


Techgen -trans results will be written to directory: /nfs/net/sw/mosis/IBM_PDK/cmrf8sf/V1.7.0.0DM/Assura/QRC/32


*WARNING* at "Techgen -trans": In the process file '/nfs/net/sw/mosis/IBM_PDK/cmrf8sf/V1.7.0.0DM/Assura/QRC/32/procfile', th
ick dielectric thickness ('3.845000') is detected between metal layers 'L1' and 'MA'
*WARNING* at "Techgen -trans": It is 30 times the thinest dielectric thickness '0.033000' between metal layers 'LY' and 'QY'
*WARNING* at "Techgen -trans": The process file contains '5' RDL layers: 'K3', 'QY', ...
*WARNING* at "Techgen -trans": An RDL layer is defined as a layer whose min_width is more than 15 times the smallest min_wid
th ('0.120000' in this procfile)
WARNING (CAPGEN-41244): process file '/nfs/net/sw/mosis/IBM_PDK/cmrf8sf/V1.7.0.0DM/Assura/QRC/32/procfile' was modified afte
r

*WARNING* at "Techgen -trans": simulation files /nfs/net/sw/mosis/IBM_PDK/cmrf8sf/V1.7.0.0DM/Assura/QRC/32/caps2d and /nfs/n
et/sw/mosis/IBM_PDK/cmrf8sf/V1.7.0.0DM/Assura/QRC/32/capsw3d were created


.....................   Metal Variation Error Bound Report:   ....................
                             (due to s_max truncation)


 Definition:

      For a given simulation layer,

               C_lateral(s = s_max, w = w_min, top = nearest, bottom = nearest)
      error = -----------------------------------------------------------------
               C_lateral(s = s_min, w = w_min, top = nearest, bottom = nearest)

 Result:

  metal_variations
   *layer  layer_name   w_min    w_max    s_min    s_max    error(%)
    layer         PC    0.120    1.800    0.200    2.000    0.144
    layer         M1    0.160    2.400    0.160    1.600    0.800
    layer         M2    0.200    3.000    0.200    2.000    0.261
    layer         M3    0.200    3.000    0.200    2.000    0.024
    layer         K3    5.000   23.852    5.500    7.951    0.000
    layer         MQ    0.400    6.000    0.400    4.000    0.083
    layer         MG    0.400    6.000    0.400    4.000    0.840
    layer         LY    0.600    9.000    0.600    6.000    0.008
    layer         QY    6.000   63.155    1.000   10.000    0.000
    layer         HY    4.000   60.000    2.000   20.000    0.000
    layer         E1    1.500   22.500    2.000   20.000    0.013
    layer         L1    5.000   75.000    5.500   41.692    0.000
    layer         MA    4.000   60.000    5.000   50.000    1.147
  endmetal_variations

 Note:
        NA indicates that the data is not meaningful.
..................................................................................
INFO (CAPGEN-41338): 

Techgen -trans Date: Wed Jun 30 15:21:26 2010

This appears to have fixed things.

I just installed a new RHEL5 (x64) system and got an error when trying to run virtuoso.

[ ~/oa]$ virtuoso
/net/sw/cad.rh/ic/ic61/tools/dfII/bin/32bit/virtuoso: error while loading shared libraries: libelf.so.1: cannot open shared object file: No such file o
r directory

Weird that it was complaining about a 32bit version of something when this is a 64bit os.

It was fixed because I didn’t have libelf installed. I also found that I needed to install libXp. Here’s the log of what I did.

[ ~ ]$ yum install elfutils-libelf
Loaded plugins: rhnplugin, security
Setting up Install Process
Package elfutils-libelf-0.137-3.el5.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package elfutils-libelf.i386 0:0.137-3.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================
 Package                                      Arch                              Version                                   Repository                                     
    Size
=========================================================================================================================================================================
Installing:
 elfutils-libelf                              i386                              0.137-3.el5                               rhel-x86_64-client-5                           
    58 k

Transaction Summary
=========================================================================================================================================================================
Install      1 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 58 k
Is this ok [y/N]: y
Downloading Packages:
elfutils-libelf-0.137-3.el5.i386.rpm                                                                                                                       |  58 kB     0
0:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : elfutils-libelf                                                                                                                                       
     1/1 

Installed:
  elfutils-libelf.i386 0:0.137-3.el5               

Complete!
[ ~ ]$ virtuoso
/net/sw/cad.rh/ic/ic61/tools/dfII/bin/32bit/virtuoso: error while loading shared libraries: libXp.so.6: cannot open shared object file: No such file or directory

[ ~ ]$ yum install libXp
Loaded plugins: rhnplugin, security
Setting up Install Process
Package libXp-1.0.0-8.1.el5.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package libXp.i386 0:1.0.0-8.1.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================
 Package                              Arch                                Version                                       Repository                                       
    Size
=========================================================================================================================================================================
Installing:
 libXp                                i386                                1.0.0-8.1.el5                                 rhel-x86_64-client-5                             
    22 k

Transaction Summary
=========================================================================================================================================================================
Install      1 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 22 k
Is this ok [y/N]: y
Downloading Packages:
libXp-1.0.0-8.1.el5.i386.rpm                                                                                                                               |  22 kB     0
0:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : libXp                                                                                                                                                 
     1/1 

Installed:
  libXp.i386 0:1.0.0-8.1.el5                                                                                                                                             
         

Complete!
[ ~ ]$ virtuoso

Things started just fine.

Here is how to set up the HP DesignJet 800 PS in linux. We’re using RHEL4 and 5, but I think this would work on just about any linux distribution.

  1. Download HP_Designjet_800_PS3.ppd.gz
  2. Copy the file to /usr/share/cups/model
  3. Delete the old plotter
    lpadmin -x plotter
    
  4. Create the new printer
    lpadmin -p plotter -E -v socket://edg3:9100 -P /usr/share/cups/model/HP_Designjet_800_PS3.ppd.gz
    
  5. Check that have the proper options
    [me@computer ~]$ lpoptions -p plotter -l
    HPPantone/Automatic PANTONE(R) Calibration: False *True
    HPBlackBrightness/Black Lightness: levelm25 levelm20 levelm15 levelm10 levelm5 *leveleven levelp5 levelp10 levelp15 levelp20 levelp25
    HPColorMan/Color Management: *Native Emulation
    HPCyanBrightness/Cyan Lightness: levelm25 levelm20 levelm15 levelm10 levelm5 *leveleven levelp5 levelp10 levelp15 levelp20 levelp25
    HPCMYKEmulation/HP CMYK Emulation: *None SWOP JapanOffset EuroOffset DIC
    HPRGBEmulation/HP RGB Emulation: *None sRGB AdobeRGB AppleRGB ColorMatchRGB
    HPMagentaBrightness/Magenta Lightness: levelm25 levelm20 levelm15 levelm10 levelm5 *leveleven levelp5 levelp10 levelp15 levelp20 levelp25
    HPMaxDetail/Maximum Detail: True *False
    MirrorPrint/Mirror Print: True *False
    HPCadDrawings/Optimized for CAD: True *False
    HPColorAsGray/Print Color as Gray: Yes *No
    HPIntent/Rendering Intent: *Perceptual Colorimetric Saturation
    HPTransverse/Rotate: True *False
    HPAutoScaling/Scale to: *Off Letter Tabloid AnsiC AnsiD AnsiE ARCHA ARCHB ARCHC ARCHD ARCHE A4 A3 A2 A1 A0 B4 B3 B2 B1 P24x48 P24x60 P36x60 P36x72 P42x60 P42x72 P42x84
    HPYellowBrightness/Yellow Lightness: levelm25 levelm20 levelm15 levelm10 levelm5 *leveleven levelp5 levelp10 levelp15 levelp20 levelp25
    PageSize/Media Size: Letter Tabloid AnsiC AnsiD AnsiE ARCHA ARCHB ARCHC ARCHD ARCHE A4 A3 A2 A1 A0 B4 B3 B2 B1 P24x48 P24x60 P36x60 P36x72 P42x60 P42x72 P42x84 Custom
    PageRegion/PageRegion: Letter Tabloid AnsiC AnsiD AnsiE ARCHA ARCHB ARCHC ARCHD ARCHE A4 A3 A2 A1 A0 B4 B3 B2 B1 P24x48 P24x60 P36x60 P36x72 P42x60 P42x72 P42x84
    OutputMode/Print Quality: Fast *Normal Best
    HPPageANSI/ANSI (A,B,...): *True False
    HPPageARCH/Architectural: *True False
    HPPageDIN/DIN (C4,C3,...): *True False
    HPPageISO/ISO (A4,A3,...): *True False
    HPPageJIS/JIS (B4,B3,...): *True False
    

Since Mentor Graphics sets everything in its config and fis files, there isn’t anything to change there. For Cadence, our site file is in /net/sw/cad.rh/ic/ic5141/tools/plot/.cdsplotinit. For C- and D-sized plots, the entries are:

Plotter_C|Hewlett-Packard DesignJet 5000PS (Postscript): \
	:manufacturer=Hewlett-Packard: \
	:type=postscript2: \
	:spool="lp -dplotter -oPageSize=AnsiC": \
	:query=lpstat -oplotter: \
	:remove=cancel $1 plotter: \
	:resolution#1200: \
	:maximumPages#30: \
	:paperSize="C portrait" 19800 25800 300 300: \
	:paperSize="C landscape" 25800 19800 300 300:

Plotter_D|Hewlett-Packard DesignJet 5000PS (Postscript): \
	:manufacturer=Hewlett-Packard: \
	:type=postscript2: \
	:spool="lp -dplotter -oPageSize=AnsiD": \
	:query=lpstat -oplotter: \
	:remove=cancel $1 plotter: \
	:resolution#1200: \
	:maximumPages#30: \
	:paperSize="D portrait" 25800 40200 300 300: \
	:paperSize="D landscape" 40200 25800 300 300:

We had been having some problems simulating a very simple circuit on our linux and sun workstations. The problem was that we were getting errors on the sun, but not on the linux workstation. It was found that the linux systems had the MMSIM package from Cadence installed, while the suns had not. So, the suns were using the version of spectre that came with the IC package, while the linux workstations were using the version from MMSIM. The solution was to install the MMSIM package on the suns and to make sure that the path to the MMSIM files came before the path to the IC files in /etc/.cshrc.

# Make sure MMSIM comes before ICHOME in PATH, so we get correct spectre program
setenv MMSIMHOME /net/sw/sun/cad/mmsim
setenv PATH ${PATH}:${MMSIMHOME}/tools/bin:${MMSIMHOME}/tools/dfII/etc

setenv ICHOME /net/sw/sun/cad/ic/ic5141USR5
setenv PATH ${PATH}:${ICHOME}/tools/dfII/bin:${ICHOME}/tools/bin:${ICHOME}/tools/plot/bin

setenv IUSHOME /net/sw/sun/cad/ius
setenv PATH ${PATH}:${IUSHOME}/tools/bin

In order to have a Calibre menu choice appear in Virtuoso Layout, normally adding the following line is all that’s needed:

;; Integrate Calibre menu
load( strcat( getShellEnvVar("CALIBRE_HOME") "/shared/pkgs/icv/tools/queryskl/calibre.skl" ))

We use CALIBRE_HOME for our calibre home. If you use MGC_HOME, change the above line to MGC_HOME and you’re all set.

Since we use CALIBRE_HOME, we also needed to change some other files to use CALIBRE_HOME instead of MGC_HOME. A search and replace was all that was necessary to achieve this. The files that needed to change were:

in CALIBRE_HOME,
shared/pkgs/icv/tools/queryskl/calibre.skl
shared/pkgs/icv/tools/queryskl/mgc_calibre_menu.skl
shared/pkgs/icv/tools/queryskl/mgc_rve.skl

In the past, we’ve gotten errors from Cadence software about an incorrectly built binary, but the program would still run ok. The annoying errors were lost by editing /etc/csh.cshrc and adding the line:

setenv LD_ASSUME_KERNEL 2.4.1 # Gets rid of the "Incorrectly built binary" error

However, after the last software upgrade, any simple unix command was giving errors about libc.so.6: cannot open shared object file. These errors weren’t just annoying, they wouldn’t allow the simple programs, like hostname, who, etc. to run. So, the LD_ASSUME_KERNEL variable had to be unset.

On our server, I then got this error:

[maryh@server maryh]$ /net/sw/cad.rh/ic/ic5141/tools/dfII/bin/32bit/icms.exe: error while 
loading shared libraries: libXp.so.6: cannot open shared object file: No such file or directory

This was solved by running:

[root@server ~]# yum install xorg-x11-deprecated-libs

Now things work ok on the server, but as the csh.cshrc file gets pushed out to the other clients, it will have to be modified to put the LD_ASSUME_KERNEL line back in. This is because the clients are running rhel4 (the server is rhel5) and they need that line.

Our setup uses a regular windows xp computer with a 1.2TB drive as a file server. We want to install the Cadence software so that it’s on this shared (S:) drive, which will then be mounted by all the other windows computers in the shop. This is done by setting up a client install on the S: drive which will have a setup.exe file that will then be run on all the other computers to setup the Cadence software. Unfortunately, this client setup is not created when you run the setup.exe file from Cadence. You must run:

setup.exe admin

in order to have the client setup directory created.

Plotting on linux now works fine. Just use the postscript driver for the plotter.
Best C and D-sized plots come from printing to a file and opening and printing the file in Illustrator on a Windows machine–This will be true until a new driver is developed for linux.

Been having problems printing to C and D size paper on the plotter. Our plotter is an HP DesignJet 800PS, with ip address 10.135.152.15. The ppd file that comes from HP or from linux doesn’t work quite correctly with this printer. My solution was to take the ppd file from my Mac, edit it to take out all of the Mac-specific lines and use that.

The file is saved in /net/sw/edg/printerfiles/dj800.ppd. I then added the plotter with:

lpadmin -p plotter -P /net/sw/edg/printerfiles/dj800.ppd -v socket://10.135.152.15:9100
accept plotter
enable plotter

This does NOT work perfectly. It stil seems to cut off the very end of documents. But, that could be acceptable for most things. And that’s probably as good as it’s going to get. If a perfect printout is needed, the solution is to print to file and the plot the file from a Windows machine, where they have drivers that work.

Print command: lpr -Pplotter -oPageSize=AnsiC file_to_print

If, when starting plotconfig, an error saying something about libCDSXmotif appears, set the following environment variable.

setenv LD_LIBRARY_PATH ${ICHOME}/tools/lib

Had a problem only printing A-size plots, no matter which printer was used.  The plot would go to the correct printer, but it would print the incorrect size.

The file with all the information about plotting is in ${CDSHOME}/tools/plot/.cdsplotinit.  This file is created/edited with the plotconfig command which is located in ${CDSHOME}/tools/plot/bin.

Our problem had to do with how the queues were set up in plotconfig.  They should be set as follows:

B size on edg1:  lpr -Pedg1 -oPageSize=11×17

B size on plotter:  lpr -Pplotter -oPageSize=Tabloid

C size on plotter:  lpr -Pplotter -oPageSize=16×20

D size on plotter:  lpr -Pplotter -oPageSize=22×30

Note that 16×20 is not the real size for ansiC (17×22), nor is 22×30 the size for ansiD (22×34).  I had to pick sizes that were available in the ppd file for the plotter.  This file is in /etc/cups/ppd/plotter.  This is also the reason that B size on edg1 uses 11×17, while B size on the plotter uses Tabloid.