2025年6月8日 星期日

Install CustomExplorer









1. Download

We need to download the newest version of CustomExplorer. The downloaded file
name is:

customexplorer_2024.09-sp2_linux.tgz


2. Extract & Install

We need to use root permission to run:

# tar xfva customexplorer_2024.09-sp2_linux.tgz -C /opt/EDA

It will extract it to /opt/EDA/customexplorer

3. Config Env.

CustomExplorer="/opt/EDA/customexplorer/cur/bin"

export PATH=$PATH:$CustomExplorer

LM_LICENSE_FILE=26585@lstn
export LM_LICENSE_FILE

4. Test

$ cx 

5. Trouble Shooting

$ cx
  'spice_explorer' license is checked out for WaveView ADV feature.
Info: Could not load the Qt platform plugin "xcb" in "" even though it was found. (:0, )
Fatal: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: minimal, offscreen, webgl, xcb.
 (:0, )

Since we can not use Ctrl+c to quit this command. We need to use kill command
to kill the PID of cx.

$/# ps aux |grep cx
# ps aux|grep cx
herman    266633  0.0  0.0   7420  3428 pts/9    S+   10:02   0:00 /bin/bash /opt/EDA/customexplorer/cur/bin/cx
root      268047  0.0  0.0   6688  2212 pts/4    S+   10:09   0:00 grep cx


We can see the PID of cx command is 266633. Then we can use the following
command to kill this process:

$/# kill -9 266633

The we can run :

$ ls -lt |more
total 349532
-rw-r--r--  1 herman herman      4096  425 10:02 sxcmd.log
..

There is a file called sxcmd.log which is the running log of cx.

We can check the contents inside:

### WaveView ADV log file, revision W-2024.09-SP1 (build Nov 27, ) ###
### created at 10:02:33 on Fri Apr 25 2025 (Linux AMD64) ###
### Host Name: f6018-15   User ID: herman   PID: 266652   ###
wv_start_log
# (0) running in waveview only mode
# (0) SW_SX_PERL_LIB defined
# (0) SW_SX_TCL_LIB defined
# (0) HOME defined
# (0) # TYPE S abort
# (0) # memory usage 433.99MB
# (0) 0x910945 /opt/EDA/customexplorer/cur/platforms/linux64/bin/wv() [0x910945]
# (0) 0x910EE5 /opt/EDA/customexplorer/cur/platforms/linux64/bin/wv() [0x910ee5]
# (0) 0x4B65B04F /lib/x86_64-linux-gnu/libc.so.6(+0x3c04f) [0x7ff74b65b04f]
# (0) 0x4B6A9EEC /lib/x86_64-linux-gnu/libc.so.6(+0x8aeec) [0x7ff74b6a9eec]
# (0) 0x4B65AFB1 /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x11) [0x7ff74b65afb1]
# (0) 0x4B645471 /lib/x86_64-linux-gnu/libc.so.6(abort+0xd2) [0x7ff74b645471]
# (0) 0x4889C9BE /opt/EDA/customexplorer/cur/platforms/linux64/lib/libQt5Core.so.5(_ZNK14QMessageLogger5fatalEPKcz+0xb6) [0x7ff74889c9be]
# (0) 0x491313C2 /opt/EDA/customexplorer/cur/platforms/linux64/lib/libQt5Gui.so.5(_ZN22QGuiApplicationPrivate25createPlatformIntegrationEv+0x18f2) [0x7ff7491313c2]
# (0) 0x4913182F /opt/EDA/customexplorer/cur/platforms/linux64/lib/libQt5Gui.so.5(_ZN22QGuiApplicationPrivate21createEventDispatcherEv+0x2f) [0x7ff74913182f]
..

We can see that the cx command is actually 

/opt/EDA/customexplorer/cur/platforms/linux64/bin/wv


Then we can check this file:

$ cd /opt/EDA/customexplorer/cur/platforms/linux64/bin/
/opt/EDA/customexplorer/cur/platforms/linux64/bin $ ls wv
-rwxr-xr-x 1 herman herman 44596312 1127 09:16 wv

/opt/EDA/customexplorer/cur/platforms/linux64/bin $ file wv
wv: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, stripped

We can us ldd command to check the dynamically linked file (library) for wv:

