/ˌaɪ diː ˈɛl/

n. "Platform-agnostic interface specification language generating stubs/skeletons for RPC/CORBA/DCOM unlike VHDL RTL."

IDL, short for Interface Definition Language, defines language-independent service contracts via modules/interfaces/operations, compiled into client stubs and server skeletons enabling C++/Java/Python cross-language RPC without header sharing—CORBA OMG IDL powers distributed objects while Microsoft MIDL targets COM/DCOM and DCE/RPC. Specifies structs, enums, arrays, sequences alongside methods with in/out/inout params and exceptions, contrasting VHDL's concurrent hardware processes.

Key characteristics of IDL include: Language Neutral contracts generate native stubs (C++ classes, Java proxies); Interface/Operation paradigm declares methods with strongly-typed params/exceptions; Stub/Skeleton Generation automates marshalling/unmarshalling across endianness/ABI; Module Namespaces organize related interfaces avoiding global pollution; CORBA vs Microsoft Dialects with varying anytype/union support.

Conceptual example of IDL usage:

// CORBA OMG IDL for SerDes test service
module SerDes {
    // Strongly-typed data types
    struct ChannelLoss {
        float db_at_nyquist;
        float insertion_loss;
    };
    
    interface BERTController {
        // Operations with in/out/inout params
        void stress_test(
            in string dut_name,
            in ChannelLoss channel,
            out float ber_result,
            out boolean pass_fail
        ) raises (TestTimeout, DUTError);
        
        // One-way (fire-forget)
        oneway void reset_dut();
        
        // Any type for dynamic data
        void get_stats(out any performance_metrics);
    };
    
    exception TestTimeout { string reason; };
    exception DUTError { long error_code; };
};

// midl.exe IDL → C++ proxy/stub pair:
// client: BERTController_var ctrl = ...;
// ctrl->stress_test("USB4_PHY", loss, &ber, &pass);

Conceptually, IDL acts as contract compiler bridging language silos—client calls proxy as local method while stub marshals params over wire to server skeleton dispatching real implementation. Powers SerDes test frameworks where C++ BERT GUI invokes Python analyzer via CORBA, or COM automation scripts controlling BERT hardware; contrasts VHDL gate synthesis by generating middleware glue rather than LUTs/FFs, with tools like omniORB-IDL/idl2java/midl.exe transforming abstract interfaces into concrete language bindings.