☰
Ubuntu 20.04 部署 Cadence IC617 工具链
2026/10/28 2:09:10 网站建设 项目流程

简介:面向需要在 Linux 桌面环境搭建集成电路设计与验证流程的工程师及高校学生,这份文档围绕 Ubuntu 20.04 部署 Cadence IC617(含 HotFix)、Spectre18、Calibre19 与 XCELIUMMAIN_18 展开,涉及模拟仿真、版图绘制与数模混合仿真等场景,适合具备基础 Linux 操作能力的中级读者。压缩包共 1 个 docx 文件,约 3.08MB,以命令清单与图文步骤组织,另附 IC618、Calibre20、INCISIVE152 等安装文件的获取线索;已有 7693 人学习下载。内容侧重依赖库安装、license 服务配置、环境变量与路径设置、AVX2 指令集检查及常见报错排查,可作为边装边查的操作底稿,帮助读者减少重复试错。

1. 在 Ubuntu 20.04 上装 Cadence IC617:一条容易失败、但值得参考的路线

先把结论放在前面:在 Ubuntu 20.04 上装 Cadence IC617(HotFix)+ Spectre18 + Calibre19 + XCELIUMMAIN_18,能装成,但这条路线本质上是在骗软件,而不是按软件预期的方式安装。这四个工具原本面向 RHEL/CentOS 系列,Ubuntu 的库版本、目录约定和发行版标识都对不上,所以整个流程里有一半命令是在造兼容层:给系统创建 redhat-release 标识、补 libxp6、补 32 位库、把 libcrypto 软链到旧名字。好消息是这些兼容层一旦搭好,后面对 XCELIUMMAIN_18 跑数模混仿、用 Calibre19 做 DRC/LVS 都能稳定跑起来。

读者画像通常是三类人:实验室里只有一台 Ubuntu 开发机的学生、想在自己笔记本虚拟机上搭一套完整 IC 流程的工程师,以及装过 IC618 但在 Ubuntu 里启动不了、需要退回来安装 IC617 的人。这篇内容按顺序说明四件事:系统准备怎么配置、依赖怎么补齐、通过 iscape 安装三个组件时各注意什么、环境变量和 license 怎么设置。Cadence IC617 与 Calibre20 的版本匹配、Spectre18 的调用方式,也会在对应章节里说明。

2. 系统底座:虚拟机、磁盘和那几个必须改的开关

2.1 为什么最小安装 + 英文路径是必须满足的前置条件

安装这类 EDA 全家桶时,最省时间的做法是让路径中只出现英文和数字。安装器、license 工具、以及 Calibre 内部的一些 shell 脚本,对空格和非 ASCII 字符的容忍度都很低。一旦路径中含中文,常见故障是安装到一半报出莫名其妙的文件找不到,或者装完了启动脚本执行到一半静默退出。

虚拟机配置上有几条硬性要求:内存 4G 起步(跑 Spectre 仿真建议 8G),虚拟磁盘给足,至少 100G,因为 IC617 的 HotFix 加 Base 包、Calibre19 的规则库、Xcelium 的编译缓存,加一起很容易到 40~60G。安装 Ubuntu 时选最小安装,勾掉自动下载更新,装完再说。

有一个反直觉的操作:安装系统时不要添加共享文件夹。VMware 的共享目录挂载(/mnt/hgfs)在 iscape 安装器运行时会带来权限问题,尤其当共享目录的属主和 Ubuntu 里的用户 UID 对不上时,安装器会读到一半报权限被拒。正确顺序是先装系统、装 VMware Tools、重启,再去设共享文件夹。这样挂载点由 vmtoolsd 正常接管,权限也就正常了。

提示:把全套安装文件放在宿主机的一个英文命名目录里,例如CadenceIC,共享后在 Ubuntu 里路径就是/mnt/hgfs/CadenceIC,后文所有安装命令都基于这个路径。

2.2 系统更新与 VMware Tools

装完系统先做基础更新,再处理网络源。Software updater 里进 Settings,在 Ubuntu Software 页的 Download from 里选 Other,点 Select Best Server 让系统测速挑一个源,然后 Reload,再执行:

sudo apt update sudo apt upgrade -y

