概要
歩留まり(Yield Rate)とは、生産された全数のうち、品質基準を満足した良品の割合のことである。製造業における最も基本的な品質指標の一つであり、歩留まりが高いほど製造コストが低く、品質が安定していることを示す。
組み込み機器の量産においては、PCB(プリント基板)の製造歩留まり、SMT(表面実装)工程の歩留まり、機能検査(FCT)歩留まりなど、工程ごとに歩留まりを管理することが重要である。
歩留まり(%)= 良品数 ÷ 生産数 × 100
例えば、1000台を製造して960台が良品であれば歩留まりは96%となる。
工程別歩留まりの関係
複数の工程が連続する場合、各工程の歩留まりが乗算されて最終的な製品歩留まりとなる。
| 工程 | 工程歩留まり |
|---|---|
| PCB製造 | 99.5% |
| SMT実装 | 99.0% |
| リフロー | 99.8% |
| AOI検査通過 | 98.5% |
| FCT検査合格 | 97.0% |
| 総合歩留まり | 99.5 × 99.0 × 99.8 × 98.5 × 97.0 ≈ 93.9% |
歴史・背景
歩留まりの概念は製造業一般に古くから存在するが、電子機器・半導体分野での歩留まり管理は1960〜70年代の集積回路(IC)製造において特に重要視されるようになった。
半導体ウェハ上に集積回路を製造する際、ウェハ上のすべてのチップが正常動作するわけではなく、製造プロセスの微細化が進むほど歩留まり管理が困難になる。TSMC・Samsungなどの半導体メーカーにとって歩留まりは企業の競争力に直結する重要指標である。
プリント基板(PCB)の実装工程においては、1980年代のSMT技術の確立とともに自動外観検査(AOI)が普及し、統計的工程管理(SPC:Statistical Process Control)が導入された。シックスシグマ(Six Sigma)の概念がMotorola社で1980年代に提唱され、歩留まり管理の数理的手法が体系化された。
技術仕様
歩留まりの統計的指標
シックスシグマでは、工程能力指数(Cp/Cpk)と歩留まりの関係が以下のように定義される。
| シグマレベル | 工程能力指数 Cpk | 不良率 (DPMO) | 歩留まり |
|---|---|---|---|
| 3σ | 1.00 | 66,807 ppm | 93.32% |
| 4σ | 1.33 | 6,210 ppm | 99.379% |
| 5σ | 1.67 | 233 ppm | 99.977% |
| 6σ | 2.00 | 3.4 ppm | 99.99966% |
DPMO = Defects Per Million Opportunities(百万機会あたりの不良数)
工程能力指数の計算
import numpy as np
from scipy import stats
def calculate_process_capability(measurements, usl, lsl):
"""
工程能力指数 Cp および Cpk を計算する
Parameters:
- measurements: 測定値のリスト
- usl: 上限規格値(Upper Spec Limit)
- lsl: 下限規格値(Lower Spec Limit)
Returns:
- Cp: 工程精度指数
- Cpk: 工程能力指数(偏り考慮)
"""
mean = np.mean(measurements)
std = np.std(measurements, ddof=1) # 不偏標準偏差
# Cp: 規格幅 ÷ 工程のバラつき(6σ)
cp = (usl - lsl) / (6 * std)
# Cpk: 規格中心からのずれを考慮
cpu = (usl - mean) / (3 * std) # 上限側
cpl = (mean - lsl) / (3 * std) # 下限側
cpk = min(cpu, cpl)
# 不良率推定(正規分布仮定)
defect_rate = (stats.norm.cdf(lsl, mean, std) +
(1 - stats.norm.cdf(usl, mean, std)))
yield_rate = 1 - defect_rate
print(f"平均値: {mean:.4f}")
print(f"標準偏差: {std:.4f}")
print(f"Cp = {cp:.3f}")
print(f"Cpk = {cpk:.3f}")
print(f"推定歩留まり: {yield_rate * 100:.4f}%")
print(f"推定不良率: {defect_rate * 1e6:.1f} ppm")
return cp, cpk, yield_rate
SMT実装の典型的な不良分類
不良分類(IPC-A-610基準):
はんだ不良:
- ブリッジ(Bridge): 隣接ランド間のはんだショート
- 不足はんだ(Insufficient Solder): はんだ量が少ない
- 過剰はんだ(Excess Solder): はんだ量が多すぎる
- 冷えはんだ(Cold Solder): 濡れ不良・強度不足
- 立ち半田(Tombstone): チップ部品の片側浮き
実装不良:
- 欠品(Missing): 部品が実装されていない
- 逆向き(Reversed): 部品の向きが逆
- ずれ(Misalignment): 実装位置がずれている
- 異品番(Wrong Value): 誤った部品が実装されている
動作原理
歩留まり管理のPDCAサイクル
歩留まり向上はPDCA(Plan-Do-Check-Act)サイクルで継続的に改善する。
Plan(計画):
- 目標歩留まりの設定(例:98.5%)
- 不良モードの仮説設定
- 測定計画の策定
Do(実施):
- 生産の実行
- 各工程での検査データ収集
- 不良品の隔離・識別
Check(確認):
- 歩留まりデータの集計・分析
- 不良パレート分析
- 管理図(コントロールチャート)による傾向把握
Act(改善):
- 不良原因の特定(なぜなぜ分析)
- 是正措置の実施(工程パラメータ調整)
- 予防措置の水平展開
不良分析(FA:Failure Analysis)
# 不良発生率の統計分析例
from collections import Counter
import matplotlib.pyplot as plt
def analyze_defects(defect_log):
"""
不良データのパレート分析
上位不良モードに注力するため、頻度順に並べる
"""
defect_counts = Counter(defect_log)
total = sum(defect_counts.values())
sorted_defects = defect_counts.most_common()
print("=== 不良パレート分析 ===")
cumulative = 0
for mode, count in sorted_defects:
rate = count / total * 100
cumulative += rate
print(f"{mode:30s}: {count:4d}件 ({rate:5.1f}%) [累計: {cumulative:5.1f}%]")
# 80%ルール: 上位20%の不良モードが全体の80%を占める
print(f"\n総不良数: {total}件")
return sorted_defects
# 使用例
defect_data = [
"はんだブリッジ", "はんだブリッジ", "はんだブリッジ",
"部品欠品", "部品欠品",
"逆向き実装",
"はんだ不足", "はんだ不足",
"ずれ実装",
"はんだブリッジ"
]
analyze_defects(defect_data)
用途・ユースケース
半導体ウェハの歩留まり管理
半導体チップ(MCU・SoC・FPGAなど)の製造では、ウェハ(シリコン円盤)上の全チップのうち、検査で合格したチップの割合が歩留まりとなる。
ウェハ歩留まり計算の概念:
ウェハ直径: 300mm
チップサイズ: 10mm × 10mm
ウェハあたりのチップ数: 約706個
検査合格チップ数: 634個
歩留まり: 634 ÷ 706 ≈ 89.8%
歩留まり改善1%の効果(10万ウェハ/月の場合):
- 増加チップ数: 10万 × 706 × 1% ≈ 70.6万個/月
- 付加価値: (単価 × 70.6万個)/月
IoT機器量産の歩留まり管理
IoT機器の量産では、無線モジュール(BLE/Wi-Fi)を含む機能検査の歩留まり管理が特に重要である。ESP32やSTM32を使った製品では、書き込み歩留まりと機能検査歩留まりを分けて管理する。
IoT機器FCT歩留まり管理項目:
1. 電源投入・起動確認(歩留まり目標: 99.9%)
2. ファームウェア書き込み確認(99.9%)
3. BLE/Wi-Fiアドバタイズ確認(99.5%)
4. センサ入力値の範囲確認(99.0%)
5. バッテリー充電確認(98.5%)
6. ボタン・LED動作確認(99.8%)
総合FCT歩留まり: 99.9 × 99.9 × 99.5 × 99.0 × 98.5 × 99.8 ≈ 96.6%
歩留まりと製造コストの関係
歩留まりが製造コストに与える影響は大きい。
| 歩留まり | 不良率 | 1000台製造時の不良台数 | ロス原価(1台1万円の場合) |
|---|---|---|---|
| 99% | 1% | 10台 | 10万円 |
| 97% | 3% | 30台 | 30万円 |
| 95% | 5% | 50台 | 50万円 |
| 90% | 10% | 100台 | 100万円 |
実装・開発のポイント
設計段階での歩留まり向上策
設計段階での工夫が量産歩留まりに大きく貢献する。
歩留まり向上のための設計工夫:
部品選定:
□ 実績のある量産部品を使用する(新規部品は試作で評価)
□ 部品のばらつき(公差)を考慮した回路設計
□ 温度ドリフトに対する余裕(マージン)確保
基板設計(DFM):
□ フットプリントをメーカー推奨に合わせる
□ ランドサイズを大きめに取る(小型化より歩留まり優先)
□ はんだ印刷に適したソルダーマスク設計
□ 向き・極性の明確な表示
ファームウェア:
□ 書き込みエラー時の自動リトライ実装
□ 書き込み完了の確実な検証
□ 校正データの書き込みと検証
テスト自動化による歩留まりデータ収集
class ProductionTestStation:
"""
量産試験ステーションの歩留まりデータ収集クラス
"""
def __init__(self, station_id):
self.station_id = station_id
self.pass_count = 0
self.fail_count = 0
self.fail_reasons = []
def run_test(self, dut_serial):
"""
DUT(被試験体)の機能試験を実行し結果を記録
"""
results = {}
# 各試験項目の実行
results['power_on'] = self.test_power_on(dut_serial)
results['firmware_ver'] = self.test_firmware_version(dut_serial)
results['ble_rssi'] = self.test_ble_output(dut_serial)
results['sensor_adc'] = self.test_sensor_input(dut_serial)
# 判定
all_pass = all(r['pass'] for r in results.values())
if all_pass:
self.pass_count += 1
status = "PASS"
else:
self.fail_count += 1
fail_items = [k for k, v in results.items() if not v['pass']]
self.fail_reasons.extend(fail_items)
status = "FAIL"
# データベースに記録
self.log_result(dut_serial, status, results)
return all_pass
@property
def yield_rate(self):
total = self.pass_count + self.fail_count
return (self.pass_count / total * 100) if total > 0 else 0.0
def print_summary(self):
print(f"=== 試験ステーション {self.station_id} サマリー ===")
print(f"良品: {self.pass_count}台")
print(f"不良: {self.fail_count}台")
print(f"歩留まり: {self.yield_rate:.2f}%")
他技術との比較
| 指標 | 歩留まり(Yield) | 信頼性(Reliability) | 品質(Quality) |
|---|---|---|---|
| 測定時期 | 製造時 | 使用中・経時変化 | 製造時〜使用中 |
| 対象 | 初期不良 | 経時劣化・突発故障 | 全ての欠陥 |
| 代表指標 | 良品率(%) | MTBF(平均故障間隔) | ppm・Cpk |
| 改善手段 | 工程最適化 | 設計マージン・加速試験 | QC・SPC |
歩留まりは信頼性試験と密接に関連している。製造時の初期不良(早期故障)を歩留まり管理で削減し、使用中の経時故障を信頼性試験で検証・改善することで、製品の総合品質が確保される。またEMC(電磁両立性)問題は量産時に突然顕在化することがあり、EMC対策が不十分な場合は歩留まりの低下要因にもなる。