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

相关推荐
hi947 小时前
MIPI_DPU 综合(DPU+MIPI+Demosaic+VDMA 通路)
fpga开发·dpu·vitis ai
我爱C编程9 小时前
基于FPGA的2FSK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR
fpga开发·帧同步·误码统计·2fsk·高斯信道
JoneMaster17 小时前
[读书日志]从零开始学习Chisel 第一篇:书籍介绍,Scala与Chisel概述,Scala安装运行(敏捷硬件开发语言Chisel与数字系统设计)
开发语言·后端·嵌入式硬件·fpga开发·架构·scala
zhengyad1231 天前
FPGA的FIFO
fpga开发
我爱C编程1 天前
【硬件测试】基于FPGA的2FSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR
fpga开发·帧同步·硬件片内测试·误码统计·2fsk·高斯信道
ARM+FPGA+AI工业主板定制专家1 天前
RK3588+FPGA全国产异步LED显示屏控制卡/屏幕拼接解决方案
fpga开发
贝塔实验室2 天前
FPGA可重构技术
fpga开发·重构·硬件架构·硬件工程·射频工程·fpga·精益工程
shx_wei2 天前
单周期CPU电路设计
fpga开发·硬件工程
FakeOccupational2 天前
fpga系列 HDL:ModelSim显示模拟波形+十进制格式数值(临时方法和设置持久化的默认值)
fpga开发
沐欣工作室_lvyiyi2 天前
基于单片机的智慧农业大棚系统(论文+源码)
单片机·嵌入式硬件·fpga开发·毕业设计·单片机毕业设计