源选得不对,后面的依赖安装会出现大量 404 和依赖断裂,这是新手最常卡的第一道坎。更新完重启一次。

接着装 VMware Tools。虚拟机菜单里选「安装 VMware Tools」,系统会挂载一个光盘,把压缩包解到桌面再执行安装脚本:

mkdir -p ~/Desktop/tools sudo tar -zxvf /media/$USER/VMware\ Tools/VMwareTools-*.tar.gz -C ~/Desktop/tools/ cd ~/Desktop/tools/vmware-tools-distrib sudo ./vmware-install.pl

安装脚本一路回车用默认值即可。装完重启,之后共享文件夹就能正常使用。

-C指定解压目标目录,用$USER而不是写死用户名,是为了换机器时命令还能用。vmware-install.pl会自动编译内核模块,所以要在apt upgrade之后装,否则内核版本一变又得重装一次。

2.3 CPU 指令集先查清楚,别装到一半才发现

Calibre19 有一部分二进制依赖 AVX2 指令集。如果你的 CPU 不支持,表现是安装能过、启动时直接崩,或者报 illegal instruction。所以动手前先查:

grep -o 'avx2' /proc/cpuinfo | head -1

有输出说明支持,没输出就趁早换机器或者换 Calibre 版本。虚拟机里还要注意,VMware 默认可能不把 AVX2 透传给 guest,需要在虚拟机设置的处理器选项里确认「虚拟化 Intel VT-x/EPT 或 AMD-V/RVI」处于勾选状态,否则宿主支持、客户机也看不到。

3. 依赖补齐:Ubuntu 缺的那些库,一条条补

3.1 基础包和 32 位兼容库

Cadence 的安装器和部分工具链是 32 位混编的,所以 32 位库必须开。先启用 i386 架构,再一次性装基础依赖:

sudo dpkg --add-architecture i386 sudo apt update sudo apt-get install -y ksh csh \ openjdk-8-jre openjdk-8-jdk \ xterm libncursesw5-dev \ libxtst6:i386 libxi6:i386 \ python3 net-tools \ libstdc++6 lib32stdc++6 \ xfonts-75dpi xfonts-100dpi

逐项说清楚每个包为什么在这里:

  • ksh、csh:Cadence 的启动脚本和部分工具(尤其 Calibre 的 wrapper)用 ksh/csh 写,缺了直接报bad interpreter。
  • openjdk-8-jre/jdk:iscape 安装器是 Java 写的,JDK 8 是它认的版本,装 11 或 17 会出现界面起不来的情况。
  • libncursesw5-dev:终端界面库,缺了 iscape 的文本界面会乱码或直接退出。
  • libxtst6:i386、libxi6:i386:X11 的 32 位输入扩展,Virtuoso 的图形界面依赖它们。
  • lib32stdc++6:32 位 C++ 运行时,Spectre 的部分仿真器组件要用。
  • xfonts-75dpi、xfonts-100dpi:Calibre 的图形界面字体渲染依赖这两个点阵字体包,不装的话 Calibre 界面字会糊成一团或者显示成方块,装完要重启才生效。

Java 装完顺手配环境变量,编辑/etc/profile在末尾追加:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

改完source /etc/profile让它生效,用java -version确认输出是 1.8 而不是系统自带的 11 或 17。这里常见的坑是 Ubuntu 20.04 默认装了 openjdk-11,update-alternatives的优先级会把 8 挤掉,如果java -version显示的仍是 11,用sudo update-alternatives --config java手动切到 8。

3.2 手工补 libxp6 和 multiarch-support

Ubuntu 20.04 已经把libxp6从官方源里删了,但 Cadence 的图形界面还硬依赖它。同时multiarch-support在新版里也变成了过渡包。这两个得手动下 deb 装:

cd ~/Downloads wget http://ftp.br.debian.org/debian/pool/main/g/glibc/multiarch-support_2.28-10_amd64.deb sudo dpkg -i multiarch-support_2.28-10_amd64.deb wget http://launchpadlibrarian.net/183708483/libxp6_1.0.2-2_amd64.debsudo dpkg -i libxp6_1.0.2-2_amd64.deb

如果dpkg -i报依赖未满足,用sudo apt-get install -f收尾修复。这两个包是「装了不一定马上有用,不装一定在某一步崩」的典型,建议别跳过。