/opt/EDA/customexplorer/cur/platforms/linux64/bin # ldd wv
	linux-vdso.so.1 (0x00007fffc73bc000)
	libNPI.so => not found
	libndna.so => not found
	libnffr.so => not found
	libnffw.so => not found
	libnsys.so => not found
	libvirtuos_sh.so => not found
	libcdsCommon_sh.so => not found
	libfastt_sh.so => not found
	libcls_sh.so => not found
	libcdsenvutil.so => not found
	libcdsenvxml.so => not found
	libblosc.so.1 => not found
	libz_sh.so => not found
	libpsf.so => not found
	libsrr.so => not found
	libQt5Gui.so.5 => not found
	libQt5Core.so.5 => not found
	libQt5Sql.so.5 => not found
	libQt5Xml.so.5 => not found
	libQt5Widgets.so.5 => not found
	libQt5Svg.so.5 => not found
	libQt5X11Extras.so.5 => not found
	libQt5Network.so.5 => not found
	libicui18n.so.60 => not found
	libicuuc.so.60 => not found
	libicudata.so.60 => not found
	libssl.so.1.1 => not found
	libcrypto.so.1.1 => not found
	libXmu.so.6 => /lib/x86_64-linux-gnu/libXmu.so.6 (0x00007f4219874000)
	libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f4219829000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f4219822000)
	libXi.so.6 => /lib/x86_64-linux-gnu/libXi.so.6 (0x00007f421980e000)
	libXrandr.so.2 => /lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f4219801000)
	libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f42196bf000)
	libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f4219695000)
	libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007f4219680000)
	libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f42195b4000)
	libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f42195a7000)
	libSM.so.6 => /lib/x86_64-linux-gnu/libSM.so.6 (0x00007f421959c000)
	libICE.so.6 => /lib/x86_64-linux-gnu/libICE.so.6 (0x00007f421957e000)
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4219200000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4219579000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4219572000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4219492000)
	libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f4219054000)
	libNCX.so => not found
	libsqlite3.so.0 => /lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f4218ef5000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4218d14000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f42198ae000)
	libXt.so.6 => /lib/x86_64-linux-gnu/libXt.so.6 (0x00007f4219426000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f4218ce9000)
	libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f4219421000)
	libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f4218a00000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f4218cca000)
	libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f4218c94000)
	libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f4218c87000)
	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f4218c7d000)
	libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f4218c67000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4218c47000)
	libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007f4218802000)
	liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f4218c18000)
	libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f42187df000)
	libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f4218c0b000)
	libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007f4216a00000)



Now, we can find missing DLLs from packages.debian.org

libQt5Gui.so.5 ->	libqt5gui5
libQt5Sql.so.5 -> 	libqt5sql5
libQt5Xml.so.5 ->	libqt5xml5


We can install the missing files and verify it again:

# apt-get install libqt5gui5 libqt5sql5 libqt5xml5


We can find the rest of the missing files to run cx

	libNPI.so => not found
	libndna.so => not found
	libnffr.so => not found
	libnffw.so => not found
	libnsys.so => not found
	libvirtuos_sh.so => not found
	libcdsCommon_sh.so => not found
	libfastt_sh.so => not found
	libcls_sh.so => not found
	libcdsenvutil.so => not found
	libcdsenvxml.so => not found
	libblosc.so.1 => not found
	libz_sh.so => not found
	libpsf.so => not found
	libsrr.so => not found

All these files can not be found in packages.debian.org. However, you can
find these files using the following commands:

# cd /opt/EDA/customexplorer/cur
/opt/EDA/customexplorer/cur # find ./ -name libNPI.so
./platforms/linux64/lib/libNPI.so

/opt/EDA/customexplorer/cur # find ./ -name libndna.so
./platforms/linux64/lib/libndna.so

and so on..

Thus, all these files are included in CustomExplorer. We don't need to install
it manually.

Install TSMC N16 ADFP PDK






1. Extract TSMC N16 ADFP tar file

   TSMC N16 ADFP (Academic Design Foster Package) is an advance process
   design kit provided by TSMC. It is used for academic only, and only
   some universities is licensed to use it. NSYSU is one of them.

   In order to use TSMC N16 ADFP in virtuoso ICADVM, we need to extract
   it to our home directory. Please use your account to run

   $ tar xfva N16ADFP_iPDK.tar -C ~/

   It will extract all files to your ~/N16ADFP_iPDK

2. Create a new library

$ cd ~/N16ADFP_iPDK
~/N16ADFP_iPDK$ source /opt/EDA/bashrc_icadvm
~/N16ADFP_iPDK$ virtuoso 

We can create a new ADFP library using "Attach to an existing technology 
library", and attach it to tsmcN16. Then you can create you own new library.


3. Test run

Now, we can create a new inv layout view to see whether it has calibre
on it or not. There is no calibre in the menu list.

We need to add calibre to the menu list. Before we continue, we need to exit
ICADVM first.


4. Integrate calibre into virtuoso ICADVM

4.1 check CALIBRE_HOME environment variable:

$ env | grep CALI
CALIBRE_HOME=/opt/EDA/calibre/cur

You should see an environment variable called CALIBRE_HOME

4.2 edit .cdsinit

~/N16ADFP_iPDK$ vi .cdsinit
load( strcat( getShellEnvVar("CALIBRE_HOME")
"/shared/pkgs/icv/tools/queryskl/calibre.skl" ))

and save it.

*** If .cdsinit does not exists, you need to create a new one ***

After this configuration, we can run virtuoso again.


5. Test run again.

~/N16ADFP_iPDK$ virtuoso &

If your .cdsinit file is correct, you should see the following messages:

//
//  Calibre Skill Interface * (v2024.4_12.9) *
//
//                         Copyright Siemens 1996-2020     
//                             All Rights Reserved.
//         THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
//            WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
//              OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
//
//

Now, we can open an inv layout view to see the menu list.

However, if you run virtuoso from other directory. You may not be able
to use calibre inside virtuoso. Because .cdsinit file is only effective form
the directory you start virtuoso. Thus you need to create/copy .cdsinit file
form ~/N16ADFP_iPDK directory. The command is :

~$  cp  ~/N16ADFP_iPDK/.cdsinit  .

