【SOC 芯片设计 DFT 学习专栏 -- DFT 为何需要在综合之后插入】

news2025/1/5 18:01:16

文章目录

    • Overview
      • 1. 避免影响功能逻辑设计
      • 2. 优化综合结果
      • 3. 自动化工具支持
      • 4. 更好地支持 DFT 验证与调试

Overview

本文主要介绍在 soc 设计中 DFT 逻辑为何是在 综合之后插入。

在 SoC(System on Chip)设计中,DFT(Design for Testability,设计可测性)逻辑通常是在 综合之后 插入,这种方式的主要原因和优势包括以下几点:

1. 避免影响功能逻辑设计

在综合之前,设计的重点是描述功能行为,而不涉及具体的硬件实现形式。如果过早插入 DFT 逻辑,可能会影响功能描述的简洁性和逻辑清晰性,增加 RTL(Register Transfer Level)代码的复杂度,导致错误或理解困难。

例如:

  • 原始功能设计可能只需关注数据的传输和处理。

  • 插入扫描链、插入测试点等操作会引入额外寄存器和布线逻辑,导致设计和调试更加复杂。

2. 优化综合结果

在综合过程中,EDA 工具会对设计逻辑进行优化(比如门级优化、功耗优化)。如果在综合前插入 DFT 逻辑,功能逻辑与 DFT 逻辑可能被混合优化,影响工具的优化效率以及 DFT 的完整性和可控性。

例如:

  • 综合工具在 DFT 逻辑插入之前,可以专注于优化原有设计。

  • 综合后的门级网表具备稳定性,便于自动插入测试结构如 扫描链(Scan Chain)

3. 自动化工具支持

综合之后的网表更加稳定和精简,基于此可以使用 DFT 工具自动化插入 DFT 结构,例如插入扫描链(Scan Chain)、测试点(Test Point)和内建自测试(BIST)。这样的自动化过程可以高效完成 DFT 插入,减少手工干预。
举例:

  1. 综合前设计:
module functional_design(
    input clk,
    input rst,
    input [3:0] data_in,
    output [3:0] data_out
);
    reg [3:0] data_reg;
    always @(posedge clk or posedge rst) begin
        if (rst)
            data_reg <= 0;
        else
            data_reg <= data_in;
    end
    assign data_out = data_reg;
endmodule
  1. 综合之后:
    综合工具将 RTL 转化为门级网表。

  2. DFT 插入:
    插入扫描链,加入额外的输入和控制信号:

  • 添加 Test Mode 信号 test_mode

  • 替换原寄存器 data_reg 为扫描可控寄存器 scan_reg,形成扫描链。
    变更后的逻辑:

  • 原寄存器被替换为支持测试模式的寄存器。

  • 测试模式激活时,可以通过扫描输入观察或控制寄存器值。

module dft_design(
    input clk,
    input rst,
    input test_mode,
    input scan_in,
    output scan_out,
    input [3:0] data_in,
    output [3:0] data_out
);
    reg [3:0] scan_reg;
    wire [3:0] functional_data;
    
    // Scan chain implementation
    always @(posedge clk) begin
        if (test_mode)
            scan_reg <= {scan_in, scan_reg[3:1]}; // Shift in during test mode
        else
            scan_reg <= data_in; // Normal operation
    end

    assign functional_data = scan_reg;
    assign data_out = functional_data;
    assign scan_out = scan_reg[0]; // Scan chain output
endmodule

4. 更好地支持 DFT 验证与调试

在综合后插入的 DFT 逻辑处于门级网表级别,更加接近真实硬件,实现更方便的验证和调试:

  • 自动验证: 工具可以检查扫描链的连通性。

  • 故障覆盖率分析: 可评估插入的 DFT 是否覆盖了关键故障点。

  • 简化调试流程: 综合后的 DFT 逻辑避免与 RTL 功能逻辑混淆。

总结
在综合后插入 DFT 逻辑能够更高效地管理设计流程,优化功能设计与测试需求之间的权衡,同时借助自动化工具提升设计效率和测试质量。这一方法已成为工业界主流做法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2270393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSM-Spring-AOP

目录 1 AOP实现步骤&#xff08;以前打印当前系统的时间为例&#xff09; 2 AOP工作流程 3 AOP核心概念 4 AOP配置管理 4-1 AOP切入点表达式 4-1-1 语法格式 4-1-2 通配符 4-2 AOP通知类型 五种通知类型 AOP通知获取数据 获取参数 获取返回值 获取异常 总结 5 …

【Linux】:线程安全 + 死锁问题

&#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 1. 线程安全和重入问题&…

数字电路期末复习

*前言&#xff1a;*写的东西不太全面&#xff0c;更多的是一个复习大纲&#xff0c;让你发现自己有哪些不懂的问题&#xff08;不懂的地方就去翻书或者问AI&#xff09;&#xff0c;如果能够解决提出的所有问题&#xff0c;那么过期末考一定不是问题。 这里写目录标题 数制和码…

python数据分析:使用pandas库读取和编辑Excel表

使用 Pandas&#xff0c;我们可以轻松地读取和写入Excel 文件&#xff0c;之前文章我们介绍了其他多种方法。 使用前确保已经安装pandas和 openpyxl库&#xff08;默认使用该库处理Excel文件&#xff09;。没有安装的可以使用pip命令安装&#xff1a; pip install pandas ope…

“AI人工智能软件开发公司:创新技术,引领未来

大家好&#xff01;今天我们来聊聊一个充满未来感的话题——AI人工智能软件开发公司。这个公司&#xff0c;用大白话说&#xff0c;就是专门研究和开发人工智能软件的地方&#xff0c;它们用最新的技术帮我们解决问题&#xff0c;让生活和工作变得更智能、更便捷。听起来是不是…

