AIDT 온디바이스 STEM 기가헤르츠 주사 초음파 현미경(SAM) 음향 렌즈 초점 서보 제어기

1.5GHz 초고주파 사파이어 음향 렌즈 V(z) 곡선 위상 복원, 서브-미크론 내부 결함 매핑 10,000Hz C# 엔진

1. 개요

차세대 3D 적층 반도체 패키징(HBM, CoWoS)의 마이크로 범프(Micro-bump) 박리, 첨단 세라믹의 미세 균열 및 생체 세포 내부의 탄성 계수 분포를 비파괴 단층 진단하는 주사 음향 현미경(Scanning Acoustic Microscopy, SAM)은 1 GHz 이상의 초고주파 극초음파(Hypersound)를 활용합니다. 사파이어 단결정 로드 끝단에 정밀 연마된 구면 음향 렌즈(Spherical Acoustic Lens)와 산화아연(ZnO) 압전 박막 변환기를 결합하여, 물(Coupling Fluid) 매질을 통해 음향 빔을 서브-미크론 크기의 초점으로 집속합니다. 렌즈와 시료 표면 간의 수직 거리(\(z\))를 주사할 때 측정되는 음향 반사 신호 \(V(z)\) 곡선은 표면 탄성파(Rayleigh Wave)의 간섭 특성을 담고 있어, 재료의 국소 밀도 및 탄성 상수를 정밀 정량화합니다. 그러나 고주파 음향파의 액체 내 감쇠율이 극도로 높고 시료 표면의 미세 기울기(Tilt) 및 열 팽창은 초점면 이탈을 유발합니다. 본 고에서는 10,000Hz 주기로 압전 액추에이터의 높이를 고속 제어하여 최적 초점 및 탄성파 결맞음을 유지하는 0-Alloc C# 엔진을 구현합니다.

2. 수학적 모델링 및 지배 방정식

1.5 GHz 초음파의 결합 매질(물) 내 음향 파장 \(\lambda_w\) 및 감쇠 계수 \(\alpha_w\) 방정식은 다음과 같습니다:

\[ \lambda_w = \frac{v_w}{f} \approx \frac{1500\text{ m/s}}{1.5\times 10^9\text{ Hz}} = 1.0\ \mu\text{m}, \quad \alpha_w(f) = 2.2 \times 10^{-14} \cdot f^2 \approx 49.5\text{ dB/mm} \]

음향 렌즈 출력 신호 \(V(z)\)와 레일리 표면 탄성파(SAW) 속도 \(v_R\) 간의 간섭 주기 \(\Delta z\) 방정식은 다음과 같습니다:

\[ V(z) = \int_0^{\theta_m} P^2(\theta) R(\theta) \exp(-2 i k_w z \cos\theta) \sin\theta\cos\theta d\theta \implies \Delta z = \frac{\lambda_w}{2 (1 - \cos\theta_R)} \]

여기서 레일리 임계각 \(\theta_R\) 및 탄성 속도 \(v_R\) 계산식은 다음과 같습니다:

\[ \sin\theta_R = \frac{v_w}{v_R} \implies v_R = \frac{v_w}{\sqrt{1 - (1 - \lambda_w / (2\Delta z))^2}} \]

서브-미크론 초점 유지 허용 오차 부등식은 다음과 같습니다:

\[ |z(t) - z_{opt}| \le \frac{1}{4} \text{DOF} = \frac{1}{4} \left( \frac{\lambda_w}{1 - \cos\theta_m} \right) \le 0.15\ \mu\text{m} \]

3. 실시간 C# 서보 제어기 구현

다음은 반사 음향 펄스의 피크 에코 진폭과 비행 시간(ToF)을 10,000Hz 주기로 분석하여 Z-피에조를 서보 제어하는 0-Alloc C# 엔진 구현체입니다:

