目录
- [SmarTest 8 Binning 运行机制总结](#SmarTest 8 Binning 运行机制总结)
-
- [1. Binning 的基本作用](#1. Binning 的基本作用)
- [2. Binning 的整体运行流程](#2. Binning 的整体运行流程)
- [3. Bin table](#3. Bin table)
-
- [3.1 定义](#3.1 定义)
- [3.2 生成时机](#3.2 生成时机)
- [3.3 生成方式](#3.3 生成方式)
- [4. Bin table 中的 bin 类型](#4. Bin table 中的 bin 类型)
-
- [4.1 Hardware bin](#4.1 Hardware bin)
- [4.2 Software bin](#4.2 Software bin)
- [5. 默认 bins](#5. 默认 bins)
-
- [5.1 Overall default bin](#5.1 Overall default bin)
- [5.2 System default bin](#5.2 System default bin)
- [5.3 Default pass bin](#5.3 Default pass bin)
- [5.4 Default alarm bin](#5.4 Default alarm bin)
- [6. Test table 中的 bin 定义](#6. Test table 中的 bin 定义)
-
- [6.1 Software_Bins](#6.1 Software_Bins)
- [6.2 Hardware_Bins](#6.2 Hardware_Bins)
- [6.3 Tests 中的 Soft Bin](#6.3 Tests 中的 Soft Bin)
- [7. Bin list](#7. Bin list)
-
- [7.1 定义](#7.1 定义)
- [7.2 初始状态](#7.2 初始状态)
- [7.3 作用](#7.3 作用)
- [8. Bin list 的填充方式](#8. Bin list 的填充方式)
-
- [8.1 方式一:测试失败时,由 test descriptor 自动加入 software bin](#8.1 方式一:测试失败时,由 test descriptor 自动加入 software bin)
- [8.2 方式二:在 testflow 的 execute 段中显式加入](#8.2 方式二:在 testflow 的 execute 段中显式加入)
- [8.3 方式三:在 test method 中按 site 显式加入](#8.3 方式三:在 test method 中按 site 显式加入)
- [8.4 方式四:系统自动加入特殊 default bins](#8.4 方式四:系统自动加入特殊 default bins)
- [9. suppressBinning](#9. suppressBinning)
- [10. Final bin](#10. Final bin)
-
- [10.1 定义](#10.1 定义)
- [10.2 作用](#10.2 作用)
- [11. Final bin 的选择时机](#11. Final bin 的选择时机)
- [12. Final bin 的默认选择算法](#12. Final bin 的默认选择算法)
-
- [12.1 bin list 为空](#12.1 bin list 为空)
- [12.2 bin list 只有一个 bin](#12.2 bin list 只有一个 bin)
- [12.3 bin list 中有多个 bins](#12.3 bin list 中有多个 bins)
- [13. 自定义 final bin 选择](#13. 自定义 final bin 选择)
-
- [13.1 多次设置 final bin 的规则](#13.1 多次设置 final bin 的规则)
- [13.2 推荐执行位置](#13.2 推荐执行位置)
- [14. 访问 bin list](#14. 访问 bin list)
- [15. Final bin 到 hardware bin 的转换](#15. Final bin 到 hardware bin 的转换)
- [16. SmarTest 8 Binning 运行机制总结](#16. SmarTest 8 Binning 运行机制总结)
- [17. 最简要点](#17. 最简要点)

SmarTest 8 Binning 运行机制总结
1. Binning 的基本作用
在 SmarTest 8 中,Binning 用于在测试程序执行结束后,对每个 site 上的 device 给出分类结果。
这个分类结果最终会被转换为对应的 hardware bin,并发送给 handling equipment(如 handler)用于分选。
SmarTest 8 的 Binning 运行机制由以下几个部分组成:
- bin table
- bin list
- final bin
- hardware bin
2. Binning 的整体运行流程
SmarTest 8 中,Binning 不是在单个测试失败时立即最终决定,而是按下面的顺序运行:
- 在 PreBind auxiliary flow 中生成 bin table
- 在 main flow 执行过程中,为每个 site 维护并填充 bin list
- 当所有必需测试执行完成后,从 bin list 中选择 final bin
- 由 final bin 确定对应的 hardware bin
- 记录 bin 信息,并将 hardware bin 发送给 handling equipment
3. Bin table
3.1 定义
bin table 是一个表,用于定义测试程序中所有可用的 bins 及其属性。
它定义的内容包括:
- hardware bins
- software bins
- software bin 与 hardware bin 的对应关系
- 每个 bin 的属性
3.2 生成时机
bin table 在 PreBind auxiliary flow 中生成。
PreBind 是一个辅助流程,通常只执行一次。
3.3 生成方式
bin table 通常由 test table 生成。
常见方式是:在 PreBind 中由一个 test suite 读取 .ods 格式的 test table,并应用其中的 bin 相关配置。
也可以由用户自定义的 test method 代码生成,但该代码必须由定义在 PreBind 中的 test suite 执行。
4. Bin table 中的 bin 类型
4.1 Hardware bin
hardware bin 是最终输出给 handling equipment 的 bin。
其常见属性包括:
namenumberpass/fail
4.2 Software bin
software bin 是在测试程序执行过程中加入到 bin list 中的 bin。
其常见属性包括:
namenumberpass/failcolorpriority- 对应的 hardware bin
5. 默认 bins
SmarTest 8 提供若干默认 bin 机制。
5.1 Overall default bin
当某个测试失败,但没有为该失败定义 fail bin 时,device 会被分配到 overall default bin。
5.2 System default bin
bin 0 总是存在于 bin table 中,作为 system default bin 。
即使设置了自定义 default bin,它也不会被移除。
5.3 Default pass bin
如果设置了 default pass bin ,并且在执行结束时 bin list 仍为空,则会将 default pass bin 加入。
如果没有设置,则该用途由 overall default bin 代替。
5.4 Default alarm bin
如果设置了 default alarm bin ,并且 device 测试过程中发生了 alarm,且该 alarm 类型配置允许进行 binning,则 default alarm bin 会被加入 bin list。
如果没有设置,则该用途由 overall default bin 代替。
6. Test table 中的 bin 定义
在 test table 中,通常会分别定义:
- Software_Bins
- Hardware_Bins
- Tests
6.1 Software_Bins
该表定义所有 software bins 及其属性,例如:
- Software Bin Name
- Software Bin
- Hardware Bin
- Result
- Color
- Priority
- Comment
6.2 Hardware_Bins
该表定义所有 hardware bins 及其属性,例如:
- Hardware Bin
- Hardware Bin Name
- Result
- Comment
6.3 Tests 中的 Soft Bin
在 Tests 页签中,可以通过 Soft Bin 列为每个 test descriptor 指定一个 software bin。
其含义是:
- 当该 test descriptor 对应的测试失败时
- 将该 software bin 加入 bin list
如果没有指定,则在失败时使用 overall default bin。
7. Bin list
7.1 定义
bin list 是一个按 site / execution / device 维护的列表。
它包含在 testflow 和 test suites 执行期间,被分配给该 device 的 software bins。
7.2 初始状态
在 main flow 开始执行时,bin list 总是为空。
7.3 作用
在 main flow 执行过程中,bin list 会不断被填充。
在所有测试执行完成后,系统再根据 bin list 选择 final bin。
8. Bin list 的填充方式
在 SmarTest 8 中,bin list 主要通过以下方式被填充。
8.1 方式一:测试失败时,由 test descriptor 自动加入 software bin
对于基于 test descriptor 的 pass/fail 测试:
- 如果测试失败
- 且该 test descriptor 定义了 software bin(如 Soft Bin / SoftBinId)
- 则该 software bin 会被加入 bin list
如果没有定义,则加入 overall default bin。
8.2 方式二:在 testflow 的 execute 段中显式加入
在 testflow 的 execute 段中,可以使用:
c
addBin(binNumber)
显式将某个 software bin 加入 bin list。
示例:
c
if (!Test_Suite_A.pass) { addBin(42); stop(); }
这表示:如果 Test_Suite_A 未通过,则将 software bin 42 加入 bin list,并停止后续执行。
8.3 方式三:在 test method 中按 site 显式加入
在 test method 中,可以使用:
java
context.binning().add(site, binNumber);
将指定 software bin 加入指定 site 的 bin list。
8.4 方式四:系统自动加入特殊 default bins
某些特殊 default bins 会被系统自动加入 bin list,例如:
- default pass bin
- default alarm bin
9. suppressBinning
SmarTest 8 为 test suite 提供了 suppressBinning 标志。
如果其值为 true,则该 test suite 下所有 test descriptors 即使失败,也不会因为 test descriptor 中的 bin 配置而向 bin list 添加 software bin。
10. Final bin
10.1 定义
final bin 是在所有必需测试执行完成后,从某个 site 的 bin list 中确定出来的最终 software bin。
10.2 作用
final bin 用于:
- 确定对应的 hardware bin
- 记录日志
- 向 handling equipment 发送最终分档结果
11. Final bin 的选择时机
Binning 发生在所有测试执行完成之后。
对于每个 site,系统会在该 site 的 bin list 基础上选择 final bin。
12. Final bin 的默认选择算法
如果没有显式地将某个 software bin 设置为 final,则 SmarTest 8 使用默认算法。
12.1 bin list 为空
如果 bin list 为空,则:
- final bin = default pass bin
如果未指定 default pass bin,则由 overall default bin 用于该用途。
12.2 bin list 只有一个 bin
如果 bin list 中只有一个 bin,则:
- final bin = 该 bin
12.3 bin list 中有多个 bins
如果 bin list 中包含多个 bins,则:
- 选择 priority 值最高 的 bin 作为 final bin
如果多个 bins 具有相同的最高 priority,则:
- 选择在这些 bins 中 最先加入 bin list 的那个作为 final bin
13. 自定义 final bin 选择
SmarTest 8 支持在 test method 中显式设置 final bin。
可以使用:
java
context.binning().setFinalBin(site, binNumber);
将指定的 software bin 显式设置为某个 site 的 final bin。
13.1 多次设置 final bin 的规则
如果在测试程序执行过程中,多次将 software bin 设置为 final,则:
- 最后一次 被设置为 final 的 bin 会被视为最终的 final bin
13.2 推荐执行位置
通常建议在所有其它测试执行完之后,由一个 test suite 调用相应的 test method 来选择并设置 final bin。
14. 访问 bin list
在 test method 中,可以通过:
java
context.binning().getBinList(site);
访问指定 site 的 bin list。
该接口可用于在自定义 final bin 选择逻辑中读取 main flow 执行期间收集到的 software bins。
15. Final bin 到 hardware bin 的转换
当 final bin 选定后,系统根据 bin table 中定义的对应关系,确定与该 final bin 关联的 hardware bin。
随后:
- final bin 和 hardware bin 会被记录
- hardware bin 会被发送给 handling equipment
16. SmarTest 8 Binning 运行机制总结
SmarTest 8 的 Binning 运行机制可以概括为以下顺序:
- 在 PreBind 中生成 bin table
- bin table 定义所有 software bins、hardware bins 以及它们的属性和映射
- 在 main flow 开始时,每个 site 的 bin list 为空
- 在 main flow 执行过程中,通过以下机制向 bin list 添加 software bins:
- 测试失败后由 test descriptor 自动添加
- testflow 中使用
addBin(binNumber)显式添加 - test method 中使用
context.binning().add(site, binNumber)显式添加 - 系统自动添加特殊 default bins
- 执行结束后,系统为每个 site 选择 final bin
- 若使用
setFinalBin()显式设置,则最后一次设置的 bin 为 final bin - 否则按默认算法:
- 空 list → default pass bin
- 一个 bin → 直接选该 bin
- 多个 bins → 选 priority 最大者
- 若 priority 相同 → 选最先加入者
- 根据 final bin 找到对应的 hardware bin
- 记录结果,并将 hardware bin 输出给 handling equipment
17. 最简要点
- bin table:定义所有可用 bins 及属性
- PreBind:生成 bin table
- bin list:main flow 中为每个 site 记录被加入的 software bins
- final bin:执行完成后从 bin list 选出的最终 software bin
- hardware bin:由 final bin 映射得到,并发送给 handler
- 默认 final 规则 :
- 空 list → default pass bin
- 单一 bin → 该 bin
- 多 bin → highest priority
- 同 priority → 最先加入者