Appearance
SWB 附录 I:环境变量
来源:
swb_ug.pdfAppendix 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_SIZE | 从 1 开始的整数;默认未定义 | 用来限制 SWB 保存的最近修改数量,对应正文中“撤销变更数量限制”的行为。 |
SWB_ATTACHED_ROOTS | 从 1 开始的整数;默认 5 | 指定 SWB 首选项中可附加根目录的最大数量。 |
SWB_DUMP_NODE_VARS | 0、1;默认 0 | 设为 1 时,每个已执行节点都会额外生成一个文件,用于保存该节点上定义的变量值。 |
SWB_USER_ENV | 0、1;默认未定义,相当于 1 | 用来控制调用 SWB 应用时是否恢复用户原始环境。如果设为 0,则保留 GENERIC 脚本对环境所做的修改;如果设为 1 或未定义,则恢复用户原始的 PATH、LD_LIBRARY_PATH、QT_PLUGIN_PATH。 |
SWB_NO_LOCK | 0、1;默认未设置,相当于 1 | 用来控制是否检查“项目已被打开”的锁状态。设为 0 时,SWB 会检查项目处于已打开锁定状态,这有助于兼容旧版本 SWB(G-2012.06 及更早)的行为;设为 1 或不设置时,SWB 会忽略该锁状态。 |
SWB_IGNORE_<SIGNAME> | 不带值;可定义多个 | 指定要忽略的操作系统信号。手册说明,SWB 默认已经忽略一组信号,包括 SIGUSR1、SIGTTIN、SIGTTOU、SIGALRM、SIGPIPE、SIGHUP、SIGTRAP、SIGWINCH、SIGURG、SIGPOLL、SIGEMT。示例:setenv SWB_IGNORE_SIGTERM。 |
SWB_BYPASS_AUTH_spcmstd | 0、1;默认 0 | 设为 1 时,跳过 SWB 中对 Sentaurus PCM Studio 许可证的检查。正文第 9 章提到过这一类“不需要的许可证检查绕过”场景。 |
SWB_DAEMONIZE | 0、1;默认 0 | 设为 1 时,让 swb 和 gsub 以守护进程模式运行。手册把它和“运行中项目意外终止”的处理联系在一起。 |
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_DAEMONIZE、SWB_DAEMON_PID、SWB_DAEMON_EXITCODE则偏向批处理和异常退出场景
网络通信设置
第二组变量是 Settings for Network Communications,手册把它明确归到 swblm 相关设置中。这些变量主要决定 SWB 组件之间如何占用 TCP 端口、如何轮询连接、多久回收空闲连接以及如何记录高级日志。
表 44:网络通信设置(swblm)
| 环境变量 | 支持值 / 默认值 | 说明 |
|---|---|---|
SWB_PORTS_RANGE | 由整数端口或端口范围组成的逗号分隔列表,取值 0 到 65535;默认未定义 | 如果定义,表示 SWB 进程间网络通信允许使用的 TCP 端口范围。手册把它与防火墙场景直接关联。示例:44000-44100,50000-51000。当 SWB 需要打开 TCP 端口时,会在这个范围中查找第一个空闲端口。 |
SWBLM_PER_PROJECT | 0、1;默认 0 | 设为 1 时,SWB 会为每个项目启动独立的 swblm 会话。手册特别提醒要谨慎使用:虽然这对大规模批量运行可能有帮助,但 run limits 将不再对“当前所有项目”统一生效,而是按单个项目分别生效。 |
SWBLM_HOME | 目录路径 | 指定 swblm 保存配置文件和日志的位置。默认是 ~/.swb/swblm/$STRELEASE。手册同样提醒谨慎使用,因为它通常出现在大规模批处理环境中,容易和 per-project 行为一起改变运维预期。 |
SWBLM_POLLS_TRIALS | 从 1 开始的整数;默认 10 | 当通信发生错误时,指定最多重试多少次。 |
SWBLM_POLL_INTERVAL | 从 1 开始的整数;默认 1000 | 指定两次顺序连接尝试之间的时间间隔,单位是毫秒。手册注明:该设置在 SWBLM_POLL_TRIALS 定义后生效。 |
SWBLM_WAIT_IDLE | 从 1 开始的整数;默认 600 | 指定空闲超时时间,单位是秒。如果在这段时间内没有注册的活动连接,swblm 就会退出。 |
SWBLM_ADVANCED_LOG | 0、1;默认 0 | 设为 1 时,为 swblm 启用高级日志模式。 |
SWBLM_AGE | 从 1 开始的整数;默认 30 | 指定已注册连接的最大寿命,单位是天。超过这个时间后,swblm 会认为对应进程已经失效,并删除这条连接记录。 |
使用理解
这一组里最值得优先掌握的是 SWB_PORTS_RANGE。只要机器位于严格防火墙环境之后,这个变量几乎就是必查项。附录 E 也把它作为排障的核心入口。
而 SWBLM_PER_PROJECT 与 SWBLM_HOME 更偏大规模批处理场景。手册的提醒很明确:这些设置可能帮助你隔离批量运行,但也会改变 run limits 的适用范围,因此不要在不了解后果时随意开启。
剩下几项主要围绕连接健壮性:
- 出错时重试多少次
- 每次重试间隔多久
- 多久清掉空闲
swblm - 多久清掉“看起来已经死亡”的老连接
作业调度设置
第三组变量是 Job Scheduling Settings。它们主要影响 SWB 选择哪套调度器实现、是否启用详细日志、作业名前缀、gjob 启动等待、执行图文件等待、LSF 资源统计以及批模式下的默认队列。
表 45:作业调度设置
| 环境变量 | 支持值 / 默认值 | 说明 |
|---|---|---|
SWB_SCHEDULER | old、new;默认 old | 指定 SWB 使用哪一套调度器。old 表示传统 SWB 调度器;new 表示基于 Dask 引擎的新调度器。 |
GSUB_ADVANCED_LOG | 0、1;默认 0 | 设为 1 时,为 swb、gsub、gjob 打开更详细的日志。它对应正文第 11 章的 Extended Scheduler Log。 |
SWB_JOBNAME_PREFIX | 不含空白字符的标识符 | 在作业提交时,SWB 会把该前缀加到自动生成的项目名上。默认情况下,SWB 使用形如 x... 的项目名,其中点号位置代表随机整数。 |
SWB_GJOB_WAIT | 从 1 开始的整数;默认 0 | 如果定义,则强制 gjob 在启动时等待给定秒数;默认情况下 gjob 不等待。 |
SWB_WAIT_GEXEC | 从 1 开始的整数;默认 0 | 如果定义,则指定等待执行图文件 gexec.cmd 可用的时间,单位是秒。在慢文件系统里,这有助于解决 Job execution graph not found 错误。 |
SWB_ASSESS_SPRALLEL | 0、1;默认 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_USAGE | 0、1;默认 0 | 为已完成的 LSF 作业在节点文件 n*_*.lsf 中提供额外资源统计信息。 |
SWB_REGRESSION_POLLING_INTERVAL | 从 1 开始的整数;默认未定义 | 指定作业轮询间隔,单位秒。如果定义,将覆盖 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_ON | 0、1;默认 0 | 设为 1 时,项目执行完成后,SWB 不会关闭 TCAD-to-SPICE 项目数据库。 |
SWB_SPYE | 1 时生效 | 设为 1 时,会在 SWB Advanced 的 Optimized 菜单中增加 Runs in Spye 项。 |
SWB_DTCO_MODE | 0、1;默认未定义 | 设为 1 时,在 swb 中启用用于集成 DTCO flow 的特殊功能。 |
使用理解
这一组变量通常不会出现在所有环境里。只有当站点接入了特定工具链或特殊流程时,它们才会真正生效。
因此,从使用频率上看:
RSOFT_PROGRAMPATH、SPTOPO_CSV_LIB偏工具接入SWB_DB_ALWAYS_ON偏数据库生命周期控制SWB_SPYE偏界面入口扩展SWB_DTCO_MODE则明显偏工艺协同流程集成
附录 I 的核心价值,不在于让用户“把所有变量都记住”,而在于帮你快速判断某个异常到底是不是环境变量改写了 SWB 的默认行为。
如果后面继续细化,这一页最值得再补的两块是:
- 为每个变量补“推荐使用层级”,区分用户级、项目级和站点级
- 为高频变量补最小示例,尤其是
STDB、SWB_SITE_SETTINGS_DIR、SWB_PORTS_RANGE、GSUB_ADVANCED_LOG