HASL

/ˈhæsəl/

n. "Hot air solder leveling PCB finish dipping copper in molten SnPb/SAC305 then shearing excess via air knives unlike flat ENIG."

HASL, short for Hot Air Solder Leveling, immerses bare copper pads/traces in 250°C Sn63Pb37 or SAC305 bath followed by dual hot air knives (400°C, 50psi) shearing excess leaving 25-250μin uneven solder—protects Cu oxidation while ensuring reflow solderability for through-hole/SMT. Contrasts ENIG's atomically flat Au cap by creating solder protrusions (1-2mils high) problematic for 0.3mm BGA but cost-effective ($0.01/ft²); lead-free variant uses higher-melting SAC305 requiring 30°C hotter reflow profiles.

## Key Characteristics - Solder Thickness 25-250μin uneven topography from air knife shear angle. - Leaded 63/37 SnPb 183°C liquidus; Lead-free SAC305 217°C demands hotter profiles. - Air Knives dual opposed 400°C/50psi remove 95% excess solder in 50ms pass. - Shelf Life 12+ months; unlimited rework cycles as solder renews itself. - Cost Leader $0.01-0.02/ft² vs ENIG 5x premium.

-- HASL process monitor for PCB fab SPC
-- Tracks solder thickness uniformity post air knife

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity hasl_monitor is
    port (
        clk         : in  std_logic;
        rst_n       : in  std_logic;
        thickness_um : in  integer range 0 to 500;  -- XRF measurement μin
        pass_fail   : out std_logic
    );
end entity;

architecture behavioral of hasl_monitor is
    constant HASL_MIN : integer := 25;   -- μin IPC-2221
    constant HASL_MAX : integer := 250;
    
    signal thickness_valid : std_logic := '0';
begin
    process(clk, rst_n)
    begin
        if rst_n = '0' then
            thickness_valid <= '0';
        elsif rising_edge(clk) then
            if thickness_um >= HASL_MIN and thickness_um <= HASL_MAX then
                thickness_valid <= '1';
            else
                thickness_valid <= '0';
            end if;
        end if;
    end process;
    
    pass_fail <= thickness_valid;
end architecture;

Conceptually, HASL sacrifices ENIG planarity for infinite reworkability—solder volume renews itself across 10x thermal cycles while SerDes QSFP28 escapes HASL unevenness via land grid; lead-free SAC305 trades 5% higher dinoise for RoHS while wave-soldering THT survives HASL bridges that plague PAM4 BGAs backhauling Bluetooth piconets on budget fab runs.

ENIG

/ˈiː nɪdʒ/

n. "Electroless nickel immersion gold PCB surface finish protecting copper pads via Ni barrier + thin Au unlike HASL solder."

ENIG, short for Electroless Nickel Immersion Gold, plates 3-6μm mid-phosphorus nickel barrier over exposed copper followed by 0.05-0.2μm immersion gold—prevents Sn diffusion creating brittle Cu3Sn while ensuring wire bondability and solder wettability for BGA/LGA fine-pitch. Contrasts HASL's uneven tin-lead by providing flat coplanar surface ideal for SerDes 224Gbps transceivers where black pad (Ni-P hypercorrosion) risks assembly yield; Pd activator catalyzes electroless Ni without current.

Key Characteristics: Ni Barrier Layer 3-7μm 6-9% phosphorus prevents Cu-Sn diffusion, blocks oxidation. - Immersion Au Cap 0.05-0.23μm self-limits via Ni displacement, protects Ni 12+ months. - Black Pad Risk hypercorrosion at Ni/Au interface from excess P; mitigated by pH control. - IPC-4552 Spec Ni 120-240μin, Au 2.5-5μin; wire bond >30g force guaranteed. - Lead-Free Compliant RoHS alternative to HASL for BGA/ENIG fine-pitch 0.3mm.

-- ENIG process control parameters for PCB fab
-- Typical production recipe for SerDes HDI boards

library ieee;
use ieee.std_logic_1164.all;

package enig_params is
    constant NI_THICKNESS_MIN : integer := 120;  -- μin IPC-4552A
    constant NI_THICKNESS_MAX : integer := 240;
    constant AU_THICKNESS_MIN : integer := 3;    -- μin
    constant AU_THICKNESS_MAX : integer := 8;
    
    constant NI_P_CONTENT     : real := 0.07;     -- 7% mid-P for ductility
    constant BATH_PH_MIN      : real := 4.5;      -- Hypercorrosion control
    constant BATH_PH_MAX      : real := 5.2;
    
    type pcb_zone_array is array (0 to 3) of integer;
    constant ZONE_THICKNESS : pcb_zone_array := (150, 140, 155, 145);
    
    function check_enig_ok (ni_um, au_um : integer; p_percent : real) 
        return boolean is
    begin
        return (ni_um >= NI_THICKNESS_MIN and ni_um <= NI_THICKNESS_MAX) and
               (au_um >= AU_THICKNESS_MIN and au_um <= AU_THICKNESS_MAX) and
               (p_percent > 0.06 and p_percent < 0.09);
    end function;
end package;

Conceptually, ENIG sandwiches Cu-Ni-Au sandwich protecting SerDes QSFP-DD 400G transceivers from Sn whisker shorts while enabling flip-chip C4 bumps—Ni barrier blocks Cu electromigration into solder joints while Au ensures zero-oxide wetting during reflow. Hypercorrosion avoided via hypophosphite reduction balance; contrasts OSP organics by surviving 3x reflow cycles for PAM4 PHYs backhauling Bluetooth 240GHz aggregators on ENIG-clad 2.5D interposers.