news 2026/10/6 1:36:53

IC测试向量Pattern转换全指南:从STIL/WGL到主流ATE平台

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IC测试向量Pattern转换全指南:从STIL/WGL到主流ATE平台

刚入行那会儿,我第一次接触“测试向量转换”这个活儿,一脸懵。当时师傅扔给我一个几十兆的文本文件,说:“把它从WGL格式转成咱们机台的格式,明天上线用。”我盯着满屏的0、1、X、Z和一堆看不懂的关键字,头皮发麻。后来在ATE机台上泡了几年,被各种奇奇怪怪的Pattern问题折磨过——时序不对、电平不匹配、循环跳转错乱、仿真过了上机却全Fail——才慢慢把这套东西的底细摸清楚。

这篇文章就想跟你聊聊IC测试向量(Pattern)和Pattern转换这件事。不管你是刚接触测试的芯片设计工程师、封测厂的新手测试工程师,还是想搞懂“测试到底在干嘛”的学生,这篇文章都值得花点时间看完。我会把Pattern的本质拆开讲,把主流ATE平台之间的格式差异摆出来对比,再把我自己踩过的坑和排查经验一并奉上。

1. 先从最基础说起:什么是IC测试向量(Pattern)

在芯片测试的世界里,Pattern说白了就是一份“测试剧本”。它告诉ATE设备(也就是自动测试机台)在什么时间点、往芯片的哪些引脚上、施加什么样的电平信号,同时期望芯片返回什么结果。ATE按照这个剧本一步步执行,就能判断芯片功能是否正常。

1.1 测试向量的三个核心要素

一个完整的测试向量文件,通常由三大部分组成:时序(Timing)、电平(Levels)、向量主体(Vector Body)。这三者缺一不可。

时序定义了信号的边沿关系和时间窗口。比如“地址信号在t=10ns时稳定,时钟在t=20ns上升沿采样,数据在t=30ns时读取有效”这类信息。电平则定义了信号的电压阈值,比如VIH(输入高电平)、VIL(输入低电平)、VOH(输出高电平)、VOL(输出低电平)分别是多少伏。向量主体才是真正按周期排列的0/1/X/Z逻辑值,是整个Pattern文件里最长、最啰嗦的部分。

拿一个最简单的51单片机GPIO测试举例:你要写一个Pattern,让某个引脚输出高电平,然后读取另一个引脚的电平值。Pattern会规定:前100ns复位信号拉低,之后拉高;然后给GPIO配置寄存器写入数据;最后在某个时钟边沿后,把输出引脚电平跟期望值做比较。这一整套动作,放在一个只有几十行的测试向量里,ATE机台就能自动完成。

1.2 为什么Pattern“不能直接用”

很多刚接触测试的人会问:仿真器里跑的好好的testbench,为什么不能直接丢到ATE上跑?答案在于仿真器的抽象层级太高了。仿真器里的#10延迟、begin/end块、$display这类语言结构,ATE的Pattern格式里根本不存在。

ATE的Pattern本质上是一张巨大的表格,每一行代表一个测试周期(tester cycle),每一列代表一个引脚(pin)。表格里填的是该周期内每个引脚的状态值(驱动什么、比较什么、掩蔽什么)。这种极简结构是为了让机台的时序控制器(timing generator)和波形生成器(waveform generator)能够高速执行,每一行之间的切换时间通常只有纳秒级甚至皮秒级。

所以,从设计验证的testbench到ATE可执行的Pattern,中间必须要经过“转换”这道工序。转换的核心任务就是把仿真里的时序行为和逻辑关系,翻译成机台能理解的、按周期排列的精确波形描述。

2. 转换的那些坑:Pattern格式差异到底差在哪里

Pattern转换之所以让人头疼,是因为每个ATE厂商都有自己的一套“方言”,谁也不太愿意完全兼容别人。

2.1 主流ATE平台和各自的Pattern格式

目前市面上主流的ATE平台,主要掌握在几家大厂手里。下面是几个最有代表性的:

平台厂商Pattern格式典型应用场景
UltraFlex / J750Teradyne.dat/ Maxscans格式消费电子、MCU、无线连接芯片、SoC
V93000(V93K)Advantest.pat+timing+levels多文件组合高性能计算、手机SoC、车规芯片
3380P / 3300Chroma.pat/.vec内置格式PMIC、电源管理、模拟混合信号芯片
ETS-364 / ASL1000Astronics.ccl/.pat自定义格式模拟、混合信号、功率半导体
STSNI.py内嵌Sequence + Pattern实验室验证、小批量产

超大规模SoC测试基本被Teradyne和Advantest两家垄断,而中小型封测厂则大量使用Chroma和ASL系列的机台,需要跨平台转换的场合特别常见。

2.2 从仿真格式到ATE格式的第一道坎

仿真的testbench通常以Verilog/VHDL形式存在,里面用到了大量的行为级描述——initial块、always块、task/function调用。这些东西没法直接映射到Pattern里。所以行业里通常有两条路径来生成初始Pattern:

一条是通过仿真器VCD/SAIF波形文件转Pattern。仿真跑完后导出标准波形文件(VCD或FPGA工具吐出的STIL文件),再用专门的转换工具链生成ATE格式。另一条是用芯片验证阶段的验证向量直接导入,比如搭配使用Synopsys的TetraMax生成的测试向量(通常以STIL格式输出),再转换到具体ATE平台。

这里有一个关键概念叫“Cycle-Based Pattern”,就是每条向量对应一个tester cycle,所有引脚在同一周期内同时动作。但在仿真里,信号跳变的时刻通常是错开的,比如地址信号先稳定、时钟后来、数据最后到位。转换时,工具必须把这些跳变对齐到tester cycle的时间网格上。如果对齐不好,要么一个周期内塞了太多跳变,要么采样点落在了电平翻转的边沿上,结果就会不稳定甚至误判。

2.3 标准格式WGL和STIL到底在转换中扮演什么角色

WGL和STIL是两种行业标准格式,相当于“翻译中间人”的角色。对于一套完整的Pattern,时序和电平信息全部包含在标准格式里。各厂商的ATE工具都提供了与STIL/WGL双向转换的接口,所以很多转换工作实际是“从A平台格式转成WGL/STIL,再从WGL/STIL转成B平台格式”。

WGL(Waveform Generation Language,波形生成语言)在存储类测试领域用得非常多,老一代的存储器测试机几乎都是WGL的天下。STIL(Standard Test Interface Language,标准测试接口语言)则是由IEEE 1450标准定义的格式,在现代SoC测试中更常见,它能同时描述时序、电平、向量和pattern burst的执行方式。

实际转换场景里,从WGL转V93K格式与从STIL转UltraFlex格式的难点不太一样——WGL更侧重于波形的精确描述,alpha字符多、格式古老;STIL结构化更强,有分层的block,但没有统一标准前各家的STIL支持程度差异很大。很多工具号称兼容STIL,实际只支持了STIL的一个子集,稍复杂一点的语句就报错或者静默丢信息。

2.4 转换工具选型:用官方还是用第三方

转换工具的选择决定了你能少掉多少头发。

每家ATE厂商都提供自己的转换工具,比如Teradyne的Pattern Conversion Utilities(PCU),Advantest的V93K Pattern Editor支持导入STIL/WGL。官方工具的好处是格式兼容度最高,能识别自家机台的特殊扩展字段,缺点是通常只有购买了该机台的客户才能拿到完整功能。

第三方工具有时候反而更灵活,比如TestInsight、SilverTest这类工具,主要面向多平台转换场景。我有一次在一个有V93K和UltraFlex两种机台的实验室工作,第三方程式直接搞定两边转换,不用到一台一台的官方工具里去倒腾。

选择工具的时候,最需要注意的一点就是:工具的语义检查能力。转换工具必须能够识别“这个Pattern用到了哪些资源”,包括pin的映射关系、总共有多少测试周期、有没有非法跳转、时序是否超出了机台的精度限制。好的工具会在转换时报出一堆warning让你排查,差的工具只会静默输出一个“看似正确但实际跑不动”的文件,让你在调试时怀疑人生。

3. 实战派教程:一次完整的Pattern转换实操

