Skip to content

SWB 附录 I:环境变量

来源:swb_ug.pdf Appendix I(W-2024.09) 原文标题:Environment Variables 说明:本页按 2024 版附录 I 的原分组顺序整理,尽量完整保留每一段的含义与每个环境变量的用途。

本附录目录

附录说明

本附录列出会影响 Sentaurus Workbench 行为的全部环境变量。手册先强调了一点:下面这些设置并不是必须项,但只要被定义,就会改变 SWB 的默认行为。

因此,这一页更适合作为“行为开关总表”来使用:

  • 有些变量决定 SWB 的启动方式和用户配置位置
  • 有些变量影响网络通信与 swblm
  • 有些变量影响调度、提交与作业日志
  • 还有少量变量只在特定工具或特定流程中起作用

通用设置

手册把第一组变量称为 General Settings。它们主要控制项目根目录、站点设置目录、撤销栈、附加根目录数量、变量转储、用户环境恢复、项目锁行为、信号处理、许可证检查与守护进程化行为。

表 43:通用设置

环境变量支持值 / 默认值说明
STDB路径指向 SWB Project Browser 中显示的文件树根目录。它同时也是 SWB 用户设置的存放位置,包括首选项、工具数据库、run limits 和队列配置。如果未设置,Sentaurus Workbench 会在启动时强制要求你定义它。
SWB_SITE_SETTINGS_DIR路径;默认未定义如果定义,则指向站点级 SWB 设置目录。这个目录中通常包含站点工具数据库、首选项和队列配置。
SWB_UNDO_STACK_SIZE1 开始的整数;默认未定义用来限制 SWB 保存的最近修改数量,对应正文中“撤销变更数量限制”的行为。
SWB_ATTACHED_ROOTS1 开始的整数;默认 5指定 SWB 首选项中可附加根目录的最大数量。
SWB_DUMP_NODE_VARS01;默认 0设为 1 时,每个已执行节点都会额外生成一个文件,用于保存该节点上定义的变量值。
SWB_USER_ENV01;默认未定义,相当于 1用来控制调用 SWB 应用时是否恢复用户原始环境。如果设为 0,则保留 GENERIC 脚本对环境所做的修改;如果设为 1 或未定义,则恢复用户原始的 PATHLD_LIBRARY_PATHQT_PLUGIN_PATH
SWB_NO_LOCK01;默认未设置,相当于 1用来控制是否检查“项目已被打开”的锁状态。设为 0 时,SWB 会检查项目处于已打开锁定状态,这有助于兼容旧版本 SWB(G-2012.06 及更早)的行为;设为 1 或不设置时,SWB 会忽略该锁状态。
SWB_IGNORE_<SIGNAME>不带值;可定义多个指定要忽略的操作系统信号。手册说明,SWB 默认已经忽略一组信号,包括 SIGUSR1SIGTTINSIGTTOUSIGALRMSIGPIPESIGHUPSIGTRAPSIGWINCHSIGURGSIGPOLLSIGEMT。示例:setenv SWB_IGNORE_SIGTERM
SWB_BYPASS_AUTH_spcmstd01;默认 0设为 1 时,跳过 SWB 中对 Sentaurus PCM Studio 许可证的检查。正文第 9 章提到过这一类“不需要的许可证检查绕过”场景。
SWB_DAEMONIZE01;默认 0设为 1 时,让 swbgsub 以守护进程模式运行。手册把它和“运行中项目意外终止”的处理联系在一起。
SWB_DAEMON_PID文件路径指定守护进程化后的 gsub 写入 PID 的文件路径。只有在 SWB_DAEMONIZE=1 时才有效。
SWB_DAEMON_EXITCODE文件路径指定守护进程化后的 gsub 写入退出码的文件路径。只有在 SWB_DAEMONIZE=1 时才有效。

使用理解

这一组变量里,最常见、最基础的仍然是 STDB。它不仅决定项目浏览器看到什么,也决定很多用户级 SWB 配置落到哪里。

SWB_SITE_SETTINGS_DIR 则是站点统一配置的关键入口。只要团队希望统一工具数据库、首选项或队列行为,它通常就会出现。

