做DFT的兄弟,“Read, Then Speak”这个说法你听起来是不是也有点懵?我第一次看到这个标题的时候,脑子里蹦出来的不是测试原理,而是一句没头没尾的英文口语。直到自己踩了几次坑,把Tessent DFT整套流程摸了一遍,才反应过来,这句话其实说的就是DFT里最核心也最容易卡住新人的那条主线:先让工具把设计读进去,再让工具把结论“说”出来。读不对,后面全是白跑;说不清,前面读了也白读。这篇东西主要写给刚接触Tessent DFT Flow、正被“我读进来了,但工具不甩我”“报告出来了,但看不懂它在讲什么”折磨的人,也适合所有想在dft flow里把基础打扎实的工程师慢慢翻。
1. 先搞清楚“Read, Then Speak”在DFT flow里到底卡在哪
1.1 它不是英文口语,而是DFT流程的“输入—处理—输出”主线
很多人刚进DFT这个方向,第一件事就是被一堆英文术语砸晕:Tessent、ATPG、BIST、JTAG、压缩、覆盖率……这些词单拎出来都能找到教材解释,但放到一条真实的dft flow里,就变成了一盘散沙。我最开始也是这样,拿着一个综合后的门级网表,知道下一步要做scan insertion,但打开Tessent Shell之后,完全不知道第一句命令该敲什么,敲了之后又该怎么判断“这件事做对了”。
后来我把整个流程压缩成一句话:先把设计读进来,然后让工具用它的语言告诉你,这个设计能不能测、怎么测、测完覆盖率多少。这句话对应的就是标题里那个“Read, Then Speak”。读,是读网表、读库、读约束、读测试协议;说,是工具通过报告、日志、DRC结果、pattern文件,把它对设计的理解反馈给你。整个DFT Engineer的日常,本质上就是在“读”和“说”之间反复对齐,直到工具说的东西和你想要的东西完全一致。
这个视角特别重要。因为一旦你把这个主线立起来,就不会再东一榔头西一棒子地乱试命令,而是会自然而然地想:我现在是卡在读入阶段,还是卡在工具输出阶段?是文件格式没给对,还是约束没写清楚?有了这个整体感,下面所有细节才真正有意义。
1.2 “我不会”的背后,通常是三段断层
标题里说“重难点,我不会”,我特别理解这种状态。但我接触下来,绝大多数人说自己“不会”,不是真的不会敲命令,而是被三个断层卡住了。
第一个断层在“读”之前:不知道要准备哪些文件,也不知道这些文件之间的格式要求。比如有人拿RTL直接喂给Tessent,期望它帮你做scan insertion,结果报错一屏接一屏;还有人给的是综合后的Verilog网表,但库里用的模块名跟网表里完全对不上,工具一个模块都认不了。
第二个断层在“读”和“说”之间:设计读进去了,但不知道用什么约束让工具理解测试结构。比如scan chain怎么分组、scan enable信号接哪、异步复位怎么处理,这些约束一旦写错,工具后续“说”出来的DRC报告就会全是violation,而且很多violation根本不是你设计的问题,是你约束没给对。
第三个断层在“说”之后:工具输出了一大堆报告,覆盖率也吐出来了,但很多人不知道怎么看重点。哪些violation可以waive、哪些FAIL是因为库文件缺引脚、哪些覆盖率低是本来就不可能测到的冗余逻辑,这些判断能力是需要积累的,但前提是你得先知道报告里的信息是从哪来的。
这三个断层,正好对应我在下面要展开的三个大块:怎么把设计读对、怎么让工具把话说清楚、以及怎么读懂工具说的话。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心细节拆解:读什么、拿什么读、读对了没有
2.1 读入数据的四类输入和格式校验
想在一个Tessent项目里跑通dft flow,你至少需要四类输入,缺一个都会让工具“闭嘴”。
第一是库文件。最常用的是Liberty格式的.lib,它会描述每个标准单元的功能、时序、功耗和引脚属性。对DFT工具来说,它更关心的是每个单元能不能被配置成扫描单元、有没有测试端、扫描使能端是什么。你可以在.lib里看到诸如test_cell、scan_enable、scan_in、scan_out这些属性,这些就是工具做scan识别的基础。
第二是门级网表。综合之后吐出来的Verilog或VHDL网表,里面全是标准单元的实例和互联。注意这里有个常见误区:有人拿RTL行为级代码直接跑DFT,不是完全不行,但工具能识别的DFT结构非常有限,做scan insertion之前你必须拿到综合后的门级网表。还有一个特殊情况是CDL或SPICE网表,模拟IP或IO电路有时只提供CDL格式,Tessent也能读,但需要额外的映射配置,新手不建议一上来就搞这个,容易把自己绕晕。
第三是约束。这里面又分两类:一类是时序约束,比如SDC文件,给的是时钟周期、输入输出延迟;另一类是DFT约束,比如tool properties、dft setup脚本,告诉工具哪些信号是scan clock、哪个是scan enable、哪些pin需要tie。很多新人只给SDC不给DFT约束,工具自然没法正确“理解”设计。
第四是测试协议。Tessent里最常见的是WGL、STIL或SPF,还有一种更底层的是test procedure文件,通常用它定义
