在DFT(Design for Test,可测试性设计)软件开发中,针对设计检测的完整流程通常包含Setup(设置)Analysis(分析)Insertion(插入)Verification(验证)四个核心阶段。以下是各阶段的详细说明:

1. Setup(设置阶段)

核心任务:为后续分析、插入和验证搭建基础环境,包括设计加载、库文件读取、约束条件定义等。
具体操作

  • 设计加载:读取RTL代码或门级网表(如Verilog文件),指定顶层设计(Top Design)。
  • 库文件读取:导入标准单元库、Tessent库或Mentor ATPG库,确保工具能识别设计中的元件。
  • 约束条件定义
    • 设置时钟频率、扫描链配置(如扫描使能信号scan_en)。
    • 定义电源域(Power Domain)和UPF(Unified Power Format)文件,管理多电压域设计。
    • 添加输入约束(如固定扫描模式信号scan_mode为0或1)。
  • 环境配置:设置设计层级(Chip/Sub-sys)、内存测试开关(-mem_bist on/off)等。

示例命令

tcl

read_verilog top.v # 读取顶层设计
set_current_design top # 指定当前设计
read_cell_library std_cell.lib # 读取标准单元库
add_clock CLK -period 10ns # 定义时钟
add_input_constraints scan_en -C0 # 固定扫描使能信号为0

2. Analysis(分析阶段)

核心任务:检查设计是否符合DFT规则,识别潜在问题,并生成测试模式生成所需的模型。
具体操作

  • 设计规则检查(DRC)
    • 验证扫描链连接性、时钟树结构、复位信号分布等。
    • 检查不可控/不可观测点(如组合逻辑环、锁存器未扫描化)。
  • 故障模型映射:将物理缺陷(如短路、断路)映射为逻辑故障模型(如固定故障、转换故障)。
  • 测试点插入分析:确定需额外插入的测试点(Test Points)以提升故障覆盖率。
  • 生成TCD(Tessent Core Description):为内存测试(MBIST)生成描述文件。

示例命令

tcl

check_design_rules # 运行DRC检查
report_drc_violations # 报告违规项
analyze_drc_violation -fix # 尝试自动修复DRC问题

3. Insertion(插入阶段)

核心任务:在设计中插入DFT逻辑(如扫描链、MBIST控制器),实现可测试性增强。
具体操作

  • 扫描链插入:将普通寄存器替换为扫描触发器(Scan Flip-Flop),并连接成移位寄存器链。
  • MBIST控制器插入:为内存(RAM/ROM)添加自测试逻辑,生成测试模式并比较结果。
  • 边界扫描(JTAG)插入:在芯片引脚附近插入边界扫描单元,支持板级测试。
  • 时钟/复位网络优化:确保测试模式下时钟树稳定,复位信号可控。

示例命令

tcl

insert_scan -chain_count 4 # 插入4条扫描链
insert_mbist -memory all # 为所有内存插入MBIST控制器
elaborate_design # 展开设计,应用DFT插入

4. Verification(验证阶段)

核心任务:验证插入的DFT逻辑是否正确,确保测试模式能覆盖目标故障,且不影响功能模式。
具体操作

  • 功能仿真验证
    • 在测试模式(scan_mode=1)下运行仿真,检查扫描链移位、MBIST操作是否正确。
    • 在功能模式(scan_mode=0)下验证设计功能未被破坏。
  • ATPG(Automatic Test Pattern Generation)
    • 生成测试向量(Patterns),目标故障覆盖率通常需>95%。
    • 优化向量以减少测试时间和成本(如合并相似向量)。
  • 形式验证(Formal Verification)
    • 对比插入DFT前后的网表,确保逻辑等价性。
  • 时序收敛检查
    • 与后端团队协作,确保测试模式下时序满足要求(如Shift/Capture时序)。

示例命令

tcl

run_atpg -coverage 95 # 生成覆盖率95%的测试向量
simulate -mode test # 运行测试模式仿真
verify_equivalence -golden original.v -revised dft_inserted.v # 形式验证