Then you can run virtuoso again.

Install Calibre









1. Download

We can download the following files from TSRI:

calibre_aoj_cal_2024.4_12.9_linux_1of4.tgz
calibre_aoj_cal_2024.4_12.9_linux_2of4.tgz
calibre_aoj_cal_2024.4_12.9_linux_3of4.tgz
calibre_aoj_cal_2024.4_12.9_linux_4of4.tgz

Please be noted that this version is "aoj" version. There are different
calibre versions released by Siemens. You may refer to 
https://calibre.mentorcloudservices.com/docs/Calibre_OS_Roadmap.htm
to see their differences.


2. Extract & Install

# tar xfva calibre_aoj_cal_2024.4_12.9_linux_1of4.tgz -C /opt/EDA
# tar xfva calibre_aoj_cal_2024.4_12.9_linux_2of4.tgz -C /opt/EDA
# tar xfva calibre_aoj_cal_2024.4_12.9_linux_3of4.tgz -C /opt/EDA
# tar xfva calibre_aoj_cal_2024.4_12.9_linux_4of4.tgz -C /opt/EDA

3. Config Env.

3.1 Env setting.
Calibrebin="/opt/EDA/calibre/cur/bin"

PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:$Calibrebin"

#Mentor License Setup
MGLS_LICENSE_FILE=1717@lsncku
MGC_HOME=/opt/EDA/calibre/cur
CALIBRE_HOME=/opt/EDA/calibre/cur
MGC_TMPDIR=/tmp
MGC_LOCATION_MAP=NO_MAP

export USE_CALIBRE_VCO=aoj

export MGC_HOME CALIBRE_HOME MGC_TMPDIR MGC_LOCATION_MAP MGLS_LICENSE_FILE

LM_LICENSE_FILE=1717@lsncku

export PATH LM_LICENSE_FILE


3.2 Link to virtuoso

??


4. Test

$ source /opt/EDA/bashrc_eda
$ calibre -gui &
Invalid operating system environment, VENDOR=unknown OS VERSION=12

$ export USE_CALIBRE_VCO=aoj
$ calibre -gui &




Discussion of TSRI configuration files



Discussion of TSRI configuration files

=======
Cadence environment

In virtuoso download web page, we can see that there are some additional files
provided by TSRI, which are:

installation_guide_cadence.txt
CIC.tar

installation_guide_cadence.txt is to describe how to install EDA tools using
TSRI way.

CIC.tar is the environment setting. Basically, they are all C shell script.

We can use the following command to extract CIC.tar:

$ cat CIC.tar | tar xfv -

Then it will extract a CIC directory. Then we can take a look inside.

$ cd CIC
CIC $ ls
assura.cshrc   ext.cshrc      integrand.cshrc   pegasus.cshrc  ssv.cshrc
ccd.cshrc      genus.cshrc    jasper.cshrc      pvs.cshrc      stratus.cshrc
confrml.cshrc  ic6.cshrc      liberate.cshrc    quantus.cshrc  tempus.cshrc
ctos.cshrc     icadvm.cshrc   license.cshrc     rc.cshrc       verisium.cshrc
ddi.cshrc      ic.cshrc       mmsim.cshrc       sigrity.cshrc  vmanager.cshrc
edi.cshrc      incisiv.cshrc  modus.cshrc       spb.cshrc      xcelium.cshrc
ets.cshrc      innovus.cshrc  neocircuit.cshrc  spectre.cshrc


Inside this directory, there are some files relating to our environment setting
so far:

ic6.cshrc 	-> IC 6
icadvm.cshrc	-> ICADVM
ic.cshrc	-> IC 5141

license.cshrc	-> License Check, we need to check the license check port.
		   Basically, all cadence EDA softwares use 5280 port in
                   TSRI environment

One day, if you want to write a program or a shell script. Please remember 
KISS principle.

K eep
I t
S imple
S tupid

==
Why should we use Bash not CSH

You can type 

$ env |grep SHELL
bash

Basically all Linux operation system use bash as it's default SHELL environment.
However, TSRI provide only CSH setting. Thus I rewrite all the configurations
to bash. And it is much more easier to debug.

====================================
=======
Synopsys environment

If you check HSPICE Download web page, you will also see the following files:

installation_guide_synopsys.txt	-> Installation guide for Synopsys software.
TCAD_CIC.tar	-> This is the setting file for TCAD, we don't use it.
CIC.tar		-> This is the configurations files for Synopsys software.

We can use the same command to extract CIC.tar:

$ tar xfva CIC.tar
$ cd CIC
CIC $ ls 
3dicc.cshrc           icv.cshrc             protocompiler.cshrc
adp.cshrc             icv_wb.cshrc          qatk.cshrc
architect.cshrc       identify.cshrc        rtl_arch.cshrc
asip.cshrc            laker.cshrc           siliconsmart.cshrc
certify.cshrc         laker_oa.cshrc        spyglass.cshrc
coreconsultant.cshrc  lc.cshrc              star-rcxt.cshrc
cosmos_scope.cshrc    license.cshrc         synopsys_dc.setup.18
customcompiler.cshrc  license_TCAD.cshrc    synopsys_dc.setup.35
customexplorer.cshrc  milkyway.cshrc        synplify.cshrc
dsoai.cshrc           mwdt.cshrc            synthesis.cshrc
dwip.cshrc            nanosim.cshrc         tcad.cshrc
euclide.cshrc         optocompiler.cshrc    tmax.cshrc
fc.cshrc              optodesigner.cshrc    vc_formal.cshrc
finesim.cshrc         pa_virtualizer.cshrc  vcs.cshrc
formality.cshrc       powrep.cshrc          vcs-mx.cshrc
hercules.cshrc        primepower.cshrc      vera.cshrc
hsimplus.cshrc        primerail.cshrc       verdi.cshrc
hspice.cshrc          primesim.cshrc        verdi-ncverilog.cshrc
icc2.cshrc            primetime.cshrc       verdi-vcs.cshrc
icc.cshrc             primewave.cshrc       xa.cshrc


