DFT实战解析:扫描插入与边界扫描在数字电路测试中的核心应用

芯片可测试性设计(DFT)原理与应用:从扫描链到BIST的工程实践 在超大规模集成电路设计中,可测试性设计(DFT)是确保芯片制造良率和可靠性的关键技术。其核心原理是通过插入专用测试结构,将内部状态不可见的复杂时序电路转化为可控、可观测的系统,从而解决制造缺陷的检测难题。从技术价值看,DFT不仅能实现高故障覆盖率,还能大幅压缩测试时间和数据量,直接降低量产成本。在应用场景上,扫描设计通过将触发器串联成链,把时序测试转化为组合逻辑测试;内建自测试(BIST)则为存储器和规整逻辑提供高速自检方案;边界扫描则解决了高密度封装下的板级互连测试问题。本文聚焦于DFT在先进SoC中的工 阅读详情

1. 扫描插入技术:从时序到组合的转换魔法

记得我刚入行的时候,最头疼的就是测试那些复杂的时序电路。每次都要折腾半天才能把测试向量搞定,效率低得让人想哭。后来接触到扫描插入技术,简直像打开了新世界的大门!

扫描插入的核心思想其实很简单:把时序电路中的寄存器变成可控制的扫描单元,然后把它们串成一条链。这样在测试模式下,整个电路就变成了一个大型的组合逻辑网络,测试起来方便多了。

实际操作中,我们会用带多路选择器的D触发器来替换普通的寄存器。正常工作模式下,数据从D端输入;测试模式下,数据从scan_in端输入,通过scan_out端输出。这就形成了一条扫描链,测试数据可以像串糖葫芦一样一个一个地串行输入。

我最近做的一个项目中,有个包含1024个寄存器的设计。用了扫描插入后,测试覆盖率从原来的60%一下子提升到了98%!具体实现是这样的:

// 普通的D触发器
module dff (input clk, input d, output reg q);
always @(posedge clk) q <= d;
endmodule

// 带扫描功能的D触发器
module scan_dff (input clk, input scan_en, input d, input scan_in, output reg q, output scan_out);
always @(posedge clk) begin
    if (scan_en) q <= scan_in;
    else q <= d;
end
assign scan_out = q;
endmodule

在实际项目中,我们还需要注意几个关键点。首先是时钟控制,要确保在测试模式下时钟信号能够被完全控制。其次是复位信号,需要添加额外的逻辑来保证在测试模式下复位信号不会意外触发。最后是三态总线的处理,要避免测试模式下出现总线竞争。

2. 边界扫描:JTAG标准的实战应用

边界扫描技术可以说是板级测试的救星。以前测试芯片之间的连接时,得用探针一个一个点测试,既费时又容易出错。现在用边界扫描,通过JTAG接口就能搞定所有互连测试。

JTAG接口有四个必备信号:TCK(测试时钟)、TMS(测试模式选择)、TDI(测试数据输入)和TDO(测试数据输出)。还有一个可选的TRST(测试复位)信号。这些信号组成了测试访问端口(TAP),让我们能够访问芯片内部的边界扫描寄存器。

我在实际项目中遇到过这样一个案例:一块PCB上有8个芯片,需要测试它们之间的连接。传统方法可能需要好几天时间,用了边界扫描后,只用了2个小时就完成了所有互连测试,还发现了两个虚焊点。

边界扫描单元的结构很有讲究。每个IO端口都要加上一个边界扫描单元,这些单元可以捕获输入信号的数据,也可以驱动输出信号。通过将这些单元串联起来,就形成了边界扫描链。

// 简单的边界扫描单元示例
module bscan_cell (
    input tdi,        // 测试数据输入
    input capture_en, // 捕获使能
    input shift_dr,   // 移位使能
    input update_dr,  // 更新使能
    input system_in,  // 系统输入
    output system_out,// 系统输出
    output tdo        // 测试数据输出
);
    
reg cell_reg;
reg update_reg;

// 捕获阶段
always @(posedge tck) begin
    if (capture_en)
        cell_reg <= system_in;
    else if (shift_dr)
        cell_reg <= tdi;
end

// 更新阶段
always @(posedge tck) begin
    if (update_dr)
        update_reg <= cell_reg;
end

assign system_out = update_reg;
assign tdo = cell_reg;

