从数字前端的角度看DFT设计

该文章已生成可运行项目,

本文主要目的是从数字IC设计的角度来了解DFT设计。

1. 基本概念

DFT测试的目的:把生产制造过程中有问题的芯片筛选出来

Aotumatic Test Equipment(ATE)是芯片测试仪器,可以存储pattern并将其加载到芯片中,并且可以检测芯片输出,判断是否有故障。

基于测试对象的不同,芯片测试分为CP(chip probing)和FT(final test)。CP是对未封装的芯片,也就是晶圆进行测试;FT是对已经封装好的芯片进行测试。

一般而言,DFT设计在前端产生gate level netlist之后进行DFT insertion。

2. 错误模型

绝大多数问题都是stuck-at和transition fault。

2. SCAN chain 

用于测试数字逻辑,包括时序逻辑和组合逻辑。

使用带mux的cell替换触发器(工艺单元库里会自带),这个在综合阶段选择对应的cell就可以了。

scan chain电路示例:(chain具体怎么连接由DFT完成,数字设计无需关心)

单个模块的输出信号用寄存器打拍有利于提升组合逻辑覆盖率。

2.1 DC测试

DC测试用于测试stuck-at故障。

在patt1测试中,在SE为1时,给scan chain中第1个和第2个寄存器加载的值为1、1,分别给到与门的A和B。期望的测试结果:在SE为0时,下一个clock上升沿,SO的输出为1。同理,patt2测试中加载值为10,期望输出为0。

2.2 AC测试

AC测试用于测试transition故障。

用下图的slow to rise A举例:在SE为1时,给delay chain第1、2、3个寄存器加载的值为0、1、0;将第一个寄存器的D端加载为1(可能来自别的寄存器或者组合逻辑)。然后将SE配置为0,在接下来的第1个时钟上升沿,A由0跳变成1;第2个上升沿,与门的C端被第3个寄存器采样。如果SO在第2个上升沿之后可以输出1,则说明C的值在1个clock周期之内发生了变化且被成功采样,没有transition故障。

2.3 ATPG

Automatic Test Pattern Generation,自动化产生测试向量。指由EDA工具自动生成test pattern。

ATPG的目的是产生获得一个test coverage的test pattern,需要已经完成scan insertion的工作。

3. 边界扫描(Boundary Scan Design)

用于测试管脚PAD。

可以简单理解为通过boundary-scan cell把芯片需要测试的PAD的输入输出做成一个chain,然后通过JTAG进行boundary scan测试。

4. MBIST

用于测试存储器。

片上存储包括SRAM和ROM。Foundary/EDA工具厂商会提供compiler工具。

Memory的故障模型:

MBIST的过程:通过JTAG控制BIST控制的FSM来实现算法(不同的算法会覆盖不同的错误类型,复杂度也不一样),对RAM进行测试。

5. Hard macro Testing

测试模拟IP。

6. 数字设计可以做什么?

在RTL设计阶段,这些工作可以提前加入到RTL中:(具体需要和DFT工程师沟通,不同的人需求可能不一样)

6.1  IO

1. 增加DFT_PAD:芯片上电复位之后,该PAD需要定义为输入,实现ATE对测试模式的外部可控。测试模式锁定后,可以释放该端口为function IO。

2. IO的控制信号(如DS/PU/PD)以bus的类型拉到TCU。

6.2 时钟

1. PLL:在DFT模式下,所有PLL信号可由DFT控制。

2. OCC(On-chip Clock Controller):用于在ATE对芯片做ATPG测试时切换ate clock和function clock。对于大型SOC,在数字设计时,可以在CGU内每个时钟输出前都插入一个名为occ的buffer,方便DFT工程师后期进行替换。OCC要避免级联。

3. Hard IP的输出时钟,需要加mux来bypass时钟,需要额外添加测试的DIV等。

6.3 复位

1. 异步复位/置位信号需要被DFT控制信号接管。

2. 时钟生成部分电路(div、clock_mux等)的resetn用dft_crg_rst_n可控,并拉到TCU。

3. 逻辑部分的resetn用dft_lgc_rst_n可控,并拉到TCU。

6.4 模拟IP

模拟IP的所有输入在DFT模式下都应该tie成固定值,防止IP在DFT测试时工作,影响IDDQ测试结果。也可能影响IP硬件寿命。

6.6 dont touch cell list