hspice.cshrc	-> HSPICE setting
license.cshrc	-> License setting, in this file, we can see that Synopsys's
	License check port is 265865. You need to remember it.


If you need to check Cadence & Synopsys Licenses, you need to configure
your environment like this:

LM_LICENSE_FILE=5280@lstn:26585@lstn
export LM_LICENSE_FIL

Install Synopsys HSpice








Install Synopsys HSPICE

1. Download

Please download the newest version of HSPICE, the file name is 
hspice_2024.09-sp1_linux.tgz

2. Extract/Install

Please use root permission to run:

# tar xfva hspice_2024.09-sp1_linux.tgz -C /opt/EDA

This procedure will extract and install hspice to /opt/EDA/hspice
directory.

3. Config Env.

3.1 We need to add more info to our bashrc_eda. Please all the following 
contents:

Hspice="/opt/EDA/hspice"
Hspicebin="/opt/EDA/hspice/cur/hspice/bin"

PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:$Hspicebin"

LM_LICENSE_FILE=26585@lstn

export PATH LM_LICENSE_FILE

3.2 Modify hspice.ini

# cd /opt/EDA/hspice/cur/hspice
/opt/EDA/hspice/cur/hspice # cat hspice.ini

* READING FILE:  /usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/hspice.ini
.prot
.option
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/ad
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/behave
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/bjt
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/burr_brn
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/comlinear
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/dio
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/fet
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/lin_tech
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/pci
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/signet
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/ti
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/tline
+ search=/usr/cad/synopsys/hspice/cur/hspice/W-2024.09-SP1/hspice/parts/xilinx
**** add any user options, parameters, model includes,
**** subcircuit includes or libraries here

.unprot


We can see that the hspice directory settin is not /opt/EDA/hspice. Thus we 
need to fix it. Please run the following command:

# export INST_DIR1=/opt/EDA/hspice/cur
# /opt/EDA/hspice/cur/hspice/bin/config

This step is very important because if you don't modify hspice.ini. It may not
find some files when you run simulation.



4. We can run

$ source /opt/EDA/bashrc_eda

to load our EDA environment setting

Then run

$ hspice

                              PrimeSim HSPICE (R)

            Version W-2024.09-SP1 for linux64 - Dec 02, 2024 9404553

                    Copyright (c) 1986 - 2024 Synopsys, Inc.
   This software and the associated documentation are proprietary to Synopsys,
 Inc. This software may only be used in accordance with the terms and conditions
 of a written license agreement with Synopsys, Inc. All other use, reproduction,
   or distribution of this software is strictly prohibited.  Licensed Products
     communicate with Synopsys servers for the purpose of providing software
    updates, detecting software piracy and verifying that customers are using
    Licensed Products in conformity with the applicable License Key for such
  Licensed Products. Synopsys will use information gathered in connection with
    this process to deliver software updates and pursue software pirates and
                                   infringers.
..
 system
  -version          Outputs PrimeSim HSPICE version information
  -include_last     Insert the specified file in the end of the input file
  -include_first    Insert the specified file in the beginning of the input file
  -info             Outputs PrimeSim HSPICE supported TMI information
  -container        Runs Primesim HSPICE in container

Enter input file name:

This means that HSPICE is wating for your input file (SPICE netlist). If you
have an inv.sp. You can run:

$ hspice inv.sp 

to run simulation directory.

Using: /opt/EDA/hspice/2024.09-sp1/hspice/linux64/hspice inv.sp
 ****** PrimeSim HSPICE -- W-2024.09-SP1 linux64 (Dec 01 2024 9404553) ******
  Copyright (c) 1986 - 2025 by Synopsys, Inc. All Rights Reserved.
  This software and the associated documentation are proprietary
  to Synopsys, Inc. This software may only be used in accordance
  with the terms and conditions of a written license agreement with
  Synopsys, Inc. All other use, reproduction, or distribution of
  this software is strictly prohibited.
  Input File: inv.sp                                                            
  Command line options: /opt/EDA/hspice/2024.09-sp1/hspice/linux64/hspice inv.sp
  Start time: Fri Mar 21 10:33:45 2025

..

           peak memory used        488.35 megabytes
           total cpu time            0.03 seconds
           total elapsed time        1.20 seconds
           job started at     10:33:45 03/21/2025
           job ended   at     10:33:46 03/21/2025

>info:         ***** hspice job concluded
           job total runtime         1.20 seconds


 lic: Release hspice token(s) 
 lic: total license checkout elapse time:        1.16(s)