endmodule

在实际应用中,边界扫描不仅用于互连测试,还可以用来调试芯片功能、进行在线编程等。特别是在系统级测试中,边界扫描的价值更加凸显。

3. 扫描链的设计与优化技巧

设计扫描链可不是简单地把寄存器串起来就行,里面有很多门道。首先要考虑的是扫描链的长度,太长的扫描链测试时间会很长,太短的又可能浪费测试资源。

我一般会遵循这几个原则:同一时钟域的寄存器尽量放在同一条扫描链上;关键路径上的寄存器要特别注意;不同电压域的寄存器要分开处理。在实际项目中,我通常会把扫描链长度控制在1000个寄存器以内。

扫描链的平衡也很重要。如果一个设计中有多条扫描链,要尽量让它们的长度相近,这样才能并行测试,提高测试效率。有一次我优化了一个设计的扫描链,把测试时间从原来的30分钟缩短到了8分钟,效果非常明显。

时钟控制是另一个需要重点考虑的问题。在测试模式下,所有时钟都要能被精确控制,避免出现时钟偏移等问题。我通常会在时钟路径上插入专门的测试控制逻辑。

# 常用的DFT编译脚本示例
set_scan_configuration -chain_count 8
set_dft_signal -view existing_dft -type ScanClock -port clk -timing {45 55}
set_dft_signal -view existing_dft -type ScanEnable -port scan_en
set_dft_signal -view existing_dft -type ScanDataIn -port scan_in
set_dft_signal -view existing_dft -type ScanDataOut -port scan_out

create_test_protocol
dft_drc
preview_dft
insert_dft

在实际操作中,还会遇到很多需要特别注意的情况。比如异步电路的处理、存储器元素的隔离、模拟模块的旁路等。这些都需要在插入扫描链之前做好规划,否则后面修改起来会很麻烦。

4. 测试向量生成与故障覆盖率优化

生成测试向量是DFT工作中最关键的一步。好的测试向量不仅要能覆盖尽可能多的故障,还要测试时间短、数据量小。我常用的方法是ATPG(自动测试向量生成),结合故障模拟来评估测试效果。

故障模型的选择很重要。最常用的是固定故障模型(Stuck-at Fault),假设电路中的某个信号线永久 stuck在0或1。还有传输延迟故障(Transition Delay Fault)、路径延迟故障(Path Delay Fault)等更精细的模型。

在实际项目中,我通常会先针对固定故障生成测试向量,达到95%以上的覆盖率后,再考虑其他类型的故障。这样既能保证基本的测试质量,又不会让测试成本太高。

# ATPG基本流程示例
read_netlist -netlist gate_level.v
read_netlist -library lib.db
add_clocks 0 clk
add_scan_chains -scan_chain_file chain.dat
set_faults -model stuck
set_atpg -abort_limit 10 -full_seq_atpg
run_atpg
write_patterns -format stil -output test_patterns.stil

故障压缩是另一个重要技巧。通过分析故障之间的等价关系,可以大大减少需要测试的故障数量。我曾经做过一个项目,原始故障列表有100多万个,经过压缩后只剩下20多万个,测试时间减少了80%。

测试压缩技术也很实用。通过植入测试压缩逻辑,可以大幅减少测试数据量和测试时间。常用的有Mentor的TestKompress和Synopsys的Adaptive Scan技术,压缩比能达到10x到100x。

5. 实际项目中的DFT集成策略

在实际芯片项目中,DFT不是独立存在的,需要和整个设计流程紧密结合。我通常会在RTL设计阶段就开始考虑DFT问题,而不是等到后端才来补救。

时钟域交叉(CDC)处理是个重点。不同时钟域的扫描链要分开,测试模式下的时钟控制要特别小心。我遇到过因为CDC问题导致测试模式不稳定的情况,调试起来特别麻烦。

电源管理也很关键。现在很多芯片都有多个电源域,测试时要确保所有域都能正常上电。我一般会在测试模式中加入电源序列控制逻辑,保证测试的可靠性。

// 多电源域DFT控制示例
module dft_power_control (
    input test_mode,
    input [2:0] power_domain_en,
    output [2:0] test_power_en
);

// 测试模式下强制开启所有电源域
assign test_power_en = test_mode ? 3'b111 : power_domain_en;

