简介:这份文档面向需要在 Linux 桌面环境中搭建集成电路设计与验证流程的工程师及高年级学生,聚焦 Ubuntu 20.04 上安装 Cadence IC617(含 HotFix)、Spectre18、Calibre19 与 XCELIUMMAIN_18 的完整实现过程。内容按系统准备、依赖库补齐、安装介质组织、许可证配置、环境变量设置与启动验证的顺序展开,并说明 CPU AVX2 指令集、redhat-release 伪装、32 位兼容库等容易受阻的细节,帮助读者避免反复重装。
资源包仅含 1 个 docx 文档,约 3.08MB,以图文步骤与命令片段为主,便于随装随查、按章节对照操作;目前已有 7693 人学习。
读者可据此建立从裸机系统到仿真工具可用的完整流程认知,掌握库依赖排查与许可证服务配置思路,也可作为 CentOS 或 RedHat 之外采用 Ubuntu 路线的对照参考,适合具备基本 Linux 命令基础、希望独立完成 EDA 环境部署的模拟与数模混合设计学习者。
1. 从 iscape 闪退说起:Ubuntu 20.04 装 IC617 的第一道坎
第一次在 Ubuntu 20.04 上跑 iscape 装 Cadence IC617,窗口闪了一下就没了,终端里除了一个光标什么都没留下。翻日志才明白,真正拦住我的是系统里几条老库的软链接,并非安装包本身。这套 Cadence IC617 加 Spectre18、Calibre19、XCELIUMMAIN_18 的组合在模拟和数模混合设计里太常见,但 Ubuntu 并非它的原生宿主:依赖没补齐,iscape 起不来;AVX2 没确认,Calibre19 装完也打不开;license 变量写错一个字母,四套工具全部无法使用。下面按我实际跑通的顺序来写,先核对机器,再补依赖和伪装,然后进 iscape 装四件套,最后说清楚哪里容易出问题、装完怎么验证。
2. 装前把底子打好:虚拟机规格、AVX2 指令集与 VMware Tools
2.1 内存、磁盘、主机名:虚拟机规格先定死
这套工具对机器的要求其实不算离谱,但对“余量”特别敏感。iscape 解压安装包时会往临时目录里写大量中间文件,Calibre 的规则文件解压后体积也不小,root 分区给紧了,装到一半出现No space left on device,前面一小时的等待基本就白费了。我一般按下表给配置,宁可在磁盘上多给 20G,也不要中途扩容。
| 项目 | 最低 | 我实际用的 | 说明 |
|---|---|---|---|
| CPU | 2 核 | 4 核 | 核数影响 iscape 解包和 Calibre 规则编译速度 |
| 内存 | 4GB | 8GB | Spectre 跑瞬态仿真时 4GB 很容易触发交换 |
| 磁盘 | 60GB | 100GB | /opt下四套工具装完大约占 30~40GB |
| 网络 | 可联网 | NAT | 装依赖包时要用 apt 源 |
| 共享目录 | 装完再加 | 装完再加 | 安装过程中先别挂,避免路径打架 |
系统安装时选英文、最小化安装就行。主机名(Your computer's name)不要沿用默认的,取一个新名字,后面 license 绑定和终端提示符区分机器时会省事。安装向导里如果出现“是否添加共享文件夹”的选项,先不要勾选——这里说的“先别加”,意思是 Ubuntu 系统装完之后、VMware Tools 装好之后,再回到虚拟机设置里添加共享目录,指向宿主机上放安装包的那个全英文路径文件夹。安装包所在路径带中文,后面 iscape 在共享目录里跑脚本时会出各种莫名其妙的读取失败,这一点很容易被忽略。
最小化安装不代表没有桌面,X 环境是必须的,iscape 是图形安装器,纯命令行装不了。装完第一件事是关掉“开机自动挂载光盘”,否则每次重启都会弹出光盘挂载提示,干扰后续操作。
2.2 用 lscpu 查 AVX2,这是 Calibre19 的硬门槛
这一步很多人跳过,然后在 Calibre 上卡半天。Calibre19 的部分二进制用到了 AVX2 指令集,CPU 不支持的话,安装过程可能直接失败;更麻烦的是安装过程看起来正常,等到启动时却只弹一句Illegal instruction (core dumped),让人误判成库缺失。
# 有输出说明支持,没有输出就是不支持 grep -m1 -o 'avx2' /proc/cpuinfo # 顺带看一眼虚拟化标志,虚拟机里必须有 vmx 或 svm 之一 lscpu | grep -E 'Model name|Flags' | head -3grep -m1表示匹配到第一个就停,避免把整行 flags 全打出来。如果第一条命令没有输出,就不要在 Calibre19 上继续尝试了,换 Calibre20 或者换一台物理 CPU 支持 AVX2 的机器,是更省时间的做法。
虚拟机里还有额外一坑:宿主机 CPU 明明支持 AVX2,客户机里却查不到。常见原因是虚拟机的 CPU 兼容性被设成了老版本(比如 6.x 之类),或者没有勾选“虚拟化 Intel VT-x/EPT”。把虚拟机关机,在处理器设置里把虚拟化引擎相关选项全部勾上,CPU 兼容性选宿主机模式,再开机重新查一遍。改完这一项之后,Calibre19 才能在这台虚拟机上跑起来。
2.3 换源、更新与 VMware Tools 装完再碰安装包
系统起来后先换软件源。桌面环境下打开 Software updater,进 Settings,在 Ubuntu Software 页签里把 Download from 改成 Other,点 Select best server 让它自己测速,然后 Reload。命令行对应的动作是:
sudo apt update sudo apt upgrade -y-y是自动确认,升级过程中不会停下来问你要不要继续。升级完建议重启一次,内核更新后不重启,后面装 VMware Tools 编译模块时容易报找不到头文件。
共享目录依赖 VMware Tools,所以顺序是:先装 VMware Tools,再添加共享文件夹,最后才动 iscape。
# 1. 建一个专门放安装文件的目录 mkdir -p ~/Desktop/tools # 2. 把光驱里的 VMware Tools 包解压进去 sudo tar -zxvf /media/cdrom/VMwareTools-10.3.22-15902021.tar.gz -C ~/Desktop/tools/ # 3. 进目录执行安装脚本,一路回车用默认值即可 cd ~/Desktop/tools/vmware-tools-distrib sudo ./vmware-install.pl # 4. 重启,共享目录才会出现在 /mnt/hgfs 下 sudo reboot-C指定解压目标目录,不加的话会解压到当前目录,后期找起来很乱。vmware-install.pl会问一堆问题,包括是否启用文件共享、是否启用拖拽,全部按回车接受默认值就够了,只有最后一项“是否立即运行配置”不要打断。重启后执行ls /mnt/hgfs/应该能看到你在虚拟机设置里添加的那个共享目录名,看不到就回虚拟机设置里检查“共享文件夹”是否设成了“总是启用”。
3. 依赖库与系统伪装:让 IC617 和 Calibre19 以为自己在 RHEL 上
3.1 一条命令装齐的基础包
这套工具的安装脚本和 license 工具是按 RHEL 时代的软件栈写的,Ubuntu 20.04 上要补的包大致分四类:shell、Java、X11 相关库、字体。我习惯一次装完,避免装到一半再回头补:
sudo apt-get install -y \ ksh csh \ openjdk-8-jre openjdk-8-jdk \ xterm libncursesw5-dev \ libxtst6:i386 libxi6:i386 \ python net-tools \ libstdc++6 lib32stdc++6 \ xfonts-75dpi xfonts-100dpi逐个说清楚为什么装:ksh和csh是安装脚本和部分启动脚本的解析器,缺了会在 iscape 执行阶段报bad interpreter;openjdk-8是 license 配置工具和部分图形界面的运行依赖,装 JDK 是因为后面要用javac验证环境;xterm是很多工具的默认终端回退;libncursesw5-dev提供终端界面支持;libxtst6:i386和libxi6:i386是 32 位 X 扩展库,Calibre 和部分 Cadence 组件仍带 32 位二进制;net-tools提供ifconfig和netstat,license 排查时会用到;libstdc++6和lib32stdc++6是 C++ 运行库的新旧两套,都装上比较保险。
xfonts-75dpi和xfonts-100dpi专门解决 Calibre 界面字体糊成一团的问题,装完要重启 X 或者直接重启系统才生效——只重启终端是不管用的,字体缓存在会话启动时就加载了。
关于python:Ubuntu 20.04 里这个包名有时会提示找不到候选版本。遇到这种情况,常见做法是装python2,或者直接sudo apt install python-is-python2把python命令指过去。Cadence 的一些老脚本里写死了#!/usr/bin/python,没有这个命令就会在配置阶段直接退出。
3.2 32 位库、libxp6 与 multiarch-support 的手工补包
上面那串命令里带:i386的包,前提是系统已经启用 32 位架构支持。如果安装时提示“无法定位软件包”,先执行:
sudo dpkg --add-architecture i386 sudo apt update sudo apt-get install -y libxtst6:i386 libxi6:i386--add-architecture是往 dpkg 的架构列表里登记 i386,不登记的话 apt 根本不会去 32 位仓库里找包。
接下来是libxp6,Ubuntu 20.04 的官方源里已经把它移除了,但 iscape 和 Calibre 的图形界面都依赖它。只能手工下 deb 包再装:
# 先补 multiarch-support,很多老包依赖它 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 # 再装 libxp6 wget http://launchpadlibrarian.net/183708483/libxp6_1.0.2-2_amd64.deb sudo dpkg -i libxp6_1.0.2-2_amd64.deb # 万一 dpkg 报依赖不满足,用这条命令补齐 sudo apt -f installdpkg -i只负责解包和注册,不管依赖;apt -f install才会去仓库里找缺失的依赖补上。这两个包装完可以用dpkg -l | grep -E 'multiarch|libxp6'确认状态是ii。
如果下载链接已经失效,也可以直接在本地找同一个 deb 包,用sudo dpkg -i安装,效果一样,不必纠结版本号完全一致。
3.3 Java 8 的环境变量写进 /etc/profile
Java 装完先确认:
java -version正常输出里应该带1.8.0_xxx和OpenJDK 64-Bit Server VM。然后编辑全局配置文件:
sudo gedit /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让它立即生效。这里选择/etc/profile而不是~/.bashrc,是因为 iscape 用sudo ./iscape.sh启动,sudo 默认不继承当前用户的环境变量,写在用户级配置文件里,安装器就看不到JAVA_HOME,会在启动阶段报 Java 相关错误。写进全局配置后,所有用户和 sudo 环境都能读到,这属于在配置阶段就提前规避问题。
CLASSPATH末尾带了:$CLASSPATH,是为了不覆盖系统原有的类路径,这种写法在多工具共存的环境里更稳妥。
3.4 redhat-release、/usr/tmp 与四条软链接
Cadence 的安装器会读/etc/redhat-release判断发行版,Ubuntu 上没有这个文件,读不到就直接退出。做法是自己造一个:
# 1. 建立安装目录,路径和后面 iscape 里填的保持一致 sudo mkdir -p /opt/cadence sudo mkdir -p /opt/mentor/Calibre2019 sudo mkdir -p /opt/mentor/license # 2. 伪造发行版标识文件 sudo sh -c 'echo "Red Hat Enterprise Linux release 6.12" > /etc/redhat-release' sudo chmod 777 /etc/redhat-release # 3. 安装器要用到的临时目录,权限必须放开 sudo mkdir -p /usr/tmp sudo chmod -R 777 /usr/tmp # 4. 三条库软链接,缺一不可 sudo ln -s /usr/bin/mawk /bin/awk sudo ln -s /usr/bin/basename /bin/basename sudo ln -s /lib/x86_64-linux-gnu/libncursesw.so.5.9 /lib/libtermcap.so.2 cd /lib/x86_64-linux-gnu sudo ln -s libcrypto.so.1.1 libcrypto.so.6/etc/redhat-release的权限之所以要放开,是因为安装器在部分阶段会以非 root 身份回读这个文件。/usr/tmp给 777 不是好习惯,但在这个一次性环境里能省掉很多“Permission denied”,装完工具之后可以把权限收回去。
四条软链接分别对应不同问题:/bin/awk指向mawk,Ubuntu 默认的 awk 是mawk的替代品,但 Cadence 脚本硬编码了/bin/awk路径;basename同理,某些精简系统里/bin/basename不存在;libtermcap.so.2指向libncursesw.so.5.9,这是终端界面库的新旧命名差异,缺了 iscape 一启动就闪退;libcrypto.so.6指向libcrypto.so.1.1,是 OpenSSL 版本跨度导致的,安装器里的 license 组件会去找.6这个旧名字。
libncursesw.so.5.9的实际文件名在不同补丁版本里可能是libncursesw.so.5,执行前先用ls /lib/x86_64-linux-gnu/ | grep ncursesw看一眼真实文件名,再照着改软链接的源路径,硬套命令容易报“文件不存在”。
4. iscape 装四件套:IC617、Spectre18、XCELIUMMAIN_18 与 Calibre19 的落地顺序
4.1 iscape 从共享目录直接跑,不落地
iscape 只是个安装器,不需要拷进 Linux 系统,直接在共享目录里执行就行,这样省掉一次几十 G 的拷贝。前提是共享目录已经挂好:
# 先确认共享目录挂上了 ls /mnt/hgfs/ # 进入 iscape 的 bin 目录执行 cd /mnt/hgfs/CadenceIC/IScape04.23-s010lnx86/iscape.04.23-s010/bin sudo ./iscape.sh路径里的CadenceIC是宿主机上那个共享目录的名字,按自己实际情况改。共享目录名和里面的路径都保持纯英文,中文路径在这个环节几乎必然出问题。
用sudo启动图形程序会遇到cannot open display的问题。常见做法是先执行xhost +,放开 X 访问权限,再用sudo -E ./iscape.sh保留当前环境变量。-E的作用是把DISPLAY、JAVA_HOME这些变量透传给 root 环境,否则 iscape 找不到显示服务,窗口根本弹不出来。
安装器打开后选 Install from archive,然后指向你想要安装的那个包的目录。四个工具走的是同一个流程,区别只在选中的 archive 和最后填的安装路径。
4.2 IC617 的 HotFix 与 Base CD:顺序和 /opt/cadence 目录规划
IC617 的安装包分成两部分,HotFix 和 Base。这里的顺序比较反直觉:先装 HotFix,安装器在装完之后会弹出一个提示,问你还要不要添加 Base CD,这时候选添加,把 Base 的路径指过去,安装器会自动把 Base 的内容合并进同一个安装目录。如果先装 Base 再补 HotFix,部分补丁文件会覆盖顺序错乱,后面启动工具可能报版本不一致。
具体在向导里:选择 HotFix 的 archive 目录,安装路径填/opt/cadence/IC617,走到最后会提示“add base CD”,选 2 表示添加,然后填入 Base 包的路径;后面再问是否继续添加其他 CD 时选 n。整个流程里其余选项全部按回车确认,最后点 Done,不要点 Cancel。
安装器结束时会打印一个路径,形如/opt/cadence/IC617/oa_v22.50.043,这个oa_目录是 OpenAccess 数据库的版本目录,把它记下来。后面配环境变量、查工具版本、排查“打开原理图报 OA 版本不匹配”时都要用到它。
安装过程中如果卡在某个组件很久不动,别急着杀进程,先另开一个终端df -h看磁盘和free -m看内存。iscape 解包时会短暂占用大量临时空间,磁盘满了的表现就是界面一直转圈但进度不动。
4.3 Spectre18 与 XCELIUMMAIN_18 的安装选项
Spectre18 就是以前的 MMSIM,负责模拟仿真;XCELIUMMAIN_18 是以前的 INCISIVE,负责数模混合仿真。两个都走 iscape 同一套流程,只是 archive 目录不同,安装路径建议分开:
# 目录先建好,安装器不会自动创建 sudo mkdir -p /opt/cadence/SPECTRE18 sudo mkdir -p /opt/cadence/XCELIUMMAIN_18路径分开的好处是升级和回滚互不影响。如果把 Spectre 叠在 IC617 目录里,将来只换仿真器就要动整个 IC 安装目录,风险太大。填路径时直接写上面这两个,其余选项保持默认,一路确认到 Done。
XCELIUMMAIN_18 的安装包里包含多个子组件,iscape 会让你勾选要装的部分。全勾上最省事,代价是磁盘占用大一些;如果只想跑混仿,至少要保证仿真引擎和 license 客户端这两块被勾选,漏勾 license 客户端的话,工具能启动但一跑仿真就报找不到 license。
装完这两个,/opt/cadence下应该有三个目录:IC617、SPECTRE18、XCELIUMMAIN_18。用du -sh /opt/cadence/*看一下体积,IC617 通常最大,Spectre 次之,如果某个目录只有几百 K,说明那次安装其实没写进去,需要重装。
4.4 Calibre19 与 license 变量:四套工具共用的那一段配置
Calibre19 的安装包结构和 Cadence 的不一样,通常是解压后进入目录执行安装脚本,脚本名各年份略有差异,一般是install或者带版本号的安装文件,照着提示把安装路径指到/opt/mentor/Calibre2019就行。装之前再确认一次 AVX2 是能查到的,这一步在 2.2 节做过,但换过虚拟机或者改过 CPU 兼容性的话要重查。
四套工具的 license 都走 FlexNet 体系,为了少踩坑,我一般把 license 文件统一放到/opt/mentor/license,用lmgrd起一个服务,端口用 5280(这是常见默认值,改端口要同步改下面所有变量)。环境变量写进~/.bashrc:
# Cadence 系工具的 license 变量 export CDS_LIC_FILE=5280@localhost export LM_LICENSE_FILE=5280@localhost:$LM_LICENSE_FILE # Calibre 用的变量名不一样,必须单独写 export MGLS_LICENSE_FILE=5280@localhost # 四套工具的可执行路径 export PATH=/opt/cadence/IC617/tools/bin:$PATH export PATH=/opt/cadence/SPECTRE18/bin:$PATH export PATH=/opt/cadence/XCELIUMMAIN_18/tools/bin:$PATH export PATH=/opt/mentor/Calibre2019/bin:$PATHCDS_LIC_FILE是 Cadence 专用变量,MGLS_LICENSE_FILE是 Calibre 专用变量,两个名字不能混用,把 Cadence 的 license 写进MGLS_LICENSE_FILE里,Calibre 会一直报拿不到授权。LM_LICENSE_FILE是通用变量,作为兜底保留。
PATH里的具体子目录(tools/bin、bin)要按实际安装结果核对,用ls /opt/cadence/IC617看一眼真实结构再写,照抄网上的路径很容易指向不存在的目录。写完执行source ~/.bashrc,再用which virtuoso、which spectre确认能解析到路径。
5. 避坑排查:装这套环境时最常翻车的五处现场
5.1 安装器和启动阶段的三个报错
现象一:sudo ./iscape.sh执行后没有任何窗口,终端直接返回。原因基本是libtermcap.so.2缺失,安装器的终端界面库加载失败后静默退出,日志里只有一行error while loading shared libraries。解决就是回到 3.4 节补上那条指向libncursesw.so.5.9的软链接,然后用ldd验证:ldd $(which iscape.sh)里不应再有not found。补完链接还是不行,就用sudo -E ./iscape.sh重试,把DISPLAY带进 root 环境。
现象二:iscape 界面能打开,但选完 archive 目录后提示“无法读取安装包”。原因是共享目录的挂载路径里带了中文或者空格,安装器解析路径时截断。解决是把宿主机上的安装包目录改成全英文名字,重新在虚拟机设置里指向它,然后ls /mnt/hgfs/目录名/确认能列出来。另一种可能是共享文件夹被设成了“仅启用一次”,重启后就失效了,改成“总是启用”。
现象三:IC617 装到一半提示磁盘空间不足,界面卡死。这就是 2.1 节说过的余量问题。df -h看一眼,/或者/opt满了。解决是先清理/usr/tmp下的残留文件,把虚拟机磁盘扩容后重新分区,再从头装一遍。中途强行继续只会得到一堆不完整的组件,后面更难排查。
5.2 运行阶段的三个坑
现象四:calibredrv一启动就Illegal instruction (core dumped)。现象看着像库缺失,实际是 CPU 不支持 AVX2。回 2.2 节执行grep -m1 -o 'avx2' /proc/cpuinfo,没有输出就说明这条路走不通,换 Calibre20 或者换机器。虚拟机里查不到 AVX2 但宿主机支持的,关机后把 CPU 兼容性改成宿主机模式再开机。
现象五:工具全部能启动,但一跑仿真就提示没有 license。先lmstat -a -c 5280@localhost看 license 服务是否在跑,再看~/.bashrc里变量名有没有写错。最常见的错是把 Calibre 的MGLS_LICENSE_FILE写成了LM_LICENSE_FILE,或者source ~/.bashrc之后没有新开终端。另一个高频原因是 license 文件里的主机名和hostname输出不一致,hostname查一下,对不上就改 license 文件里的 SERVER 行。
现象六:Calibre 的界面字体糊成一团,菜单文字重叠。xfonts-75dpi和xfonts-100dpi没装,或者装了没重启。dpkg -l | grep xfonts确认状态是ii,然后重启系统。只重启终端没用,字体缓存在 X 会话启动时加载。
6. 装完怎么验证:四条命令确认四套工具真的跑起来了
装完不要急着删安装包,先花十分钟做一轮自检。顺序是:先确认环境变量生效,再逐个启动工具,最后看 license 是否被正确借用。
# 新开一个终端,让 .bashrc 完整生效 source ~/.bashrc # 1. 路径解析,四条命令都应该输出绝对路径 which virtuoso which spectre which xrun which calibredrv # 2. license 服务状态,能看到 Issued/In use 才算通 lmstat -a -c 5280@localhost | head -20which没有输出说明PATH里的目录写错了,回 4.4 节用ls核对真实目录结构。lmstat报Cannot connect to license server就先确认lmgrd进程在不在,ps -ef | grep lmgrd查一下。
再逐个启动工具,看的是“能不能进主界面”而不是“能不能跑完整流程”:
| 工具 | 验证命令 | 正常表现 |
|---|---|---|
| IC617 | virtuoso & | 弹出 CIW 窗口,命令行无 license 报错 |
| Spectre18 | spectre -W | 输出版本号和可用分析类型 |
| XCELIUMMAIN_18 | xrun -version | 输出版本号,退出码为 0 |
| Calibre19 | calibredrv -version | 输出版本号,不出现 Illegal instruction |
virtuoso &后面的&是放到后台,这样终端还能继续用,CIW 窗口关掉后进程才退出。如果 CIW 起来了但标题栏显示的是virtuoso (no license),那就还是 license 问题,回 5.2 节的现象五。
最后跑一个最小闭环:在 CIW 里新建一个空白原理图,保存;然后 Spectre 对一个最简单的反相器网表跑一次spectre netlist.scs,能出结果文件就说明仿真链路是通的。这一步花不了几分钟,但能提前暴露“工具能开、仿真跑不了”这类隐性故障。
从那以后我每次装完这套环境,不管多晚,都强制把which四条加lmstat一条先跑一遍,再开图形界面——因为最容易出问题的永远是环境变量和 license 这两层,而它们的故障表现又最像“软件装坏了”。上面这套流程我照着走过不止一遍,Ubuntu 20.04 上装 IC617、Spectre18、Calibre19、XCELIUMMAIN_18 是可以稳定跑通的,希望帮到你。
本文还有配套的精品资源,点击获取