We can see that hspice job concluded which means our hspice is running 

successfully.



Install Laker







1. Download

Please download newest lake installation file:

laker_2024.12_linux.tgz

2. Extract & Install

# tar xfva laker_2024.12_linux.tgz -C /opt/EDA

This will extract laker to /opt/EDA/laker directory

3. Config Env.

Add the following settings to /opt/EDA/bashrc_eda

Lakerbin="/opt/EDA/laker/cur/bin"

PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:$Lakerbin"

LM_LICENSE_FILE=5229@lstn


4. Test

$ source /opt/EDA/bashrc_eda

$ laker &
/opt/EDA/laker/cur/platform/LINUX64/bin/laker: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory

We can search libpng12.so.0 in packages.debian.org. However, you can't find
any result. If you search libpng, you will get 
libpng16 file. We can also use the following command to find out what is 
installed in our system ?

$ dpkg -l | grep libpng
ii  libpng-dev:amd64                     1.6.39-2                        amd64        PNG library - development (version 1.6)
ii  libpng-tools                         1.6.39-2                        amd64        PNG library - tools (version 1.6)
ii  libpng16-16:amd64                    1.6.39-2                        amd64        PNG library - runtime (version 1.6)


Maybe we can use soft link to solve this problem like libdb ?

Let's go to shared library directory:

# cd /usr/lib/x86_64-linux-gnu/
/usr/lib/x86_64-linux-gnu# ls -l libpng*
-rw-r--r-- 1 root root 354122 1128  2022 libpng16.a
lrwxrwxrwx 1 root root     19 1128  2022 libpng16.so -> libpng16.so.16.39.0
lrwxrwxrwx 1 root root     19 1128  2022 libpng16.so.16 -> libpng16.so.16.39.0
-rw-r--r-- 1 root root 219056 1128  2022 libpng16.so.16.39.0
lrwxrwxrwx 1 root root     10 1128  2022 libpng.a -> libpng16.a
lrwxrwxrwx 1 root root     11 1128  2022 libpng.so -> libpng16.so

# /usr/lib/x86_64-linux-gnu# ln -s libpng16.so.16.39.0 libpng12.so.0
lrwxrwxrwx 1 root root     19  328 09:42 libpng12.so.0 -> libpng16.so.16.39.0
-rw-r--r-- 1 root root 354122 1128  2022 libpng16.a
lrwxrwxrwx 1 root root     19 1128  2022 libpng16.so -> libpng16.so.16.39.0
lrwxrwxrwx 1 root root     19 1128  2022 libpng16.so.16 -> libpng16.so.16.39.0
-rw-r--r-- 1 root root 219056 1128  2022 libpng16.so.16.39.0
lrwxrwxrwx 1 root root     10 1128  2022 libpng.a -> libpng16.a
lrwxrwxrwx 1 root root     11 1128  2022 libpng.so -> libpng16.so

Now, we can run laker again:

/opt/EDA/laker/cur/platform/LINUX64/bin/laker: /lib/x86_64-linux-gnu/libpng16.so.16: version `PNG12_0' not found (required by /opt/EDA/laker/cur/platform/LINUX64/bin/libQtGui.so.4)


We can see from the output that laker demands PNG12_0 not PNG16. Thus we really
need to install libpng12 file.

Before we find & install libpng12 file. We need to remove libpng12.so.0 
softlink.

/usr/lib/x86_64-linux-gnu# rm libpng12.so.0


=========================
How do we find libpng12 file ?

We can google libpng12 debian and it show that we can go to Debian archive 
website to download it. The directory is:
https://archive.debian.org/debian-security/pool/updates/main/libp/libpng/

And the download link is:
https://archive.debian.org/debian-security/pool/updates/main/libp/libpng/libpng12-0_1.2.50-2+deb8u2_amd64.deb

We can use wget command to download:

# wget https://archive.debian.org/debian-security/pool/updates/main/libp/libpng/libpng12-0_1.2.50-2+deb8u2_amd64.deb

And it will grab libpng12-0_1.2.50-2+deb8u2_amd64.deb

Normally, we can install a .deb file by using dpkg command:

# dpkg -i libpng12-0_1.2.50-2+deb8u2_amd64.deb
Selecting previously unselected package libpng12-0:amd64.
dpkg: regarding libpng12-0_1.2.50-2+deb8u2_amd64.deb containing libpng12-0:amd64, pre-dependency problem:
 libpng12-0 pre-depends on multiarch-support
  multiarch-support is not installed.

dpkg: error processing archive libpng12-0_1.2.50-2+deb8u2_amd64.deb (--install):
 pre-dependency problem - not installing libpng12-0:amd64
Errors were encountered while processing:
 libpng12-0_1.2.50-2+deb8u2_amd64.deb

The above message shows that libpng requires multiarch-support to install. 
However, we don't know whether multiarch-support depends on other packages
or not. 

Thus we need to extract and install libng manually.

# unar libpng12-0_1.2.50-2+deb8u2_amd64.deb 
libpng12-0_1.2.50-2+deb8u2_amd64.deb: Ar
  debian-binary  (4 B)... OK.
  control.tar.gz  (1303 B)... OK.
  data.tar.xz  (171112 B)... OK.

# cd libpng12-0_1.2.50-2+deb8u2_amd64
~/libpng12-0_1.2.50-2+deb8u2_amd64# tar xfva data.tar.xz 
./
./lib/
./lib/x86_64-linux-gnu/
./lib/x86_64-linux-gnu/libpng12.so.0.50.0
./usr/
./usr/share/
./usr/share/doc-base/
./usr/share/doc-base/libpng12
./usr/share/doc/
./usr/share/doc/libpng12-0/
./usr/share/doc/libpng12-0/changelog.Debian.gz
./usr/share/doc/libpng12-0/changelog.gz
./usr/share/doc/libpng12-0/README.gz
./usr/share/doc/libpng12-0/libpng-1.2.50.txt.gz
./usr/share/doc/libpng12-0/copyright
./usr/share/doc/libpng12-0/README.Debian
./usr/share/doc/libpng12-0/KNOWNBUG
./usr/share/doc/libpng12-0/ANNOUNCE
./usr/share/doc/libpng12-0/TODO
./usr/lib/
./usr/lib/x86_64-linux-gnu/
./lib/x86_64-linux-gnu/libpng12.so.0
./usr/lib/x86_64-linux-gnu/libpng12.so.0


We can see that there is a ./usr/lib/x86_64-linux-gnu/libpng12.so.0 exists.
This is what we need to run laker. We need to copy it to 
/usr/lib/x86_64-linux-gnu directory

~/libpng12-0_1.2.50-2+deb8u2_amd64# cp -a ./lib/x86_64-linux-gnu/libpng12.so.0* /usr/lib/x86_64-linux-gnu/

# ls -l /usr/lib/x86_64-linux-gnu/libpng12*
lrwxrwxrwx 1 root root     18  18  2016 /usr/lib/x86_64-linux-gnu/libpng12.so.0 -> libpng12.so.0.50.0
-rw-r--r-- 1 root root 158616  18  2016 /usr/lib/x86_64-linux-gnu/libpng12.so.0.50.0



After we installed libpng12 manually, we can run 

$ laker &

This time, laker should be able to executed successfully.




export PATH LM_LICENSE_FILE

Upgrade Debian Linux from 12.9 to 12.10


 


1. Upgrade Debian Linux from 12.9 to 12.10

# cat /etc/debian_version
12.9

# apt-get update

# apt-get upgrade

# cat /etc/debian_version
12.10

# uname -a
Linux edaTC 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux

# apt-get install linux-image-amd64

# reboot

# uname -a
$ uname -a
Linux edaTC 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64 GNU/Linux










Install Cadence ICADVM





 Purpose: Install Cadence ICADVM

1. Download files from TSRI, the files are:
ICADVM_20.10.340_linux_1of4.tgz
ICADVM_20.10.340_linux_2of4.tgz
ICADVM_20.10.340_linux_3of4.tgz
ICADVM_20.10.340_linux_4of4.tgz


2. Extract/Install the downloaded files:

# tar xfva ICADVM_20.10.340_linux_1of4.tgz -C /opt/EDA
# tar xfva ICADVM_20.10.340_linux_2of4.tgz -C /opt/EDA
# tar xfva ICADVM_20.10.340_linux_3of4.tgz -C /opt/EDA
# tar xfva ICADVM_20.10.340_linux_4of4.tgz -C /opt/EDA


3. Configure Env.

# cd /opt/EDA
/opt/EDA # cp bashrc_eda bashrc_icadvm
/opt/EDA # vi bashrc_icadvm

2025年6月7日 星期六

Install Cadence Virtuoso



















 Step 1: Download all the required files. 

In this case, we need to download the following files:

  • IC_06.18.350_linux_1of4.tgz
  • IC_06.18.350_linux_2of4.tgz
  • IC_06.18.350_linux_3of4.tgz
  • IC_06.18.350_linux_4of4.tgz

Step2: Extrac & Installation

1. Create /opt/EDA directory, you need to use root permission.

Before we begin, we can check the content of /opt directory:

# ls -l /opt

total 0

It shows there is nothing inside. Then we can create /opt/EDA directory:


# mkdir -p /opt/EDA
# ls -l /opt
total 4
drwxr-xr-x 2 root root 4096  3月  7 10:03 EDA

Now you can see that we've already created /opt/EDA directory.

** You only need to do this once **


Extract virtuoso to /opt/EDA directory, please go to your download directory, then type the following commands:

# tar xfva IC_06.18.350_linux_1of4.tgz -C /opt/EDA
./IC/cur
./IC/IC_06.18.350/Hotfix_IC06.18.350_lnx86.sdp
./IC/IC_06.18.350/ic_index.sdx
./IC/IC_06.18.350/IC_README
./IC/IC_06.18.350/IC_ReleaseInfo.pdf
./IC/IC_06.18.350/tools
..

The above command is to extract IC_06.18.350_linux_1of4.tgz to /opt/EDA directory. If there is no error message (no output)

# tar xfva IC_06.18.350_linux_2of4.tgz -C /opt/EDA
# tar xfva IC_06.18.350_linux_3of4.tgz -C /opt/EDA
# tar xfva IC_06.18.350_linux_4of4.tgz -C /opt/EDA

When all the 4 files are extracted & installed. We can proceed to Config Env. step.

Step 3. Config Env.

I usually put bashrc_eda in /opt/EDA directory for everyone to use.

Config /etc/hosts, and add the following lines in it.

140.126.24.16     lshc
140.110.140.29    lstc
140.110.127.149   lstn


Step: 4. Test

Before we run virtuoso, we need to load the configuration file, please run
the following command:

$ source /opt/EDA/bashrc_eda

If you do not load the config file (bashrc_eda), you will see errors like
this:

$ virtuoso
-bash: virtuoso: command not found

$ virtuoso
-bash: /opt/EDA/IC/cur/tools/dfII/bin/virtuoso: cannot execute: required file not found


Basically, virtuoso is installed. However, there are a lot of errors that
need to be fixed. Thus, we are going to Trouble shooting section.

Step. 5: Trouble shooting

We are going to troubleshoot errors one by one.

Error1:
$ virtuoso
-bash: /opt/EDA/IC/cur/tools/dfII/bin/virtuoso: cannot execute: required file not found

Solution:

# cd /bin
# ls -l sh
lrwxrwxrwx 1 root root 4  1月  5  2023 sh -> dash
# rm sh
# ln -s /bin/bash sh
# ls -l sh
lrwxrwxrwx 1 root root 9  3月  7 11:34 sh -> /bin/bash
First, we need to change the softlink of /bin/sh to /bin/bash, not to use
/bin/dash anymore.

# # apt-get install csh ksh
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  ksh93u+m
Suggested packages:

  binfmt-support
The following NEW packages will be installed:
  csh ksh ksh93u+m
0 upgraded, 3 newly installed, 0 to remove and 1 not upgraded.
Need to get 1,175 kB of archives.
After this operation, 3,675 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y \Enter

..


Once you have installed csh & ksh, you may run virtuoso again:

$ virtuoso
2025/03/07 11:36:06 System is not a supported distribution
2025/03/07 11:36:06 An error occurred. We don't recognize OS
2025/03/07 11:36:06 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2025/03/07 11:36:06 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory


This time, it shows another error message which is different than the prior
error message. This means that we have solve the prior error. However, we've
encountered another error here.

-- Missing libcrypto.so.10 --


================================

1. Upgrade our system
We need to upgrade our system at least once per week. Please use root
permission to run the following commands:

# apt-get update
# apt-get upgrade

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  chromium chromium-common chromium-sandbox google-chrome-stable
4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 98.6 MB/213 MB of archives.
After this operation, 98.3 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://security.debian.org/debian-security bookworm-security/main amd64 chromium amd64 134.0.6998.88-1~deb12u1 [78.3 MB]
Get:2 http://security.debian.org/debian-security bookworm-security/main amd64 chromium-sandbox amd64 134.0.6998.88-1~deb12u1 [101 kB]
Get:3 http://security.debian.org/debian-security bookworm-security/main amd64 chromium-common amd64 134.0.6998.88-1~deb12u1 [20.2 MB]
Fetched 97.2 MB in 4s (27.4 MB/s)          
讀取改變紀錄(changelogs)... 完成
(Reading database ... 345343 files and directories currently installed.)
Preparing to unpack .../google-chrome-stable_134.0.6998.88-1_amd64.deb ...
Unpacking google-chrome-stable (134.0.6998.88-1) over (134.0.6998.35-1) ...
Preparing to unpack .../chromium_134.0.6998.88-1~deb12u1_amd64.deb ...
Unpacking chromium (134.0.6998.88-1~deb12u1) over (134.0.6998.35-1~deb12u1) ...
Preparing to unpack .../chromium-sandbox_134.0.6998.88-1~deb12u1_amd64.deb ...
Unpacking chromium-sandbox (134.0.6998.88-1~deb12u1) over (134.0.6998.35-1~deb12u1) ...
Preparing to unpack .../chromium-common_134.0.6998.88-1~deb12u1_amd64.deb ...
Unpacking chromium-common (134.0.6998.88-1~deb12u1) over (134.0.6998.35-1~deb12u1) ...
Setting up google-chrome-stable (134.0.6998.88-1) ...
Setting up chromium-sandbox (134.0.6998.88-1~deb12u1) ...
Setting up chromium-common (134.0.6998.88-1~deb12u1) ...
Setting up chromium (134.0.6998.88-1~deb12u1) ...
Processing triggers for mailcap (3.70+nmu1) ...
Processing triggers for desktop-file-utils (0.26-1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for libc-bin (2.36-9+deb12u9) ...
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for menu (2.1.49) ...


Once you complete system upgrade (patch), you may run the same commands again:

# apt-get update
# apt-get upgrade



================
$ virtuoso
2025/03/14 09:50:29 System is not a supported distribution
2025/03/14 09:50:29 An error occurred. We don't recognize OS 
2025/03/14 09:50:29 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2025/03/14 09:50:29 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory

We can go to packages.debian.org to search libcrypto.so.10, and it shows this
file is inside nsight-systems-target package. Thus, we need to install 
nsight-systems-target:

# apt-get install nsight-systems-target

If you are unable to locate nsight-systems-target, you need to modify your 
Debian apt setting:

# cd /etc/apt
# vi sources.list
deb http://140.117.166.164/bookworm/ bookworm main contrib non-free non-free-firmware

deb http://140.117.166.164/bookworm/ bookworm-updates main contrib non-free non-free-firmware


You need to add "contrib non-free" into your download setting. Then type:

# apt-get update
# apt-get install nsight-systems-target

You maybe able to install this file now. 

Now, you can run virtuoso again:

$ virtuoso
2025/03/14 10:09:03 System is not a supported distribution
2025/03/14 10:09:03 An error occurred. We don't recognize OS 
2025/03/14 10:09:03 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2025/03/14 10:09:03 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory

However, the same error message appears. Why ?

If you look at the packages.debian.org website, you can see the the full path
of libcrypto.so.10 is:

/usr/lib/x86_64-linux-gnu/nsight-systems/target-linux-x64/CollectX/libcrypto.so.10

You need to add /usr/lib/x86_64-linux-gnu/nsight-systems/target-linux-x64/CollectX  for virtuoso to find libcrypto.so.10.

We can use temporary solution:

$ env | grep LD
LD_LIBRARY_PATH=/opt/EDA/IC/cur/tools/lib:/opt/EDA/IC/cur/tools/dfII/lib

Your current library path is like above, we can add one more path:

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/nsight-systems/target-linux-x64/CollectX

The you can verify it:

$ env | grep LD
LD_LIBRARY_PATH=/opt/EDA/IC/cur/tools/lib:/opt/EDA/IC/cur/tools/dfII/lib:/usr/lib/x86_64-linux-gnu/nsight-systems/target-linux-x64/CollectX

Now you have the path in the LD_LIBRARY_PATH setting, and you can run:

$ virtuoso
2025/03/14 10:12:27 System is not a supported distribution
2025/03/14 10:12:27 An error occurred. We don't recognize OS 
2025/03/14 10:12:27 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2025/03/14 10:12:27 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libdb-4.7.so: cannot open shared object file: No such file or directory

We can see that this time it didn't show the error message. However, another
error message appears:


***** 
If you need to make permanent modification, you need to modify 
/opt/EDA/bashrc_eda, and change the setting like this:

LD_LIBRARY_PATH="/opt/EDA/IC/cur/tools/lib:/opt/EDA/IC/cur/tools/dfII/lib:/usr/lib/x86_64-linux-gnu/nsight-systems/target-linux-x64/CollectX"

Next time, you don't need to set LD_LIBRARY_PATH manually. When you source 
/opt/EDA/bashrc_eda file, it will be loaded automatically.

*****


$ virtuoso
2021/01/26 12:03:12 System is not a supported distribution
2021/01/26 12:03:12 An error occurred. We don't recognize OS
2021/01/26 12:03:12 WARNING This OS does not appear to be a Cadence supported Li
nux configuration.
2021/01/26 12:03:12 For more info, please run CheckSysConf in <cdsRoot/tools.lnx
86/bin/checkSysConf <productId>
/opt/EDA/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared librar
ies: libaprutil-1.so.0: cannot open shared object file: No such file or director
y


Solution:

# apt-get install libaprutil1


$ virtuoso
2025/03/14 10:12:27 System is not a supported distribution
2025/03/14 10:12:27 An error occurred. We don't recognize OS 
2025/03/14 10:12:27 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2025/03/14 10:12:27 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libdb-4.7.so: cannot open shared object file: No such file or directory

Now we see this error shows that libdb-4.7.so is missing. However, this file
can not be found in packages.debian.org. You may go to 
/usr/lib/x86_64-linux-gnu directory and run:

# cd /usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu # ls -l libdb-*
-rw-r--r-- 1 root root 1843792  117  2023 libdb-5.3.so

There is a file called libdb-5.3.so, which is a newer version of libdb.

We can create a soft link for libdb-4.7.so#

/usr/lib/x86_64-linux-gnu # ln -s libdb-5.3.so libdb-4.7.so
/usr/lib/x86_64-linux-gnu # ls -l libdb-*
lrwxrwxrwx 1 root root      12  314 10:51 libdb-4.7.so -> libdb-5.3.so
-rw-r--r-- 1 root root 1843792  117  2023 libdb-5.3.so

Then you can run:

$ virtuoso
2025/03/14 10:51:53 System is not a supported distribution
2025/03/14 10:51:53 An error occurred. We don't recognize OS 
2025/03/14 10:51:53 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2025/03/14 10:51:53 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
dlopen failed to open 'libdl.so'


If you find libdl.so in packages.debian.org, there is nothing.

However, if you go to /usr/lib/x86_64-linux-gnu directory

# cd /usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu # ls -l libdl*
-rw-r--r-- 1 root root     8 111 20:42 libdl.a
-rw-r--r-- 1 root root 14480 111 20:42 libdl.so.2

There is a file called libdl.so.2, so we need to create a soft link for it:

/usr/lib/x86_64-linux-gnu # ln -s libdl.so.2 libdl.so
/usr/lib/x86_64-linux-gnu # ls -l libdl*
-rw-r--r-- 1 root root     8 111 20:42 libdl.a
lrwxrwxrwx 1 root root    10  314 10:58 libdl.so -> libdl.so.2
-rw-r--r-- 1 root root 14480 111 20:42 libdl.so.2


Then you may run virtuoso again:

$ virtuoso

This time, virtuoso can be executed (If you are lucky.)