Tessent EDT 之External Flow与Internal Flow:架构选择与设计权衡 📅 发布时间:2026/7/4 20:48:37 👁️ 浏览次数: 1. 当你的SoC项目遇上EDT两种架构两条路做芯片测试设计DFT的朋友尤其是刚接触Tessent EDT的工程师估计都绕不开一个灵魂拷问这EDT逻辑我到底是放在核心模块Core外面还是塞到Core里面去这可不是一个简单的“放哪儿”的问题它直接关系到你未来几个月甚至更长时间的设计节奏、团队协作效率以及最终芯片的测试质量和交付时间。我自己带过好几个从成熟工艺到先进工艺的SoC项目在EDT的架构选择上踩过坑也尝过甜头。今天我就以一个过来人的身份掰开揉碎了跟你聊聊Tessent EDT的External Flow外部流程和Internal Flow内部流程帮你理清在项目初期做这个关键决策时到底该怎么权衡。简单来说你可以把EDT想象成一个负责压缩和解压缩测试数据的“数据中转站”。扫描链Scan Chain从芯片内部抓取的海量测试响应数据经过它压缩后才能通过有限的芯片引脚送出去分析外部的测试向量也要经过它解压后才能灌入芯片内部。这个“中转站”的选址就决定了整个测试物流体系的运作模式。External Flow顾名思义就是把这个中转站建在核心逻辑模块的外面独立成一块。你的Core设计团队只需要专心把内部的扫描链串好EDT的事情后面再说。而Internal Flow则是把这个中转站直接建在Core的内部成为Core设计不可分割的一部分。这两种选择没有绝对的好坏只有适合与否。接下来我们就深入项目实战的细节看看在不同的场景下你该怎么选。2. 庖丁解牛深入理解External与Internal Flow要做出明智的选择首先得把两种流程的“五脏六腑”看清楚。咱们别光看手册上的定义结合具体的设计动作来理解。2.1 External Flow清晰的边界独立的王国在External Flow下你的工作视图是分层的非常清晰。首先你手头有一个已经完成功能设计的核心模块网表Core Netlist这个网表里不包含任何EDT逻辑甚至可能连扫描链都还没插入。你的第一步是在Tessent Shell这样的DFT工具里把这个干净的Core网表读进去完成扫描链的插入、ATPG等各种DFT操作。注意到这里为止EDT都还没登场。EDT逻辑是在一个全新的顶层被创建和例化的。你可以把它想象成在Core这个“主建筑”旁边我们新划了一块地专门盖了一个“数据处理中心”EDT逻辑块。这个新的顶层包含了EDT逻辑、必要的I/O Pad引脚单元以及连接Core的接口电路。因为EDT逻辑完全存在于Tessent Shell所读入的原始设计网表之外所以称之为“外部”流程。这么做最直接的好处就是解耦。Core的设计团队可以完全专注于功能实现和时序收敛他们只需要确保设计能够被正确地串成扫描链满足DFT DRC规则而不需要关心EDT用了多少个通道Channel、压缩比是多少、内部是什么结构。Core的网表可以相对稳定地交付给DFT团队。DFT团队拿到Core网表后在一个独立的环境里构建EDT逻辑并完成顶层集成双方的依赖和干扰降到最低。我在一个多团队协作的大型通信芯片项目里就采用过这种模式数字前端团队和DFT团队并行工作前端交付一个稳定的、带扫描链的网表我们DFT团队在另一个分支上折腾EDT集成和验证效率提升非常明显。2.2 Internal Flow高度集成一体设计Internal Flow走的则是另一条高度集成的路线。在这种情况下你交给Tessent Shell的网表本身就已经是一个包含了I/O Pad的、相对完整的顶层设计。EDT逻辑不是作为一个外部模块被添加而是由Tessent Shell工具直接插入到这个已有的顶层网表内部。这就好比我们不是在主建筑旁边盖新楼而是直接在主建筑内部找一块区域改造出一个“数据处理中心”。这个中心从建设之初就是主建筑的一部分共用同一套水电管网时钟、复位网络结构上更紧密。因为EDT逻辑被实例化在工具所读入的设计网表内部所以叫“内部”流程。这种模式最大的优势在于物理实现的便利性和潜在的性能优化。由于EDT逻辑在设计的早期阶段就被考虑在内它和Core逻辑之间的连线可以更短布局布线Place Route工具能对其进行整体优化有助于改善时序Timing和功耗Power。特别是在先进工艺节点下绕线资源紧张信号完整性要求高将EDT作为设计的一部分进行协同优化往往能获得更干净利落的物理结果。我参与过的一个高性能计算芯片项目因为对最终频率要求极高任何额外的顶层连线都可能成为瓶颈我们就选择了Internal Flow让EDT逻辑和核心逻辑一起经历综合、布局布线的锤炼最终在满足时序方面确实更从容。2.3 一个关键角色Lock-up Cell的安家之处无论选择哪种流程有一个小东西的放置都需要你额外留意那就是Lock-up Cell保持单元。它的作用是在扫描链移位Shift时隔离不同时钟域之间的信号防止亚稳态Metastability传播是保证测试稳定性的重要组件。Tessent工具在插入EDT逻辑时会默认自动地在需要的地方插入Lock-up Cell。根据官方文档和我的实践经验这些Lock-up Cell主要被放置在三个位置EDT逻辑内部处理EDT自身逻辑产生的、需要跨时钟域的信号。EDT逻辑与设计核心Core之间这是最关键的位置用于隔离从EDT输出到Core扫描链输入以及从Core扫描链输出到EDT输入的信号。旁路Bypass电路中当测试模式需要绕过EDT如某些诊断模式时保证信号在旁路路径上也能安全传递。在External Flow中由于EDT是独立的第2类EDT与Core之间的Lock-up Cell会自然落在你新创建的那个顶层模块里。而在Internal Flow中这些Lock-up Cell则直接成为了你原始顶层设计的一部分。理解这一点有助于你在做后期物理验证和时序分析时知道去哪里找这些关键单元。3. 实战决策框架你的项目该选哪条路了解了基本原理我们进入最实用的部分面对一个具体的SoC项目你该如何决策我总结了一个四维度的评估框架你可以拿着这个清单去对照你的项目需求。3.1 维度一项目需求与设计复杂度这是决策的基石。你需要问自己几个关键问题芯片的规模有多大对于超大规模、模块众多的SoCExternal Flow的模块化优势明显。每个子模块Sub-system可以独立完成扫描链插入和初步测试最后在顶层用EDT集成复杂度可控。如果强行用Internal Flow顶层网表过早膨胀工具运行时间和内存消耗可能成问题。设计是否高度定制化或对性能极其敏感如果是追求极限性能的CPU、GPU或者高速SerDes PHYInternal Flow可能是更好的选择。它允许物理设计团队对包含EDT在内的整个设计进行全局优化确保关键路径的时序。External Flow在顶层增加的接口连线可能会引入额外的延迟和不确定性。是否有第三方IP或硬核Hard Macro如果设计中包含大量你不掌握内部结构的第三方IP采用External Flow会更安全。你可以将这些IP视为黑盒在其外部用扫描链连接并通过顶层EDT集成避免了对IP内部进行DFT插入的麻烦和风险。3.2 维度二团队分工与协作模式流程选择深刻影响团队工作流。团队是否分离如果公司有独立的DFT团队或者前端设计团队和DFT工程师分开工作External Flow能提供清晰的“交付物”边界。前端团队交付带扫描链的干净网表DFT团队负责EDT集成和测试生成职责清晰接口明确。团队是否高度融合如果设计工程师同时也负责DFT工作或者团队小而精大家紧密协作Internal Flow可以简化流程。设计、DFT、物理实现可以在同一个数据流中迭代减少中间文件传递和版本管理的开销。对工具链的依赖如何External Flow对Core的设计工具几乎没有限制只要它能输出满足基本DFT规则的网表即可。而Internal Flow通常要求从综合Synthesis到布局布线PR的整个流程都能较好地支持或兼容Tessent工具插入的EDT逻辑结构。3.3 维度三集成难度与物理实现这是从设计到GDSII过程中必须面对的挑战。顶层集成复杂度External Flow将集成难度转移到了顶层。你需要精心设计那个包含EDT的新顶层处理好EDT与多个Core之间的连接、时钟域交叉、电源域隔离等问题。这相当于增加了一个新的设计层次。而Internal Flow的集成在逻辑设计阶段就由工具在顶层内部完成但可能会使原始顶层网表变得复杂影响逻辑综合和初始布局的策略。物理设计后端影响如前所述Internal Flow有利于后端进行整体优化。而External Flow中EDT作为一个独立的硬核如果单独布局或一大块逻辑与Core之间的物理位置和连线需要后端工程师仔细规划否则可能产生拥堵Congestion或长线延时问题。我曾遇到一个项目因为EDT模块放置得离核心逻辑太远导致扫描链进出EDT的连线又长又绕不仅时序紧张测试功耗也上去了后来不得不重新规划布局才解决。3.4 维度四测试覆盖率与效率的最终博弈所有架构选择的最终目的都是为了产出高质量、高效率的测试。测试模式生成ATPG效率理论上两种流程在生成测试向量的能力上只要配置得当没有本质区别。但Internal Flow因为集成度更高工具在分析故障传播路径时视角更全局有时在处理一些跨层次Cross-hierarchical的故障时可能更直接。而External Flow需要工具理解顶层和Core之间的抽象接口在某些极端复杂的情况下可能需要更精细的约束设置。测试数据量Test Data Volume与测试时间Test Time这主要取决于EDT本身的压缩比配置与External/Internal的选择关系不大。但有一点需要注意External Flow中如果EDT到Core的接口走线过长可能会引入更多的信号延迟为了在测试模式下保证捕获Capture的稳定性有时可能需要略微降低测试时钟频率从而间接影响测试时间。诊断与调试Diagnosis Debug便利性当测试失败需要进行故障诊断时Internal Flow由于整个设计包括EDT在工具看来是一个整体追踪故障源可能更连贯。而在External Flow中故障可能发生在Core内部也可能发生在EDT逻辑或接口连线上诊断时需要同时考虑多个层次流程上会多一步。为了更直观我把几个关键维度的对比总结成下面这个表格你可以在项目启动会上拿出来讨论考量维度External Flow (外部流程)Internal Flow (内部流程)核心逻辑设计复杂度低。Core设计独立只需关注扫描链。高。需在Core设计阶段考虑EDT集成与接口。顶层集成复杂度高。需要创建并验证新的顶层处理模块间连接。相对低。集成由工具在已有顶层内完成。团队协作清晰解耦。适合独立DFT团队或前后端分离团队。紧密耦合。适合设计-DFT协同作业的小团队。物理实现优化挑战大。需精心规划EDT模块布局与连线。优势大。利于整体布局布线及时序功耗优化。对第三方IP的友好度高。可将IP视为黑盒在外部处理。低。可能需要对IP进行特殊处理或适配。工具流程依赖性低。Core设计工具选择更自由。高。建议使用兼容性好的综合与后端工具链。4. 从理论到GDSII两种流程的实施路径与避坑指南知道了怎么选我们再来看看具体怎么走以及路上有哪些常见的“坑”。4.1 External Flow实施步骤与关键检查点假设你选择External Flow一个典型的实施路径如下核心模块准备确保你的Core设计已经完成功能验证并且满足了基本的DFT设计规则DRC比如时钟控制、复位控制、扫描链的可控可观测性等。使用Tessent Shell或DFT Advisor对Core进行扫描链插入生成一个干净的、带扫描链的网表例如core_with_scan.v。这是你交付给后续流程的“标品”。创建EDT顶层新建一个顶层模块例如top_edt.v。在这个模块中你需要实例化你的Core (core_with_scan)。实例化由Tessent工具生成的EDT控制器EDT Controller模块。添加所有必需的I/O Pad输入、输出、双向引脚。仔细连接Core的扫描输入SI、扫描输出SO、扫描使能SE等端口到EDT控制器的对应端口。这里是最容易出错的地方务必对照工具生成的接口文档一一核对特别是多位宽的总线信号顺序不能错。顶层DFT插入与验证将top_edt.v读入Tessent Shell。工具会自动在EDT逻辑与Core扫描链之间插入必要的Lock-up Cell。你需要运行完整的DFT DRC检查确保在顶层没有引入新的规则违反。然后可以运行ATPG生成测试向量并评估压缩率和故障覆盖率。物理实现挑战将top_edt.v连同EDT和Core的库文件一起交给后端团队。后端工程师需要将EDT逻辑块作为一个整体进行布局。关键避坑点一定要让后端团队了解EDT模块的输入输出端口特性特别是那些高扇出high fanout的测试控制信号如扫描使能他们可能需要插入缓冲器Buffer来保证信号质量。同时要关注EDT与Core之间的连线总长度避免产生时序瓶颈。4.2 Internal Flow实施步骤与关键检查点如果选择Internal Flow流程则更为一体化准备含I/O的顶层网表你的起点是一个已经包含了I/O Pad信息的顶层设计网表例如top_with_pads.v。这个网表可能来自逻辑综合后的输出。在Tessent Shell中插入EDT直接将top_with_pads.v读入Tessent Shell。使用相应的命令如insert_edt指定配置参数通道数、压缩比等。工具会直接修改这个网表在内部插入EDT逻辑、扫描链以及Lock-up Cell生成一个新的网表例如top_with_edt.v。集成后验证对新生成的网表进行DFT DRC和ATPG。由于EDT已集成你需要确保工具正确识别了所有I/O Pad和内部逻辑。一个常见的坑是如果原始网表中的I/O Pad模型不标准或者某些Pad处于非测试功能模式如模拟Pad可能会干扰EDT信号的进出需要仔细设置测试协议Test Protocol和引脚约束Pin Constraints。物理实现的协同将top_with_edt.v送入布局布线工具。此时的优势是所有逻辑功能EDT都在同一个层次布局布线工具可以自由地摆放EDT中的寄存器、门电路使其与Core逻辑混合布局从而优化时序和面积。需要注意要告知后端工具哪些逻辑是属于EDT的以便在需要时比如做功耗分析或工程变更单ECO能够快速定位。4.3 混合模式一种灵活的折中方案在实际项目中尤其是复杂的异构SoC里非此即彼的选择可能不够用。这时你可以考虑混合模式。例如对于一个包含一个大型CPU核和多个小型加速器核的芯片对大型CPU核采用Internal Flow因为其设计复杂对性能敏感需要深度集成优化。对多个小型、同构的加速器核采用External Flow将它们视为一个整体在顶层用一个EDT控制器来统一管理简化每个加速器核的设计负担。这种模式要求DFT工程师对Tessent工具有更深入的掌握能够灵活配置多个EDT实例及其互连关系但能带来最佳的灵活性和设计效率。5. 经验之谈那些年我踩过的“坑”与收获讲了这么多理论和流程最后分享几点实实在在的经验教训这些可是手册上不一定写的。关于External Flow的“坑”我最深刻的一次教训是低估了顶层时钟网络的设计。在一个External Flow项目中EDT模块和Core分别由不同的时钟源驱动为了测试灵活性。结果在顶层集成时这两个时钟域之间的偏斜Skew没有控制好导致Lock-up Cell无法有效隔离亚稳态测试模式下一跑就出现随机失败。后来我们不得不在顶层重新设计了时钟树并增加了额外的时钟缓冲和平衡。所以如果你用External Flow务必像设计功能时钟一样认真设计测试时钟网络提前与后端团队沟通时钟规划。关于Internal Flow的“坑”Internal Flow虽然集成度高但一旦设计需求变更改动起来可能更麻烦。有一次在项目后期因为系统架构调整需要增加一条扫描链。在Internal Flow下这意味着要重新运行整个EDT插入流程并且由于EDT逻辑被打散分布在设计中后续的物理设计增量修改ECO也比预想的复杂。因此在项目初期采用Internal Flow时尽量把EDT的配置参数如扫描链数量、通道数定得宽松一些留出一些余量以应对后期可能的变化。工具版本与流程的匹配无论是哪种流程都要密切关注你所用的Tessent工具版本与综合工具如Design Compiler、后端工具如Innovus版本的兼容性。我曾经遇到过因为工具版本组合较新在Internal Flow插入EDT后综合工具读入网表时报出一些奇怪的语法警告虽然不影响功能但给流程自动化脚本带来了麻烦。在项目启动初期用一个小型的设计做一次从RTL到GDSII的完整流程验证Flow Trial Run是非常值得的它能提前暴露工具链配合的问题。说到底选择External Flow还是Internal Flow是一个权衡的艺术。它没有标准答案只有最适合你当前项目团队、设计目标和资源约束的答案。我的建议是在项目启动的架构评审阶段就把DFT架构师拉进来把这张决策清单上的问题讨论清楚形成一个书面记录。这样不仅能避免后续的扯皮更能让测试设计从一开始就走在正确的道路上为芯片的最终成功量产打下坚实的基础。毕竟在芯片设计这场马拉松里前期多花一小时思考架构可能就能为后期节省掉一周的调试时间。
CTF实战:从网鼎杯青龙组题目解析PHP反序列化漏洞的5种绕过姿势 CTF实战:从网鼎杯青龙组题目解析PHP反序列化漏洞的5种绕过姿势 最近在复盘一些经典的CTF题目,网鼎杯青龙组的“AreUserialZ”这道题让我印象很深。它把PHP反序列化里几个常见的“坑点”巧妙地揉在了一起,从属性可见性到字符校验,再… 2026/5/17 11:37:13
基于SSM的精准扶贫管理系统的设计与实现 一、项目介绍精准扶贫管理系统是一种以大数据技术和互联网技术为基础的信息化平台,旨在实现对贫困人口的精准识别、帮扶、管理和考核,为全面脱贫提供有力支持。该系统通过全面管理贫困户的基本信息、家庭信息、收入情况等,协助政府部门更好地… 2026/5/17 11:37:12
OpenClaw Skills 安装与实战:打造你的 AI 技能工具箱 OpenClaw Skills 安装与实战:打造你的 AI 技能工具箱本文介绍如何使用 ClawHub 安装和管理 OpenClaw 技能包,并通过实战案例演示多个技能的协同使用。前言 OpenClaw 是一个强大的 AI 助手框架,而 Skills(技能包)则是扩… 2026/5/17 11:37:12
如何快速打造个性化表盘:小米手表表盘设计终极指南 如何快速打造个性化表盘:小米手表表盘设计终极指南 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 你是否厌倦了千篇一律的默认表盘?想… 2026/7/4 20:47:44
E-Hentai Downloader:解放双手的图库批量下载工具 E-Hentai Downloader:解放双手的图库批量下载工具 你是否曾因需要手动保存上百张图片而感到手指酸痛?是否经历过因网络中断导致下载进度全部丢失的沮丧?当面对精心整理的图库却要花费数小时进行分类归档时,你是否渴望一种更高效的… 2026/7/4 20:47:44
B站视频下载新姿势:3步解锁离线观看自由 B站视频下载新姿势:3步解锁离线观看自由 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliDow… 2026/7/4 20:47:44
[LangChain中的Multi-Agent模式-04]Skill轻量化智能体构建:避免上下文污染的专业化路径 在技能模式(Skills)中,专门化的能力被打包成可调用的技能,以增强Agent的行为。技能主要是由提示驱动的专业化功能,Agent可以按需调用这些功能。关键Skills的详细说明,请参阅Anthropic的官方文档“[Agen… 2026/7/4 20:43:44
简单大话筛微信小程序游戏源码 简介: 简单大话筛微信小程序游戏源码 源码下载:https://download.csdn.net/download/m0_66047725/92879719 图片: 2026/7/4 20:41:43
Fast-GitHub终极指南:如何让GitHub下载速度提升10倍的免费解决方案 Fast-GitHub终极指南:如何让GitHub下载速度提升10倍的免费解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 对于… 2026/7/4 20:39:43
STM32F745VG与MC6470 IMU的高性能姿态控制系统设计 1. MC6470与STM32F745VG的黄金组合解析在工业自动化和机器人控制领域,传感器与微控制器的协同工作能力直接决定了系统的响应速度和定位精度。MC6470作为一款6自由度惯性测量单元(6DOF IMU),与STM32F745VG这款基于ARM Cortex-M7内核的高性能微控制器组合&… 2026/7/4 0:00:28
Playwright自动化测试实战:从零搭建现代Web测试框架 1. 项目概述:为什么是 Playwright?如果你正在为现代 Web 应用的自动化测试头疼,尤其是面对那些充斥着动态加载、复杂交互的单页应用(SPA),那么 Playwright 的出现,很可能就是你的解药。我接触过… 2026/7/4 0:00:28
终极指南:如何将JSXBIN二进制文件转换为可读JSX源代码 终极指南:如何将JSXBIN二进制文件转换为可读JSX源代码 【免费下载链接】jsxbin-to-jsx-converter JSXBin to JSX Converter written in C# 项目地址: https://gitcode.com/gh_mirrors/js/jsxbin-to-jsx-converter 你是否曾经面对过Adobe产品的JSXBIN文件感到… 2026/7/4 0:02:28