让 Layout 状态栏更有用的几种配置方式

用一个环境变量,自定义 Layout 状态栏的显示内容与文字样式。

兔二思
兔二思
技术博主

系列文章目录:

  1. 特定工具 - Library Manager
  2. 特定工具 - Layout L / XL / EAD
    • 自定义 Status Toolbar 状态栏的信息展示(本篇)
  3. 特定工具 - Schematic / ADE

在前一篇中,我们介绍了 Library Manager 工具的环境配置方式。这一篇介绍 Layout 工具中的状态栏(Status Toolbar),通过配置环境变量实现自定义内容、显示顺序和样式,并结合语法结构与字段类型进行完整的配置讲解。

13.1 自定义 Status Toolbar 状态栏的信息展示

在没有调整 Workspace 的默认情况下,Status Toolbar(状态栏)位于 Virtuoso Layout 设计窗口的顶部 ↘,它主要用于显示当前坐标、选中状态和命令等基本信息。

( Status Toolbar )

这些信息由系统预设,字段数量有限,内容结构也较为固定。不过,我们可以根据使用需求扩展其展示内容。例如,可以让状态栏实时显示 CellView 的尺寸、工艺库名称,或是动态读取某个环境变量的值。这些,都可以通过一个环境变量实现: statusToolbarFields 。

通过配置这个变量,我们可以定义状态栏的展示字段、显示顺序以及文字样式,让它在不干扰主视图的前提下,提供更多有用信息。

( 自定义状态栏的内容展示 )

statusToolbarFields 环境变量简介

statusToolbarFields 变量是在 IC6.1.8 ISR9 中新增的,它的基本语法如下:

;; .cdsenv

layout statusToolbarFields string "(SelectorInformation)"

其中的 “(SelectorInformation)” 是一个由多个字段组合成的字符串。

每个字段的写法都遵循一个统一的格式:

( selector  tooltip  style_format )

下面是这三部分的解释:

  • selector (字段名):表示要显示什么信息。例如,(X) 表示当前光标的 X 坐标。

  • tooltip (提示信息):可选。当鼠标悬停在字段上时显示的说明文字。如果写成 (X) 或 (X t),系统默认使用字段名作为提示。如果写成 (X "X Coordinate"),鼠标悬停时会显示 X Coordinate

  • style_format (显示样式):可选。支持基本的 HTML 格式,例如加粗、设置字体颜色等。可以用来让某些字段更突出。

你可以把多个字段放在一起使用,每个字段用括号括起来,用空格分隔。为了让不同类型的信息分组显示,还可以使用 \\| 插入分隔符,增强可读性。

状态栏中可以显示什么?

statusToolbarFields 支持多种类型的字段,大致分为三类:坐标与选择类、系统状态类和变量信息类字段。

① 坐标与选择类字段:用于实时反馈布局操作

可用字段及说明如下:

image.png

( 坐标与选择类字段说明 )

这类字段是状态栏中最基础的一部分,默认的状态栏基本上就是由上述字段构成的:

( 默认状态栏 )

;; .cdsenv
;; 这里是为了演示清楚做了换行处理,实际使用时请不要换行!

layout statusToolbarFields string "
(Mode t \"(%s)\")
(Select t \"Select: %s\")
(SelN \"Selected Nets\" \"Sel(N):%s\")
(SelI \"Selected Instances\" \"Sel(I): %s\")
(SelO \"Selected Objects\" \"Sel(O): %s\")
(EXYDXDY)
(Dist t \"Dist: %s\")
(Cmd t \"Cmd:%s\")
"

你可以在这个基础上删减或调整字段顺序,结合后续章节介绍的样式控制还能进一步美化展示效果。

② 系统状态类字段:用于辅助理解当前工具状态

可用字段及说明如下:

( 系统状态类字段说明 )

这类字段适合在编辑过程中提供上下文补充信息,多数用于动态展示当前工具状态。例如,(Cmd) 字段可以在你进行 movestretch 等交互式命令时,实时更新当前操作指令。

同样,(CVSize) 字段会根据设计层级自动切换数据来源,优先显示 PRBoundary 的尺寸,其次为 snapBoundary,最后才是 CellView 尺寸。在层次化布局设计中,可用于快速确认当前编辑单元的尺寸范围。

以下是一个配置示例,展示布局尺寸和 DRD 开关状态的组合用法:

;; .cdsenv
;; 这里是为了演示清楚做了换行处理,实际使用时请不要换行!

layout statusToolbarFields string "
(DRDNotify t \">Notify:%s\")
(DRDEnforce t \">Enforce:%s\")
(CVSize)
"

通过这类配置,可以把原本需要点击或测量才能获取的信息,直接集成到状态栏中。

③ 可配置类字段:接入环境配置信息

除了上述预定义项外,statusToolbarFields 还支持多种自定义信息来源,包括环境变量、窗口变量、Shell 变量 、SKILL 变量和固定字符串。字段形式灵活,适合展示项目名称、工艺库信息、用户环境配置等。

可用字段及说明如下:

( 可配置类字段说明 )

以下是一个配置组合示例,展示了当前用户名称、工艺库标识和 SnapMode 设置:

;; .cdsenv
;; 这里是为了演示清楚做了换行处理,实际使用时请不要换行!

layout statusToolbarFields string "
(E \"layout\" \"snapMode\")
(W stopLevel)
(SH \"USER\" \"UserName\")
(T \"GPDK45\" \"Process\")
"

通过这类配置字段,状态栏不再局限于显示光标状态或对象信息,而是可以进一步承载用户环境和项目配置等信息。

不仅能控制显示内容,还能高亮和条件控制

通过 statusToolbarFields 环境变量,除了可以控制状态栏中显示哪些信息,还可以使用 HTML 定义这些信息的字体样式 ,例如加粗字体、设置字体颜色等。更进一步,它还支持基于条件动态切换显示内容,实现更具视觉反馈的效果。

接下来,以“选中对象计数”为例,展示配置方式。

在 Virtuoso Layout 的默认状态栏中,已经可以看到当前选中的 instance、net 和 object 数量。如果希望根据选中数量的变化动态调整显示内容,我们可以对其中的 Select 字段添加条件样式:

  • 当选中的对象数量为 0 时,保持默认样式;

  • 当数量大于 0 时,切换为高亮样式,例如用红色、蓝色、绿色提示不同类型的选中对象。

;; .cdsenv
;; 这里是为了演示清楚做了换行处理,实际使用时请不要换行!

layout statusToolbarFields string "
(Select t
(V==\"0\" \"Select: %s\")
(V!=\"0\" \"<span style=\\\"color:red;font-weight:bold\\\">Select: %s</span>\")
)
"

这个配置会根据 Select 值的变化自动切换显示样式:

  • Select: 0 → 黑色普通字体

  • Select: 166 → 红色加粗字体

( 对比展示 0 和 大于0 的视觉差异 )

除了样式控制之外,状态栏还支持使用 \\| 插入分隔符将信息分组。例如,可以将当前坐标与相对坐标分成两个区块显示:

;; .cdsenv

layout statusToolbarFields string "(X) (Y) \\| (dX) (dY)"

📌小提示:如果不熟悉 HTML 样式写法,可以通过 ima 等问答工具快速生成并测试。

( 向 AI 咨询 HTML 如何设置字体样式 )

注意事项:字段配置需适量

通过上述三类字段的组合,状态栏可以从简单的信息展示区域,变成具备实时反馈的辅助界面。不过需要注意的是,状态栏宽度是有限的,如果配置的字段太多,会出现折叠按钮“>>”。为避免信息被隐藏,建议控制字段数量,优先保留关键内容,合理排序。

对于坐标类字段,如果希望避免被折叠的情况,可以使用一个额外的环境变量 statusBarXYdXdYLength ,来设置它们的显示宽度:

;; .cdsenv

layout statusBarXYdXdYLength int 10

完整配置示例:常用字段组合参考

在实际使用中,statusToolbarFields 的配置可以根据个人习惯进行灵活组合。下面是一个通用的配置组合示例,涵盖了坐标、命令状态、选择信息、环境变量与工艺标识等常用字段,适合日常版图编辑与调试场景。

📎配置示例

图片

;; .cdsenv
;; 这里是为了演示清楚做了换行处理,实际使用时请不要换行!

layout statusToolbarFields string "
(T \"<b>tsmcN65</b>\" \"Process\")
(CVSize \"Boundary size\")
(SelC \"Object under cursor\" \"C/T: %s\")

(Select t
(V==\"0\" \"Select: %s\")
(V!=\"0\" \"<span style=\\\"color:red;font-weight:bold\\\">Select: %s</span>\")
)
(SelN \"Selected Nets\"
(V==\"0\" \"S(Nets): %s\")
(V!=\"0\" \"<span style=\\\"color:green;\\\">S(Nets): %s</span>\")
)
(SelI \"Selected Instances\"
(V==\"0\" \"S(Inst): %s\")
(V!=\"0\" \"<span style=\\\"color:blue;\\\">S(Inst): %s</span>\")
)
(SelO \"Selected Objects\"
\"<span style=\\\"color:black;font-weight:bold\\\">Sel(O): %s</span>\")

(X t \"X: %s\") (Y t \"Y: %s\")
(PreSelSelObjInfo \"Selected object info\")
"

以上的这些配置项,你可以写入 .cdsenv 文件中,作为默认启动设置。也可以通过 .cdsinit 文件使用 envSetVal 语句进行设置。如果你希望在 CIW 中快速测试和调整,也可以使用 Cdsenv Editor 工具进行实时编辑。需要注意,使用编辑器时应去除示例中的转义字符(\)。

( Cdsenv Editor )


本篇主要围绕状态栏字段的定制展开,介绍了 statusToolbarFields 变量的使用方式。在 Layout 工具中,还有其他很多实用的环境变量,我们将在下一篇中继续展开。

你对 Layout 的哪些环境配置感兴趣?欢迎在评论区留言:)

⋅ END ⋅