PDN阻抗优化与芯片供电仿真:Sigrity+ADS双工具实战指南
很多硬件工程师第一次接触电源完整性时都会被一堆公式和频域曲线劝退。我当年也是先啃理论、再上手工具绕了不少弯路后来发现真正实用的路径其实很直接先把PDN阻抗的核心逻辑吃透然后借助Sigrity把版图转成可量化的Z参数再用ADS搭时域链路看芯片供电波形。这篇文章就是我想当初拿到手的完整流程核心围绕PDN阻抗优化和芯片供电仿真工具固定为ADS与Sigrity适合正在做数字电路、高速接口或电源分配的硬件工程师参考。1. 先从“为什么”聊起电源完整性到底在解决什么问题1.1 从“电压不稳”到PDN阻抗一个容易被低估的源头数字芯片工作时供电引脚上的电压不是恒定不变的它一直在小范围波动。轻微的纹波对低速电路可能没影响但对DDR、SerDes、FPGA这类高速器件供电电压一旦在某个瞬态窗口内掉了超过允许范围轻则时序裕量变小重则直接误码复位。不少工程师习惯把这类问题归结为“电源噪声大”然后去换更大的电容、加磁珠结果改善有限。真正的根源往往在于整个供电网络Power Distribution Network简称PDN的阻抗过高。可以这样理解芯片在极短时间内拉取大电流如果供电路径上阻抗很大根据欧姆定律就会产生明显压降这个动态压降叠加在直流工作点上电压自然就跌了。PDN本质上是VRM、体电容、去耦电容、PCB平面、过孔、封装和裸Die之间形成的复杂网络它既有储能特性也有谐振特性。不同频率下PDN各部分的阻抗贡献完全不同低频段靠稳压器和体电容中频段靠陶瓷去耦电容高频段则依赖PCB平面电容和封装寄生参数。做电源完整性设计核心目标就是把这条“阻抗路径”在一个很宽的频段内压到足够低让芯片眼中的电压波动在可接受范围内。1.2 目标阻抗怎么定可复用的计算公式与经验值理想PDN阻抗当然越低越好但成本、面积和布线复杂度摆在那里所以工程上必须量化一个“够用的底线”也就是目标阻抗。最常见的计算公式是Z_target (VDD × 纹波百分比) / 最大瞬态电流变化量举例来说一颗核心电压为1.0V的芯片允许3%的电压波动瞬态电流变化量大概是4A那么Z_target 1.0 × 3% / 4 7.5毫欧。这个值就是设计时需要尽量满足的上限。频率范围从哪里算到哪里一般建议覆盖到10倍开关频率至少要覆盖芯片瞬态电流的主要能量带宽否则高次谐波分量的响应仍然可能把电压“顶”出阈值。实际项目中芯片厂商的电源模型或应用笔记往往会给出具体的目标阻抗曲线甚至直接给出不同频率段的最大允许阻抗这种数据比理论公式更贴合真实器件设计时优先按厂商要求来。如果拿不到官方数据再用公式自行推算先按10%纹波起步后续通过仿真确认余量。要注意的是目标阻抗不是在全频段都平坦的有些区域芯片本身不敏感比如低于反馈环路带宽的低频段可以略放宽而开关频率附近的敏感段则要严格压住。2. 工具选型思路ADS与Sigrity各自擅长什么2.1 双工具配合的节奏各取所长的分工方案很多刚接触PI仿真的工程师会困惑Sigrity和ADS都是业界常用工具到底哪个够用。以我实际跑下来的经验两者不是二选一的关系而是“提取验证”的上下游关系。Sigrity的优势在于和版图结合得非常紧密尤其PowerSI这个组件可以直接吃进PCB的版图文件提取整个PDN网络的频域参数。它会把平面、过孔、走线、电容模型全部纳入计算最终输出Z参数、S参数或者TDR曲线。对工程场景来说要回答“这块板子现在的PDN阻抗是多少”“加了哪些电容之后能否满足目标”这类问题Sigrity是最高效的答案来源。ADS则强在电路级仿真和时域行为建模。它有灵活的原理图环境可以放晶体管级模型、IBIS模型、S参数文件还可以引入各种受控源来模拟芯片的瞬态电流抽动。ADS的射频和微波基因很强但在电源完整性场景里它更适合做“把频域提取结果转化为时域电压波形”的验证也就是给一块已经达标的PDN打上真实芯片电流激励观察电压是否真的在裕量内。我一般建议的流程是先用Sigrity提取PDN阻抗、优化去耦方案确认频域目标满足然后把提取结果导出在ADS中用芯片电流模型做时域瞬态仿真用电压波形做最终评判。这套流程的优势是分工清晰频域优化交给专用工具时域验证交给灵活平台避免在单一工具里死磕缺失功能。2.2 叠层、过孔、平面电容仿真前必须搞懂的基础不管用哪个工具仿真的准确性首先取决于对物理结构的理解。叠层结构是PDN的第一个大门电源平面和地平面之间的距离直接决定了平面电容的大小。填充介质越薄、介电常数越高单位面积的电容就越大。两个平面之间形成的电容公式是C ε0 × εr × A / d这个电容对高频去耦非常关键。很多工程师会把去耦电容看成唯一的高频武器忽略了平面电容才是GHz频段的主角这一点在仿真中很容易通过Z曲线看出来。过孔也是容易被简化的环节。电流穿过过孔时会引入寄生电感通常估算为每毫米过孔长度约0.5nH左右。如果电源从内层平面过孔连接到表层芯片引脚这段过孔电感会直接抬高中频段PDN阻抗可能成为反谐振区的决定性因素。在Sigrity中过孔是自动建模的但在ADS手搭模型时必须人为加一个串联电感才能逼近真实情况否则时域波形会乐观不少。去耦电容本身的模型更关键。真实电容不是理想的它有等效串联电阻ESR和等效串联电感ESL因此每个电容都有自谐振频率SRF低于SRF呈容性高于SRF呈感性。要准确仿真建议使用村田、三星等厂商提供的S参数模型或大信号SPICE模型而不是简单用理想电容值。经验值是0201封装的谐振频率通常在500MHz以上0402大约在300~400MHz芯片附近的去耦电容想覆盖100MHz以上频率尺寸就尽量不要超过0402。3. 实战第一段用Sigrity提取PDN阻抗并做去耦优化3.1 从PCB到Z参数PowerSI的操作流程先说一下导入环节。设计文件最好从自己熟悉的EDA工具导出ODB格式这一步比直接导出不带叠层信息的中间格式可靠。ODB包含了叠层结构、走线、过孔和器件坐标是PowerSI最喜欢的数据形态。在PowerSI里打开文件后第一件事是检查叠层设置。重点确认电源平面层的材料厚度、介电常数和损耗角正切值这些参数直接决定平面谐振腔特性。接着在PDN网络中设置端口一个是VRM输出端代表供电源头另一个是芯片电源引脚位置代表负载端。端口数量可以根据需要增加比如同时监控多个点位时每个感兴趣的位置都加一个端口。设置完成后执行交流S参数或Z参数仿真。扫描范围我习惯从10kHz扫到10GHz覆盖绝大多数高速数字系统的需求。仿真完成后查看芯片端口的Z11曲线。读取关键频点的阻抗值与目标阻抗对比。理想曲线应该是一条相对低的线但实际情况几乎不可能实现总会有一个或多个尖峰这些尖峰就是谐振点。整条曲线的形态决定了时域电压最终的波动程度因此第一个观察指标就是“最大尖峰的频率和高度”。常见操作误区是只盯着一两个突出尖峰忽略了整体走势。如果某一段阻抗整体抬高哪怕没有尖锐谐振在时域激励下也可能出现明显压降。反过来如果尖峰出现在芯片电流能量很弱的频段实际影响反而不大。所以正确的做法是结合芯片的工作频率和瞬态电流频谱来判断重点压住能量集中处的阻抗。3.2 去耦电容的“排兵布阵”避开反谐振点去耦优化是PDN设计中最能体现经验的部分。不少工程师的做法是把一大堆不同容值的电容密密麻麻布置在芯片周围认为“多点总比少点好”但仿真结果往往显示某些组合反而制造出新的反谐振峰。反谐振的原理是两个不同谐振频率的电容并联时一个电容在高频呈感性另一个电容在低频呈容性二者在某一点并联谐振导致阻抗急剧升高。这个点通常出现在两个电容自谐振频率之间的某个位置典型频率区间是50MHz到300MHz。优化去耦电容时要看每个电容的阻抗曲线避免多次使用容值相差过大的电容并联在同一位置。实际操作中我习惯在PowerSI中进行去耦电容扫描。步骤是先初步放置一批电容范围覆盖100nF、10nF、1nF和100pF等常见容值仿真得到Z曲线找到反谐振点识别当前z曲线在这个频点的主要寄生来源再有针对性地调整某一档位的电容数量或移走某些电容。反复迭代直到Z曲线的最大尖峰低于目标阻抗。电容位置的影响不能忽视。同一个容值放在芯片同一侧和芯片正下方对1GHz以上频段的效果差距极大。过孔和走线会引入额外电感把去耦电容离芯片引脚越远有效频率就越低。经验法则是高频小电容1nF及以下尽量放在芯片电源引脚正对的平面位置采用直接打过孔到平面的方式中间不要串走线低频大电容可以稍微放宽但也别超过整个电源域面积的合理范围。4. 实战第二段用ADS建立时域芯片供电仿真链路4.1 把频域结果搬进时域构建PDN等效模型频域Z曲线达标之后为什么还要做时域仿真原因很简单频域曲线是线性小信号响应而芯片实际瞬态电流是大信号、非平稳的事件尤其当电流突变发生在某些频率组合上时时域中看到的电压瞬态可能比频域估算更直观也更容易和示波器实测波形对应。在ADS中构建PDN等效模型有两种常用路径。第一种是把Sigrity中提取的S参数文件导出为Touchstone格式直接在ADS原理图中放置一个S4P或S2P元件将端口映射到VRM和芯片端。这种方法保留了全频段的电磁效应准确性最高但仿真时需要注意Touchstone文件的有效频段是否覆盖瞬态电流的主要谐波如果不够要回PowerSI重新扩展扫描范围。第二种路径是由Z参数或电路元件建立集总等效模型利用ADS的S参数拟合功能或直接在原理图中用RLC串联结构逼近Z曲线。这种方式灵活性高方便人为调整某个频段的阻抗也方便观察某条支路的影响适合做设计参数扫描。缺点是拟合过程有误差低频和高频同时拟合时可能需要高阶网络。时域仿真设置方面需要给VRM端提供一个电压源通常用理想直流源即可因为VRM的动态响应会被仿真中的低频网络模型限制。芯片端则放置一个电流源或行为级电流抽取模型。为了模拟实际负载可以用阶跃电流源、脉冲电流源或用你手上的IBIS模型中的电源电流信息。仿真时间至少要覆盖瞬态完整过程一般设置到1ms或更久步长需要精细到能够捕捉高频谐振通常在数十皮秒级别。4.2 EM模型与电路协同仿真ADS里那把“双头剑”ADS中还有一个更进阶的玩法就是EM模型与电路协同仿真这也是很多新手在论坛里反复问的内容。简单理解它不是把提取好的S参数当作固定文件而是把结构本身的EM模型直接放进电路仿真器里实现Field-Circuit Co-simulation。以芯片供电仿真为例如果你在ADS中建立了Momentum项目的精确PDN模型比如把整个电源平面的EM结构都建出来那可以直接在原理图中放置一个EM Model然后像普通元件一样连接电容模型、芯片电流源和VRM电路。这样做的优势是EM模型和电路模型可以同步修改、联合仿真比如调整平面上某个电容摆放位置时可以直接在EM布局中更新再重新协同仿真而不必反复导文件。这种模式的深度价值在于它能处理一些非理想效应叠加的场景。比如芯片负载的动态变化和印刷电路板上平面的谐振同时作用协同仿真可以看到它们交互后的时域结果。实际操作中重点要控制EM模型的计算规模和电路瞬态时长的平衡因为宽频段EM模型一旦遇到长瞬态计算量可能指数级增长。我的建议是先做快扫描看大趋势再缩短仿真区间看细节。另一个常见的误区是把协同仿真想得太万能。EM模型虽然是全波精度但它对边界条件、端口定义和材料参数非常敏感任何一个环节和真实板子有差异结果都会偏差。协同仿真更适合用来研究趋势和比较方案而不是脱离实测经验的绝对精度来源。5. 常见问题与调试笔记5.1 反谐振点压不下去的几种原因哪怕优化了很多轮有时Z曲线上那个顽固尖峰就是压不掉。遇到过最多的情况是电容种类选得不错但放置太集中或者去耦电容和芯片不在同一侧过孔来回穿越导致寄生电感过大。过孔每增加一毫米长度等效电感增加约0.3到0.5nH这对1GHz以上的尖峰特别致命。还有一种是平面本身在某个频段形成了腔体谐振。电源平面和地平面构成的矩形谐振腔会在特定频率产生驻波这是增加再多电容也很难完全消除的。遇到这种情况除了调整电容参数更重要的是考虑调整去耦电容位置来打破驻波最强点或者通过叠层调整缩小电源区域面积。微波频段常用的“棋盘格”分布去耦电容在这里同样适用可以让电流短路路径尽可能短。如果你已经优化了很久Z曲线在某个频段始终压不下去不妨先检查一下在分析频率范围内电容模型本身是否还准确。很多普通电容SPICE模型在超过自身谐振频率后曲线就和实际器件偏离较大导致仿真结果出现假尖峰。换成厂商S参数模型再仿真往往尖峰就消失了。5.2 仿真波形和实测对不上时域仿真和示波器实测波形差别很大不一定说明仿真有问题首先得看测量方式和探头的带宽。芯片电源引脚上的电压纹波包含高频分量普通探头接地线过长会引入明显噪声实测波形往往包含大量环境耦合噪声这并不代表电源本身的真实表现。其次电流激励模型是否贴近真实芯片是最大的变量。很多情况下工程师手头没有芯片的精确电流模型只能用经验波形替代这时仿真更多是评估设计趋势而不是绝对电压值。建议先采集真实芯片在满载和瞬态切载条件下的电流波形回放到仿真中重新验证如果模型设置正确仿真与实测的趋势和幅度就会逐渐趋近。最后照顾一下温度影响。电容ESR和介电材料的损耗会随温度变化低温时ESR偏高高温时电容容值漂移这些都会导致测量时PDN阻抗曲线变化。如果仿真设定的是常温参数而实测环境温差很大对不上也正常。有条件就在两种极端温度下做仿真对比参考范围更可靠。5.3 新手容易踩的“仿真陷阱”速查表针对初次跑PDN仿真的人我整理了一张避坑清单每一点都是实际项目里反复遇到的真实场景贴出来供自查。陷阱点表现对策目标阻抗计算过高设计看似达标实测纹波超限结合芯片实际电流频谱而不是只用一个总电流算电容库用了理想值高频段仿真过于乐观一律使用厂商S参数或真实SPICE模型扫描频段不足时域响应被高频谐振打断扩频到10倍开关频率以上再判断端口位置不对Z参数反映的不是实际芯片看进去的阻抗端口设置在芯片电源引脚尽量靠近实际位置忽略了平面电容超高阻抗尖峰在仿真中加入平面结构或在叠层上缩小介质距离时域步长太大高频纹波失真波形趋平步长设为最小关注频率周期的1/20或更小只看单个谐振点忽略了整频段趋势结合芯片电流频谱判断各频段权重仔细排查下来绝大多数“仿真失败”都可以归结为对模型细节关注不够倒不完全是工具不会用的问题。6. 一些先贴上再说的经验最后分享一点自己的实际体会。跑PI仿真这件事难的地方不在软件本身而在于怎么定义合理的设计指标和怎么选对模型。我见过不少团队把仿真的作用只理解为“证明设计没问题”这是很可惜的用途。合理使用这套流程完全可以在打样前发现好几处去耦配置问题把改版次数从三次降到一次。如果刚开始接触建议不要一上来就处理整块复杂单板。拿一个小模块比如一个FPGA核心电源域配置好叠层和去耦电容先用Sigrity提取Z曲线再用ADS做一次时域仿真把这个闭环跑通之后扩展到大型PCB心里就有底得多。另外平时可以积累常用电容的S参数库和芯片电流模型库这些资产会在后续项目里反复复用越攒越顺手。

