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

相关推荐
千寻xun7 小时前
三、实战篇-NVME SSD控制之FPGA实现(一)
fpga开发·nvme ssd·nvme协议
XMAIPC_Robot11 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
upper202011 小时前
从零开始设计riscv cpu记录之七
fpga开发·riscv·riscv设计·btb·分支预测
ARM|X86+FPGA工业主板厂家15 小时前
AI视觉跟随运动控制实战|RK3588 NPU检测+FPGA EtherCAT多轴联动精准跟随方案,适用于半导体视觉对位等
人工智能·fpga开发·硬件工程·ethercat·实时系统
XMAIPC_Robot19 小时前
RK3588+FPGA半导体设备量产踩坑大全|发热、时序漂移、推理抖动、成像干扰、EMC干扰方案
人工智能·嵌入式硬件·fpga开发·arm+fpga
凡亿卓达方案设计1 天前
FPGA硬件开发怎么选靠谱方案商?
fpga开发
Eloudy2 天前
QSFP28、RoCEv2、RFSoC-4x2 数据传输与器件链路
网络·fpga开发·rocev2
Echo_cy_2 天前
基于ZYNQ-7000的Ethernet驱动配置
linux·驱动开发·嵌入式硬件·fpga开发·ethernet·zynq
現実君2 天前
关于MCU下位替换FPGA的经验与方案
单片机·嵌入式硬件·fpga开发
Terasic友晶科技2 天前
【教程】Agilex 5 SoC 的两种启动模式的开发演示(一)(FPGA Configuration First)
fpga开发·agilex 5 soc