INTRODUCTION

    s2ibis2 is the latest version of the SPICE-to-IBIS conversion
    utility from North Carolina State University. It produces IBIS
    files which conform to the IBIS v2.1 specification.

    s2ibis2 is a departure from s2ibis v1.2 in a couple of ways.
    First, it has its own command language, which is similar to the
    IBIS language in many respects, and can be easily extended to
    include new functionality. Second, its mode of operation is
    different: rather than producing its output "on the fly", as in
    earlier versions of s2ibis, s2ibis2 creates a full IBIS model in
    an internal data structure, and then writes the resulting
    information to the output file after all processing is done.
    As a result, s2ibis2 can easily be extended to comply with
    future versions of the IBIS specification.

    This document will describe the s2ibis2 command language
    and how to properly use it. I would strongly suggest examining
    the files in the examples/ directory to get a feel for how these
    commands are used.


THE COMMAND LANGUAGE

    Commands are passed to s2ibis2 in a command file. This file can
    be specified on the command line when s2ibis2 is invoked:

        % s2ibis2 buffer.s2i

    If the file is not specified on the command line, s2ibis2 will
    ask you for the command file name:

        % s2ibis2
        s2ibis2 v1.0 -- North Carolina State University

        input file: buffer.s2i
    
    The command file consists of two main sections: the header and
    the component description.

    Note that the command parser ignores case when it reads the
    command file, so you may specify the commands in upper or lower
    case, or a mix of the two.

    Also note that s2ibis2 has several reserved words:

        NA  specifies that the value is undefined
        NC  specifies no connection; can be used as model name
        +   line continuation character when found in first
            column of line