相关新闻

轮式编码器里程估计实战:从脉冲换算到差速模型与标定排坑

轮式编码器里程估计实战:从脉冲换算到差速模型与标定排坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 16:00:27 阅读更多 →
WinForm RichTextBox实战:打造轻量级生产级文本编辑器

WinForm RichTextBox实战:打造轻量级生产级文本编辑器

简介:本资源是一个基于C# WinForm框架开发的富文本编辑器完整实现项目,面向C#初学者与WinForm桌面应用开发者,解决基础文本格式化、排版与交互功能快速落地问题。项目采用Visual Studio 2022开发,封装了加粗、斜体、下划线、字体颜…

2026/10/7 16:00:27 阅读更多 →
PCB邮票孔怎么加:半孔、断孔、Gerber与四款EDA实操

PCB邮票孔怎么加:半孔、断孔、Gerber与四款EDA实操

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 16:00:27 阅读更多 →

最新新闻

带你粗略了解C++回文链表

带你粗略了解C++回文链表

请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true思路1.用快慢指针,快指针有两步,慢指针走一步,快指针遇到终止位置时,慢指针就在链表中间位置2.同时用pre记录慢指针指…

2026/10/7 16:38:17 阅读更多 →
RuoYi-Vue-Plus 集成 Flowable 工作流与在线表单设计实战