需要提供dont touch cell list给DFT,避免这些cell在DFT阶段被优化。

本文章已经生成可运行项目
<think>嗯,用户这次问的是数字IC设计中添加IO pad的具体方法。从对话历史看,用户之前已经了解过IO pad的基本分类(全局pad和需例化pad),现在需要更详细的操作流程。 用户可能正在做数字后端设计或者学习相关流程,需要知道从综合到物理实现的完整步骤。ta特别关注引用[4]提到的“手动修改io file”的操作,说明可能遇到了具体实施问题。考虑到用户引用了几篇专业资料,应该具备一定数字IC基础,但可能对物理设计流程不熟悉。 从技术角度看,这个问题需要分层次解答: 首先是设计阶段要考虑的I/O规划,包括电源完整性(如引用[1]提到的ESD保护)和信号分组(如引用[3]的DDR PHY案例);然后是具体实现手段,包括前端例化和后端手动添加两种方式;最后还要考虑物理约束,比如pad ring的连续性要求。 特别要注意引用[2]提到的脚本控制思路,这提示我们需要强调自动化流程中的关键控制点。用户可能没意识到pad添加和功耗优化(如ICG插入)其实属于同一设计阶段的不同任务。 在回答时应该突出三个关键技术环节:1)电源/地pad的全局规划 2)信号pad的例化规范 3)物理设计时的环形布局。每个环节都要给出具体操作示例,比如Tcl脚本片段和verilog例化模板,这样对工程师最实用。 最后生成的问题要覆盖用户可能忽略的衍生需求,比如DFT测试接口的pad处理,以及混合电压设计时的level shifter放置问题,这些都是实际项目中容易踩坑的点。</think>在数字IC设计中添加I/O PAD需结合前端代码与后端物理实现,主要方法如下: --- ### 一、设计阶段添加方法 1. **前端例化信号PAD** - 在RTL代码中直接实例化输入/输出/双向PAD单元: ```verilog PAD_IN u_input_pad (.I(external_signal), .O(internal_net)); // 输入PAD PAD_OUT u_output_pad (.I(internal_net), .O(external_signal)); // 输出PAD ``` - **注意事项**: - 需匹配工艺库提供的PAD单元名称和端口定义[^1] - 双向PAD需使能控制逻辑避免信号冲突 - 电平转换PAD需确认电压域兼容性 2. **全局PAD后端手动添加** - **步骤**: 1. 综合后生成网表(netlist) 2. 手动插入电源(VDD/VSS)、角落(CORNER)等PAD: ```tcl # 示例:Tcl脚本添加电源PAD add_cell -ref VDD_PAD -loc {10 10} -name VDD1 connect_pin -net VDD -pin VDD1/VDD ``` 3. 通过工具(如Innovus)加载修改后的网表[^4] --- ### 二、物理实现关键点 1. **I/O Ring规划** - PAD需连续排列成环形,字节通道首尾相连(如DDR PHY设计)[^3] - 使用**PEND cell**标识Pad框边界(见图示) ```plaintext |---PAD1---|---PAD2---|---...---|---PEND---|--- ``` 2. **特殊PAD作用** | PAD类型 | 作用 | |---------------|----------------------------------------------------------------------| | 电源/地 PAD | 提供全局供电,需均匀分布降低IR Drop[^1] | | 角落PAD | 填充芯片角落,保证制造可靠性 | | ESD PAD | 集成静电保护二极管,防止器件击穿 | | 电平转换PAD | 解决核心电压与I/O电压不一致问题 | 3. **脚本自动化控制** - 通过综合脚本控制PAD插入规则: ```tcl set_io_insertion_strategy -skip_modules {uart} # 跳过特定模块 set_io_cell_type -type SSTL -voltage 1.8V # 指定DDR PAD类型[^2][^3] ``` --- ### 三、验证与优化 1. **信号完整性检查** - 分析PAD驱动能力与负载匹配性 - 仿真外部寄生参数(如封装电感)对时序的影响[^1] 2. **物理规则验证** - PAD间距符合封装厂要求(通常50~100μm) - 电源PAD数量满足电流密度要求(如每mA需1μm PAD宽度) > **关键操作示例**:优化后保存IO文件并重新加载[^4] > ```tcl > save_io_file -path modified.io > load_io_file -path modified.io -force # 重新布局时加载 > ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值