Power-Aware DRC and ATPG
本章介绍用于ATPG工具的
power-aware DRC和ATPG流程。
Power-Aware Overview
电子行业在设计连续体的主要方面采用了低功耗特性。EDA供应商和主要半导体公司定义了常用的电力数据标准格式来描述电力需求:UPF和CPF。
Tessent Shell supports the following versions of the UPF and CPF formats:
•
IEEE 1801 standard / UPF 2.0
•
Common Power Format (CPF) 1.0 and 1.1
可以将此电源数据直接加载到工具中以收集电源信息。加载后,工具执行必要的DRC,以确保DFT逻辑相对于设计的功率域正确插入,如果设计通过了规则检查,则使用给定的功率模式配置执行ATPG
该工具的低功耗功能为您提供了执行以下操作的方法:
•提供DRC以跟踪活动电源模式,并确保扫描操作在当前电源配置下工作。
•提供对传统故障模型进行测试的能力,同时了解电源模式配置。
Assumptions and Limitations
电源感知功能有一些假设和限制。
•电路层次结构保存在CPF或UPF文件中,与网表相同。注意,对于模块化EDT设计,需要保留包含EDT逻辑的模块层次结构,否则工具可能无法将EDT块与电源域关联。因此,与EDT逻辑相关的一些功率DRC规则可能无法执行。
•功率感知DRC规则和报告基于负载功率数据(UPF或CPF)。DRC规则不包括跨越不同电源模式的测试。
Multiple Power Mode Test Flow
对于具有多个测试模式的设计,每个电源模式的扫描链配置可能不同。
应该使用以下步骤分别为每个电源模式执行DRC和ATPG:
1.使用test_setup程序配置要测试的电源模式。
2.加载CPF文件。该工具自动识别系统当前配置的电源模式,并将其报告给用户。
Pattern Generation
ATPG
仅为当前功率模式生成pattern。如果有不同的电源pattern启用相同的电源域(仅在不同的电压配置中),则可以通过加载pattern文件并执行故障分级来重用pattern集。pattern集的重用自行决定。
尽管pattern重复使用,仍应为要测试的每个电源模式编写一个test_setup过程,并对每个电源模式执行DRC检查,以确保扫描链在电源模式下正常运行。此外,应存储一个新的pattern集,以反映相应功率模式的更新的test_setup。最后,在ATPG之后编写pattern时,工具还应将当前电源模式信息(作为注释)保存到pattern文件中,以供用户参考。
Power-Aware ATPG for Traditional Fault Models
在传统故障模型测试阶段,在捕获周期开始时,通过测试程序将电路配置为静态功率模式,并在整个捕获周期内保持相同的功率模式。ATPG引擎明确地阻止功率控制逻辑改变有功功率模式。
在ATPG之前执行低功率DRC以检查活动功率模式是否可以被干扰,并且ATPG使用分析结果来确定是否需要任何额外的ATPG努力来保持静态功率模式。这类似于用于总线争用检查的E10规则,ATPG使用该规则来启用额外的调整以防止总线争用。如果电路包含为所有电源域供电的电源模式(称为all_on状态),则可以将此状态用于传统故障模型。ALL_ON状态允许在一次测试集运行中测试电路的逻辑故障。此外,此状态还允许工具在此运行中对整个电路执行DRC。
Power Partitioning
如果电路需要在给定时间内使用部分电源域进行分区,则必须执行多次ATPG运行;具体来说,每次运行时都会使用其过程文件和扫描配置。必须确保每个电源域至少包含一次运行。
此外,芯片级测试覆盖率可以从每个单独的运行中手动计算。
在多功率分区流的情况下,总是在功率域上,故障可能会被多次定位。要减少在常开域中为相同故障创建pattern,可以使用以下命令:
add_faults –power_domains always_on -delete
如果其他运行已针对always_on域中的故障,则这将显式删除这些故障。
避免创建重复pattern的另一种方法是加载以前生成的故障列表(使用read_faults–merge),这样以前运行时检测到的故障就不会再次成为目标。
CPF and UPF Parser
下表列出了与功率感知DRC和ATPG过程相关的功率数据命令。
其他CPF和UPF命令由该工具解析,但被丢弃。
Power-Aware ATPG Procedure
使用功率感知ATPGflow时,应将逻辑故障测试与低功率功能测试分开。在测试逻辑故障时,应用了传统的故障模型,不需要电源开关逻辑。
UPF或CPF格式的功率数据应应用于工具,以便检查低功率规则(参见“功率感知规则(V规则)”),并根据有功功率模式模拟电路。
使用read_upf或read_cpf命令将电源数据加载到工具中。默认情况下,该工具使用report_gates命令报告功率数据,该命令显示gate的通电(PON)和断电(POFF)状态。
report_gates /lp_case_si_rst_sms/ati_rst_sync/sync_r/U3/Udff
// /lp_case_si_rst_sms/ati_rst_sync/sync_r sync3msfqxss1ul
// SDI I(PON) /vl_sms_lp_case_si_sms_proc_sms_1_stp/
U_lp_case_si_sms_proc_bist/uu5/Z
// D I(PON) /lp_case_si_rst_sms/ati_rst_sync/sync_buf/Z
// SEN I(PON) /se
// CLK I(PON) /lp_case_si_rst_sms/ati_rst_sync/uu1/Z
// Q O(PON) /lp_case_si_rst_sms/ati_rst_sync/uu2/A /
lp_case_si_rst_sms/and_r/B
// in power domain PD_P2
In DFTVisualizer, the PON will be displayed as shown in
Figure 13-1
.
Procedure
1.通常,您可以直接从命令行或在dofile中编写脚本,使用功率感知ATPG流执行以下步骤:
2.调用Tessent Shell,将上下文设置为“pattern扫描”,并在低功耗设计中读取。
SETUP> read_verilog low-power_design.v
3. Add scan chains and other configuration information as appropriate.
4. Load the power data using the
read_cpf
or
read_upf
command. For example:
SETUP> read_upf test.upf
5. Set the mode to analysis. For example:
SETUP> set_system_mode analysis
At this point, the tool performs the DRC checks. See “
Power-Aware Rules (V Rules)
” in
the
Tessent Shell Reference Manual
.
6. Add faults using the applicable power-aware switch to the
add_faults
command. For
example:
SETUP> add_faults -on_domains
7. Optionally write the faults to a fault list for multiple power-aware test methodologies—
see “
Multiple Power Mode Test Flow
.” For example:
SETUP> write_faults on_domain_fault_list.txt
8. Create the patterns using the create_patterns command
Power-Aware Flow Examples
the power-aware flow的举例子
Example 1
Table 13-2
four power domains and four power modes的例子
该设计包含四个扫描链,排列如下:
•chain1&2-位于CPU电源域中。
•chain3-位于MEM1电源域。
•chain4-位于CTL电源域。
为了测试设计,需要多个测试设置过程,除了关闭所有电源域之外,每个电源模式都需要一个测试设置程序。为了减少测试过程文件的维护开销,test_setup过程被写入以下单独的文件中:
•
test_setup_active
•
test_setup_standby
•
test_setup_idle
包含其余过程的主测试过程文件使用include语句包含要测试的电源模式的test_setup。例如,使用以下include语句:
# include test_setup_active”
will test the “active” power mode.
建议的流程是先在所有电源域处于活动状态的情况下测试电源模式(如果存在这种电源模式)。这允许工具查看所有扫描链并检查跨越所有电源域的“电源感知规则(V规则)”规则。注意,当测试不同的电源模式时,需要相应地定义扫描链以防止DRC违规。
Example 2
In this example, the design contains the following:
•
Three power domains {D1, D2, D3}
•
Two power mode
o
S1: (D1=ON, D2=ON, D3=OFF)
o
S2: (D1=OFF, D2=ON, D3=ON)
此外,假设该设计具有PS1特性(特别是在换档周期和捕获周期期间),并且该设计可以保持在相同的功率模式。要测试设计,必须执行以下多次工具运行:
• run 1 — ATPG for power mode S1
a、 在test_setup结束时,将设计配置为电源模式S1。
b、 仅在功率域D1和D2中添加扫描链。
c、 使用Add_faults-ON_domains命令仅在通电域(D1和D2)中添加故障。
d、 创建pattern和编写pattern。
e、 使用Write_faults命令将错误写入名为flist_S1.txt的文件。
f、 将隔离故障写入名为flist_S1_iso的文件。使用write_faults.txt–保存以供以后使用。
g、 将电平移位器错误写入名为flist_S1_ls的文件,使用write_faults–level_shifter.txt保存以供以后使用。
•
run 2
— ATPG for power mode S2
a、 在test_setup结束时,将设计配置为电源模式S2。
b、 仅在功率域D2和D3中添加扫描链。
c、 使用Add_faults-ON_domains命令仅在通电域(D2和D3)中添加故障。
d、 使用以下命令加载先前保存的S1故障列表:
ANALYSIS> read_faults flist_S1.txt –merge –Power_check on
这将更新D2中故障的故障状态,但丢弃D1中的故障。
e、 创建pattern和编写pattern。
f、 使用Write_faults命令将错误写入名为flist_S2.txt的文件。
g、 将隔离故障写入名为flist_S2_iso的文件。使用write_faults-isolation.txt保存以供以后使用。
h、 将电平移位器错误写入名为flist_S2_ls的文件。使用write_faults-level_shifter.txt保存以供以后使用。
运行2后,您可以通过将多个故障列表加载到工具中来计算整个故障覆盖率。可以使用read_faults–POwer_check OFF命令执行此操作,并按以下步骤进行切换:
• run 3 — Overall test coverage report
a. Load the previously-saved fault list for D1:
ANALYSIS> read_faults flist_S1.txt –merge –Power_check off#加载d1
b. Load the previously-saved fault list for D2:
ANALYSIS> read_faults flist_S2.txt –merge –Power_check off#加载d2
c
c、 发出report_statistics命令以报告整个测试覆盖率。
d、 将错误写入名为faults flist_all.txt的文件。使用write_faults命令。
最终工具运行报告隔离故障测试覆盖率ATPG和电平转换器故障测试覆盖,并将其保存在单独的故障列表中。
1. Report the isolation fault test coverage:#报告isolation fault的test覆盖率
ANALYSIS> report_statistics -isolation
2. Report the level-shifter fault test coverage:#报告 level-shifter的test coverage
ANALYSIS> report_statistics -level_shifter
3. Write all isolation faults to a file:#写文件
ANALYSIS> write_faults flist_all_iso.txt -isolation
4. Write all level-shifter faults to a file:#写文件
ANALYSIS> write_faults flist_all_ls.txt -level_shifter