endmodule

IP集成的DFT考虑也很重要。现在的SoC设计中用了很多第三方IP,这些IP的DFT特性各不相同。有些IP自带扫描链,有些可能需要特殊处理。我习惯在项目初期就制定好IP集成的DFT规范。

设计验证是确保DFT正确性的重要环节。除了常规的仿真验证,我还会做专门的DFT仿真,验证测试模式下的各种场景。包括扫描链的正确性、测试向量的有效性等。

6. 常见问题排查与调试经验

做DFT这么多年,踩过的坑不少,也积累了一些调试经验。最常见的问题是扫描链断裂,表现为测试向量无法正常加载。这时候需要仔细检查扫描链的连接顺序、时钟控制等。

我记得有个项目,扫描链仿真总是失败,后来发现是某个IP的扫描单元输出驱动能力不够。在扫描链中间插入缓冲器后就解决了问题。

时钟偏移是另一个常见问题。测试模式下的时钟树和正常工作模式下可能不同,需要特别注意时钟延迟和偏移。我一般会在DFT阶段做专门的时钟树分析。

// 扫描链诊断示例
module scan_chain_monitor (
    input tck,
    input scan_en,
    input [7:0] expected_data,
    input [7:0] actual_data,
    output error_flag
);

reg [7:0] shift_reg;
always @(posedge tck) begin
    if (scan_en)
        shift_reg <= {shift_reg[6:0], actual_data};
end

assign error_flag = (shift_reg != expected_data);

endmodule

测试功耗问题也需要关注。扫描测试时所有触发器都在频繁翻转,功耗可能比正常工作模式高很多。我遇到过因为测试功耗过高导致芯片损坏的情况。现在都会在测试模式中加入功耗管理机制。

故障诊断是另一个重要环节。当测试失败时,需要快速定位故障位置。我常用的方法有基于故障字典的诊断、基于逻辑背板的诊断等。好的诊断流程能大大提高调试效率。

7. 未来发展趋势与实用建议

DFT技术也在不断发展,最近几年有几个明显趋势。首先是测试压缩技术的普及,现在大型芯片没有测试压缩几乎不可行。其次是at-speed测试的重要性提升,随着工艺进步,延迟故障越来越常见。

AI在DFT中的应用也值得关注。有些公司开始用机器学习来优化测试向量生成、故障诊断等流程。我试过一些AI辅助工具,确实能提高不少效率。

基于云平台的DFT解决方案也在兴起。把测试向量生成、故障模拟等任务放到云端,可以大大缩短项目周期。不过数据安全是需要重点考虑的问题。

对于新手工程师,我的建议是:首先要打好基础,理解扫描测试的基本原理;其次要多动手实践,DFT是个很注重实践的领域;最后要保持学习,技术更新很快,需要不断跟进新技术。

工具使用方面,建议熟练掌握主流的DFT工具链,如Synopsys的DFT Compiler、TetraMAX,Mentor的Tessent系列等。但不要过度依赖工具,要理解工具背后的原理。

在实际项目中,DFT需要和前后端团队密切配合。提前沟通DFT需求,制定详细的实施方案,这样才能确保项目顺利进行。我习惯在项目启动阶段就组织DFT讨论会,让所有相关团队都参与进来。

IC流程中 DFT 实战解析:从故障模型到扫描链实现 想象一下,你花了大半年时间设计了一款复杂的芯片,投入了大量资金进行流片生产,结果生产出来的芯片有一半无法正常工作。这时候你才发现,由于芯片内部结构过于复杂,根本无法有效检测出制造过程中的缺陷。这就是为什么可测试性设计(DFT)在现代IC设计中变得如此关键。DFT全称Design for Testability,中文译为"可测试性设计"。简单来说,它就是在芯片设计阶段就考虑如何让芯片更容易被测试。就像建筑师在设计大楼时会考虑消防通道一样,IC设计师也需要在设计芯片时考虑测试的问题。 阅读详情

相关推荐

深入解析M68040边界扫描测试:从JTAG原理到实战应用