另外几项更偏“兼容性”或“运维控制”:

  • SWB_USER_ENV 关系到是否保留外层脚本改写后的环境
  • SWB_NO_LOCK 关系到旧式项目锁行为
  • SWB_DAEMONIZESWB_DAEMON_PIDSWB_DAEMON_EXITCODE 则偏向批处理和异常退出场景

网络通信设置

第二组变量是 Settings for Network Communications,手册把它明确归到 swblm 相关设置中。这些变量主要决定 SWB 组件之间如何占用 TCP 端口、如何轮询连接、多久回收空闲连接以及如何记录高级日志。

表 44:网络通信设置(swblm

环境变量支持值 / 默认值说明
SWB_PORTS_RANGE由整数端口或端口范围组成的逗号分隔列表,取值 065535;默认未定义如果定义,表示 SWB 进程间网络通信允许使用的 TCP 端口范围。手册把它与防火墙场景直接关联。示例:44000-44100,50000-51000。当 SWB 需要打开 TCP 端口时,会在这个范围中查找第一个空闲端口。
SWBLM_PER_PROJECT01;默认 0设为 1 时,SWB 会为每个项目启动独立的 swblm 会话。手册特别提醒要谨慎使用:虽然这对大规模批量运行可能有帮助,但 run limits 将不再对“当前所有项目”统一生效,而是按单个项目分别生效。
SWBLM_HOME目录路径指定 swblm 保存配置文件和日志的位置。默认是 ~/.swb/swblm/$STRELEASE。手册同样提醒谨慎使用,因为它通常出现在大规模批处理环境中,容易和 per-project 行为一起改变运维预期。
SWBLM_POLLS_TRIALS1 开始的整数;默认 10当通信发生错误时,指定最多重试多少次。
SWBLM_POLL_INTERVAL1 开始的整数;默认 1000指定两次顺序连接尝试之间的时间间隔,单位是毫秒。手册注明:该设置在 SWBLM_POLL_TRIALS 定义后生效。
SWBLM_WAIT_IDLE1 开始的整数;默认 600指定空闲超时时间,单位是秒。如果在这段时间内没有注册的活动连接,swblm 就会退出。
SWBLM_ADVANCED_LOG01;默认 0设为 1 时,为 swblm 启用高级日志模式。
SWBLM_AGE1 开始的整数;默认 30指定已注册连接的最大寿命,单位是天。超过这个时间后,swblm 会认为对应进程已经失效,并删除这条连接记录。

使用理解

这一组里最值得优先掌握的是 SWB_PORTS_RANGE。只要机器位于严格防火墙环境之后,这个变量几乎就是必查项。附录 E 也把它作为排障的核心入口。

SWBLM_PER_PROJECTSWBLM_HOME 更偏大规模批处理场景。手册的提醒很明确:这些设置可能帮助你隔离批量运行,但也会改变 run limits 的适用范围,因此不要在不了解后果时随意开启。

剩下几项主要围绕连接健壮性:

  • 出错时重试多少次
  • 每次重试间隔多久
  • 多久清掉空闲 swblm
  • 多久清掉“看起来已经死亡”的老连接

作业调度设置

第三组变量是 Job Scheduling Settings。它们主要影响 SWB 选择哪套调度器实现、是否启用详细日志、作业名前缀、gjob 启动等待、执行图文件等待、LSF 资源统计以及批模式下的默认队列。

表 45:作业调度设置

环境变量支持值 / 默认值说明
SWB_SCHEDULERoldnew;默认 old指定 SWB 使用哪一套调度器。old 表示传统 SWB 调度器;new 表示基于 Dask 引擎的新调度器。
GSUB_ADVANCED_LOG01;默认 0设为 1 时,为 swbgsubgjob 打开更详细的日志。它对应正文第 11 章的 Extended Scheduler Log
SWB_JOBNAME_PREFIX不含空白字符的标识符在作业提交时,SWB 会把该前缀加到自动生成的项目名上。默认情况下,SWB 使用形如 x... 的项目名,其中点号位置代表随机整数。
SWB_GJOB_WAIT1 开始的整数;默认 0如果定义,则强制 gjob 在启动时等待给定秒数;默认情况下 gjob 不等待。
SWB_WAIT_GEXEC1 开始的整数;默认 0如果定义,则指定等待执行图文件 gexec.cmd 可用的时间,单位是秒。在慢文件系统里,这有助于解决 Job execution graph not found 错误。
SWB_ASSESS_SPRALLEL01;默认 0设为 1 时,在 LSF 作业提交时自动计算并附加 sparallel 资源需求,形式如 -R "rusage[<feature>=N:duration>=<duration>]"。手册说明,前提是工具数据库中已经定义了 WB_tool(<tool>,parallel,licenses,LSF,feature)WB_tool(<tool>,parallel,licenses,LSF,duration)
SWB_LSF_RESOURCES_USAGE01;默认 0为已完成的 LSF 作业在节点文件 n*_*.lsf 中提供额外资源统计信息。
SWB_REGRESSION_POLLING_INTERVAL1 开始的整数;默认未定义指定作业轮询间隔,单位秒。如果定义,将覆盖 SWB 首选项中的轮询间隔。
SWB_REGRESSION_QUEUE队列名如果定义,则必须是现有 SWB 队列名。以 batch 模式启动且未显式使用 -q 选项的 gsub,会把作业发送到这个队列。

使用理解

这一组变量和 Chapter 11 的关系最直接。

其中最常见的几个切入点是:

  • 想看更细日志时,用 GSUB_ADVANCED_LOG
  • 慢文件系统里 gexec.cmd 偶尔来不及时,用 SWB_WAIT_GEXEC
  • 想统一 job naming 规则时,用 SWB_JOBNAME_PREFIX
  • 做批模式回归或自动化提交时,用 SWB_REGRESSION_QUEUE

SWB_SCHEDULER 也很关键,因为它决定底层调度实现走传统路径还是 Dask 路径。不过这类切换通常不应由普通项目作者随手改动,而更像站点级或运维级控制项。

工具专用设置

最后一组是 Tool-Specific Settings。和前面几组不同,它不是针对 SWB 通用机制,而是面向特定工具、特定集成链路或特定工作流。

表 46:工具专用设置

环境变量支持值 / 默认值说明
RSOFT_PROGRAMPATH路径如果定义,应指向 R-Soft 安装路径。SWB 会从 $RSOFT_PROGRAMPATH/../etc/swb_site_settings/rsoft/rsoft_tooldb.tcl 读取对应设置。
SPTOPO_CSV_LIB路径如果定义,应指向安装中的 Sentaurus Topography 库。
SWB_DB_ALWAYS_ON01;默认 0设为 1 时,项目执行完成后,SWB 不会关闭 TCAD-to-SPICE 项目数据库。
SWB_SPYE1 时生效设为 1 时,会在 SWB Advanced 的 Optimized 菜单中增加 Runs in Spye 项。
SWB_DTCO_MODE01;默认未定义设为 1 时,在 swb 中启用用于集成 DTCO flow 的特殊功能。

使用理解

这一组变量通常不会出现在所有环境里。只有当站点接入了特定工具链或特殊流程时,它们才会真正生效。

因此,从使用频率上看:

  • RSOFT_PROGRAMPATHSPTOPO_CSV_LIB 偏工具接入
  • SWB_DB_ALWAYS_ON 偏数据库生命周期控制
  • SWB_SPYE 偏界面入口扩展
  • SWB_DTCO_MODE 则明显偏工艺协同流程集成

附录 I 的核心价值,不在于让用户“把所有变量都记住”,而在于帮你快速判断某个异常到底是不是环境变量改写了 SWB 的默认行为。

如果后面继续细化,这一页最值得再补的两块是:

  1. 为每个变量补“推荐使用层级”,区分用户级、项目级和站点级
  2. 为高频变量补最小示例,尤其是 STDBSWB_SITE_SETTINGS_DIRSWB_PORTS_RANGEGSUB_ADVANCED_LOG

基于 Sentaurus TCAD 官方文档构建

代码块