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

相关推荐
XINVRY-FPGA9 小时前
EPM240T100I5N Altera FPGA MAX II CPLD
人工智能·嵌入式硬件·fpga开发·硬件工程·dsp开发·射频工程·fpga
第二层皮-合肥15 小时前
FPGA实现ETH接口
单片机·嵌入式硬件·fpga开发
璞致电子18 小时前
【PZ-ZU47DR-KFB】璞致FPGA ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常见问题说明
嵌入式硬件·fpga开发·fpga·软件无线电·sdr
陌夏微秋19 小时前
FPGA硬件设计2 最小芯片系统-ZYNQ7020/7010
嵌入式硬件·fpga开发·硬件架构·硬件工程·信息与通信·智能硬件
风已经起了1 天前
FPGA学习笔记——IIC协议简介
笔记·学习·fpga开发
逐梦之程2 天前
FPGA-Vivado2017.4-建立AXI4用于单片机与FPGA之间数据互通
fpga开发
XINVRY-FPGA2 天前
10CL016YF484C8G Altera FPGA Cyclone
嵌入式硬件·网络协议·fpga开发·云计算·硬件工程·信息与通信·fpga
嵌入式-老费3 天前
产品开发实践(常见的软硬结合方式)
fpga开发
FakeOccupational3 天前
【电路笔记 通信】AXI4-Lite协议 FPGA实现 & Valid-Ready Handshake 握手协议
笔记·fpga开发
I'm a winner3 天前
FPGA+护理:跨学科发展的探索(五)
fpga开发