边界扫描技术(Boundary Scan)是基于IEEE 1149.1标准的一种数字电路测试方法,其核心原理是在芯片的每个I/O引脚内部插入一个边界扫描单元,串联形成边界扫描寄存器,并通过一个精简的测试访问端口(TAP)进行通信。这项技术的核心价值在于,它解决了高密度电路板(如采用BGA封装)难以进行物理探针测试的难题,实现了对电路板互连开路、短路等制造缺陷的高效检测,同时支持非侵入式的系统调试与在线编程。在嵌入式系统和复杂数字电路领域,边界扫描已成为可测试性设计(DFT)和硬件调试的基石。本文以经典处理器

dechen6073的博客 359

DFT_Compiler_TetraMAX:提升数字电路测试效率的利器

DFT_Compiler_TetraMAX:提升数字电路测试效率的利器 【下载地址】DFT_Compiler_TetraMAX培训文章 DFT_Compiler_TetraMAX培训文章深入解析了数字电路测试中的关键工具TetraMAX,帮助读者提升电路可测试性和可靠性。文章详细介绍了TetraMAX的基本原理、操作界面...

gitblog_06753的博客 475

边界扫描技术:原理、应用与工程实践指南

边界扫描技术是数字电路测试领域的核心方法,基于IEEE 1149.1标准构建。通过在芯片I/O引脚插入边界扫描单元,形成可串行访问的测试通路,解决了高密度PCB测试难题。其核心价值在于实现非侵入式的互联测试、器件验证和系统调试,广泛应用于通信设备、汽车电子等领域。现代SoC设计中,边界扫描与DFT技术深度融合,成为可测试性设计的基础设施。本文深入解析TAP控制器、寄存器体系等关键技术架构,并分享板级测试的最佳实践方案,包括互连测试算法和非边界扫描器件处理方法。

weixin_42601134的博客 375

具有PWM控制VSC-HVDC链路的IEEE30总线传输系统(Simulink仿真实现)

内容概要:本文构建了一个包含PWM控制VSC-HVDC链路的IEEE30节点电力传输系统,并基于Simulink平台完成了系统的建模仿真。该模型聚焦于高压直流输电(HVDC)技术在区域电网互联中的应用,采用电压源型换流器(VSC)与脉宽调制(PWM)技术实现高效、灵活的电能传输。研究重点在于分析VSC-HVDC链路在复杂多节点电网中对潮流分布、系统稳定性及电能质量的调控能力,特别关注其在区域电网互联、新能源大规模接入以及跨区域电力交换等场景下的动态响应特性与控制性能,为现代智能电网的发展提供技术支撑与仿真验证手段。; 适合人群:具备电力系统、电气工程或自动化等相关专业背景的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于研究VSC-HVDC在多节点电网(如IEEE30节点)中的建模与仿真方法;②分析PWM控制策略下HVDC链路对电网潮流分布、电压稳定性和故障穿越能力的影响;③为区域电网互联、新能源并网及智能电网调度等课题提供仿真基础和技术验证。; 阅读建议:此资源以Simulink仿真实现为核心,建议读者在掌握电力电子技术和电力系统分析基础知识的前提下,结合仿真模型深入理解VSC-HVDC的工作原理与控制策略。在学习过程中,应着重关注模型参数设置、控制环路设计及仿真结果的分析,以达到理论与实践相结合的目的。

给芯片做‘体检’:一文搞懂DFT工程师的日常工作与核心技能(含工具清单)

本文深入解析了DFT工程师在芯片制造中的关键作用,详细介绍了Scan链、MBIST电路等核心DFT技术及其应用场景。通过实际案例和工具清单,展示了如何通过DFT技术提升芯片良率、降低测试成本,并探讨了3D IC和AI芯片等新兴领域的DFT挑战与解决方案。

weixin_33709609的博客 562

IC工程师全岗位解析:从数字前端到模拟射频,芯片设计职业指南

集成电路设计是现代电子工业的核心技术领域,其本质是将复杂系统功能通过半导体工艺实现为物理芯片。从原理层面看,芯片设计遵循从系统架构定义到物理实现的完整流程,涉及计算机体系结构、数字电路、半导体物理等多学科交叉。这一流程的技术价值在于通过高度专业化的分工协作,实现性能、功耗、面积的最优平衡,从而支撑从消费电子到人工智能的广泛应用场景。在芯片设计流程中,数字前端设计工程师负责将架构转化为RTL代码,而验证工程师则运用UVM等方法学确保功能正确性,两者共同构成数字芯片开发的关键环节。随着技术发展,岗位划分日益精细