阶段间的关联与迭代

  • Setup → Analysis:若DRC检查失败(如扫描链未连接),需返回Setup阶段调整约束。
  • Insertion → Verification:若仿真发现MBIST控制器错误,需返回Insertion阶段修复逻辑。
  • 全流程迭代:复杂设计可能需多次循环各阶段,直至满足覆盖率、时序和功能要求。

补充:量产支持阶段(Post-Silicon)

虽非设计阶段,但DFT工程师需参与:

  • ATE调试:将测试向量适配至自动测试设备(ATE),优化测试程序。
  • 良率分析:通过测试结果定位制造缺陷(如金属短路),反馈至工艺优化。
  • 测试成本优化:减少冗余测试项(如CP阶段仅保留高价值测试),降低量产成本。

通过以上阶段,DFT软件工程师能系统化地提升芯片可测试性,确保高质量芯片交付。

讨论:Analysis阶段的DRC检测里面会有仿真检查操作吗

在DFT(Design for Test)软件的Analysis阶段中,DRC(Design Rule Check,设计规则检查)的核心目的是静态验证设计是否符合DFT规则,通常不直接包含动态仿真检查。但某些高级DRC工具或特定场景下,可能会结合轻量级仿真形式化验证来增强检查能力。


1. 传统DRC的本质:静态检查

DRC的主要任务是通过静态分析(无需运行仿真)检查设计中的结构性和逻辑性违规,例如:

  • 扫描链相关问题
    • 扫描触发器(Scan Flip-Flop)未正确连接。
    • 扫描链存在断链(Broken Chain)或环路(Loop)。
    • 扫描使能信号(scan_en)未驱动所有扫描单元。
  • 时钟与复位问题
    • 测试模式下时钟树不稳定(如时钟门控未正确控制)。
    • 复位信号在测试模式下不可控(导致扫描链无法初始化)。
  • 不可测试逻辑
    • 组合逻辑环(Combinational Loop)导致测试模式锁死。
    • 锁存器(Latch)未被扫描化,形成不可观测点。
  • 内存测试问题
    • MBIST控制器未覆盖所有内存实例。
    • 内存地址/数据总线存在冲突。

静态DRC的优势:速度快、资源占用低,适合大规模设计早期快速定位问题。


2. 仿真检查在DRC中的角色:有限但存在

虽然DRC以静态检查为主,但以下场景可能引入仿真或准仿真操作

(1) 动态DRC(Dynamic DRC)

某些DFT工具(如Synopsys Tessent、Cadence JasperGold)提供动态DRC模式,通过:

  • 模拟测试模式行为:在静态检查基础上,模拟扫描链移位、MBIST操作等动态过程,检测:
    • 扫描链移位时数据冲突(如多驱动)。
    • MBIST控制器与内存接口时序不匹配。
  • 形式化验证辅助:结合形式化方法(Formal Verification)证明测试逻辑在所有可能输入下的正确性,例如:
    • 验证scan_en=1时,所有扫描触发器确实进入移位模式。
    • 验证MBIST控制器在测试完成后能正确释放内存控制权。
(2) 仿真驱动的DRC(Simulation-Guided DRC)

在复杂设计(如多时钟域、低功耗设计)中,静态DRC可能漏检某些问题,此时会:

  • 生成测试激励:通过DFT工具生成简化的测试向量(如扫描链移位序列),运行功能仿真。
  • 监控关键信号:检查仿真波形中是否存在DRC违规(如扫描链数据未正确移位)。
  • 示例流程

    tcl

    # 生成扫描链移位测试向量
    generate_patterns -type scan_shift -count 100
    # 运行仿真并检查波形
    simulate -patterns scan_shift.v -waveform scan_wave.vcd
    # 分析波形中的违规(如数据冲突)
    check_waveform -file scan_wave.vcd -rule "no_multi_drive"
(3) 特定工具的混合检查
  • Synopsys Tessent:在check_drc命令中可通过-dynamic选项启用动态检查。
  • Cadence Modus:结合Incisive仿真器进行DRC+仿真联动验证。
  • Mentor FastScan:在ATPG前运行仿真验证扫描链连接性。