SamAcousticLensServoEngine.cs
using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.AcousticMicroscopy
{
    public readonly ref struct SamEchoSignalFrame
    {
        public readonly double PeakEchoAmplitudeMv;
        public readonly double TimeOfFlightPicoseconds;
        public readonly double TargetToFPicoseconds;
        public readonly double WaterCouplantTempCelsius;
        public readonly double AcousticFrequencyGhz;

        public SamEchoSignalFrame(
            double peakEchoAmplitudeMv,
            double timeOfFlightPicoseconds,
            double targetToFPicoseconds,
            double waterCouplantTempCelsius,
            double acousticFrequencyGhz)
        {
            PeakEchoAmplitudeMv = peakEchoAmplitudeMv;
            TimeOfFlightPicoseconds = timeOfFlightPicoseconds;
            TargetToFPicoseconds = targetToFPicoseconds;
            WaterCouplantTempCelsius = waterCouplantTempCelsius;
            AcousticFrequencyGhz = acousticFrequencyGhz;
        }
    }

    public ref struct SamFocusControlCommand
    {
        public double ZPiezoDriveVoltageVolts;
        public double FocusErrorNanometers;
        public double EstimatedRayleighVelocityMps;
        public double AcousticImpedanceMrayl;
        public bool IsAcousticFocusLocked;
    }

    public ref struct SamAcousticLensServoEngine
    {
        private const double WaterBaseVelocityMps = 1482.0;
        private readonly double _kpZ;
        private readonly double _kiZ;
        private readonly double _dt;
        private double _focusErrorIntegral;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public SamAcousticLensServoEngine(double kpZ, double kiZ, double dt)
        {
            _kpZ = kpZ;
            _kiZ = kiZ;
            _dt = dt;
            _focusErrorIntegral = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public void ComputeFocusCorrection(in SamEchoSignalFrame frame, out SamFocusControlCommand cmd)
        {
            cmd = default;
            // Temperature-corrected sound velocity in water: v = v0 + 4.5*(T - 20)
            double vw = WaterBaseVelocityMps + 4.5 * (frame.WaterCouplantTempCelsius - 20.0);

            // ToF error to distance error (dz = v * dt_tof / 2)
            double tofErrSec = (frame.TimeOfFlightPicoseconds - frame.TargetToFPicoseconds) * 1e-12;
            double focusErrNm = (vw * tofErrSec * 0.5) * 1e9;

            _focusErrorIntegral += (focusErrNm * 1e-3) * _dt;
            if (_focusErrorIntegral > 10.0) _focusErrorIntegral = 10.0;
            else if (_focusErrorIntegral < -10.0) _focusErrorIntegral = -10.0;

            double vPiezo = (_kpZ * focusErrNm * 1e-3) + (_kiZ * _focusErrorIntegral);
            vPiezo = Math.Clamp(vPiezo, -100.0, 100.0);

            // Rayleigh velocity approximation for silicon substrate (~4920 m/s)
            double vrEst = 4920.0 * (1.0 + (frame.PeakEchoAmplitudeMv - 500.0) * 1e-4);
            double zImpedance = 19.8; // Silicon ~19.8 MRayl

            cmd.ZPiezoDriveVoltageVolts = vPiezo;
            cmd.FocusErrorNanometers = focusErrNm;
            cmd.EstimatedRayleighVelocityMps = vrEst;
            cmd.AcousticImpedanceMrayl = zImpedance;
            cmd.IsAcousticFocusLocked = Math.Abs(focusErrNm) <= 150.0; // <= 150nm error
        }
    }
}

4. 교육 및 실무 적용 방안

  • 한국방송통신대학교 AI 교구: 파동 음향학, 표면 탄성파(SAW), 압전 변환기 및 초음파 비파괴 검사 시뮬레이션.
  • 첨단 HBM/2.5D 패키징 신뢰성 연구소: 마이크로 범프 계면 보이드(Void) 및 박리 결함 자동 전수 검사기 탑재.