说完了理论,咱们来点实战。我挑了一个比较典型的场景:把一份用于MCU芯片的扫描链测试向量(Scan Pattern),从某第三方EDA工具生成的STIL文件,转换成Teradyne UltraFlex机台的Pattern格式。这个流程大致适用于所有基于STIL/WGL的转换任务。

3.1 转换前的准备工作:收集和核对

转换之前,需要先把所有“周边信息”弄清楚。测试向量本身只是整个测试程序的一部分,如果raw文件用的引脚名和机台测试程序的引脚名对不上,后面就是白忙。换哪根引脚、极性要不要取反,全靠你提前核对。

这一步我会确认以下信息清单:

  • DUT的pin map:芯片都有哪些引脚,信号方向是输入还是输出。
  • 通道映射:DUT引脚对应Tester上的哪个channel,两者是否一一对应。
  • 电平规格:IO电压是多少,输入阈值是几分之几VDD,输出负载是多少。
  • 时序规格:时钟频率、时序窗口、采样点的设置。
  • Pattern的用途:是功能测试、扫描测试、BIST还是存储器test。

千万别觉得这些信息是常识就不用核对。我见过不下三次项目因为IO电压带错了导致整个项目delay。芯片的标称IO是1.8V,但Pattern里用的电平还是早先版本的3.3V,ATE照样按1.8V跑——结果逻辑高电平压根没达到阈值,芯片的输入端口全靠漏电流撑着,测试结果当然错得离谱。

3.2 动手转换:STIL到UltraFlex全流程

下面我按步骤拆解一下完整转换流程。第1步,准备STIL文件。打开STIL文件,浏览一下是否有以下几个block:Signals、Timing、PatternBurst、Pattern。通常Signals里定义了引脚名和方向,Timing里定义了时序集,而Pattern里就是向量主体。

第2步,用UltraFlex的转换工具导入STIL。如果是命令行环境,类似工具一般长这样:

convert_standalone -stil input.stil -output output.dat -pinmap pinmap.txt

有些版本用图形界面的Pattern Converter,导入STIL后会生成一个初步的Pattern文件和一个Report。这个Report非常关键。转换后第一件事永远是打开Report,看有没有error级别以上的提示。我见过很多人在这一步直接把Report关了,结果后面调试花了整整一天——其实问题在Report里早就写明了。

第3步,检查引脚映射。转换工具会按名称默认匹配引脚,但需要确认名称一致。比如STIL里叫PAD_Clk、机台测试程序里叫Clk,工具会自动匹配不上,要么自动按位置映射,要么干脆报error。我一般会写一个简单的映射文件,把两边引脚对应关系写清楚再让工具读取,节省时间。

映射文件里大概长这样:

DUT引脚Tester通道名
ClkCH_A_05
ResetCH_A_06
DQ0CH_B_01
DQ1CH_B_02

第4步,检查时序转换。这是最容易出问题的地方。STIL里定义的是以ns为单位的绝对时间,而UltraFlex的Timing格式用的是某个Time Set基准下的相对时间。比如STIL里写“时钟上升沿在20ns”,在UltraFlex里就得定义waveform的类型——到底是NRZ(不归零)还是SBC(由返回比较),占空比是多少,周期是多少ns。

转换工具通常会按默认配置自动映射,但不一定合理。举个例子,STIL里如果定义了双向引脚,期望数据在某个边沿被比较,但工具可能默认把这个pin定义成普通输出,采样点位置差了一个周期,转换后就可能出现所有数据都比不上。

第5步,处理X态和掩蔽。仿真里有大量“不关心”状态在Pattern里表示为X,实际到ATE上跑的时候不能真的输出一个“X”电平。转换工具要么把X替换成特定的驱动电平(通常是Z,也就是高阻),要么在对应周期上打出掩蔽(Mask),让机台不比较该引脚的结果。

这一步要特别小心CARE位和MASK位的语义。如果本来应该比较的位置被当成X掩蔽掉了,那测试覆盖率就打了折扣;反过来,如果应该掩蔽的位置没有被掩蔽,误判就会变成一个莫名其妙的Fail。所以每次转换完,我都会抽样检查几个X态密集的周期,确保Mask分布没有离谱。

第6步,全速仿真验证。转出来的Pattern不能直接上机,先回到仿真环境里验证一遍。这个环节叫“Golden Pattern Verification”,目的是验证转换前后的逻辑行为是否完全一致。把转换后的Pattern喂给逻辑仿真器跑一遍回归,对比原始测试向量在仿真器里的结果。如果两边输出不一致,就从第一个不一致的周期往前排查。

3.3 如何在仿真环境里验证转换后的Pattern

如果你的手头有EDA仿真工具(比如Questa、VCS、Xcelium),可以用下面这种思路来搭验证环境:

# 伪代码示意 read_stil converted_pattern.stil add_instance dut_wrapper run_simulation compare_results vs_original_testbench.log

实际上,各大ATE厂商也出过配套的仿真模型,比如UltraFlex的Pattern Simulator,可以离线模拟Pattern在机台上的执行行为。这种方法精度更高,因为它拿到了机台时序引擎的精确模型,能仿真出waveform timing的微小偏差。不过代价是运行速度很慢,一大块扫描Pattern动辄要跑几小时。所以我通常的策略是:先跑一小段(前几百行向量),确认没有大的时序错误和逻辑不匹配;再全量跑一遍作为交付物。

3.4 上机前的最后检查:工程文件清单

在把Pattern交付给产线之前,我习惯把以下文件整理成一个专门的文件夹:

  • Pattern源文件(STIL/WGL格式,留档)
  • 转换后的ATE Pattern文件
  • 引脚映射文件(pin map)
  • 时序定义文件(timing set)
  • 电平定义文件(levels set)
  • 转换日志(conversion log)
  • Pattern仿真验证报告

这一整套东西打包好,不管是自己后续调试,还是交给产线工程师,都能少费很多唇舌。

4. 主流ATE平台Pattern格式横向对比表格

这个表格我可以说是压箱底的心得。不同的ATE平台不仅在Pattern格式上有差异,它们的执行模型、波形生成能力、时序精度也各有侧重。

4.1 五大平台关键参数对比

对比维度Teradyne UltraFlexAdvantest V93KChroma 3380PAstronics ASL1000NI STS
时序精度亚纳秒级(采用delta-time架构)亚纳秒级(采用per-pin计时标量)ns级ns级依赖PXI模块,通常ns级
Pattern执行模型Cycle-based+edge-based混合Cycle-based为主Cycle-basedCycle-based软件定义,灵活度高
波形生成方式板载波形生成,独立边沿可选每引脚有独立的时序发生器板载波形生成模拟+dds混合PXI波形卡
典型转换入口WGL、STIL、VCDSTIL、WGL、VCDSTIL、VCDSTIL、WGLPython脚本+STIL
vector存储深度大(可外扩SSD)中到大中中受内存限制
适合场景SoC/大规模逻辑SoC/汽车电子PMIC/模拟混合功率器件/模拟实验室/小批量

4.2 那些表格里看不出来的细节差异

光看表格还不够,有些细节只有实际用过才体会得到。

Teradyne的UltraFlex在时序处理上非常灵活,支持per-pin的edge set和time set切换。这意味着不同引脚可以用不同时序集,对复杂SoC的多协议并行测试特别友好。但这也意味着转换时工作量更大——每个pin的时序参数你都得逐一核对。我曾经遇到过一个接口信号,仿真里能过但ATE怎么都采不到,最后发现是该边沿恰好落到了另一个信号的转换时间里。

Advantest V93K的优势在于一个大Pattern可以拆分成很多个pattern block,支持conditional branch和macro调用的机制,对压缩重复向量很有帮助。如果你要从STIL转V93K格式,特别要留意STIL里的Call语句和Macro,V93K的pattern文件需要把这些映射成对应的宏调用结构。这一步如果处理的不好,Pattern就没法实现循环执行或者分支跳转。

Chroma的Pattern格式对PMIC这类小规模芯片足够用,但不要指望它能像V93K那样支持大量并行通道的高精度对齐。Chroma机台的Pattern位数、串行协议支持都相对有限。如果你的芯片有高速并行接口(比如DDR3/DDR4),Chroma会力不从心。