weixin_34122604的博客 343

基于KDE-CDF置信带的不确定综合能源系统鲁棒调度优化研究(Matlab代码实现)

内容概要:本研究针对不确定综合能源系统中的鲁棒调度优化问题,提出一种基于核密度估计-累积分布函数(KDE-CDF)置信带的建模方法,用以精确刻画风能、光伏及负荷等不确定性因素的非正态概率分布特征。通过构建KDE-CDF模型,能够有效捕捉实际运行中新能源出力与负荷需求的波动性与随机性,并在此基础上设计鲁棒优化调度框架,提升系统在不确定性环境下的运行可靠性与经济性。该方法结合Matlab编程实现,综合考虑系统运行成本、峰谷差、碳排放等多重目标,实现多维度协调优化。研究还探讨了与智能优化算法(如粒子群算法)相结合的应用路径,增强了模型的求解效率与工程实用性,为含多种储能装置、电转气设备及碳捕集系统的复杂综合能源系统提供了科学的调度决策支持。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员,以及从事综合能源系统规划、运行与调度工作的工程技术人员。; 使用场景及目标:①解决高比例可再生能源接入背景下综合能源系统调度中的不确定性建模难题;②提升调度方案在面对新能源强波动性时的鲁棒性与适应能力;③为融合多类型灵活性资源(如储能、电转气、碳捕集)的综合能源系统提供精细化、可落地的优化运行策略。; 阅读建议:建议读者在掌握概率统计、随机优化与电力系统运行基础知识的前提下,结合文中提供的Matlab代码进行实践操作,重点关注KDE-CDF置信带的构建流程及其在鲁棒优化模型中的嵌入机制,通过调整输入数据分布、参数设置与场景配置开展仿真对比实验,深入理解不确定性建模精度对调度决策质量的影响,进而掌握从数据驱动角度提升系统鲁棒性的关键技术路径。

芯片设计全流程解析:从RTL到GDSII的工程实践与关键技术

芯片设计是将抽象电路概念转化为物理硅片的系统工程,其核心在于通过标准化的流程实现功能、性能和成本的平衡。该流程基于硬件描述语言(如Verilog)进行RTL级设计,通过逻辑综合将代码映射到工艺库,再经物理实现生成制造所需的版图。其技术价值在于确保芯片功能正确、时序收敛并满足功耗和面积约束,广泛应用于处理器、通信基带和AI加速器等数字芯片领域。本文聚焦RTL-to-GDSII这一经典流程,深入探讨了其中涉及的UVM验证方法学、静态时序分析等关键环节,并融入对先进工艺下物理效应和低功耗设计挑战的思考,为工程师提

weixin_34117211的博客 364

多智能体-系统-形成-控制 附matlab代码.rar

多智能体-系统-形成-控制 附matlab代码.rar

芯片工程师必懂:高频英文术语解析与工程实践指南

在集成电路设计与半导体工程领域,掌握行业通用术语是高效协作与技术沟通的基础。这些术语体系源于全球化的产业协作与海量技术文档,是提升工程效率的关键工具。从寄存器传输级(RTL)设计、时序分析、功耗优化,到物理实现与制造流程,每个环节都有其核心概念与专用表达。理解这些术语不仅有助于阅读技术文档、参与跨国会议,更能深入把握芯片设计、验证、后端实现及项目管理的全流程。本文聚焦于芯片行业高频使用的英文术语,如时序(Timing)、功耗(Power)、验证(Verification)和物理设计(PD),解析其技术内涵与

weixin_34306593的博客 263

【信息科学与工程学】计算机科学与自动化——第二十篇 计算机体系架构00

路径选择与流量调度是网络优化中的核心环节,它们通过一系列算法来提升网络效率、降低延迟,并有效利用资源。

weixin_49199313的博客 806

含分布式电源的配电网可靠性评估研究(Matlab代码实现)