3.3 伪装发行版标识与建立软链接

Cadence 安装器会读/etc/redhat-release判断系统类型,Ubuntu 没这个文件,于是它要么报不支持的系统,要么走进奇怪的判断分支。直接造一个:

sudo bash -c 'echo "Red Hat Enterprise Linux release 6.12" > /etc/redhat-release' sudo chmod 777 /etc/redhat-release

权限给到 777 是因为部分安装脚本以非 root 身份读取它。

然后是软链接,这一步决定了一堆「找不到共享库」报错能不能消掉:

# termcap 兼容:ncursesw 改名后旧程序仍找 libtermcap sudo ln -s /lib/x86_64-linux-gnu/libncursesw.so.5.9 /lib/libtermcap.so.2 # OpenSSL 1.1 的库名和工具期望的 .so.6 对不上 cd /lib/x86_64-linux-gnu/ sudo ln -s libcrypto.so.1.1 libcrypto.so.6

第一条解决的是「libtermcap.so.2: cannot open shared object file」,Virtuoso 启动时会去 dlopen 这个库;第二条解决的是 license 工具和一些老二进制链接libcrypto.so.6的问题,Ubuntu 20.04 只有 1.1 版本的实体文件。软链接务必用绝对路径做,相对路径在/lib这种目录下容易指错。

再建好安装目录和临时目录,临时目录权限要放开,因为安装器会用非 root 身份往里面写:

sudo mkdir -p /opt/cadence /opt/mentor/Calibre2019 /opt/mentor/license sudo mkdir -p /usr/tmp sudo chmod -R 777 /usr/tmp

4. iscape 安装三件套:IC617、Spectre18、XCELIUMMAIN_18

4.1 从共享目录直接跑 iscape 的启动方式

这里和很多教程不一样:iscape 只是安装器,不需要拷贝进 Linux 文件系统,直接在共享目录里跑就行,省掉一次几 GB 的复制。进到共享目录的 bin 下执行:

cd /mnt/hgfs/CadenceIC/IScape04.23-s010lnx86/iscape.04.23-s010/bin sudo ./iscape.sh

启动后会弹出 Java 图形界面。如果界面上字体缺失或者出现方块,那是上一章的字体包没装或者没重启。如果界面根本不起,先在终端里确认java -version是 8。

4.2 IC617 的 HotFix 与 Base 安装顺序

安装顺序不能反:先装 HotFix 包,装完之后 iscape 会提示「缺少 Base」,这时再指到 Base 的目录把基础包叠加上去。反过来先装 Base 再装 HotFix,通常能装上,但版本号会显示异常,后续跑仿真容易出奇怪问题。

安装路径统一给/opt/cadence/IC617。中途有一个关键选择:当安装器问 OA(OpenAccess)的版本目录时,选 2,也就是让它用自己要装的那套 OA,路径记下来,通常是:

/opt/cadence/IC617/oa_v22.50.043

这个路径后面配环境变量要用,装的时候拿张纸记下来最稳。之后所有交互一路按确认(Enter/Next/Done)走下去即可,中途问「是否安装 License Server」选 n,license 我们单独在/opt/mentor/license里处理。

装完 IC617 后同样的流程装 Spectre18(老名字叫 MMSIM,目录名建议保持SPECTRE18不要带版本点号,省得环境变量里要转义)和 XCELIUMMAIN_18。XCELIUMMAIN 就是以前的 INCISIVE,做数模混合仿真用,它安装时对/usr/tmp的写权限敏感,如果报临时文件创建失败,回头检查上一章那条chmod -R 777 /usr/tmp。

注意:三个工具都装到/opt下,安装器会以 root 写文件,装完不要把整个/opt/cadence改成 777,正确做法是把当前用户加进一个组、把目录组权限设成可写,否则后续 license 工具会因为权限过宽拒绝启动。

4.3 环境变量:一份能直接抄的 cshrc

IC617 的 Virtuoso 用 csh 启动,所以环境变量要写进~/.cshrc而不是.bashrc。下面是四套工具一次配齐的写法:

# Cadence IC617 主目录 setenv CDS_INST_DIR /opt/cadence/IC617 setenv CDSHOME $CDS_INST_DIR setenv OA_HOME /opt/cadence/IC617/oa_v22.50.043 # Spectre18(原 MMSIM) setenv SPECTRE_HOME /opt/cadence/SPECTRE18 setenv MMSIM_HOME $SPECTRE_HOME # XCELIUMMAIN_18(原 INCISIVE) setenv XCELIUM_HOME /opt/cadence/XCELIUMMAIN_18 setenv CDS_XCELIUM_HOME $XCELIUM_HOME # Calibre19 setenv MGC_HOME /opt/mentor/Calibre2019 setenv CALIBRE_HOME $MGC_HOME # license setenv LM_LICENSE_FILE 5280@localhost # PATH set path = ($CDSHOME/tools/bin $CDSHOME/tools/dfII/bin \ $SPECTRE_HOME/bin $XCELIUM_HOME/bin \ $CALIBRE_HOME/bin $path)

参数逐个解释:OA_HOME必须精确指向 4.2 里记下的 OA 目录,指错版本会导致 Virtuoso 打开设计库时报 OA 版本不匹配;LM_LICENSE_FILE里的5280@localhost是 license 服务的端口和地址,端口要和后面 lmgrd 配置一致;path用$path前置追加,保证 Cadence 的spectre、xrun、calibre优先于系统同名命令。

写完执行source ~/.cshrc,然后用which spectre、which calibre、which xrun逐一确认能解析到/opt下的路径。

4.4 license 服务的起停与验证

license 文件放到/opt/mentor/license下,用 lmgrd 拉起:

cd /opt/mentor/license /opt/mentor/Calibre2019/bin/lmgrd -c license.dat -l /opt/mentor/license/lmgrd.log

-c指定 license 文件,-l指定日志文件路径,出了问题第一件事就是看这个日志。启动后另开终端验证:

lmstat -c 5280@localhost -a

能列出 feature 和到期时间就说明 license 通了。lmstat在 Calibre 的 bin 目录里带,如果没有就找 Cadence 自带的lmutil。日志里常见报错是Invalid hostid,说明 license 文件绑定的 MAC 地址和当前虚拟机网卡对不上,需要按当前ip link看到的 MAC 重新生成 license。

5. 常见问题与排查:五个真实遇到的故障

5.1 iscape 启动卡在 Splash 就退出

现象:执行./iscape.sh后窗口闪一下消失,终端没有任何报错。

原因:JDK 版本被系统默认的 11 或 17 抢了,iscape 用新版本 Java 跑不起来;少数情况是图形转发没配好。

解决:用java -version确认是 1.8,不是就跑sudo update-alternatives --config java选 8;如果是在 SSH 里跑的,加-X或者用ssh -Y,并确认本地有 X Server。

5.2 Virtuoso 启动报 libtermcap.so.2 找不到

现象:命令行敲virtuoso后直接抛error while loading shared libraries: libtermcap.so.2。

原因:3.3 里的软链接没做,或者做的是相对路径、在/lib下指向了错误位置。

解决:ls -l /lib/libtermcap.so.2检查链接是否有效,失效就删掉重做,源文件一定要写成/lib/x86_64-linux-gnu/libncursesw.so.5.9的绝对路径。如果这个文件本身不存在,先apt-get install --reinstall libncursesw5。

5.3 Calibre 装完打不开或启动即崩

现象:calibre -gui无输出退出,或提示 illegal instruction。

原因:CPU 不支持 AVX2,或者虚拟机没有把指令集透传给客户机。

解决:回到 2.3 的grep avx2 /proc/cpuinfo,没输出就只能换实体机或者换 Calibre 版本;有输出但虚拟机里没有,检查 VMware 处理器设置里的虚拟化选项。这个坑只能提前查,装完再发现就是浪费半天。

5.4 安装器报 /usr/tmp 写不进去

现象:安装中段报无法创建临时文件,或者装完的工具启动时报临时目录权限错误。

原因:/usr/tmp没有建,或者建了但权限是 755 导致非 root 用户无法写。

解决:sudo chmod -R 777 /usr/tmp,并确认安装时使用的用户对这个目录可写。有人图省事把TMPDIR指到/tmp,可以,但要在.cshrc里也设setenv TMPDIR /tmp,两处不一致就会出现「命令行能装、图形界面装不了」的分裂现象。