THE HEADER

    The header contains information that is applicable to the entire
    file, such as the type of SPICE simulator to use, the IBIS version,
    etc. It can also contain global specifications. For example, if
    you want a particular temperature range to apply to all models in
    your file, specify it in the header. Note, however, that global
    definitions are overridden by local definitions; in this way, you
    can specify (e.g.) a global temperature range, but override it for a
    particular component or model where necessary.

    The following commands can be used in the header:

    [IBIS Ver]  version

        version = 1.1 or 2.1
        
        Required.
        
        THIS MUST BE THE FIRST COMMAND IN THE COMMAND FILE. (It may be
        preceded by comments.)  This describes the version of IBIS to be
        produced by s2ibis2. Legal version values are 1.1 and 2.1.

    [File name] filename

        filename = name of IBIS file to produce
        
        Optional.  
        Default: First 8 chars of command filename followed by ".ibs".

        This tells s2ibis2 what the output file name should be. NOTE:
        this must conform to DOS conventions, i.e. it must be in the
        form "xxxxxxxx.xxx". If this command is not used, s2ibis2
        creates the output file name by taking the first part of the
        command file name, and appending ".ibs" to it. So, for the
        command file name "tryme.s2i", the output file name would be
        "tryme.ibs".

    [File rev]  rev

        rev = revision number
        
        Optional.
        Default: none.

        This describes the current file revision. Note that s2ibis2
        will accept any legal string for the revision number, although
        the IBIS specification suggests a standard for revision
        numbering.

    [Date]      date

        date = file date
        
        Optional.
        Default: Current system date.

        Gives the file date. If this command is not present, s2ibis2
        will use the current system date as the file date.

    [Source]    source

        source = file source
        
        Optional.
        Default: none.
        
        Describes the file source. Truncated if longer than 1K byte in
        length.

    [Notes]     notes

        notes = file notes
        
        Optional.
        Default: none.
        
        Describes any optional notes that may be necessary. Truncated
        if longer than 1K byte in length.

    [Disclaimer]    disclaimer

        disclaimer = file disclaimer
        
        Optional.
        Default: none.
        
        This is where you put the legalese. Truncated if longer than 1K
        byte in length.

    [Copyright] copyright

        source = file copyright
        
        Optional.
        Default: none.
        
        Describes the copyright info. Truncated if longer than 1K byte
        in length.

    [Spice type]    spicetype

        spicetype = HSpice, PSpice, Spice2, Spice3, or Spectre

        Required.
        
        Describes which flavor of Spice to use when simulating the
        circuits.

    [Spice command] command

        command = command to use when invoking Spice.

        Optional.
        Default: specified in s2istrng.h
        
        This string specifies, in C syntax, how you would call Spice
        from the command line. It has three "%s" printf conversion
        characters, one each for the spice input file, the spice output
        file and the spice message file (this last is optional), IN THAT
        ORDER. See the string variable defaultSpiceCommand in the file
        src/s2istrng.h for an example of the correct format. (Note that
        the command line switches used to invoke spice3 and spectre MUST
        be used.)

    [Iterate]

        Optional.
        Default: none.
        
        This works the same way as the *[Iterate] command in s2ibis
        v1.2. If a Spice output file for the curve in question already
        exists, s2ibis2 will read the data from that file without
        re-running the simulation. In this way, you can make
        incremental changes to your s2ibis2 files without having to
        re-simulate the entire set of models.

    [Cleanup]
    
        Optional.
        Default: none.
        
        When this command is specified, s2ibis2 will delete all of the
        spice input, output and message files as it proceeds. This is
        good to use when you think the IBIS file is done and you want to
        clean up the working directory.

    [Summarize]    s

        s = number of lines per summary screen

        Optional.
        Default: s = LINES environment variable if specified; 24
                     otherwise.

        When this command is specified, s2ibis2 will summarize all of
        the component data and ask if it's OK to proceed with the
        component analysis.

    [Temperature range] T_typ   T_min   T_max

        T_typ = temperature for TYP curves
        T_min = temperature for MIN curves
        T_max = temperature for MAX curves

        Optional.
        Default: T_typ = 27C, T_min = 100C, T_max = 0C.

        Specifies the temperature, in degrees C, under which to run the
        TYP, MIN and MAX simulations.

    [Voltage range]     V_typ   V_min   V_max

        V_typ = supply voltage for TYP curves
        V_min = supply voltage for MIN curves
        V_max = supply voltage for MAX curves

        Optional.
        Default: V_typ = 5.0V, V_min = 4.5V, V_max = 5.5V

        Specifies the supply rail voltage. See the IBIS v2.1
        specification for a thorough treatment of this.

        NOTE:  You MUST specify a voltage range for all models, either
        with this command or with ALL FOUR of the following commands.

    [Pullup reference]  V_typ   V_min   V_max

        V_typ = pullup supply voltage for TYP curves
        V_min = pullup supply voltage for MIN curves
        V_max = pullup supply voltage for MAX curves

        Optional.
        Default: none.

        Specifies the pullup reference supply. See IBIS v2.1
        specification for details.

    [Pulldown reference]    V_typ   V_min   V_max

        V_typ = pulldown supply voltage for TYP curves
        V_min = pulldown supply voltage for MIN curves
        V_max = pulldown supply voltage for MAX curves

        Optional.
        Default: none.

        Specifies the pulldown reference supply. See IBIS v2.1
        specification for details.

    [POWER clamp reference] V_typ   V_min   V_max

        V_typ = power clamp supply voltage for TYP curves
        V_min = power clamp supply voltage for MIN curves
        V_max = power clamp supply voltage for MAX curves

        Optional.
        Default: none.

        Specifies the power clamp reference supply. See IBIS v2.1
        specification for details.

    [GND clamp reference]   V_typ   V_min   V_max

        V_typ = ground clamp supply voltage for TYP curves
        V_min = ground clamp supply voltage for MIN curves
        V_max = ground clamp supply voltage for MAX curves

        Optional.
        Default: none.

        Specifies the ground clamp reference supply. See IBIS v2.1
        specification for details.

    [R_pkg]     r
    
        r = parasitic pin resistance

        Optional.
        Default: 0

        Describes the default pin resistance for the package.

    [L_pkg]     l
    
        l = parasitic pin inductance

        Optional.
        Default: 0

        Describes the default pin inductance for the package.

    [C_pkg]     c
    
        c = parasitic pin capacitance

        Optional.
        Default: 0

        Describes the default pin capacitance for the package.

    [C_comp]    C_typ   C_min   C_max
    
        C_typ = silicon die capacitance for TYP curves
        C_min = silicon die capacitance for MIN curves
        C_max = silicon die capacitance for MAX curves

        Optional.
        Default: C_typ = 5pF, C_min = 5pF, C_max = 5pF

        Describes the silicon die capacitance.

    [Rload]     r

        r = load resistance for ramp rate

        Optional.
        Default: r = 50 ohms.

        Describes the load resistance to use when performing the
        simulations for the ramp rate data.

    [Sim time]  t

        t = Spice transient simulation time

        Optional.
        Default: t = 10ns.

        Describes the transient simulation time to be used by Spice.

    [Vil]       v_typ   v_min   v_max

        v_typ = low stimulus input voltage for TYP curves
        v_min = low stimulus input voltage for MIN curves
        v_max = low stimulus input voltage for MAX curves

        Optional.
        Default: [Pulldown reference] voltage if defined; 0 otherwise.

        Describes the low stimulus input voltage. Note that this is NOT
        the logic low voltage, but the physical Vil.

    [Vih]       v_typ   v_min   v_max

        v_typ = high stimulus input voltage for TYP curves
        v_min = high stimulus input voltage for MIN curves
        v_max = high stimulus input voltage for MAX curves

        Optional.
        Default: [Pullup reference] voltage if defined; [Voltage range]
                 voltage otherwise.

        Describes the high stimulus input voltage. Note that this is NOT
        the logic high voltage, but the physical Vih.

    [Tr]        t_typ   t_min   t_max

        t_typ = stimulus input voltage risetime for TYP curves
        t_min = stimulus input voltage risetime for MIN curves
        t_max = stimulus input voltage risetime for MAX curves

        Optional.
        Default: [Sim time] / 100.

        Describes the stimulus input voltage risetime.

    [Tf]        t_typ   t_min   t_max

        t_typ = stimulus input voltage falltime for TYP curves
        t_min = stimulus input voltage falltime for MIN curves
        t_max = stimulus input voltage falltime for MAX curves

        Optional.
        Default: [Sim time] / 100.

        Describes the stimulus input voltage falltime.

    [Clamp tolerance]   i

        i = threshold for clamp curve printing

        Optional.
        Default: i = 0

        Describes the threshold for printing lines in the clamp curves.
        s2ibis2 suppresses printing of current values whose absolute
        value is below the threshold. 

    [Derate VI] x

        x = percent to derate VI curves

        Optional.
        Default: x = 0%

        Describes the percentage to derate the VI curves, as described
        in the IBIS v2.1 spec. Note that x should be expressed as a
        percentage, not a fraction. For example, to derate 15%, use
        [Derate VI] 15, _not_ [Derate VI] 0.15. 

    [Derate ramp]   y

        y = percent to derate ramp rates

        Optional.
        Default: y = 0%

        Describes the percentage to derate the ramp rates, as described
        in the IBIS v2.1 spec. Note that y should be expressed as a
        percentage, not a fraction. For example, to derate 15%, use
        [Derate VI] 15, _not_ [Derate VI] 0.15.


