把Sentaurus TCAD装明白这件事,我前后折腾过好几轮。2018版和2025版虽然都叫Sentaurus,但底层依赖、许可证机制、启动方式都有不小差异,网上能找到的教程大多只讲单版本,而且经常卡在某一两个步骤就断片了。这篇直接把两个版本的安装与配置过程铺开讲透,从系统准备、安装器使用、许可证服务、环境变量到跑通第一个例子,全部按我实际操作过的路径来写,适合正在部署Sentaurus TCAD的EDA工程师、课题组管理员,以及被这两个版本折磨过的研究生。
这一篇承接前面的准备工作,重点是安装与配置环节。无论你是从Synopsys官方渠道拿到的安装包,还是实验室内部拷贝的离线包,下面这些步骤都能对应上。
1. 装之前先想清楚版本关系和系统底子
很多人在安装环节翻车,根源不是命令输错,而是没搞明白Sentaurus 2018和2025对系统环境的诉求完全不同。2018版的时代背景是RHEL 6/7横行的时期,2025版则明显面向更新的内核和库环境。你手里如果是一台刚装的Ubuntu 22.04或者RHEL 9,拿2018的安装包直接跑,大概率会在库依赖上卡死。
1.1 为什么要把两个版本放在一起讲
这两个版本在同一个实验室共存是非常普遍的场景。原因很简单:工艺校准文件、旧项目脚本、PDK里的某些模型可能只验证过2018版;而新流片项目需要的先进模型、新的数值算法又只有2025版支持。很多组里的做法是保留2018跑旧项目,用2025跑新项目,两者共用同一套许可证服务。
所以安装配置时不能只顾一个版本,目录规划、环境变量、许可证指向都要考虑到双版本共存的场景。我下面讲的路径方案,就是按“Sentaurus 2018和2025装在同一个根目录下、通过独立配置文件精准切换”来设计的。
1.2 系统环境与依赖库核对清单
装之前先花半小时核对系统环境,比装了以后瞎猜报错要高效得多。把下面这张表对照你的系统过一遍:
| 检查项 | Sentaurus 2018 | Sentaurus 2025 |
|---|---|---|
| 操作系统建议 | RHEL 6/7、CentOS 7 | RHEL 8/9、Ubuntu 20.04+ |
| glibc版本 | 已在旧系统验证,新系统常缺旧兼容库 | 需要较新的glibc 2.28以上 |
| 位数 | 必须x86_64 | 必须x86_64 |
| 内存 | 16GB起,32GB更舒服 | 32GB起,三维器件仿真建议64GB |
| 磁盘空间 | 完整安装约30GB | 完整安装约60GB以上 |
| X11图形库 | libX11、libXext、libXt | 还需要libxft、libxinerama |
| 编译相关 | gcc 4.8兼容性 | 对老gcc依赖减少,Python 3.9+ |
最稳妥的做法:准备一台干净的CentOS 7专门跑2018,另准备一台RHEL 8或Ubuntu系统跑2025。如果必须装在同一台机器上,注意2018在RHEL 8上运行时经常遇到libjpeg.so.62这类老库缺失的问题,需要手动补装libjpeg62兼容包。我自己的主力机器是RHEL 8.8,实测通过补装几个旧库可以让两个版本都正常工作。
1.3 许可证服务是前置条件,不是后补选项
Sentaurus TCAD的许可证走的是Synopsys Common Licensing机制,SCL版本必须跟主程序年份配套。2018版通常配SCL 2018.x,2025版配更新的SCL版本。你要是把旧SCL拿去给2025用,经常会出现feature识别不了的问题。
装主程序之前,我建议先把许可证服务和license文件准备好。也就是说,安装顺序应该是:SCL许可证工具 → 2018主程序 → 2025主程序 → 配置环境。这样两个版本都能在安装后立刻验证许可证连通性,而不是装完了才发现改用哪个SCL都别扭。
2. 解开安装包,目录结构和安装器使用
Sentaurus的安装介质是以压缩包形式提供的,解压出来以后里面有一个安装器(通常是installer或setup.sh),通过它来选择安装路径和产品组件。直接复制解压后的文件夹就指望能跑,这是不可能的,因为Sentaurus对目录组织有严格约定,必须通过安装器来登记产品信息。
2.1 安装包怎么摆放最不容易出错
我习惯把路径规划成下面这种结构:
/opt/synopsys/ ├── scl/ # 许可证工具 │ └── 2018.06 ├── sentaurus/ │ ├── 2018.12 │ └── 2025.03 └── license/ └── synopsys.dat/opt/synopsys作为统一的软件根目录,scl单独放,不同年份的Sentaurus互不覆盖。下载的安装包我建议放在/tmp/installpkg/下统一解压,不要直接在home目录里解压几十GB的东西,否则后续权限和路径都会很混乱。
创建必要的目录并赋权:
sudo mkdir -p /opt/synopsys/scl sudo mkdir -p /opt/synopsys/sentaurus sudo mkdir -p /opt/synopsys/license sudo chown -R $USER:$USER /opt/synopsys这里直接把/opt/synopsys归属到当前用户,后面安装和配置都不需要反复sudo。实验室环境如果多人共用,也可以设成staff用户组。
2.2 用Synopsys Installer做安装
把2018安装包解压后,进入目录找到安装器。老版本目录里一般有installer这个可执行文件,新版本目录里可能是setup.sh。图形界面模式下直接运行:
cd /tmp/installpkg/sentaurus2018 ./installer安装器会弹出图形界面,按提示选择产品根目录/opt/synopsys/sentaurus/2018.12,勾选需要的组件。这里建议一次性把Sentaurus Workbench、Sentaurus Process、Sentaurus Device、Sentaurus Structure Editor、Sentaurus Visual、Parasitic Extraction这些常用模块都选上,免得后面用到时才发现某个子模块没装。
服务器环境没有图形界面时,用silent模式:
./installer -i silent -g -c /tmp/install.confsilent模式需要一个配置文件,里面写明安装根目录、要装的模块、license server地址等。配置项的具体写法不同安装器版本有差异,最简单的方式是先在图形界面下保存一份配置文件,之后所有机器复用。安装过程会比较久,2018版大概需要20到40分钟,2025版在包含全部文档的情况下可能会超过一小时,耐心等输出日志结束。
2.3 验证安装目录结构
安装完成后,检查一下目录结构,确认平台目录和关键可执行文件已经生成。这是我常用的验证方法:
ls /opt/synopsys/sentaurus/2018.12/bin/swb ls /opt/synopsys/sentaurus/2025.03/bin/swb ls /opt/synopsys/sentaurus/2018.12/platforms/linux64/gcc-4.8/bin/ | head如果platforms/linux64下面没有可执行的二进制文件,说明平台组件没装完整,或者说安装时的system selection没选对。Sentaurus对“平台”很敏感,安装时会检测系统类型并选择对应的linux64平台。你可以在platforms/目录下看到linux64、linux等子目录,x86_64机器一定要确保选择了linux64。
3. 许可证服务配置,必须在一开始就搞定
许可证问题占了Sentaurus安装报错的一大半。见过太多人环境变量没设对、license server没起、feature不匹配就在那干等,最后反复重启也没用。这一节把许可证配置的完整链路走一遍。
3.1 SCL工具与lmgrd服务的启动
SCL工具包里面最重要的是lmgrd和lmstat。启动许可证服务前,先确认license文件里包含了Sentaurus相关feature,并且路径没写错。Synopsys license文件通常把feature、daemon路径、server行都放在一个.dat文件里。
我习惯用一个独立的子目录放license启动相关文件:
mkdir -p /opt/synopsys/license cp /path/to/synopsys.dat /opt/synopsys/license/ cd /opt/synopsys/license /opt/synopsys/scl/2018.06/linux64/bin/lmgrd -c synopsys.dat -l /opt/synopsys/license/lmgrd.log其中-l参数非常重要,它把lmgrd的运行日志写到文件里。许可证连不上时,第一件事就看这个日志,它会直接告诉你端口冲突、feature错误这类信息,比瞎猜强得多。
3.2 端口与防火墙的配合
license server监听端口一般默认是27020,但很多时候你在license文件里会看到27020@hostname的形式。这里有个很容易踩的坑:服务器名解析。lmgrd启动后需要确认主机名能正确解析回本机IP,否则客户端连不上。
验证监听端口是否就绪:
netstat -an | grep 27020如果状态不是LISTEN,检查lmgrd进程是否存活,日志里有没有报端口被占用。如果开启了防火墙,务必放行TCP 27020端口:
sudo firewall-cmd --permanent --add-port=27020/tcp sudo firewall-cmd --reload客户端机器不需要对外开放端口,只要客户端能访问服务器的27020端口就行。
3.3 用lmstat验证feature
许可证服务启动后,用lmstat主动验证,不要直接跑去启动Sentaurus然后等报错。验证命令:
/opt/synopsys/scl/当前版本号/linux64/bin/lmstat -a -c /opt/synopsys/license/synopsys.dat输出信息里会列出所有已启动的vendor daemon,以及已经checkout的feature。重点检查跟TCAD相关的feature是否可见,比如SentaurusProcess、SentaurusDevice这类名称。如果lmstat根本找不到vender daemon,绝大多数情况是license文件里的daemon路径指向了错误位置,或者SCL版本不对。
提示:同一个license文件同时服务2018和2025两个版本,只要feature名称覆盖了新老版本需求即可,不需要为每个版本单独开一套服务。维护一套server能省掉很多管理精力。
4. 环境变量与多版本切换脚本
环境变量配置决定了系统能否找到Sentaurus的可执行程序,也是多版本共存的核心。很多人直接把环境变量写进~/.bashrc,两套配置互相覆盖,最后连which swb指向哪个版本都搞不清楚。
4.1 基础环境变量解析
Sentaurus运行依赖几个核心变量:STROOT指向Sentaurus安装根目录,STDB指向数据库目录,PHOME是用户home路径,STWORK是工作目录,SNPSLMD_LICENSE_FILE指向许可证。以2018版为例:
export STROOT=/opt/synopsys/sentaurus/2018.12 export STDB=/opt/synopsys/sentaurus/2018.12 export PHOME=$HOME export STWORK=$HOME/sentaurus_work export SNPSLMD_LICENSE_FILE=27020@localhost export PATH=$STROOT/bin:$STROOT/platforms/linux64/gcc-4.8/bin:$PATHSNPSLMD_LICENSE_FILE可以直接指向端口加主机名,也可以指向license文件的全路径。建议用端口形式:27020@localhost,这样换license文件时不用改环境变量。
STWORK目录需要提前建好,Sentaurus运行过程中会产生大量临时文件,路径里绝对不能有中文和空格,否则仿真到一半就会报莫名其妙的文件错误。
4.2 独立配置文件,避免版本间互相干扰
我强烈建议不要把所有版本的环境变量混在一起写到.bashrc里。正确做法是给每个版本建一个独立的配置文件,比如~/.sentaurus2018和~/.sentaurus2025:
# ~/.sentaurus2018 export STROOT=/opt/synopsys/sentaurus/2018.12 export STDB=$STROOT export PHOME=$HOME export STWORK=$HOME/sentaurus_work export SNPSLMD_LICENSE_FILE=27020@localhost export PATH=$STROOT/bin:$STROOT/platforms/linux64/gcc-4.8/bin:$PATH然后在.bashrc里加两个alias:
alias sentaurus2018='source ~/.sentaurus2018' alias sentaurus2025='source ~/.sentaurus2025'用哪个版本就source哪个。开另一个终端跑另一个版本,互不干扰。这种做法在多用户服务器上特别有用,别人加载自己的版本不会影响你的环境。
4.3 版本切换时的残留变量陷阱
切换到2025版时,如果旧终端里已经export过STROOT等变量,新source的配置可能不会覆盖干净。我遇到过切换后echo $STROOT还是旧路径,导致swb启动的是2018版的情况。
解决方法是给配置文件开头加一行unset:
unset STROOT STDB PHOME STWORK这样才能保证切换彻底。另外,PATH变量会有累积问题,切版本的时候确认一下which swb的输出来源,如果不对就重开终端再source。
5. 从SWB到命令行:跑通一个最小仿真
配置完成后不急着直接上大项目,先跑通一个最小仿真,验证2018和2025两个版本都能正常计算。这步能筛掉90%的安装配置问题,比如许可证端口不对、库依赖缺失、平台目录选错等等。
5.1 启动Sentaurus Workbench
SWB是Sentaurus的图形化集成环境,也是绝大多数人日常使用的主入口。在source对应版本的环境后,输入:
swb &如果一切正常,会弹出SWB主窗口。第一次启动可能出现启动慢或白屏的情况,一般是X11库问题。远程连接的场景下,检查DISPLAY变量是否正确:
echo $DISPLAY在本地图形界面环境,DISPLAY通常等于:0;远程SSH做X11转发时会自动设置。如果没有图形环境,可以用VNC起一个虚拟桌面,再跑SWB。
5.2 用命令行方式跑完一个PN结二极管仿真
不依赖SWB的话,也可以用命令行方式直接验证架构。我常用的最小验证是:用sprocess做一个简单的PN结,然后用sdevice跑电流电压特性,最后用svisual看结果。
在临时目录新建一个pn_sim文件夹:
mkdir -p $STWORK/pn_sim && cd $STWORK/pn_sim准备一个最简的SProcess命令文件,内容大致包含:初始化网格、定义硅衬底、高斯掺杂形成P区和N区、保存结构文件。因为不同版本工具箱命令差异不大,这份文件在2018和2025上都能跑。
执行验证:
sprocess pn_dio.cmd命令正常结束说明sprocess引擎没问题。接着准备SDevice的命令文件,加载刚才生成的结构,设定简单边界条件,跑完输出I-V数据点:
sdevice pn_dio_des.cmd最后打开TDR数据图:
svisual -n pn_dio_des_0001.tdr &这个流程跑通,说明安装配置基本没问题了。
注意:SProcess这类计算工具在多节点并行情况下依赖MPI环境,默认单核跑没有问题。如果之后要开并行仿真,记得检查MPI库版本和Sentaurus内置MPI之间的兼容性。
5.3 新旧版本命令行工具的差异提醒
2025版的命令行工具在脚本解析上比2018版更严,尤其对参数拼写、单位写法、边界条件定义这些细节更敏感。2018版里能容忍的一些不规范写法,复制到2025版可能直接报错。我在实际迁移脚本时,最常遇到的是坐标单位混用和材料参数名不一致的问题。建议旧脚本迁移时先用-h看一下工具的参数接口:
sprocess -h | grep -i unit sdevice -h | grep -i model不要一上来就跑大脚本,否则排错成本很高。
6. 踩坑日志:常见报错和排查链路
把这段时间踩过的坑集中整理一下,每一个都是真实遇到过的,照着这个排查链路走能省不少时间。
6.1 缺少glibc旧版本库导致启动即崩
2018版在RHEL 8上最常见的报错长这样:
./sprocess: /lib64/libstdc++.so.6: version GLIBCXX_3.4.20 not found这不是Sentaurus的问题,是老版本二进制依赖的老gcc运行库在当前系统里不存在。排查链路:先用ldd查看哪个库缺失:
ldd /opt/synopsys/sentaurus/2018.12/platforms/linux64/gcc-4.8/bin/sprocess | grep "not found"会看到缺失的具体库名。修复方式是安装对应的兼容库。RHEL系列上,老gcc运行库通常叫libstdc++.so.6,可以通过安装devtoolset兼容包或手动拷贝旧系统的库到自定义目录,然后用LD_LIBRARY_PATH指过去:
export LD_LIBRARY_PATH=/usr/local/lib64/oldgcc:$LD_LIBRARY_PATHUbuntu系统则注意缺libjpeg62、libXp这类老图形库,用apt直接装即可。
6.2 许可证连不上,报"No such feature exists"
这个错误要分清两种情况。一种是license server没起来,另一种是license文件里确实没有你尝试使用的feature。用lmstat -a确认server状态,重点看有没有启动对应的vendor daemon。如果vendor daemon起不来,十有八九是SCL版本和license文件的版本策略不匹配。
我之前遇到过2018版配了新SCL后,部分老feature无法识别的案例。最终解决方案是让2018版使用配套的旧SCL,新版本使用新SCL,互不混用。有人觉得SCL版本越新越好,实际在EDA软件生态里,配套版本才是王道。
6.3 SWB白屏或按钮不显示
SWB是Java Swing界面程序,白屏问题多半是X11相关设置不对。远程SSH转发时白屏概率尤其高。我踩过最深的坑是远程登录时DISPLAY变量没设置,swb启动了但窗口画不出来。
排查链路:先确认DISPLAY变量,再看X11转发是否可用:
xclock如果xclock也白屏,说明X11环境本身就有问题。建议改用VNC远程桌面方式,稳定很多。另外,SWB界面字体发虚或排版错乱时,试试在启动前设置:
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"6.4 磁盘空间看似够用但仿真总报临时目录错误
仿真过程中大量临时文件默认写到/tmp,而/tmp分区往往只有几GB。一个中等规模的3D器件仿真就能吃掉几十GB临时空间。如果/tmp空间不足,会看到类似“No space left on device”的错误,但df -h /检查发现还有不少空间。
因为/tmp经常是独立挂载的分区。解决方法很简单,把临时目录指到空间大的位置:
export TMPDIR=/opt/synopsys/tmp mkdir -p /opt/synopsys/tmp同时检查STWORK目录所在分区的剩余空间,确保两个位置都充足。
6.5 2025版启动报Python版本冲突
新版Sentaurus集成了Python相关组件,如果系统本身装了Anaconda或自定义Python,环境变量里可能带了其他Python路径,导致SWB或SVisual启动时加载了错误的Python库。
排查链路:查看PYTHONPATH和PATH有没有自动加载的conda路径:
echo $PYTHONPATH echo $PATH如果是conda导致,启动Sentaurus前先执行conda deactivate,或者不在bashrc里写死conda的base环境。Sentaurus对Python环境要求非常洁癖,保持系统Python干净是避免这类坑的最优解。
7. 双版本在实战中的场景化切换技巧
装好两个版本之后,日常使用中的管理技巧也很关键。这里分享几个我用下来比较顺手的做法。
7.1 用版本开关脚本统一管理任务提交
在课题组服务器上,大家登录后很容易忘记当前source的是哪个版本,导致用2018的脚本去跑2025的输入文件,或者反过来。我在/opt/synopsys/bin/下放了一个版本开关脚本:
switch_sentaurus() { case "$1" in 2018) source ~/.sentaurus2018 ;; 2025) source ~/.sentaurus2025 ;; *) echo "usage: switch_sentaurus 2018|2025" ;; esac }这样每个人登录后执行switch_sentaurus 2018或switch_sentaurus 2025就能明确切换,并在提示符里显式显示当前版本。用两行PS1的设置把版本信息直接怼在命令行前面,误操作的概率大幅下降。
7.2 项目目录与库文件的隔离原则
2018和2025的项目文件、工艺模型库、网格文件格式上大体兼容,但边界条件下沉时有差异。我建议在项目根目录下建两个子目录分开管理:
project_a/ ├── sentaurus2018_run/ └── sentaurus2025_run/每次启动SWB时,工作目录选中对应版本目录,避免两个版本生成的文件互相覆盖。特别是@solution、@history这类临时数据目录,不同版本的组织方式有差异,混在一个目录里很容易产生脏数据。
7.3 用并行特性之前先做性能基线
双版本共存的机器上,跑MPI并行前最好先做一次单核性能基线测试。同一份PN结仿真,2018版和2025版在单核上的耗时会有差异,而配置了多核并行后,加速比表现也未必一样。使用2025版的多核并行前,把主机配置文件里的机器列表和MPI参数确认清楚,避免默认配置下并行节点数没有生效,结果以为装了并行版,实际一直在串行跑。
这一点容易忽略,我在2018版上吃过亏:配置文档里写的默认并行方式,在实验室的集群上并没有正常调用所有核心,后来检查主机配置文件才发现资源描述需要手动填写主机名和核心数。
8. 收尾前再检查一遍这五件事
安装配置完成后,不要急着开始正式项目,先做一轮整体检查。把下面五件事过一遍,基本可以放心投入使用了:
- 2018和2025分别source配置后,
which swb和echo $STROOT是否指向正确版本。 lmstat -a能否看到所有需要的feature,许可证没有过期或改错。- 用最小仿真脚本分别在两个版本下跑通,记录运行时间和退出码。
- 在非图形终端里,
sprocess -h和sdevice -h能否正常输出帮助信息,命令行工具链路完整。 - 检查
/tmp和STWORK目录剩余空间,确保至少能一次放下中等规模仿真的临时文件。
如果在检查过程中遇到前面没讲到的报错,回到对应小节点Down的排查链路去对照。绝大多数情况下,Sentaurus的报错信息都是直接的,问题几乎都出在库依赖、许可证、环境变量、磁盘空间这四类原因上。
有两条经验我再单独啰嗦一下。第一条,老版本和新版本尽量使用各自配套的SCL工具,不要贪图新功能而跨版本混用。第二条,环境变量改完以后,务必重开终端再验证,不要在当前终端里反复source,残留变量这种东西会浪费你很多时间。
把这些步骤处理完,2018和2025双版本就真正算安装配置到位了。剩下的事情就是开一个新项目,在SWB里建第一个工程节点,然后开始跑仿真。