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

相关推荐
nuoxin1142 小时前
CH6001FN/BW-富利威
网络·人工智能·嵌入式硬件·fpga开发·dsp开发
LCMICRO-133108477468 小时前
长芯微LCMDC8685完全P2P替代ADS8685,16位模数转换器(ADC)
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·模数转换器adc
szxinmai主板定制专家9 小时前
基于ARM+FPGA高性能MPSOC 多轴伺服设计方案
arm开发·人工智能·嵌入式硬件·fpga开发·架构
nuoxin1149 小时前
CYUSB4024-FCAXI 是一款USB 20Gbps 控制器-富利威
网络·人工智能·嵌入式硬件·fpga开发·dsp开发
LCMICRO-1331084774620 小时前
长芯微LCMDC8584完全P2P替代ADS8584,是一款16位、4通道同步采样的逐次逼近型(SAR)模数转换器(ADC)
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模数转换器adc
尤老师FPGA1 天前
Framebuffer的讲解
fpga开发
FPGA的花路1 天前
ZYNQ 程序固化与升级指南
fpga开发·vitis·一键烧录脚本·zynq程序构成
ALINX技术博客1 天前
【黑金云课堂】FPGA技术教程:PLL锁相环实验和MIO应用
fpga开发·fpga
Byron Loong1 天前
【常识】通俗易懂的讲CPU,GPU,MCU,FPGA,DSP的区别和特点
单片机·嵌入式硬件·fpga开发
gaoxcv2 天前
TDC相关的一些方法
fpga开发