THE COMPONENT DESCRIPTION

    The component description provides s2ibis2 with a model of your
    component. You may have multiple component descriptions per
    file--all components will be written to the same output file. (If
    multiple components are specified, please use unique pin names for
    each component--s2ibis2 uses the pin names to construct the SPICE
    file names and may become confused if different components use the
    same pin names.)

    As in the header, you may have component-wide specifications of
    certain values. Also as in the header, these component-wide values
    will be overridden by a more local definition (i.e. one within a
    particular model). As an example, you could specify a
    component-wide voltage range, and then override this within (for
    example) an ECL model.

    The component description consists of several parts. It starts with
    the [Component] keyword, which specifies the name of the component
    (see below). This is followed by the component header, which
    contains information which pertains to the entire component. The
    header is followed by the differential pin list (optional), pin
    mapping (optional), pin list (required) and model specifications
    (required). These four need not be in any particular order.


THE [Component] KEYWORD

    This keyword specifies the start of the component. It takes the
    following form:

    [Component] name

        name = component name

        Required.

        This command specifies the start of a new component. The
        component name may contain spaces. It will be truncated to 40
        characters in length.


THE COMPONENT HEADER

    This is where you specify variables that will apply to the entire
    component.

    The following commands may be used in the component header:

    [Manufacturer]  name

        name = manufacturer's name

        Optional.
        Default: "Manufacturer name"

        This describes the manufacturer's name, which may contain
        spaces. It will be truncated to 40 characters in length.

    [Package model] name

        name = package name

        Optional.
        Default: none

        This describes the package model to use for the component
        packaging--see the IBIS v2.1 specification for more detail. May
        contain spaces. Will be truncated to 40 characters.

    [Spice file]    filename

        filename = name of Spice file which describes component

        Required.

        This gives the name of the Spice file which describes the
        component topology. Must conform to DOS naming conventions.

    [Temperature range] T_typ   T_min   T_max
        See section "THE HEADER" (above) for description.

    [Voltage range]     V_typ   V_min   V_max
        See section "THE HEADER" (above) for description.

    [Pullup reference]  V_typ   V_min   V_max
        See section "THE HEADER" (above) for description.

    [Pulldown reference]    V_typ   V_min   V_max
        See section "THE HEADER" (above) for description.

    [POWER clamp reference] V_typ   V_min   V_max
        See section "THE HEADER" (above) for description.

    [GND clamp reference]   V_typ   V_min   V_max
        See section "THE HEADER" (above) for description.

    [R_pkg]     r
        See section "THE HEADER" (above) for description.

    [L_pkg]     l
        See section "THE HEADER" (above) for description.

    [C_pkg]     c
        See section "THE HEADER" (above) for description.

    [C_comp]    C_typ   C_min   C_max
        See section "THE HEADER" (above) for description.

    [Rload]     r
        See section "THE HEADER" (above) for description.

    [Sim time]  t
        See section "THE HEADER" (above) for description.

    [Vil]       v_typ   v_min   v_max
        See section "THE HEADER" (above) for description.

    [Vih]       v_typ   v_min   v_max
        See section "THE HEADER" (above) for description.

    [Tr]        t_typ   t_min   t_max
        See section "THE HEADER" (above) for description.

    [Tf]        t_typ   t_min   t_max
        See section "THE HEADER" (above) for description.

    [Clamp tolerance]   i
        See section "THE HEADER" (above) for description.

    [Derate VI] x
        See section "THE HEADER" (above) for description.

    [Derate ramp]   y
        See section "THE HEADER" (above) for description.


