DFT指的是Design for Test,而DV指的是Design Verification。这两种工作都同样具有挑战性,都是芯片设计流程中的关键步骤。
芯片开发流程中的DFT和DV:一旦RTL代码初步开发完成,DV工程师就会开始阅读设计规范。与此同时,DFT工程师在逻辑中添加DFT相关的RTL。在DV测试RTL后,进行综合以获得门级网表。DFT工程师开始生成pattern来测试scan/mbist/lbist/jtag等。
随着RTL的改进,DV团队不断验证其他功能更改,DFT团队继续为较新的网表版本生成和测试pattern。
DFT – Design for Test
- 检查structural faults:可能因制造而产生的故障,例如stuck at 0/1 faults, bridge faults。
DV – Design Verification
- 检查functional faults:由于RTL代码错误或代码综合不正确而可能出现的故障。这导致了设计功能不正确。一般在功能验证中会用到术语:BUG
使用HALF ADDER电路的例子来了解差异。如果“A”和“B”是输入,则输出为:
DFT
以下是半加法器的门级网表表示,电路中可能存在stuck-at faults。
假设“B”stuck at 0。运行此设计的测试pattern后获得的输出:
为什么在DV期间没有检测到这个?
这只是因为问题发生在DV完成后。设计被tape out,然后进行制造。制造过程中发生了B stuck at 0。
在制造后的芯片运行DFT测试pattern后,由于上述stuck at故障,测试pattern输出将不会如预期一样,需要进一步定位分析具体问题原因。
DFT技能
成为一名DFT工程师不需要你了解芯片的功能。主要技能是能够生成有效的pattern(使用DFT工具),并在制造前后分析它们,以识别故障。
然而,对Verilog的了解是必不可少的。DFT也被插入并集成到RTL设计中,DFT工程师的工作不仅限于pattern。也涉及设计中DFT相关模块的开发/集成/维护,以及指导RTL设计在编码时采用DFT友好的verilog风格。
DFT测试覆盖率
DFT中的测试覆盖率是测试pattern可以覆盖多少个故障。如果覆盖率为90%,则意味着设计中90%的故障可以通过给定的pattern来检测。为了检测设计中的更多故障,需要改进pattern。
在DFT中获得100%的测试覆盖率是一个非常具有挑战性的目标。
DV
如果RTL代码编码错误,例如添加了OR门而不是AND门,电路将如下所示:
为什么在DFT中无法检测到这一点?
因为DFT不检查设计的预期功能是否正确。
如果DV未能检测到此问题,DFT将根据错误的设计(OR门而不是AND门)生成pattern。如果没有制造缺陷,DFT pattern仍然会通过。这可能会在进一步的功能验证测试中被检测到。
DV技能
成为一名设计验证工程师围绕着你对设计预期功能的理解程度。
根据验证工程师对设计规范的理解程度,开发一组功能和corner case。然后,开发测试用例来检查它们。RTL设计在他们这边执行基本验证,但DV工程师负责全面的综合测试,尽可能避免漏掉bug。Verilog技能对这个角色至关重要,还有System Verilog和UVM的知识。
DV测试覆盖率
DV中的测试覆盖率要么是功能覆盖率,要么是代码覆盖率。
功能覆盖率:这定义了覆盖了多少个功能(基于一组预定义的功能特征和边界场景)。
代码覆盖率:这种类型的覆盖率衡量测试用例测试了多少代码。
从职业角度来看,这两种技能的需求量都很高。如果您打算深入研究设计的功能,并且新的设计功能让您兴奋,DV将是一个不错的选择。如果您对制造如何影响设计更好奇,DFT将为您提供许多答案。