3. 仿真检查的局限性

即使引入仿真,DRC阶段的仿真与后续Verification阶段的完整仿真仍有区别:

特性DRC中的仿真检查Verification阶段的仿真
目的快速定位结构性违规验证测试模式功能正确性
激励复杂度简化激励(如单周期扫描移位)完整ATPG向量或随机测试向量
覆盖率针对特定规则(如无多驱动)故障覆盖率(Fault Coverage)目标
运行时间短(秒~分钟级)长(小时~天级,依赖向量规模)

4. 实际工程中的建议
  1. 优先静态DRC:在早期阶段(如RTL或门级网表阶段)运行静态DRC,快速过滤明显问题。
  2. 关键路径仿真:对静态DRC报告的疑似问题(如时钟冲突),针对性运行仿真验证。
  3. 形式化验证补充:对关键测试逻辑(如MBIST控制器)使用形式化方法证明正确性。
  4. 工具选项配置:根据设计复杂度选择是否启用动态DRC(如Tessent的-dynamic)。

总结
  • 传统DRC****:静态检查为主,不依赖仿真,适合快速定位结构性问题。
  • 仿真检查:在动态DRC或混合流程中作为补充,用于检测静态分析难以覆盖的动态行为(如数据冲突、时序违规)。
  • 最佳实践:结合静态DRC的效率和仿真/形式化验证的准确性,形成分层验证策略。

附加:

【SOC 芯片设计 DFT 学习专栏 -- DFT DRC规则检查】-CSDN博客

  DFT中的DRC检查详解及常见问题-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化测试准备工作:概念篇