THE DIFFERENTIAL PIN LIST

    This section contains the differential pin list information, as
    described in the IBIS v2.1 specification. Note that s2ibis2 does no
    processing on this information; it merely stores it an writes it to
    the output file.

    The differential pin list begins with the [Diff pin] keyword:

    [Diff pin]

        Optional.
        Default: none.

        Begins the differential pin list section.

    This keyword is followed by lines describing the differential pin
    relationships. Each line may contain either four or six columns.
    The acceptable formats are:

    pin_name   inv_pin   vdiff   tdelay_typ

    and

    pin_name   inv_pin   vdiff   tdelay_typ   tdelay_min   tdelay_max

    These parameters are fully described in the IBIS v2.1 specification.


THE PIN MAPPING

    The pin mapping describes which power and ground buses are connected
    to each pin's driver and receiver. This information is used in the
    Spice simulations, if it is supplied.

    The pin mapping begins with the [Pin mapping] keyword:

    [Pin mapping]

        Optional.
        Default: none.

        Begins the pin mapping section.

    The keyword is followed by lines describing the pin mapping. Each
    line may contain either three or five columns. Acceptable formats
    are:

    pin_name   pulldown_bus   pullup_bus

    and

    pin_name   pulldown_bus   pullup_bus   gndclamp_bus powerclamp_bus

    Note that power pins are always connected to a pullup_bus, while
    ground pins are always connected to a pulldown_bus, even if they
    only supply power and ground for clamping structures.

    These parameters are fully described in the IBIS v2.1 specification.
    An example of how to used this command is in the examples/ex4
    subdirectory.


THE PIN LIST

    This section describes which models connect to which pins, and which
    pins serve as inputs or enables for other (output) pins.

    The pin list begins with the [Pin] keyword:

    [Pin]

        Required.

        Begins the pin list.

    The keyword is followed by "pin information sets" which describe the
    pin list. There are six valid formats for each pin information set:

    pin_name  spice_node  signal_name  model_name

    pin_name  spice_node  signal_name  model_name  R_pin  L_pin  C_pin

        These two formats are used for a pin with no input or enable,
        i.e. an input pin, enable pin, power pin or ground pin. Note
        that R_pin, L_pin and C_pin override the R_pkg, L_pkg and C_pkg
        specifications.

    pin_name  spice_node  signal_name  model_name
    -> input_pin

    pin_name  spice_node  signal_name  model_name  R_pin  L_pin  C_pin
    -> input_pin

        These two formats are used for a pin with an input pin, but no
        enable pin. i.e. an output-only pin. Note that the
        input_pin_name must match a pin in the pin list. Note also that
        the "->" symbol must begin in the first column of the second
        line.

    pin_name  spice_node  signal_name  model_name
    -> input_pin  enable_pin

    pin_name  spice_node  signal_name  model_name  R_pin  L_pin  C_pin
    -> input_pin  enable_pin

        These two formats are used for a pin with both an input pin and
        an enable pin, i.e. a tristate or I/O pin. Note that both the
        input_pin_name and enable_pin_name must match pins in the pin
        list. Note also that the "->" symbol must begin in the first
        column of the second line.

    Descriptions for each column are given below:

    pin_name........Name of the pin. Must be 5 characters or less.
    spice_node......Node name in the spice file which corresponds to
                    this pin.
    signal_name.....Name of the signal associated with this pin.
    model_name......Name of the driver/receiver/terminator model
                    associated with this pin. The model name must
                    match one described by the [Model] keyword (see
                    below), unless the model name is one of POWER,
                    GND or NC.
    R_pin...........Parasitic pin resistance. Overrides the R_pkg
                    value if defined.
    L_pin...........Parasitic pin inductance. Overrides the L_pkg
                    value if defined.
    C_pin...........Parasitic pin capacitance. Overrides the C_pkg
                    value if defined.
    input_pin.......Name of the pin which supplies the input signal
                    to the current pin. Must match the name of
                    another pin in the pin list. This name is used
                    in the Spice simulations to determine where to
                    apply the input stimulus.
    enable_pin......Name of the pin which enables the current pin.
                    Must match the name of another pin in the pin
                    list. This name is used in the Spice
                    simulations to determine where to apply the
                    enable signal.


THE MODEL SPECIFICATION

    The model specification is used to describe a model and its
    attributes. There must be a model specification for each model
    specified in the pin list, with the exception of the reserved model
    names POWER, GND and NC.

    Each model specification begins with the [Model] keyword:

    [Model]     name

        name = model name

        Required.
        
        Begins a model specification. The model name may not contain
        spaces, and will be truncated to 20 characters.

    The [Model] keyword may be followed by these commands:

    [NoModel]

        Optional.

        Suppresses printing of the model. Useful when one wishes to
        create a "dummy" input pin to drive an output model.

    [Model type]    type

        type =  Input, Output, I/O, 3-State, Open_drain,
                I/O_open_drain, Open_sink, I/O_open_sink,
                Open_source, I/O_open_source, Input_ECL,
                Output_ECL, I/O_ECL or Terminator

        Required.

        Specifies the model type.

    [Polarity]  polarity

        polarity = Inverting or Non-Inverting

        Optional.
        Default: Non-Inverting.

        Defines the model polarity.

    [Enable]    enable

        enable = Active-High or Active-Low

        Optional.
        Default: Active-High.

        Defines how the model is enabled.

    [Vinl]      v

        v = low input threshold voltage

        Optional.
        Default: 0.8V for non-ECL, -1.475V for ECL

        Defines the low input threshold voltage.

    [Vinh]      v

        v = high input threshold voltage

        Optional.
        Default: 2.0V for non-ECL, -1.165V for ECL

        Defines the high input threshold voltage.

    [Vmeas]     v

        v = reference voltage level

        Optional.
        Default: none

        Defines the reference voltage level for board-level timing
        simulation.

    [Cref]      c

        c = capacitive load for timing analysis

        Optional.
        Default: none

        Defines the capacitive load used when specifying the propagation
        delay or output switching time.

    [Rref]      r

        r = resistive load for timing analysis

        Optional.
        Default: none

        Defines the resistive load used when specifying the propagation
        delay or output switching time.

    [Vref]      v

        v = load voltage for timing analysis

        Optional.
        Default: none

        Defines the load voltage used when specifying the propagation
        delay or output switching time.

    [Rgnd]      R_typ   R_min   R_max

        R_typ = terminator ground resistance for TYP curves 
        R_min = terminator ground resistance for MIN curves 
        R_max = terminator ground resistance for MAX curves 

        Optional.
        Default: none.

        Defines the terminator ground resistance. Only valid for models
        of type Terminator.

    [Rpower]    R_typ   R_min   R_max

        R_typ = terminator power resistance for TYP curves 
        R_min = terminator power resistance for MIN curves 
        R_max = terminator power resistance for MAX curves 

        Optional.
        Default: none.

        Defines the terminator power resistance. Only valid for models
        of type Terminator.

    [Rac]       R_typ   R_min   R_max

        R_typ = terminator RC resistance for TYP curves 
        R_min = terminator RC resistance for MIN curves 
        R_max = terminator RC resistance for MAX curves 

        Optional.
        Default: none.

        Defines the terminator RC resistance. Only valid for models of
        type Terminator.

    [Cac]       C_typ   C_min   C_max

        C_typ = terminator RC capacitance for TYP curves 
        C_min = terminator RC capacitance for MIN curves 
        C_max = terminator RC capacitance for MAX curves 

        Optional.
        Default: none.

        Defines the terminator RC capacitance. Only valid for models of
        type Terminator.

    [Model file]    F_typ   F_min   F_max

        F_typ = filename for model file for TYP curves
        F_min = filename for model file for MIN curves
        F_max = filename for model file for MAX curves

        Optional.
        Default: none.

        Specifies model files to be used for Spice simulations. Note
        that the model files may include any valid Spice constructs--
        s2ibis2 simply copies the named file into the Spice input file
        before calling Spice.

    [Rising waveform]  R_f  V_f  V_f_min  V_f_max  L_f  C_f  R_d  C_d  L_d
    [Falling waveform] R_f  V_f  V_f_min  V_f_max  L_f  C_f  R_d  C_d  L_d

        R_f =     test fixture resistance
        V_f =     test fixture load voltage
        V_f_min = test fixture load voltage for MIN curve
        V_f_max = test fixture load voltage for MAX curve
        L_f =     test fixture inductance
        C_f =     test fixture capacitance
        R_d =     package parasitic resistance
        L_d =     package parasitic inductance
        C_d =     package parasitic capacitance

        Optional.
        Default: none.

        These keywords specify that s2ibis2 is to generate a rising or
        falling waveform using the parameters listed. Note that _all_
        columns must be filled, although only R_f and V_f must be
        specified. Please use the reserved word NA to fill a column
        whose value you do not wish to specify. You may have up to 100
        rising waveforms and 100 falling waveforms per model.

    [Temperature range] T_typ   T_min   T_max
        See section "THE HEADER" (above) for description.

    [Voltage range]     V_typ   V_min   V_max
        See section "THE HEADER" (above) for description.

    [Pullup reference]  V_typ   V_min   V_max
        See section "THE HEADER" (above) for description.

    [Pulldown reference]    V_typ   V_min   V_max
        See section "THE HEADER" (above) for description.

    [POWER clamp reference] V_typ   V_min   V_max
        See section "THE HEADER" (above) for description.

    [GND clamp reference]   V_typ   V_min   V_max
        See section "THE HEADER" (above) for description.

    [R_pkg]     r
        See section "THE HEADER" (above) for description.

    [L_pkg]     l
        See section "THE HEADER" (above) for description.

    [C_pkg]     c
        See section "THE HEADER" (above) for description.

    [C_comp]    C_typ   C_min   C_max
        See section "THE HEADER" (above) for description.

    [Rload]     r
        See section "THE HEADER" (above) for description.

    [Sim time]  t
        See section "THE HEADER" (above) for description.

    [Vil]       v_typ   v_min   v_max
        See section "THE HEADER" (above) for description.

    [Vih]       v_typ   v_min   v_max
        See section "THE HEADER" (above) for description.

    [Tr]        t_typ   t_min   t_max
        See section "THE HEADER" (above) for description.

    [Tf]        t_typ   t_min   t_max
        See section "THE HEADER" (above) for description.

    [Clamp tolerance]   i
        See section "THE HEADER" (above) for description.

    [Derate VI] x
        See section "THE HEADER" (above) for description.

    [Derate ramp]   y
        See section "THE HEADER" (above) for description.