【SOC 芯片设计 DFT 学习专栏 -- DFT std logic 介绍 】

文章目录

    • [STD Logic](#STD Logic)
      • [SOC 设计中的 DFT (Design for Testability) 简介](#SOC 设计中的 DFT (Design for Testability) 简介)

STD Logic

本文介绍 SOC 设计中 DFT 中的 std logic.

SOC 设计中的 DFT (Design for Testability) 简介

SOC(系统级芯片)设计中,DFT 是确保设计的可测试性以提高芯片生产可行性和良品率的关键部分。DFT 技术能够在设计阶段插入测试结构,使生产后的芯片可以方便地被测试,以检测潜在的制造缺陷和功能性错误。常见的 DFT 技术包括扫描链插入、内建自测试(BIST)、边界扫描(Boundary Scan)等。

STD Logic 在 DFT 中的作用 在 DFT 的设计中,STD Logic 主要是指标准逻辑模块,它用于实现和支持测试结构,通常通过额外的硬件模块增强可测试性。例如:

  • 标准扫描单元(Scan Flip-Flops):用于将普通的寄存器转换为可测试单元,支持移位和功能模式。

  • 测试模式选择逻辑(Test Control Logic):控制芯片的测试模式选择,例如通过选择器输入控制扫描模式或正常运行模式。

  • 插入内部测试接口,例如 JTAG(用于边界扫描)。

例子:基于 STD Logic 的扫描链设计

在扫描链设计中,STD Logic 通常被用于创建链路和控制逻辑。这是一个简单的扫描链示例:

正常寄存器电路

普通的寄存器包括输入、时钟和输出:

verilog 复制代码
module Register (
    input wire clk,
    input wire D,
    output reg Q
);
    always @(posedge clk) begin
        Q <= D;
    end
endmodule
转换为扫描寄存器(Scan Flip-Flop)

将普通寄存器转换为可用于 DFT 的扫描寄存器:

verilog 复制代码
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
扫描链连接示例

多个扫描寄存器可以通过 scan_in 和 scan_out 串联连接,构成完整的扫描链:

verilog 复制代码
module ScanChain (
    input wire clk,
    input wire test_mode,
    input wire scan_in,
    input wire [3:0] D,
    output wire [3:0] Q,
    output wire scan_out
);
    wire [2:0] scan_intermediate;

    ScanRegister sr0(.clk(clk), .test_mode(test_mode), .scan_in(scan_in), 
                     .D(D[0]), .Q(Q[0]), .scan_out(scan_intermediate[0]));
    ScanRegister sr1(.clk(clk), .test_mode(test_mode), .scan_in(scan_intermediate[0]), 
                     .D(D[1]), .Q(Q[1]), .scan_out(scan_intermediate[1]));
    ScanRegister sr2(.clk(clk), .test_mode(test_mode), .scan_in(scan_intermediate[1]), 
                     .D(D[2]), .Q(Q[2]), .scan_out(scan_intermediate[2]));
    ScanRegister sr3(.clk(clk), .test_mode(test_mode), .scan_in(scan_intermediate[2]), 
                     .D(D[3]), .Q(Q[3]), .scan_out(scan_out));
endmodule

总结 STD Logic 在 DFT 中通过引入额外的逻辑模块来支持功能模式和测试模式的切换。像扫描链这样的技术依赖于标准化的逻辑单元,使整个设计的可测试性和可扩展性大大提升。在实际应用中,逻辑门的优化、时序分析和测试覆盖率是设计成功的关键。

相关推荐
Hello-FPGA16 小时前
基于RFSOC FPGA ZCU216 的CoaXPress 采集demo
fpga开发
9527华安17 小时前
FPGA基于ADV7182解码PAL视频,Video Processing Subsystem去隔行,提供6套工程源码和技术支持
fpga开发·音视频·pal·adv7182
hahaha601618 小时前
数字图像时域滤波或者3D降噪算法FPGA实现
算法·计算机视觉·fpga开发
GateWorld18 小时前
Xilinx 7系列FPGA时钟网络详解
fpga开发·时钟网络·xilinx 7系列
szxinmai主板定制专家1 天前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
szxinmai主板定制专家2 天前
AMR 项目落地:机器人控制器硬件定制化需求复盘
arm开发·单片机·fpga开发·系统架构·机器人·am62x
FPGA小迷弟3 天前
FPGA 与卫星:从星载硬件到在轨智能的完整技术解析
fpga开发·架构·fpga·1024程序员节·无线电
NamoAmitabha1283 天前
CPU 内部结构是什么?---deepseek
fpga开发
abc light3 天前
ARM 裸机开发(6)——时钟树与定时器
arm开发·单片机·fpga开发
156082072193 天前
JFMZQ28DR、JFMZQ68DR、RFsoc XCZU47DR、XCZU48DR 信号处理板
fpga开发·信号处理