uniapp中使用ruoyiPlus中的加密使用(crypto-js)

package.json中添加 "crypto-js": "^4.2.0", "jsencrypt": "^3.3.2",但是vue2中使用 import CryptoJS from cryptojs; 这一步就会报错 参照 参照这里&#xff1a;vue2使用CryptoJS实现信息加解密 根目录下的js文档中新增一个AESwork.…

【SQL Server】教材数据库(1)

1 利用sql建立教材数据库&#xff0c;并定义以下基本表&#xff1a; 学生&#xff08;学号&#xff0c;年龄&#xff0c;性别&#xff0c;系名&#xff09; 教材&#xff08;编号&#xff0c;书名&#xff0c;出版社编号&#xff0c;价格&#xff09; 订购&#xff08;学号…

全国计算机设计大赛大数据主题赛(和鲸赛道)经验分享

全国计算机设计大赛大数据主题赛&#xff08;和鲸赛道&#xff09;经验分享 这是“和鲸杯”辽宁省普通高等学校本科大学生计算机设计竞赛启动会汇报—大数据主题赛的文档总结。想要参加2025年此比赛的可以借鉴。 一、关于我 人工智能专业 计赛相关奖项&#xff1a; 2022年计…

AI对接之JSON Output

AI的JSON Output 实际对接指南 前言 本系列AI的API对接均以 DeepSeek 为例&#xff0c;其他大模型的对接方式类似。 在现代软件开发中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;作为一种轻量级的数据交换格式&#xff0c;因其简洁和易于人阅读的特…

Vue3实现PDF在线预览功能

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue3现PDF在线预览功能 前言 在开发中&#xff0c;PDF预览和交互功能是一个常见的需求。无论是管理…

SpringBootWeb案例-1

文章目录 SpringBootWeb案例1. 准备工作1.1 需求&环境搭建1.1.1 需求说明1.1.2 环境搭建 1.2 开发规范 2. 部门管理2.1 查询部门2.1.1 原型和需求2.1.2 接口文档2.1.3 思路分析2.1.4 功能开发2.1.5 功能测试 2.2 前后端联调2.3 删除部门2.3.1 需求2.3.2 接口文档2.3.3 思路…

css实现垂直文本

效果 知识 writing-mode: <value>; 可选值 horizontal-tb: 默认值。文本从左到右&#xff08;或从右到左&#xff09;排列&#xff0c;然后从上到下。vertical-rl: 文本从上到下排列&#xff0c;然后从右到左。适用于垂直书写的方向&#xff0c;如日语和中文。vertica…

vim里搜索关键字

vim是linux文本编辑器的命令&#xff0c;再vi的基础上做了功能增强 使用方法如下 1. / 关键字, 回车即可, 按n键查找关键字下一个位置 2.? 关键字, 回车即可, 按n键查找关键字下一个位置 3.示例

Qt之QtConcurrent

简介 QtConcurrent是针对qt中多线程相关的高层封装&#xff0c;如QFuture 结构 Qtconcurrent命名空间中的run支持的有 其对应的functor下结构为 类关系 functor对应的类核心关系为 #mermaid-svg-KLxZquz9yRsiYvQL {font-family:"trebuchet ms",verdana,a…

鸿蒙应用开发搬砖经验之-ArkWeb加载页面的超简单示例

前言 系统环境&#xff1a;Mac mini M2 14.5 (23F79) 开发IDE&#xff1a;DevEco Studio 5.0.1 Release 示例 第一步&#xff1a;创建一个Empty Ability工程 第二步&#xff1a;先run一下&#xff0c;确定工程初步化正常&#xff0c;模拟器正常启动应用&#xff08;要先提…

大模型系列17-RAGFlow搭建本地知识库

大模型系列17-RAGFlow搭建本地知识库 安装ollama安装open-wehui安装并运行ragflowRAG&#xff08;检索、增强、生成&#xff09;RAG是什么RAG三过程RAG问答系统构建步骤向量库构建检索模块生成模块 RAG解决LLM的痛点 使用ragflow访问ragflow配置ollama模型添加Embedding模型添加…

SimForge HSF 案例分享|复杂仿真应用定制——UAVSim无人机仿真APP(技术篇)

导读 「神工坊」核心技术——「SimForge HSF高性能数值模拟引擎」支持工程计算应用的快速开发、自动并行&#xff0c;以及多域耦合、AI求解加速&#xff0c;目前已实现航发整机数值模拟等多个系统级高保真数值模拟应用落地&#xff0c;支持10亿阶、100w核心量级的高效求解。其低…

微电网到底是什么?和光伏有什么关系?

在现代能源体系中&#xff0c;微电网作为一种新型的电力系统结构&#xff0c;正逐渐受到广泛关注和应用。那么&#xff0c;微电网到底是什么&#xff1f;它与光伏又有怎样的关系呢&#xff1f;本文将对此进行详细解析。 微电网的基本概念 微电网&#xff08;Micro-Grid&#x…

印象笔记06——再谈谈更新

印象笔记06——再谈谈更新 [!CAUTION] 好吧&#xff0c;我承认在前五期的努力下&#xff0c;我还是用的obsidian多一些。印象笔记很大程度用来弄清单&#xff0c;但是扭头看了看自己的会员时间&#xff0c;不能浪费啊&#xff01;本期再谈谈印象笔记近期的一些更新&#xff0c;…

爱死机第四季(秘密关卡)4KHDR国语字幕

通过网盘分享的文件&#xff1a;love_death_robot 链接: https://pan.baidu.com/s/1bG3Xtdopenil2O_y93hY_g?pwd8kib 提取码: 8kib