自动化 什么是自动化? 超市的自动闸门,不需要手动的开门关门生活中的自动动化案例有效的减少了人力的消耗,同时也提高了生活的质量。 软件自动化测试同理,通过编写自动化测试程序(减少人力和时间的消耗,提高软件的…

每日主题切换网页:用纯前端技术打造随心情变化的动态界面

🎨 每日主题切换网页:用纯前端技术打造随心情变化的动态界面 项目地址:https://github.com/hhse/daily-theme-switcher 在线演示:https://hhse.github.io/daily-theme-switcher 这里写目录标题🎨 每日主题切换网页&…

TOPSIS(Technique for Order Preference by Similarity to Ideal Solution )简介与简单示例

前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…

uniapp 富文本rich-text 文本首行缩进和图片居中

1. uniapp 富文本rich-text 文本首行缩进和图片居中 1.1. rich-text 文本首行缩进使用 rich-text 组件渲染html格式的代码,常常因为不能自定义css导致文本不能缩进,以及图片不能居中等问题,这里可以考虑使用js的replace方法,替换…

Apple基础(Xcode③-Singbox Core)

brew install go open ~/.bash_profile export PATH="$PATH:$(go env GOPATH)/bin" 先确保工具链完整 go install github.com/sagernet/gomobile/cmd/gomobile@v0.1.4 go install github.com/sagernet/gomobile/cmd/gobind@v0.1.4 gomobile init -v # 关键:-v …

JVM学习日记(十四)Day14——性能监控与调优(一)

经过前几篇的铺垫,现在开始正式进入调优篇,也是大火实际用的到的和感兴趣的,但是前期的知识积累还是有必要的,所以还对JVM基础没什么了解的,建议还是回看主包的前几篇内容,当然看其他优秀的博主也是可以的。…

使用 Elasticsearch 和 AI 构建智能重复项检测

作者:来自 Elastic Dayananda Srinivas 探索组织如何利用 Elasticsearch 检测和处理贷款或保险申请中的重复项。 Elasticsearch 带来了大量新功能,帮助你为你的使用场景构建最佳搜索方案。深入了解我们的示例 notebooks,开始免费云试用&#…

如何在不依赖 Office 的情况下转换 PDF 为可编辑文档

在日常工作里,我们经常需要处理各种文件格式的转换问题,像Word转PDF或者PDF转Excel这样的需求屡见不鲜。它是一款功能全面的PDF转换工具,能够帮助你轻松应对多种文档处理任务。不仅能够实现PDF与其他格式之间的转换,如Word、Excel…

嵌入式学习笔记-MCU阶段--DAY09

1. oled屏幕的接口IIC应用场合:2.IIC通信原理概念:IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司…

解决 Node.js 托管 React 静态资源的跨域问题

在 Node.js 项目中托管 React 打包后的静态资源时,可能会遇到跨域问题(CORS)。以下是几种解决方案: 1. 使用 Express 中间件设置 CORS 头 const express require(express); const path require(path); const app express();// …

【Linux】多路转接之epoll

优化poll进行拷贝的开销poll开销过大将整个 pollfd 数组拷贝到内核态,以便内核检查 fd 是否就绪(从用户态 → 内核态)。内核检查 fd 状态,并填充 revents。将 pollfd 数组从内核态拷贝回用户态,让应用程序可以读取 rev…

下载一个JeecgBoot-master项目 导入idea需要什么操作启动项目

官网:开发环境搭建 | JEECG 文档中心 一般做开发的电脑里都是有的,没有的只能下载了 前端安装 node官网:https://nodejs.org/zh-cnpnpm安装:通过命令 后端安装: jdk17 :https://www.oracle.com/cn/java/technologies/downloads/#java17maven :https://m…

解决 InputStream 只能读取一次问题

是的,InputStream 的一个重要特性是它通常只能被读取一次。这是因为:输入流通常是单向的、顺序访问的数据源很多流(如网络流、文件流)读取后指针就移动了,无法回退有些流(如Socket流)甚至读取后…

数据分析面试题

技都测试 1、请列举5个 Excel 中常用的函数及写法。[ if ] IF(A1>60, "及格", "不及格") —— 若 A1 单元格数值≥60,返回 “及格”,否则返回 “不及格”。IF(B2>100, B2*0.8, B2) —— 若 B2 数值 > 100&#xff0c…

【07】VisionMaster入门到精通——Blob分折

文章目录0 视屏讲解与演示1 案例演示2 参数详解1 运行参数0 视屏讲解与演示 1 案例演示 周长使能查找U型槽 短轴使能查找U型槽 面积筛选区域 当条件不符合是,该模块显示红色,状态为NG 显示二值图像 显示Blob图像 2 参数详解 Blob分折,…

解释 MySQL 中的 EXPLAIN 命令的作用和使用场景

解释 MySQL 中的 EXPLAIN 命令的作用和使用场景 总结性回答 EXPLAIN 是 MySQL 中用于分析 SQL 查询执行计划的命令,它能展示 MySQL 如何执行一个查询,包括使用的索引、表连接顺序、扫描行数等关键信息。主要用于查询性能优化,帮助开发者识别潜…

.env 文件

.env 文件其实就是一个纯文本文件,用来写“环境变量”键值对,格式非常简单 👇✅ .env 文件写法格式:每一行就是一个变量名 值,不要加引号,不要加空格DEEPSEEK_API_KEYsk-xxxxxxxxxxxxxxxxxxxx完整例子&…

机器学习——K 折交叉验证(K-Fold Cross Validation),案例:逻辑回归 交叉寻找最佳惩罚因子C

什么是交叉验证? 交叉验证是一种将原始数据集划分为若干个子集,反复训练和验证模型的策略。 交叉验证(Cross-Validation)适用于你在模型调参(如逻辑回归中的 C) 最常用的:K 折交叉验证&#…

蓝桥杯----串口

(五)、串口1、串口通信简介制定通信的规则,通信双方按照协议规则进行数据收发,将一个设备的数据传送到另一个设备,扩展硬件系统,串口USART有两根通信线Tx、Rx,可同时双向通信,称之为…

错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException

背景: 代码没有更改,主类位置也没有移动,运行时突然报找不到或无法加载主类的错误 错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException编译器上方显示 Java file is located outside of the module source root so it wont …