NI STS是近年新起之秀。它的Pattern格式实际上由Python脚本动态生成。这意味着你在写Pattern时有近乎无限的灵活性——你可以用Python的循环、条件判断来生成海量测试向量,而不是像传统模式那样全部展开成文件。但代价是,Pattern的执行速度取决于PXI控制器的计算速度,在极高速并行测试场景下可能拖后腿。

再提一个容易忽略的差异:Z态处理。有的机台(比如V93K)对双向pin的Z态支持得非常好,可以精确到每个周期;但有的平台的Pattern格式里对high-Z的处理比较粗暴,只能用“输出关闭”近似替代。如果你测的是双向总线芯片(比如I2C、SPI Flash这类),这个差异会直接决定你能不能顺利转换。

4.3 转换的最终归宿:不只是“格式对了”

很多人在做Pattern转换的时候,容易陷入一个思维误区——认为只要转换出来的文件能通过编译,能被机台加载,就万事大吉了。但实际上,真正的转换完成,标志是上机跑出来的结果和仿真预期一致。

这里有一个重要的验证原则:测试覆盖率反映的是向量本身的质量,不反映Pattern转换的质量。“校验通过”只能说明格式正确,但无法证明时序的严谨性和信号的完整性。比如STIL里描述一个在10ns时上升沿触发、30ns时采样的信号,转换到某机台后,由于机台的最小时间分辨率是1ns,工具可能只保留了最接近的10ns,但边沿相对偏移了0.4ns。在100MHz测试频率下,这0.4ns不致命;但如果换成1GHz以上高速接口测试,这点偏差足以让协议握手失败。

所以我在每次Pattern转换完成后,会专门做一个“时序余量审视”:输出端口的建立/保持时间余量是否因为转换而减少了、时钟和数据之间的偏移是否被引入、采样点设置是否离波形边沿过近。这些指标都没有问题,我才敢把Pattern交给产线。

5. 常见问题与排查技巧实录

转换和调试Pattern的过程中,总会碰到各种奇奇怪怪的问题。我把这些年遇到的高频问题整理成了速查表,希望能帮你跳过一些坑。

5.1 高频问题速查表

现象可能原因排查思路
转换时报“Pin not found”引脚名大小写不匹配检查大小写、前后缀、空格
Pattern编译通过但上机全Fail电平设置错误核对VIH/VIL/VOH/VOL是否与DUT规格一致
个别周期数据不稳定采样点靠近信号边沿调整采样点相对时间,避开跳变沿
双向引脚数据读取失败Z态转换不正确检查Z态映射和高阻时间窗口
循环跳转执行次数不对Macro/Block映射错误检查pattern file里的loop/branch语句
转换后Pattern行数暴增向量展开方式不同确认是否启用了压缩/宏调用选项
高速接口信号无法锁定时序余量不足检查时钟与数据相对关系,看有无串扰
批量测试偶发Fail信号完整性问题检查阻抗匹配、走线长度、去耦电容

5.2 排查实例:一次“幽灵Fail”的完整追踪

分享一个我印象很深的案例。当时在产线上调试一款带SPI接口的Nor Flash芯片,Pattern转换后功能测试一切正常,但到了高温测试时开始出现偶发Fail,故障周期完全没有规律。

一开始我怀疑是芯片本身的高温可靠性问题,但换了一批芯片也一样Fail。后来我把部件拆下来看Pattern波形,发现在MISO数据线上有一个毛刺——在输出由高变低的边沿附近,存在一个大约2ns宽的异常脉冲。这个脉冲在常温下没触发逻辑误判,但在高温下把采样窗口给击穿了。

根因是什么呢?Pattern转换时,MISO引脚被定义成了普通输出引脚,机台只在固定位置对MISO进行采样。但在真实的芯片行为里,MISO在SPI空闲期间会变成高阻态,由外部上拉电阻保持高电平。在这个高阻切换到驱动输出的瞬间,转换工具没有额外插入“死区时间”,导致机台采样时刻正好卡在了信号由高阻变成驱动状态的过渡期里。

修复方法其实很简单:在Pattern转换时,把MISO相邻两个周期的间隔拉大一点,或者在跳变沿和采样点之间插入一个保护周期。也就是给信号多留一点稳定时间。这件事之后,我给所有涉及双向引脚的Pattern都加了一条规矩:转换后必须检查双向引脚的Z态切换窗口,并确认采样点没有落在该窗口内。