RuoYi-Vue-Plus 集成 Flowable 工作流与在线表单设计实战

简介:本资源是基于 RuoYi-Vue-Plus 二次开发、扩展 Flowable 工作流能力的后台管理项目,面向需要在线表单设计与可视化流程编排的 Java 开发者,尤其适合学习工作流引擎、毕业设计及企业后台原型搭建等场景。压缩包共 1198 个文件,…

2026/10/7 16:38:17 阅读更多 →
Winlogon200X_v3c:Windows登录循环与注册表修复指南

Winlogon200X_v3c:Windows登录循环与注册表修复指南

简介:Winlogon200X_v3c是一套面向Windows XP/2003系统维护人员、内核开发者与安全研究者的源码级学习资源,聚焦Winlogon组件在用户登录流程、安全交互、桌面环境构建等环节的底层实现。压缩包内共119个文件,主体为45个C源码和41个头文件&…

2026/10/7 16:38:17 阅读更多 →
若依集成Flowable工作流引擎与在线表单二次开发实战

若依集成Flowable工作流引擎与在线表单二次开发实战

简介:本资源是基于 RuoYi-Vue-Plus 二次开发的工作流后台管理项目,面向 Java 后端开发者、全栈工程师及需要在线表单与流程编排能力的团队,重点解决 Flowable 工作流场景下的流程设计与表单定制问题。压缩包共 1198 个文件,约 10.…

2026/10/7 16:38:17 阅读更多 →
RAG与多智能体协同:心内科疾病智能诊断系统架构与工程实践

RAG与多智能体协同:心内科疾病智能诊断系统架构与工程实践

简介:本资源面向医疗人工智能开发者、心内科临床科研人员及RAG与多智能体方向的学习者,提供一套基于检索增强生成与多智能体协同架构的心内科疾病智能诊断系统开发项目。项目通过检索医学文献与案例库,结合心电图、超声心动图、生化指标等临床…

2026/10/7 16:38:16 阅读更多 →
C# WinForm纯托管图像处理库:高斯/中值/小波滤波实战

C# WinForm纯托管图像处理库:高斯/中值/小波滤波实战

简介:本资源是一套面向C# WinForm开发者与图像处理初学者的实战型代码包,聚焦图形处理核心能力训练,涵盖图像加载显示、灰度转换、高斯/均值/中值滤波去噪及小波分析等关键技术点,适用于UI增强、数据分析前端或课程设计等实际场景…

2026/10/7 16:37:16 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:13 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →