# Icarus Verilog Glossary

    Throughout Icarus Verilog descriptions and source code, I use a
    variety of terms and acronyms that might be specific to Icarus
    Verilog, have an Icarus Verilog specific meaning, or just aren't
    widely known. So here I define these terms.

    LRM     - Language Reference Manual
        This is a generic acronym, but in the Verilog world we sometimes
        mean *the* language reference manual, the IEEE1364 standard.

    PLI     - Programming Language Interface
        This is a C API into Verilog simulators that is defined by the
        IEEE1364. There are two major interfaces, sometimes called PLI 1
        and PLI 2. PLI 2 is also often called VPI.

    UDP     - User Defined Primitive
        These are objects that Verilog programmers define with the
        "primitive" keyword. They are truth-table based devices. The
        syntax for defining them is described in the LRM.

    VPI     -
        This is the C API that is defined by the Verilog standard, and
        that Icarus Verilog partially implements. See also PLI.

    VVM     - Verilog Virtual Machine
        This is the Icarus Verilog runtime that works with the code
        generator that generates C++.

    VVP     - Verilog Virtual Processor
        This is the Icarus Verilog runtime that reads in custom code in a
        form that I call "VVP Assembly". See the vvp/ directory for
        documentation on that.