fullseye

ハイブリッド接合のボイドを、超音波のエコーの明るさでなく位相で見つける(走査型音響顕微鏡の C スキャン・周波数の取引・POD)

できること

貼り合わせた積層(Si のダイ + SiO2 と Cu パッドの接合層)を、水の中の集束探触子で上から 1 点ずつ測る走査型音響顕微鏡(SAM)を、層の物理から組み立てます。接合面の空洞(ボイド)は空気なので、そこで音響インピーダンスが約 4 万分の 1 に落ち、エコーが反転します。符号はボイドがビームより小さくても薄まりません。

What it does

Pulse-echo ultrasound in layered stacks and scanning-acoustic-microscope C-scans, built from first principles: a material table that carries a source and a verified flag per value (unverified placeholders are refused unless asked for), interface coefficients with the energy check R² + (Z1/Z2)T² = 1 and the sign flip exactly where Z drops, a normal-incidence longitudinal transfer-matrix A-scan with water path and power-law attenuation (checked against a bottom-up Airy recursion, a time-domain ray sum and the optical thin-film formula to 1e-12), and a focused C-scan with a per-frequency Gaussian lateral PSF (FWHM 1.02 λ_water F#) that returns amplitude, phase, in-phase and single-sample-polarity images. Phase is read at the expected time of the bond plane relative to the front-surface echo: thin Cu and SiO2 layers give quadrature echoes, voids are inverted, so a small void adds at right angles to the background and barely changes the amplitude. A closed-form optimal frequency balances lateral resolution against water attenuation, with the front-echo time floor and the critical-angle F-number floor alongside; C-scan statistics feed the existing POD operators.

向くところ / 向かないところ

最初の 1 本

import numpy as np
import fullseye as fs

die = [("silicon", 100e-6)]                                      # 厚さ 100 µm の Si のダイ
S = {0: fs.ledger.acoustic_layer_stack(die + [("sio2", 1e-6), ("sio2", 1e-6)]),              # 誘電体
     1: fs.ledger.acoustic_layer_stack(die + [("sio2", 1e-6), ("air", 0.1e-6), ("sio2", 1e-6)])}  # ボイド
a = fs.ledger.pulse_echo_ascan(S[1], f0=150e6, water_path=1e-3)
print(fs.ledger.echo_phase_polarity(a, interface=2)["label"])     # 接合面のエコーは inverted

m = np.zeros((64, 64), dtype=np.int64)
yy, xx = np.mgrid[:64, :64]
m[(yy - 32) ** 2 + (xx - 32) ** 2 <= 8 ** 2] = 1                   # 直径 34 µm のボイド(画素 2 µm)
c = fs.ledger.sam_cscan(m, S, pixel_size=2e-6, f0=150e6, water_path=1e-3, gate_interface=2)
print("位相 %.0f°(中心)/ %.0f°(地)" % (np.degrees(c["phase"][32, 32]), np.degrees(c["phase"][2, 2])))
t = fs.ledger.sam_frequency_tradeoff(S[0], 10e-6, water_path=1e-3, interface=2)
print("10 µm のボイドの最適周波数 %.0f MHz(下限 %.0f MHz)" % (t["f_opt"] / 1e6, t["f_min_time"] / 1e6))

裏づけ