内容概要:本文系统研究了含分布式电源的配电网可靠性评估方法,基于Matlab代码实现了完整的评估模型与算法框架。研究深入分析了分布式电源接入后对配电网结构与运行特性的影响,重点探讨了其对供电可靠性的作用机制。采用序贯蒙特卡洛模拟法对系统各类状态进行抽样与仿真,综合考虑了分布式电源出力的随机性、负荷波动性以及网络拓扑变化等多种不确定性因素,精确计算了系统及负荷点的多项可靠性指标。通过在标准测试系统上的仿真实验,验证了所提方法的有效性和实用性,为新型电力系统环境下配电网的规划、运行与可靠性提升提供了有力的技术支撑和决策依据。; 适合人群:具备电力系统分析、概率统计及可靠性基础理论知识,熟悉Matlab编程语言,从事电力系统规划、运行、可靠性评估等相关工作的科研人员、高校研究生以及电力行业工程师。; 使用场景及目标:①掌握含分布式电源的现代配电网可靠性评估的核心理论与关键技术;②学习并实践基于序贯蒙特卡洛模拟的电力系统可靠性分析算法的Matlab实现方法;③为实际工程中分布式电源的优化配置、配电网的升级改造以及制定可靠性提升策略提供科学的仿真工具和量化分析依据。; 阅读建议:建议读者结合文中提供的Matlab代码,逐行阅读并运行程序,重点理解系统建模、状态抽样、潮流计算与指标统计等核心模块的实现逻辑。可尝试调整分布式电源的类型、容量、接入位置及负荷水平等参数,观察其对系统可靠性指标的影响趋势,从而深化对系统动态行为与关键影响因素的理解。

【信息科学与工程学】计算机科学与自动化——第十篇 芯片设计03——芯片级电学设计方程(1)

分类ID一级分类二级分类三级分类四级分类说明应用场景限制条件依赖条件互斥条件1.1.1.1数学基础复变函数复指数函数欧拉公式e^(jθ) = cosθ + jsinθ,将指数函数与三角函数联系起来频域分析,相位表示,交流电路分析仅适用于线性时不变系统复分析基本知识时域脉冲分析1.1.1.2数学基础复变函数复指数函数复平面变换复数乘法表示旋转和缩放,z = re^(jθ)阻抗变换,频率响应分析需要理解极坐标表示复数代数实数域运算1.1.2.1数学基础复变函数贝塞尔函数第一类贝塞尔函数J_n(x) = Σ(-1

weixin_49199313的博客 835

退出微软账户-解除微软账户绑定 .exe

退出微软账户_解除微软账户绑定小工具

【信息科学与工程学】【通信工程】第一百九十一篇 路由器体系结构03

编号类型领域问题详细的数学分析(逐步推理)参数列表(表达式 / 数值范围 / 边界 / 测量)关联知识839DCI演进 · 收敛DCI 2030 年三大技术收敛方向步骤1:方向一:IPoDWDM 成为绝对主流(Omdia 2027 59% → 2030 80%+),OTN 退化为 OLS 纯光层。步骤2:方向二:800ZR+ 取代 400ZR 成为主力速率,PCS 使 800G 达 600–1000km。步骤3:方向三:AI 集群 DCI 催生 1.6T/3.2T 超短距(<10km)相干模块(OSFP-X

weixin_49199313的博客 868

【信息科学与工程学】计算机科学与自动化——第一百八十九篇 计算机硬件 系列一 微处理器01

在金融行业CDN流推送场景中,结合WebRTC over SD-RTN与SD-WAN Branch方案,需兼顾​​要求。

weixin_49199313的博客 1059

大学生职业生涯规划.pptx

大学生职业生涯规划.pptx

chrome-headless-shell-mac-x64-160.0.8160.0(Canary).zip

内容概要:Chrome for Testing 官方 chrome-headless-shell 160.0.8160.0 x64 平台(金丝雀版通道),原版未修改,附来源说明。 适合人群:x64 上的自动化测试工程师、爬虫开发者、CI 环境搭建者。 使用场景及目标:①无头浏览器(Playwright/Puppeteer/Selenium 无界面自动化与爬虫的运行内核);②服务器/容器离线内置;③版本精准匹配(chromedriver 与 Chrome 需同大版本)。 其他说明:Chrome for Testing 为 Google 官方发布、允许自由分发的文件;本资源为第三方整理的下载便利服务。

上一篇: ESP32开发者的调试利器:JTAG与VSCode的完美融合实践
下一篇: 跨越架构:从STM32到C2000的PMBus从机移植心法与最佳实践
ruby5
博客等级 码龄15年 29粉丝 893原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值