Low-Power Testing Overview
Tessent Scan支持启用低功耗测试的操作。
•在存在孤立cell的情况下插入专用包装cell。
•根据驱动的逻辑和电源域的优先级将专用包装单元分配给电源域。
低功耗设计流程包括以下步骤:
1.在CPF/UPF文件中指定低功耗数据规范。
2.在设计中插入扫描单元和EDT逻辑。
3.验证低功耗数据、扫描和EDT逻辑。
4.生成功率域感知测试pattern。
5.测试低功耗设计组件。
Low-Power Assumptions and Limitations
power-aware
功能有几个假设和限制。
•Tessent扫描不会写入或更新CPF/UPF文件。Tessent Scan假设UPF/CPF文件中明确列出了属于电源域的所有内容。由于这种假设,必须在扫描插入步骤之后和ATPG之前对UPF/CPF文件进行以下更改:
o将任何插入的输入包装单元添加到CPF/UPF文件中的正确电源域。
o在CPF/UPF文件中明确定义所有隔离单元及其控制信号和电平移位器。Tessent Scan会检查它们是否存在,但不会添加它们。
Low-Power CPF/UPF Parameters
Tessent Scan使用CPF/UPF文件来识别设计中的电源域,并限制电源域边界内的扫描插入。
Tessent Scan支持以下格式的电源结构和配置数据:
•
CPF 1.0 and 1.1
•
UPF 2.0 (IEEE1801)
在CPF/UPF文件中,必须指定电源域和与电源域、设计的电源状态(模式)以及隔离单元和控制信号相关的信息。可以使用表14-1中列出的命令来指定此信息。
Test Insertion
测试插入包括扫描替换和stitch。可以在电源域基础上插入扫描链。或者,可以根据电源状态对测试逻辑进行分组。
图14-1显示了基于功率域插入的链的示例。注意,没有扫描链跨越电源域,因为该工具不会跨电源域插入扫描。
Low-Power Test Flow
为了开始低功率测试流程,加载低功率数据,然后使用加载的功率域信息来指导扫描分区和扫描插入的过程。
Procedure
1. Load the design data and libraries.
2. Read the CPF or UPF file:
read_cpf filename
read_upf filename
3. Set up appropriate design constraints.
4. Enter analysis mode:
SETUP> set_system_mode analysis
5. 如果包装单元被启用,扫描链分区将受到影响。
6.使用set_power_domain命令根据最大扫描链长度或扫描链编号指定扫描链:
set_power_domain {{Power_domain_name… | -All [-EDT]}
[-Number_of_chains integer | -Max_length integer]}
For example:
> set_power_domain PD_interleaver -number 65
> set_power_domain PD_mem_ctrl -max_length 6
set_power_domain命令未指定的任何扫描触发器都将添加到默认的top-level电源域。
7.使用Insert_test_logic命令将测试结构插入到设计网表中。
8.使用Report_statistics命令报告设计统计信息。
9.写出网表和ATPG设置。
Scan Insertion with Tessent Scan
可以使用Tessent scan来执行扫描单元替换和扫描拼接。通过在开始扫描插入和拼接过程之前为设计加载低功耗CPF或UPF文件,可以使用功率域信息来指导扫描分割过程。
Tessent
扫描不会跨电源域插入扫描。
可以使用set_power_domain命令显式指定设计的每个电源域中扫描链的数量和长度。如果不使用set_power_domain,Tessent Scan将根据以下命令/选项设置采用默认设置:
•
insert_test_logic
— arguments
-MAx_length
and
-NUmber
•
add_scan_partition
— arguments
-NUmber
and
-MAx_length
•
set_wrapper_chains
— arguments
-INPUT_NUMber
,
-INPUT_MAX_length
,
-OUTPUT_NUMber
, and
-OUTPUT_MAX_length
在扫描插入期间,该工具不会生成在电源域方面的设计。Tessent Scan创建了一种在功率域环境中功能正确的设计,但在跨功率域路由全局信号时,它不会插入隔离单元或电平移位器。需要使用合成或物理实现工具自行添加这些对象,然后手动将它们添加到CPF/UPF文件中。
Managing Scan Enable Signals for Multiple Power
Domains
低功耗测试流程允许在设计中插入多个扫描启用信号。这意味着可以在设计中为每个电源域插入扫描启用信号;还可以为单个电源域插入多个扫描启用信号。无论设计是没有定义电源域还是定义了多个电源域,多个扫描启用信号的行为都是相同的。
通过使用set_scan_enable命令并使用partition_name参数指定电源域,可以将一个扫描启用信号分配给电源域,如下例所示:
set_scan_enable scan_en_pin_path pd1 pd2
要将多个扫描启用信号分配给单个电源域,请使用set_scan_enable_sharing命令并指定-scan_partition开关,该开关为每个指定的电源域分配唯一的扫描启用信号。默认情况下,添加的扫描启用信号的类型对于核心链、输入包装链和输出包装链是不同的。
set_scan_enable_sharing -prefix
base_name -scan_partition
Managing Wrapper Cells with Power Domains
新插入的专用包装单元基于包装链内包装单元(专用和共享)的功率域从属关系被缝合到包装链中。该工具在包装单元识别期间识别专用包装单元所属的功率域;根据 registered
的PI或PO连接到哪个功率域来选择功率域。如果PI连接到多个功率域,则专用包装单元与第一个遇到的功率域相关联。
图14-2显示了每个功率域的输入包装单元的拼接。新添加的专用包装单元与同一电源域中的共享包装单元缝合。该图显示了每个功率域的输出包装单元的拼接。新添加的专用包装单元与同一电源域中的共享包装单元缝合。
Managing Test Point Insertion with Power Domains
当将cpf或upf文件读入工具时,该工具会使用no_oobserve_point和no_control_point属性标记电源隔离单元和电平移位器附近的位置。
在电源隔离单元或电平转换器的输出侧,以下引脚标记有no_oobserve_point属性:
•电源隔离单元或电平转换器的输出引脚。
•由电源隔离单元或电平转换器驱动的门的输入引脚。
在电源隔离单元或电平转换器的输入侧,以下引脚标记为no_control_point属性:
•电源隔离单元或电平转换器的输入引脚。
•驱动电源隔离单元或电平转换器的门的输出引脚。
测试点分析算法考虑到这一点,因此在这些位置不放置自动生成的测试点。此外,在这些位置手动添加测试点的命令还可以防止在该位置插入指定的测试点类型(控制或观察),并生成警告,即测试点不会插入到电源隔离单元或电平转换器的特定侧。在发出命令“insert_test_logic”后完成测试点的验证。
// Warning: Control point at "u1/SP[6]" will not be inserted.
// This location is at the input side of a power isolation cell or
level shifter.
// You can insert a control point at the output side of the power
isolation cell/level shifter.
// Warning: Observe point at "U83/Z" will not be inserted.
// This location is at the output side of a power isolation cell
"U83".
// You can insert an observe point at the input side of the power
isolation cell "U83".
Low-Power DRCs
除了检查设计逻辑和单元库之外,功率感知设计规则(DRC V1-V21)还检查通过CPF/UPF文件提供的功率数据的违规和正确性。
•
DRCs V1 to V7 — Checked after reading a power data file.
•
DRCs V8 to V21 — Checked when you switch from setup mode to a non-setup mode.
Low-Power DRC Troubleshooting
可以使用report_scan_partitions命令生成包含电源域信息的扫描单元报告,如下例所示。Tessent Scan在扫描链拼接期间将电源域视为扫描分区。
report_scan_partitions命令从CPF/UPF文件中提取所有更新的信息,并报告每个电源域(扫描分区)和该电源域中所有顺序实例的路径名;新添加的专用包装单元和锁定单元由名称后面的字符串“(新单元)”表示。
DFT> report_scan_partitions -all -expand
-------------------------------------------
ScanPartitionNam Members
-------------------------------------------
PD2 I6
I10/lckup3 (new cell)
I10/lckup2 (new cell)
I10/lckup1 (new cell)
I10/outreg2 (new cell)
I10/outreg1 (new cell)
I10/sf_0001_1
I10/sf_0002_1
I10/sf_0003_1
PD3 I2/I2/lckup3 (new cell)
I2/I2/lckup2 (new cell)
I2/I2/lckup1 (new cell)
I2/I2/outreg1 (new cell)
I2/I2/sf_0001_1
I2/I2/sf_0002_1
I2/I2/sf_0003_1
I2/I2/I1_2
DEF lckup2 (new cell)
lckup1 (new cell)
inreg2 (new cell)
inreg1 (new cell)
outreg1 (new cell)
-------------------------------------------
Power Domains for Scan Cells Reporting
可以使用report_scan_cells命令生成包含电源域信息的扫描单元报告,如下所示:
ANALYSIS> report_scan_cells -power_domain
Power Domains for Gates Reporting
可以使用set_gate_report命令将电源域信息添加到report_gates报告的结果中,如以下示例所示:
ANALYSIS> set_gate_report -power on
ANALYSIS> report_gates 154421
// /mc0/present_state_reg_3_/inst1122_4/mlc_dff (154421) DFF
// "S" I(ON) 153682-
// "R" I(ON) 153681-
// "C0" I(ON) 26078-
// "D0" I(ON) 43013-
// "OUT" O(ON) 1115-
// MASTER cell_id=0 chain=chain66 group=grp1 invert_data=FFFF
// in power domain PD_mem_ctrl
Power State-Aware ATPG
ATPG的建议方法是尽可能打开所有电源域。使用此方法,您可以通过对设计块的测试进行排序并使用低功耗ATPG来管理测试期间由于切换活动而引起的电源问题。这是最简单的方法,最大限度地提高了故障覆盖率。如果由于静态功率限制而无法使用此方法,则应选择一组最小的功率状态,以实现设计中所有块以及块间连接所需的故障覆盖率。
Power Domain Testing
通过设置CPF或UPF中指定的适当电源模式/状态条件,可以在多种电源模式和电源状态下运行ATPG。
为了演示,假设设计具有以下两种电源模式:
•
PM1 — All domains on
•
PM2 —
PD_mem_ctrl
powered down when
mc_pwr
is “0”
通过在mc_pwr上设置引脚约束,如图所示,ATPG识别当前设置的电源模式并正确运行:
SETUP> add_input_constraints mc_pwr -c1
SETUP> set_system_mode analysis
…
// ---------------------------------------------------------------------
// Begin circuit learning analyses.
// ---------------------------------------------------------------------
…
SETUP> create_patterns
No faults in fault list. Adding all faults...
…
// Enabling power-aware ATPG: initial power mode in capture cycle = PM2
…
如果电源模式在捕获周期内发生变化,工具将发出V12违规。当V12处理为警告(默认)时,工具会自动添加ATPG约束,以在捕获周期内修复电源模式:
…
// 1 ATPG constraint is added to fix power mode during capture.
// The active power mode at the beginning of capture cycle is PM2.
// Power-aware ATPG is enabled.
…
当启用电源感知ATPG时,工具根据电源模式执行ATPG和故障模拟:断电域中的常规门将为X,相应的故障为AU。如果添加了电源域中的故障,则故障分组会将故障分类为断电导致的AU:
ANALYSIS> create_patterns
ANALYSIS> report_statistics
可以选择在通电域或任何用户指定的电源域上添加、删除、报告和写入故障,而不是添加所有故障:
add_/delete_/report_/write_faults
[[-ON_domains] | [-OFf_domains] |
[ -POWer_domains {domain_name …}]]
[ -ISolation_cells] [ -LEvel_shifters ] [ -REtention_cells ]
Level Shifters
在大多数情况下,您可以将电平移位器作为标准缓冲区来处理,而不需要任何特殊处理来实现完全测试覆盖。然而,如果设计中的一个或多个电源域可以在多个电源电压下运行,则应为任何给定电平转换器的输入和输出侧的电源电压的所有排列运行ATPG,以确保完全覆盖
Isolation Cells
隔离单元是一种特殊的低功率单元,用于分离通电和断电域。
如本节所述,它们需要在扫描插入期间进行特殊处理。
可以使用以下两种模式之一测试隔离单元:
•
Normal transmission mode — 在此模式下,当隔离单元被禁用并stuck在“0”或“1”时,可以在单元的输入和输出上检测到故障。也会检测到隔离启用引脚的stuck-at故障(隔离开启),因为该故障会迫使单元隔离并阻止数据传输。
• Isolation mode — 在此模式下,如果隔离单元是clamp-style单元(隔离打开时输出保持为“0”或“1”),则无法检测到输入侧stuck-at故障上。如果隔离单元是latch-style单元,则通过在启用隔离之前锁存驱动域的值,可以检测到输入侧stuck-at故障。