【SOC 芯片设计 DFT 学习专栏 -- Scan chain 和 SDFFs及 EDT】

文章目录

  • Overview
  • [1. SDFFs(Scan D Flip-Flops)](#1. SDFFs(Scan D Flip-Flops))
    • [1.1 基本概念](#1.1 基本概念)
    • [1.2 工作原理](#1.2 工作原理)
    • [1.3 优势](#1.3 优势)
  • [2. EDT(Embedded Deterministic Test)](#2. EDT(Embedded Deterministic Test))
    • [2.1 基本概念](#2.1 基本概念)
    • [2.2 工作原理](#2.2 工作原理)
    • [2.3 优势](#2.3 优势)
  • [3. SDFFs与EDT的结合](#3. SDFFs与EDT的结合)
  • [4. 总结](#4. 总结)

Overview

在SoC(System on Chip)设计中,DFT(Design for Testability,设计可测试性)是确保芯片可测试性和良品率的关键技术。其中,SDFFs(Scan D Flip-Flops,扫描D触发器)和EDT(Embedded Deterministic Test,嵌入式确定性测试) 是DFT中两个重要的组成部分。以下是对它们的详细介绍:

1. SDFFs(Scan D Flip-Flops)

1.1 基本概念

SDFFs是DFT中用于构建扫描链(Scan Chain)的基本单元。它们将普通的D触发器(D Flip-Flops)扩展为支持测试模式的寄存器,能够在功能模式和测试模式之间切换。

  • 功能模式:SDFFs作为普通寄存器使用,存储和传输数据。
  • 测试模式:SDFFs连接成扫描链,用于测试芯片内部的逻辑电路。

Figure 1-1 Pre-scan and Post-scan

上图就是 scan前scan后DFF ,其实就是替换成带有 scan 逻辑的 DFF,

scan_en 有效时,scan 逻辑就会从 scan-in 穿过 DFF 到达 scan-out,

多个 scan DF链接在一起就成了 scan chain,链上有多少个 scan DFF 表示这条链的长度。

1.2 工作原理

在测试模式下,SDFFs通过扫描链串联,形成一个移位寄存器。测试数据可以通过扫描输入(Scan In)逐位移入SDFFs,经过逻辑电路处理后,结果通过扫描输出(Scan Out)逐位移出,供外部测试设备分析。

示例代码

perl 复制代码
module ScanRegister (
    input wire clk,       // 时钟信号
    input wire test_mode, // 测试模式使能
    input wire scan_in,   // 扫描链输入
    input wire D,         // 数据输入
    output reg Q,         // 数据输出
    output wire scan_out  // 扫描链输出
);
    always @(posedge clk) begin
        if (test_mode) 
            Q <= scan_in;  // 测试模式下使用扫描链输入
        else
            Q <= D;        // 正常模式下使用数据输入
    end
    assign scan_out = Q;    // 输出连接到下一级扫描寄存器
endmodule

在这个例子中,test_mode信号控制SDFF的工作模式。当test_mode为1时,SDFF进入测试模式,数据通过scan_in输入;否则,SDFF作为普通寄存器工作2。

1.3 优势

提高可测试性:通过扫描链,可以控制和观察芯片内部的所有寄存器,显著提高故障覆盖率。

简化测试流程:SDFFs的标准化设计使得测试模式下的操作更加高效和自动化12。

2. EDT(Embedded Deterministic Test)

2.1 基本概念

EDT是一种用于大规模芯片测试的压缩技术,旨在减少测试数据量和测试时间。它通过将测试模式压缩为少量种子数据,并在芯片内部解压缩,生成完整的测试模式。

2.2 工作原理

EDT的核心是一个解压缩器(Decompressor),它接收少量的种子数据,并通过线性反馈移位寄存器(LFSR)或其他算法生成完整的测试模式。测试结果则通过压缩器(Compactor)压缩后输出。

应用场景

小规模芯片:直接使用EDT将扫描链连接到测试引脚,简化测试流程3。

大规模芯片:将芯片划分为多个模块,每个模块独立插入EDT逻辑,以减少测试时间和资源占用3。

2.3 优势

减少测试数据量:通过压缩技术,EDT显著减少了测试模式的数据量,降低了存储和传输成本。

提高测试效率:EDT支持并行测试,能够同时测试多个模块,缩短测试时间34。

适应大规模芯片:EDT的分层测试架构(如Hierarchical ATPG)支持模块化测试,适用于超大规模芯片3。

3. SDFFs与EDT的结合

在SoC设计中,SDFFs和EDT通常结合使用,以构建高效的测试架构:

扫描链插入:使用SDFFs构建扫描链,确保芯片内部逻辑的可控性和可观测性。

EDT压缩:在扫描链的基础上插入EDT逻辑,压缩测试数据,提高测试效率。

分层测试:对于大规模芯片,采用分层测试架构,将扫描链和EDT逻辑分布到各个子模块中,实现模块化测试34。

4. 总结

SDFFs是DFT中用于构建扫描链的基本单元,支持功能模式和测试模式的切换,显著提高芯片的可测试性。

EDT是一种高效的测试压缩技术,通过减少测试数据量和测试时间,适应大规模芯片的测试需求。

两者的结合为SoC设计提供了高效、可靠的测试解决方案,是现代芯片设计中不可或缺的技术123。

相关推荐
hahaha60163 小时前
FPGA没有使用的IO悬空对漏电流有没有影响
fpga开发
贝塔实验室14 小时前
FPGA 动态重构配置流程
驱动开发·fpga开发·硬件架构·硬件工程·射频工程·fpga·基带工程
GateWorld14 小时前
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
fpga开发·mipi csi2
思尔芯S2C16 小时前
思尔芯携手Andes晶心科技,加速先进RISC-V 芯片开发
人工智能·科技·fpga开发·risc-v·debugging·prototyping·soc validation
tiantianuser1 天前
RDMA简介5之RoCE v2队列
fpga开发·verilog·fpga·rdma·高速传输·rocev2
碎碎思1 天前
打破延迟极限的 FPGA 机械键盘
fpga开发·计算机外设
hahaha60162 天前
Flash烧录速度和加载配置速度(纯FPGA & ZYNQ)
fpga开发
hahaha60162 天前
ARINC818编解码设计FPGA实现
fpga开发
XMAIPC_Robot2 天前
基于RK3568的多网多串电力能源1U机箱解决方案,支持B码,4G等
linux·fpga开发·能源·边缘计算
广药门徒2 天前
在使用一些不用驱动大电流的设备就可以用stm32的自己的上下拉但是本身上下拉不就是给iicspi这些他通信给信号的吗中怎么还跟驱动能力扯上了有什么场景嘛
stm32·单片机·fpga开发