5.5 仿真跑起来但 license 报 feature 不足

现象:Spectre 或 Xcelium 启动时提示找不到对应 feature。

原因:LM_LICENSE_FILE没配、端口和 lmgrd 实际监听端口不一致,或者 license 文件里没有该工具的 feature。

解决:先lmstat -c 5280@localhost -a看整个过程是否正常,再确认.cshrc里LM_LICENSE_FILE的端口号。Cadence 系的工具习惯读CDS_LIC_FILE,如果LM_LICENSE_FILE配了还不行,补一条setenv CDS_LIC_FILE 5280@localhost,这个变量名在 IC617 和 XCELIUMMAIN 上都要设。

6. 上手验证:从管子的直流点到一次混仿

装完不跑一遍,等于没装。我的习惯是先做最小验证,再做跨工具链验证,出问题能立刻定位到是哪一层。

6.1 三个工具的最小自检

先确认二进制本身能起来,不涉及 design 和 license 的复杂调用:

# Virtuoso 版本(能弹出版本号说明库依赖全通) virtuoso -version # Spectre 版本 spectre -v # Calibre 版本 calibre -v # Xcelium 编译器的帮助(能出帮助说明 XCELIUMMAIN 装好了) xrun -help | head -20

四条都能出正常输出,说明前面章节的工作没白做。这一步建议在csh里跑,因为.cshrc的环境变量只在 csh 下生效;在 bash 里跑你会得到「命令找不到」,那是假故障。

6.2 用 Spectre 跑一个反相器的 DC 扫描

搭一个最小验证电路,不用画原理图,直接写网表最快。在~/test下建inv.scs:

// 反相器直流扫描,验证 Spectre18 与模型库 simulator lang=spectre global 0 include "/opt/cadence/SPECTRE18/tools/spectre/etc/models/xxx.scs" section=tt vdd (vdd 0) vsource dc=1.8 vin (in 0) vsource dc=0 mp (out in vdd vdd) pmos w=1u l=180n mn (out in 0 0) nmos w=500n l=180n dcSim dc dev=vin param=dc start=0 stop=1.8 step=0.05 save out

跑之前把include那行换成你手里的实际模型文件路径,这个路径因工艺库而异,没法给死。然后执行:

spectre inv.scs -format psfascii -raw ./psf

-format psfascii输出成文本格式方便直接看,-raw指定结果目录。跑完在psf里能看到dcSim.dc的扫描点。如果报模型文件找不到,是 include 路径问题;如果报 license,回 5.5 排查。

6.3 用 XCELIUMMAIN 验一次数字编译

数模混仿的前提是数字侧能编译通过。写个最小的 SystemVerilog:

// 最小 DUT,只为确认 xrun 工具链可用 module dut(input logic clk, input logic d, output logic q); always_ff @(posedge clk) q <= d; endmodule

用 xrun 做一次仅编译:

xrun -compile -sv dut.sv -work work_lib

-compile表示只编译不仿真,-work指定工作库名。能出「compilation complete」基本就说明 XCELIUMMAIN_18 的编译器和库路径都对了。这一步花的时间比跑完整混仿少得多,是排查问题的第一道闸。

6.4 一条值得坚持的检查顺序

从这三套软件的验证顺序里,我更倾向固定成「二进制版本 → license → 单工具最小用例 → 跨工具链」。理由很实际:这四个环节的故障表现高度相似,都是「命令没输出」或「启动即退出」,按固定顺序查,每次都能在五分钟内定位到层。跳过中间任何一步直接上完整混仿,一旦报错,你没法判断是模型问题、license 问题还是库链接问题。

提示:把上面四条版本命令和lmstat一起写成一个check_eda.sh,每次换机器、换虚拟机、系统升级之后先跑一遍,比事后翻日志快得多。

从那以后我每次装完一整套 EDA,都强制先走一遍「版本 + lmstat + 最小用例」,绝不允许自己直接开项目工程去试。这套流程踩过太多次坑才固化下来:一次是没查 AVX2 装完 Calibre 白忙一下午,一次是.cshrc里 OA_HOME 指错版本导致 Virtuoso 开库报错查了两小时。希望这些能帮你少走几步弯路,装好之后先从最小验证跑起,再拿真正的设计去压这套环境。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询