5.3 关于时序余量和毛刺问题的几条独家经验

关于时序余量的检查,我的建议是按三级标准来把握:

  • 一级标准:采样点离最近的信号沿至少有3个tester edge resolution的距离。如果机台最小分辨率为0.1ns,那就至少留0.3ns余量。
  • 二级标准:在时序报告里检查每个信号的建立时间和保持时间,确保比DUT数据手册上的要求至少多10%。
  • 三级标准:跑完Pattern后,统计所有采样点的实际Voltage Margin,如果在最差工艺角下仍有100mV以上,才算安全。

说句实话,很多时候0.1ns甚至0.01ns的边沿偏移,在实验室环境下根本测不出来,但放到产线高温高低温批量跑起来之后,迟早会变成一颗“定时炸弹”。所以我一直觉得Pattern转换不是“翻译”工作,而是“信号规划”工作。你在转换的时候,就要把产线上可能遇到的温度漂移、电压波动和通道差异都考虑进去。

5.4 如何在产线环境里快速定位Pattern问题

产线环境下定位Pattern问题,讲究的是“快”和“稳”。我习惯的做法是:遇到Fail时,先查看Fail的site和pin,看是否集中在同一根引脚上;再把Pattern切成一小段跑,用二分法定位到具体是哪个cycle出的问题;最后用示波器测量对应引脚的波形,跟转换前的仿真波形对比。

很多产线工程师调试时会忽略一个非常重要的工具:Fail Log的Cycle步进模式。ATE机台一般都提供单步执行和Cycle追踪功能,你可以让Pattern跑在特定Cycle处停下来,然后逐周期观察pin状态。有一次我在调试一块车规MCU芯片时,就是靠这种方式,把Trigger位置逐步缩小,最终定位到一个由于Pattern转换时循环计数误差导致的状态机错位问题。

另外,产线调试时永远保留一个能稳定复现Fail的测试样品。芯片调试里最怕的是“坏板子”被拿去分析后弄丢了,后面想复现问题却找不到Sample。一个能稳定复现Fail的样品,价值往往比高精度示波器还大。

6. Pattern转换的终点不是“转换完”,而是“测得过”

说了这么多,最后再分享一个我个人的看法:Pattern转换这件事,表面上看起来只是文件格式的机械翻译,但实际上它是一个高度依赖经验的信号时序规划和适配工作。

你需要同时具备三方面的视角:懂芯片设计,知道哪些信号是关键路径;懂仿真,明白testbench里哪些逻辑行为必须保留;懂ATE硬件,清楚机台的精度极限、波形生成能力和通道资源配置。三样缺一样,到最后都会在产线上变成坑。

我自己的一个习惯是:每次转换完一套Pattern,除了技术报告之外,我还会写一段文字记录,包括这次转换里有哪些地方是“看似一样但实际不一样”的(比如某条指令在A平台里支持、在B平台里不支持),有哪些是靠特殊绕法才解决的。这个笔记在后续做同类芯片时,往往能省掉大量的重复排查时间。

最后再给一个实用建议:如果你的团队经常需要在不同ATE平台之间转换Pattern,强烈建议提前积累一个“转换知识库”,把每家平台的格式差异、已知坑点、常见错误信息都记录下来。这东西可能不会直接产生产值,但它能帮整个团队在关键时刻避开大坑——对一个测试工程师来说,这种经验的沉淀,比任何工具都好用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 1:35:50

Virtuoso中主从式DFF设计:从原理图到仿真验证

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

作者头像 李华
网站建设 2026/10/6 1:35:34

用万用表判断电容好坏:电阻档、电容档与ESR检测实战指南

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

作者头像 李华
网站建设 2026/10/6 1:34:31

V100 SXM2转接卡三卡部署:低成本大显存本地推理方案

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

作者头像 李华
网站建设 2026/10/6 1:33:28

单片机IO口拉电流与灌电流原理及工程实践指南

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

作者头像 李华
网站建设 2026/10/6 1:32:31

STM32嵌入式开发实战:从选型、环境搭建到外设驱动与避坑指南

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

作者头像 李华