在前一篇中,我们介绍了 Library Manager 工具的环境配置方式。这一篇介绍 Layout 工具中的状态栏(Status Toolbar),通过配置环境变量实现自定义内容、显示顺序和样式,并结合语法结构与字段类型进行完整的配置讲解。
自定义 Status Toolbar 状态栏的信息展示
在没有调整 Workspace 的默认情况下,Status Toolbar(状态栏)位于 Virtuoso Layout 设计窗口的顶部 ↘,它主要用于显示当前坐标、选中状态和命令等基本信息。

这些信息由系统预设,字段数量有限,内容结构也较为固定。不过,我们可以根据使用需求扩展其展示内容。例如,可以让状态栏实时显示 CellView 的尺寸、工艺库名称,或是动态读取某个环境变量的值。这些,都可以通过一个环境变量实现: statusToolbarFields 。
通过配置这个变量,我们可以定义状态栏的展示字段、显示顺序以及文字样式,让它在不干扰主视图的前提下,提供更多有用信息。

statusToolbarFields 环境变量简介
statusToolbarFields 变量是在 IC6.1.8 ISR9 中新增的,它的基本语法如下:
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 支持多种类型的字段,大致分为三类:坐标与选择类、系统状态类和变量信息类字段。
① 坐标与选择类字段:用于实时反馈布局操作
可用字段及说明如下:

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

;; 这里是为了演示清楚做了换行处理,实际使用时请不要换行!
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) 字段可以在你进行 move、stretch 等交互式命令时,实时更新当前操作指令。
同样,(CVSize) 字段会根据设计层级自动切换数据来源,优先显示 PRBoundary 的尺寸,其次为 snapBoundary,最后才是 CellView 尺寸。在层次化布局设计中,可用于快速确认当前编辑单元的尺寸范围。
以下是一个配置示例,展示布局尺寸和 DRD 开关状态的组合用法:
;; 这里是为了演示清楚做了换行处理,实际使用时请不要换行!
layout statusToolbarFields string "
(DRDNotify t \">Notify:%s\")
(DRDEnforce t \">Enforce:%s\")
(CVSize)
"通过这类配置,可以把原本需要点击或测量才能获取的信息,直接集成到状态栏中。
③ 可配置类字段:接入环境配置信息
除了上述预定义项外,statusToolbarFields 还支持多种自定义信息来源,包括环境变量、窗口变量、Shell 变量 、SKILL 变量和固定字符串。字段形式灵活,适合展示项目名称、工艺库信息、用户环境配置等。
可用字段及说明如下:

以下是一个配置组合示例,展示了当前用户名称、工艺库标识和 SnapMode 设置:
;; 这里是为了演示清楚做了换行处理,实际使用时请不要换行!
layout statusToolbarFields string "
(E \"layout\" \"snapMode\")
(W stopLevel)
(SH \"USER\" \"UserName\")
(T \"GPDK45\" \"Process\")
"通过这类配置字段,状态栏不再局限于显示光标状态或对象信息,而是可以进一步承载用户环境和项目配置等信息。
不仅能控制显示内容,还能高亮和条件控制
通过 statusToolbarFields 环境变量,除了可以控制状态栏中显示哪些信息,还可以使用 HTML 定义这些信息的字体样式 ,例如加粗字体、设置字体颜色等。更进一步,它还支持基于条件动态切换显示内容,实现更具视觉反馈的效果。
接下来,以“选中对象计数”为例,展示配置方式。
在 Virtuoso Layout 的默认状态栏中,已经可以看到当前选中的 instance、net 和 object 数量。如果希望根据选中数量的变化动态调整显示内容,我们可以对其中的 Select 字段添加条件样式:
-
当选中的对象数量为 0 时,保持默认样式;
-
当数量大于 0 时,切换为高亮样式,例如用红色、蓝色、绿色提示不同类型的选中对象。
;; 这里是为了演示清楚做了换行处理,实际使用时请不要换行!
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 → 红色加粗字体

除了样式控制之外,状态栏还支持使用 \\| 插入分隔符将信息分组。例如,可以将当前坐标与相对坐标分成两个区块显示:
layout statusToolbarFields string "(X) (Y) \\| (dX) (dY)"📌小提示:如果不熟悉 HTML 样式写法,可以通过 ima 等问答工具快速生成并测试。

注意事项
通过上述三类字段的组合,状态栏可以从简单的信息展示区域,变成具备实时反馈的辅助界面。不过需要注意的是,状态栏宽度是有限的,如果配置的字段太多,会出现折叠按钮“>>”。为避免信息被隐藏,建议控制字段数量,优先保留关键内容,合理排序。
对于坐标类字段,如果希望避免被折叠的情况,可以使用一个额外的环境变量 statusBarXYdXdYLength ,来设置它们的显示宽度:
layout statusBarXYdXdYLength int 10完整配置示例
在实际使用中,statusToolbarFields 的配置可以根据个人习惯进行灵活组合。下面是一个通用的配置组合示例,涵盖了坐标、命令状态、选择信息、环境变量与工艺标识等常用字段,适合日常版图编辑与调试场景。
配置示例:

;; 这里是为了演示清楚做了换行处理,实际使用时请不要换行!
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 工具进行实时编辑。需要注意,使用编辑器时应去除示例中的转义字符(\)。

END.
更多文章

Virtuoso 电压规则(VDR)工具操作指南——自动生成电压标签
介绍 Virtuoso VDR 工具如何自动生成电压标签,辅助完成 Voltage-dependent Spacing DRC 检查,并结合仿真驱动流程说明 techfile 配置、数据生成与规则验证方法。

Layout EAD 实时提取版图寄生参数(三):EMIR 检查
延续前两篇 EAD 参数提取流程,介绍如何结合 Spectre/APS 仿真数据完成 EMIR 检查,包括创建 Electrical Dataset、运行 EM 分析、查看 IR Drop 并将结果反标到电路中。

如何解决 “LVS 验证时 Source 端网表未定义 SUBCKT” 的问题
遇到 LVS 提示 Source netlist 缺少 SUBCKT 定义时,通常是 CDL 网表没有包含 PDK 的器件定义文件。本文介绍问题原因、include 文件添加方式,以及如何保存为可复用配置。
邮件列表
加入我们的社区
订阅邮件列表,及时获取最新消息和更新
