ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ADS三层结构详解:Workspace、Library、Cell与阻抗匹配实操

2026/10/3 1:27:44 拓冰建站 浏览量
ADS三层结构详解:Workspace、Library、Cell与阻抗匹配实操 我先说个现象很多刚接触ADS的射频工程师第一次打开软件就被左边的 Project Browser 吓住了——Workspace、Library、Cell 三层结构和以前用的 EDA 完全不是一个套路。有人照着网上的教程稀里糊涂就能把原理图画出来、仿真出结果但一涉及我想复用上次那个匹配网络、我要加一个厂商工艺库、我想把版图和原理图联合仿真这种正经活儿立刻卡壳。这篇是 ADS 使用教程的第一篇专门把 Workspace、Library 和 Cell 这三件事讲透。内容既包括每一层是干什么的、为什么要这么设计也包含从零新建工程、添加库、创建 Cell、跑通一次 S 参数仿真再一路做到阻抗匹配优化的完整操作路径。适合两类人刚入手 ADS、还停留在照着视频抄作业的初学者以及用过一段时间但一直是能用就行、底层原理不深究的工程师——相信我把这三层结构理顺后面做 LNA、PA、混频器、差分线仿真这些复杂设计时可以少走很多弯路。1. 为什么 ADS 要把设计拆成 Workspace、Library 和 Cell1.1 三个层次的定位和关系先给一个最直白的定义Workspace 是工程项目的顶层容器Library 是存放元件、模型、工艺文件的仓库Cell 是具体的电路设计单元。更形象一点可以把 Workspace 想象成一个研发部门的大办公区整个项目组都在这个区里干活Library 是办公区里的公共工具仓库和元件库房所有成员都可以去领用公用的电阻、电容、功放管模型也可以把自己做好的模块存进库房供别人复用Cell 则是你工位上的项目文件夹里面放着具体某一块电路的原理图、版图和仿真数据。在 ADS 的 Project Browser 里三者的层级关系非常清晰Workspace工程 ├── Library A元件库/工艺库/自定义库 │ ├── Cell 1 │ │ ├── schematic原理图视图 │ │ ├── layout版图视图 │ │ ├── symbol符号视图 │ │ └── data display数据显示视图 │ ├── Cell 2 │ └── ... ├── Library B │ └── ... └── ...注意这里有个关键点Cell 本身不直接是原理图它下面挂着不同的 View。同一个 Cell 可以同时拥有 schematic 视图、layout 视图、symbol 视图和仿真数据显示视图后面讲 EM 仿真、emmodel 与 emcosim 联合仿真时这个 View 的概念尤其重要。1.2 这样分层到底解决了什么问题早期一些简单的 EDA 工具一个文件就是一页原理图复制、版本管理、复用全靠工程师手动归档。但到了 ADS 这种量级的设计工具上一个射频功放项目里可能有几十个 Cell每个 Cell 又有原理图、版图、仿真数据集、Data Display 多套数据再加上工艺厂提供的 PDK、村田电容电感的 GIPLR 库、英飞凌的器件模型……如果没有一个严格的分层管理项目根本管不住。这套三层结构的核心价值有三个第一实现了设计数据和模型资源的分离。工艺库、器件模型这类公共资源放在 Library 层可以被多个 Workspace 引用升级 PDK 不会影响已有设计文件而具体的设计结果放在 Cell 层跟着项目走方便交付和归档。第二天然支持层级化设计。顶层电路可以直接实例化某个 Cell 作为一个子电路这比不断复制粘贴电路图要干净得多。做 Doherty 放大器这种复杂电路时通常是输入匹配、功放管部分、输出匹配、偏置网络各做一个 Cell顶层再调用这些 Cell 组装任何一个环节要改参数只需要改对应子 Cell不用动顶层的其他部分。第三为多人协作划清了边界。每个工程师可以在各自的 Workspace 里工作公共 Library 由专人维护避免一个人改元件参数全组电路跟着变的混乱。1.3 和我以前用的 EDA 有什么区别用过 Cadence Virtuoso 的人可能会觉得这套结构很眼熟。Virtuoso 里也是 library/cell/view 三级结构但 ADS 额外加了一层 Workspace。这层多出来的封装本质上是把项目和库分开管理Workspace 是围绕某个项目组织起来的完整环境而 Library 是跨项目复用的资产。所以在 ADS 里你可以从别的 Workspace 引用外部 Library而不必把元件库复制一份到当前工程里。2. Workspace工程项目的总容器2.1 创建 Workspace菜单路径与命名规范创建 Workspace 的操作很简单打开 ADS 后在 Main 窗口选择 File → New → Workspace弹出对话框后输入名称并选择保存路径。我这里要重点说的是命名规范和路径问题。项目名称建议采用项目名_频段_日期或项目名_版本这类格式比如 LNA_2p4G_2025、PA_3p5G_v2。不要用 test、new 这种没营养的名字也不要使用中文。原因很实际ADS 涉及的仿真器对文件路径里的中文支持并不总是友好我在实际项目中遇到过因为路径带中文导致原理图能打开、但 EM 仿真跑不起来的情况。把路径保持纯英文很多莫名其妙的报错可以直接避免。保存路径上建议单独建一个工作目录不要默认全堆在 C 盘用户目录下。我的习惯是每个项目一个上级文件夹里面放 ADS 的 Workspace 文件、配套文档、仿真报告方便整个项目整体备份和归档。2.2 磁盘上的 Workspace 到底是什么在较新版本的 ADS 中一个 Workspace 对应磁盘上的一个 .wsp 后缀文件它本质是一个容器文件内部按树形结构组织 Library、Cell 和 View 的所有数据。你不需要懂这个容器内部的具体格式但需要知道它的两个特性第一个特性是整体性。备份、迁移工程时.wsp 文件是整个项目的主体把它打包带走大部分数据就都在了。但要注意如果工程里引用了外部 Library比如村田的器件库、TSMC 的 PDK这些外部库并不包含在 .wsp 里光拷一个 Workspace 文件是不够的目标机器上必须同样安装并正确引用了这些库否则打开工程后会报 missing library。第二个特性是版本相关性。不同大版本的 ADS 创建的 Workspace 文件格式可能不同旧版本软件打不开新版本创建的工程新版本打开旧版本工程时也偶尔会提示需要迁移。所以协同工作时最好统一团队内的 ADS 版本。2.3 Workspace 级别的常用设置Workspace 里藏着一批影响全局的设置最常用的是单位体系。在 Main 窗口选择 File → Preferences再进入 Units 选项卡可以设置默认的长度单位、频率单位、电容单位等。做射频设计长度单位我一般用 mil 或者 mm频率默认 GHz设置好后新建的 Cell 都会继承这套单位。注意一个坑很多人喜欢每个原理图里单独放一个 MSub 微带基板控件然后在控件里填介电常数、板厚这些参数。但如果你在同一 Workspace 要复用同一套板材参数更规范的做法是在 Library 层放一个标准的基板定义或者用 DesignKit 里的标准库这样整个项目的设计基准才是统一的。否则 A 工程师用一个板厚 1.6mm 的 FR4B 工程师用 0.8mm 的板厚最后合版图时对不上那就是灾难。2.4 多人协作的操作规范ADS 本身并不是一个强实时协作的软件它没有像在线文档那样多人同时编辑同一个文件的能力。所以团队协作时我的建议是每个工程师使用自己的 Workspace公共的通用电路模块和器件模型统一放在共享 Library 中维护不要两个人同时编辑同一个 Cell需要分发设计时通过导出/归档的方式传递 Workspace而不是直接去服务器上改别人的文件。实际项目中我见过最痛苦的协作问题就是有人直接在共享盘上打开正在被同事修改的 Workspace 工程结果两个人保存时互相覆盖做了两天的匹配全丢了。后来定了一个规矩——共享盘上只放只读的 PDK 和最终归档版本手头的活跃工程一律在本地工作目录操作这个问题才彻底绝迹。3. Library元件与工艺库的仓库3.1 Library 里到底装了什么Library 是 ADS 里最容易被低估的一层。很多人以为 Library 就是放元件的其实它放的东西远不止元件符号标准库ADS 自带的模拟/RF 元件库里面是各种理想电阻电容电感、传输线、S 参数控件等这是默认存在的厂商 PDKFoundry 提供的完整工艺库比如 TSMC 的 tsmc18rf里面除了器件 symbol还有版图、工艺文件、Pcell、仿真模型和设计规则器件模型库比如村田的电容电感 GIPLR 库、英飞凌的射频器件库按型号封装好了模型可以直接拖进原理图使用用户自定义库自己做好的模块、封装的器件模型、固定的偏置电路、以及关键的基板定义都可以存成自定义 Library方便跨项目复用。搞清楚这个分类之后很多困惑就解决了。比如很多人问为什么我拖个村田电容出来没有模型参数大概率是因为只用了原理图符号库而没有正确加载和使用村田提供的 GIPLR 设计库。3.2 新建自定义 Library 的正确方式创建自定义库用 File → New → Library在弹出的对话框里选择归属哪个 Workspace并输入库名。库名的命名规范比 Cell 还要严格因为 Library 有可能被多个 Workspace 引用库名冲突是实打实的坑。建议采用公司名_模块名_类型的格式比如 AcmeLib_PA_Cells、MyLib_Passive。我见过有人在好几个工程里都建了一个名为 MyLib 的库里面内容完全不同然后在跨工程引用时各种混乱最后被迫逐个改名。命名前缀从一开始就统一能省掉很多后面的事。新建 Library 后可以在里面创建 Cell也可以把已有的 Cell 复制进来。当你积累了一个微带滤波器模板库、匹配网络模板库后新项目起步的速度会明显变快。相比每次从头搭电路从库里拖一个改参数要高效得多。3.3 加载厂商 PDK 与第三方器件库DesignKit 安装流程这里单独拿出来说是因为它几乎是每个射频工程师都会遇到的场景要么是装 tsmc18rf 做流片验证要么是装村田/英飞凌的器件库做消费类设计。ADS 对这类第三方库有统一的安装机制叫 DesignKit。操作路径是 File → Install Design Kit。选择厂商提供的 .zip 或安装程序后ADS 会引导你指定安装目录完成后在 Library 列表里就能看到新库。这里有三个容易踩的坑第一个是版本匹配。新版本的 ADS 对旧 DesignKit 的兼容性有时候有问题。装完库之后如果提示 library was built with an incompatible version说明这个 DesignKit 的格式和当前 ADS 版本不匹配需要去厂商官网下载适配当前 ADS 版本的更新包。比如英飞凌的某些产品库官网会明确写出支持哪些 ADS 版本装错了就是无休止的报错。第二个是引用路径。DesignKit 安装在哪个目录决定了引用是否有效。所有团队成员应统一 DesignKit 的安装路径否则 A 机器上能跑的工程拷到 B 机器上库引用路径失效全部元件变成红色问号。第三个是 PCell/仿真模型联动。很多 PDK 库里的元件是一体的拖进原理图的是 symbol但仿真时用的是绑定的工艺模型做版图时又能生成对应层级的 layout。这类联动依赖库本身提供的映射文件所以不要手动去更改库内部的 Cell 结构你只需要调用不要修改。3.4 Library 的跨 Workspace 引用与冲突规避在 Project Browser 里Library 列表通常来自两个来源当前 Workspace 自带的库以及通过引用方式挂进来的外部库。添加引用的操作是右键 Library 区域 → Add Library Reference然后选择已有的 Workspace 或 DesignKit 库。引用的好处是节省空间、方便统一升级。但要注意被引用的外部库必须是读多写少的公共资源。如果你要修改一个公共库里的 Cell应该先把它复制到当前 Workspace 的自有库中再改而不是直接改原库。否则你改了别人引用同一个库的设计也全变了这种连锁反应非常难排查。还有一个细节当两个库里的 Cell 重名但内容不同又没有设置引用优先级时ADS 的库解析机制可能返回name already exists或者直接引用错误。规范做法是在团队内部约定同一个 Workspace 引用的多个 Library 之间Cell 命名不允许重复。4. Cell设计的基本单元4.1 Cell 与 View 的关系原理图、版图、符号与数据Cell 是实际设计的承载单元但和很多人理解的Cell 等于一张原理图不同一个 Cell 下面可以有多种 View。最常见的 View 包括schematic原理图视图电路设计的入口layout版图视图用于物理实现和 EM 仿真symbol符号视图代表这个 Cell 在被上层电路调用时显示的样子data display数据显示视图放仿真输出的波形和表格后缀通常是 .ddsdataset仿真后自动生成的数据集存放计算结果。理解 View 之后很多高级操作你就一路通了。比如在 ADS 中建电容电感的封装模型正确的做法不是画一张原理图完事而是新建一个 Cell在 Cell 下画好 symbol、layout再把 layout 关联一个 EM 仿真模型。这样在原理图里调用这个 Cell 时S 参数仿真跑到这个器件实际调用的不是理想模型而是 EM 求解出来的三维电磁模型结果会真实很多。同理标题里提到过的 emmodel 与 emcosim 联合仿真模式本质就是让同一个 Cell 在不同的仿真阶段切换视图能力早期用理想模型快速验证电路架构后期用 EM 模型验证版图效应两种模式在同一个 Cell 上无缝衔接。视图体系不搞清楚这层逻辑是玩不明白的。4.2 创建 Cell 与层级化设计创建 Cell 用 File → New → Cell在弹出的对话框里选择归属的 Library命名并指定初始视图。Cell 的命名我这里给一个强烈建议采用模块名_功能_版本例如 Matching_Input_v1、PA_Core_v2。尤其在做 PA 或者 Doherty 这类多级电路时你会有输入匹配、级间匹配、输出匹配、偏置网络、功放管模型等多个 Cell命名不清很容易在顶层电路里搞混。层级化设计是 Cell 体系最值钱的能力。具体操作是在原理图中选择 Component → Library Browser从库里选中一个 Cell确认它的 symbol 视图存在就可以像放置普通元件一样把它实例化到当前原理图中。被实例化的 Cell 就是子电路双击它可以下钻到它的内部原理图进行修改。这种顶层只负责互连、底层负责具体实现的思路对复杂系统级设计几乎必不可少。4.3 Cell 在仿真流程里的实际角色以 PA 仿真流程为例我看过不少新手把一整台功放电路画在一张原理图上密密麻麻一片调试时改一个电容都要翻半天。正确的做法是把整个 PA 拆成多个 Cell输入匹配网络是一个 Cell功放管及外围是一个 Cell输出匹配网络是一个 Cell偏置网络是另一个 Cell顶层原理图只负责串起来。任何一级需要优化只需要进到对应 Cell 单独仿真不影响其他部分。到了版图和 EM 验证阶段这些 Cell 又会对应各自的 layout 视图和 EM 模型。做差分线仿真时你可以在 Cell 里同时保留原理图视图和版图视图然后通过 EM/Cosim 联合仿真模式将版图的电磁模型和原理图中的无源器件一起迭代最终得到考虑了布线耦合效应的更接近实测的结果。整个过程的全链路基础仍然是Cell 下多个 View 各司其职这套逻辑。4.4 AEL 脚本批量管理 Cell 的进阶入口ADS 内置了 AELAdvanced Equation Language脚本语言可以在命令行窗口直接操作 Workspace、Library 和 Cell。对于我要批量建立 50 个相同结构的 Cell只改参数这类需求手工人肉操作会崩溃用 AEL 脚本可以几秒钟完成。比如在命令行窗口输入类似 newCell(MyLib, LNA_Matching_v1) 这样的命令就可以在指定库里创建 Cell。AEL 还支持循环、条件判断等编程结构适合做参数扫描和批量建库。大多数教程不会提这个但掌握它之后你对ADS 到底是怎么组织数据的理解会上升一个层次。这部分内容比较复杂这里先留个入口后续可以单独讲。5. 实操从零搭一个 2.4GHz 阻抗匹配电路5.1 创建 Workspace 和 Library现在我们实际走一遍完整流程。我的环境是 ADS 2022以下操作在近几个大版本中基本通用。第一步创建 Workspace。File → New → Workspace名称输入 Matching_Tutorial_2p4G路径选择专门的工作目录确保全英文路径。创建完成后进入 Main 窗口左侧 Project Browser 里会出现 Matching_Tutorial_2p4G 这个节点。第二步创建一个自定义 Library。File → New → Library归属选择刚才创建的 Workspace库名输入 TutorialLib。可以看到 Workspace 节点下出现了 TutorialLib 的条目。这里顺便说一句ADS 新建的 Workspace 里通常已经自带了一个与 Workspace 同名的设计库里面有一个空的 cell_1 之类的内容。我不太建议直接用默认库而是新建一个语义清晰的自定义库这样在跨工程引用时能一眼分清这是教程自带的库还是我自己整理的库。5.2 设置基板参数 MSub在画匹配电路之前先定义基板。这一步很多新手会跳过导致后面微带线仿真结果完全不靠谱。在原理图窗口里从元件面板搜索 MSub 并放入原理图。双击 MSub 控件设置如下参数以常见的 FR4 双面板为例H介质厚度1.6 mmEr相对介电常数4.4Mur磁导率1Cond金属电导率5.8E7Hu封装高度1.0e33 mmT金属厚度0.035 mmTanD损耗角正切0.02MSub 相当于整个设计的地基所有微带线的特征阻抗、相位延迟都依赖它计算。改板材、改板厚后匹配结果必须重仿这是常识中的常识。5.3 新建 Cell 并搭建原理图在 TutorialLib 上右键 → New Cell命名为 Matching_Net_v1。双击打开后进入原理图编辑窗口。现在搭建一个最简单的 50Ω 到 50Ω 的微带线匹配网络原型目标是在 2.4GHz 附近实现良好匹配。元件清单两个端口 Term1 和 Term2阻抗都设为 50Ω两段微带线 TL1 和 TL2中间并联一个集总电容或开路短截线。实际匹配时 TL 的长度和特征阻抗就是优化变量。从元件面板拖放元件的方法左边元件面板选择 TLines-Microstrip 类别把 MLIN微带线拖入原理图选择 Lumped-Components把电容或电感拖入。连线后原理图里会看到微带线的 W 和 L 参数初始值先填 W3.0mm对应 FR4 1.6mm 板厚下大约 50Ω 线宽L10mm。集总电容初始值填 1pF。5.4 添加 S 参数仿真控件原理图画完了加上仿真控件。从元件面板找到 S_Param 仿真控件拖入原理图并双击设置Start1 GHzStop3 GHzStep1 MHz。然后在原理图工具栏点击 Simulation 按钮或按 F7启动仿真。仿真完成后自动打开 Data Display 窗口默认会有 S11 和 S21 曲线。第一次跑完你会发现在 2.4GHz 处 S11 可能只有 -5dB 左右匹配效果并不好——这是正常的因为根本没有优化过。观察 S11 的史密斯圆图判断当前阻抗状态然后在仿真数据显示窗口里打开 Smith Chart 图把 S(1,1) 拖上去。从圆图上可以直观看出当前端口阻抗离 50Ω 中心差在哪里是偏容性还是偏感性这决定了下一步是加大电容还是减小电容、微带线是加长还是缩短。5.5 用优化控件自动逼近目标手工调参浪费时间直接上优化。回到原理图把 TL1 的 L、TL2 的 L、并联电容 C 的 C 值这三个参数设置成变量比如 L110mm、L215mm、C11pF然后在参数前打勾开启优化。添加两个器件Optim 优化控制器和 Goal 优化目标。Goal 设置为 S11 在 2.4GHz~2.5GHz 频段内的最大值小于 -20dB。设置好后点击优化运行按钮ADS 会自动迭代变量值。通常几十次迭代后S11 就能压到 -30dB 以下。此时把优化得到的变量值更新回原理图再重新做一次普通 S 参数仿真确认结果。强调一句优化不是万能的。优化目标设置不当、变量范围太宽ADS 会给出物理上无法实现的参数比如负电容、负线宽。变量的上下限一定要设合理比如线宽设置 0.5mm~5mm线长设置 1mm~40mm。如果优化出来的线宽是 0.01mm制板根本做不出来这个结果就只能参考不能交付。5.6 结果显示与数据管理仿真完成后所有数据都在 Cell 的 dataset 视图里。Data Display 可以将曲线、史密斯图、表格组合成一个报告模板以后每次重新仿真打开这个 .dds 文件就会自动更新数据。这里分享一个我自己踩过的坑Data Display 里需要显示多组对比曲线时比如优化前 vs 优化后不要只覆盖保存建议把不同版本的仿真数据复制成不同数据集或在 Data Display 里直接加上数据集前缀。否则同事打开工程只看到最新一条曲线根本不知道优化过程经历了什么。花一分钟做版本标注后面省一小时。6. 常见问题排查与避坑指南6.1 常见问题速查表现象常见原因排查与解决新建 Workspace 后找不到 Library默认库没有显示或引用未加载检查 Project Browser 左边的下拉筛选确认没过滤掉库节点新建库后刷新PDK/DesignKit 安装了但元件列表为空DesignKit 版本与 ADS 版本不匹配或安装路径未被识别到厂商官网下载适配当前 ADS 版本的库重装时换统一安装路径打开同事的工程报 missing library引用了外部库但当前机器未安装或路径失效同时拿到 PDK 或第三方库在 Library 引用管理里重新指定路径原理图正常EM 仿真开始即报错模型或 Cell 引用无效或路径含中文/空格检查 EMModel 中 Cell 的视图引用是否指向当前 Workspace 可访问的 Cell改纯英文路径ODB 导入后层叠或阻抗全乱导入单位设置错误或未选择正确阻抗 profile导入时确认单位是 mm 还是 mil和板厂保持一致导入后核对层叠表同一名字的 Cell 在仿真时被错误引用多个 Library 下存在同名 Cell引用优先级混乱统一库内命名或重命名冲突 Cell确保整个 Workspace 内引用唯一优化结果出现负电容、负线宽优化变量范围设置不合理给每个变量设合理的物理下限和上限重新优化6.2 关于库引用失效的排查流程引用失效是 ADS 使用中最高频的问题之一。我的排查顺序是先看 Library 列表里目标库还在不在不在就 Add Library Reference在但元件变红说明内部路径损坏考虑重装 DesignKit元件正常但仿真报错找不到 Cell那问题多半出在当前 Workspace 对库的搜索顺序上检查是否同时存在同名库干扰。一个容易被忽略的点是DesignKit 安装后有时要重启 ADS 才会被正确识别。如果你装完厂商库发现没有新增条目先别急着重装彻底关闭 ADS 再重新打开很多时候这一步就解决了。6.3 实际调试过程中的几条独家经验第一不要手动改厂商库里的 Cell。厂商库的内部结构包括 Pcell、变量映射、模型绑定是一个整体手动修改极容易破坏绑定关系导致仿真模型和 symbol 对不上。你要做定制就把 Cell 复制到自己的库里再动手。第二养成命名即注释的习惯。ADS 的工程里没有很完善的注释系统但元件和变量的名字是可见的。把 C1 命名为 C_match_out把 L1 命名为 L_bias_choke比写一堆注释在原理图旁边有效得多尤其是工程要交给别人的时候。第三版本迭代用 Cell 版本后缀不要只靠另存为。我见过有人把整个 Workspace 复制出一堆文件夹final、final2、final_really_done……最后自己也分不清哪个是真正的。正确做法是同一 Cell 内用参数变化管理方案或用 AEL 脚本批量生成带版本号的新 Cell保留同一结构的多个迭代版本清晰又安全。第四关于 EM/Cosim 联仿不要一上来就全版图跑。正确节奏是先用理想模型把原理图性能调到目标附近再针对关键无源器件单独做 EM 建模最后才把整版放进 EM 仿真做联合优化。直接全版图 EM优化一次仿真几个钟头迭代一次要一天效率极低。第五单位永远用同一套。导入 ODB 或者从其他工具转数据时先检查数据源的单位设置是 mm 还是 mil再匹配 ADS 的单位。单位错位导致的尺寸偏差很难肉眼发现但电磁仿真结果会差得离谱我在实际中吃过一次大亏从那以后导入数据第一件事就是核对单位。写在最后的一点心得做完这一套流程你其实已经把 ADS 最核心的组织逻辑过了一遍。我个人最大的感受是Workspace、Library、Cell 这套体系初学时觉得是束缚用久了才会发现它是自由度。把库组织好了后续做 PA 流程、Doherty 仿真、emmodel/emcosim 联合仿真、差分线分析都是在这套骨架上叠加仿真功能而已。所以我的建议始终是新手入门前两周别急着追求复杂的仿真结果先在 Workspace 和 Library 层面建立自己的规范。这个基础打得越稳后面踩的坑就越少。下一篇我准备沿着本教程的 2.4GHz 匹配工程往下延伸讲一讲如何把原理图设计转换成版图、并通过 EM 模型做联合仿真验证也就是 emmodel 和 emcosim 那个方向。到时候你会发现Cell 下面那套 View 管理的能力真正开始发光了。