28 July 1994                                                     s2ibis(1)




   NAME
     s2ibis - convert SPICE models to IBIS models

   SYNOPSIS
     s2ibis input_file [ output_file ]


   DESCRIPTION
     s2ibis reads in a s2ibis input file and produces a Version 1.1 IBIS
     model file.  The s2ibis input file consists of a s2ibis header, a modi-
     fied IBIS pin list, and a SPICE input deck describing the topology of
     the circuit to be modeled. s2ibis uses the s2ibis header and pin list to
     generate the IBIS model file header and pin list, and the input deck to
     generate SPICE input decks for each of the tables in the IBIS model
     file.  s2ibis invokes SPICE to run each of the simulations, and collates
     the results into a syntactically-correct IBIS Version 1.1 model file.

     s2ibis generates SPICE simulations for [Pullup], [Pulldown],
     [POWER_clamp], [GND_clamp], and [Ramp] tables, as is appropriate for
     each pin in the pin list.  The resulting SPICE input and output files
     are created in the directory in which s2ibis is invoked.  The files
     remain in this directory after execution has completed.  The general
     naming scheme for the files is xxxyyyyy.spi or xxxyyyyy.out for the
     input and output files respectively, where xxx is a three-letter code
     name for the simulation type and yyyyy is the pin name.  The first two
     characters of the xxx codes are: [Pullup]=pu, [Pulldown]=pd,
     [POWER_clamp]=pc, [GND_clamp]=gc, and [RAMP]=ru or rd, ru for the rising
     edge ramp (ramp up) and rd for the falling edge ramp (ramp down). The
     third character is t for typical, n for min, and x for max.

     For all HSPICE and Berkeley SPICE 3 simulations, the standard error out-
     put of the simulation run is redirected to a file named xxxyyyyy.msg.

     s2ibis reads input from input_file and puts its output on stdout, unless
     output_file   is specified.  In all cases s2ibis logs its activities to
     stderr, which is normally the console.


   INPUT FILE

     The s2ibis input file consists of three parts: 1) the header  2) the
     modified pin list 3) the SPICE input deck.  All of the lines preceding
     the SPICE input deck must begin with the SPICE comment character, *.

     s2ibis HEADER

     The header is used to create the IBIS model file header. It consists of
     all lines before the modified pin list.  The first four lines of the
     header are required.  These lines must contain the following informa-
     tion:

             LINE 1:*company_name


   North Carolina State University                                          1






   s2ibis(1)                                                     28 July 1994


             LINE 2:*device_name
             LINE 3:*package_type
             LINE 4:*technology

     Any string or combination of strings is acceptable for LINEs 1-3. LINE 4
     must have the string BIPOLAR or the string CMOS somewhere after the
     asterisk.  s2ibis uses this information to determine the correct tem-
     perature ranges to use for simulations.

     OPTIONAL HEADER INFORMATION

     Optional information may also be included in the header. Understanding
     the various options is crucial to efficient use of s2ibis.

     s2ibis will automatically suppress the creation and simulation of SPICE
     decks if the corresponding output files already exist AND the iterate
     switch is found anywhere in the header.  The syntax is:

     *[Iterate]

     This feature can be very important if any of the simulations initiated
     by s2ibis fails to complete; for example, due to convergence problems.
     In many cases a SPICE run can be coaxed to completion by tweaking the
     SPICE input deck.  For example, the .OPTIONS mechanism can be used to
     change a tolerance parameter or choose a different numerical integration
     algorithm.  Anything that can be done to coax SPICE to finish the table
     is acceptable, as long as the .PRINT card causes the table to be printed
     out in the same format that the original s2ibis-added .PRINT card would
     have, and the correct output file name is used.  When the problem is
     resolved, s2ibis is reinvoked with the *[Iterate] line in the header.
     s2ibis checks to see if the associated output file exists before making
     up any SPICE decks, so the output file for the problem simulation, and
     the output files from any other completed simulations are read in
     instead.  Any simulations for which output files are not found are
     invoked as usual.  Using this technique it is easy to iteratively create
     an IBIS model.  This technique can also be used to get s2ibis to create
     an IBIS model using SPICE outputs that were created by hand or by other
     programs, as long as the .PRINT format is the same as that used by
     s2ibis.

     s2ibis defaults to Berkeley SPICE version 2, unless a line of the form:

     *[Spice] spicetype

     is found in the header, where spicetype can be 2,3,P, or H, which
     correspond to Berkeley SPICE 2, Berkeley SPICE 3, PSPICE, and HSPICE
     respectively.  The selected version is reported on stderr during pro-
     cessing.

     The [File Rev] defaults to 0.0 unless a line of the form:

     *[File Rev] rev_string

     is found in the header.  This happens without warning.  s2ibis will


   2                                          North Carolina State University






   28 July 1994                                                     s2ibis(1)


     accept any string for rev_string.

     s2ibis inserts a default [Package] section into the output file unless
     the header contains such a section.  This happens without warning. The
     syntax is identical to the IBIS version 1.1 syntax except that each line
     must be preceded by an asterisk.  Please note that the comment character
     *must* be the default IBIS comment character: |

     The syntax for adding [Source] [Notes] and [Disclaimer] sections is the
     same as IBIS Version 1.1 except that asterisks are required at the
     beginning of each line.

     s2ibis automatically omits any clamp tables in which the typical clamp
     current is below 1 microampere.  This limit can be changed to any
     current, using the following syntax:

     *[Clamp_Tolerance] amps

     where amps is in Amperes.  Thus *[Clamp_Tolerance] 1.0e-3 changes the
     limit to 1.0 milliamps.

     s2ibis PIN LIST

     Immediately following the header, s2ibis expects to find a pin list.
     The pin list is the same as a standard IBIS pin list except that after
     each non-NC pin entry a second line, called the pindata line, is
     inserted to help s2ibis to set up the subsequent SPICE simulations.

     The format for the pindata line depends on the model_type of the associ-
     ated pin.  Eight model_types are currently supported: 1) Input 2) Ouput
     3) I/O 4) 3-state 5) Open_drain 6) POWER 7) GND 8) NC.

     For pins with model_type Input, the pindata line has the following for-
     mat:

     *model_type SPICE_NODE polarity vil vih

     The model_type field must be Input.  The SPICE_NODE field is used to
     specify which node in the attached SPICE deck corresponds to the pin.
     The polarity field should be 1 for inverting inputs and 0 for non-
     inverting inputs.  The vil field should be a floating point number
     specifying the voltage that this input should be driven to when a logic
     low is to be applied.  The vih field is similar for the logic high
     situation.

     For pins with model_type Output, I/O, 3-state, and Open_drain, the pin-
     data line has the following format:

     *model_type SPICE_NODE ramp_time input_pin [enable_pin] [polarity] [vil]
     [vih]

     The model_type field must be Output, I/O, 3-state, or Open_drain.  The
     SPICE_NODE field is as above.  The ramp_time field should be a floating
     point number specifying suggested minimum length for the SPICE .TRAN


   North Carolina State University                                          3






   s2ibis(1)                                                     28 July 1994


     analysis to be used for generating the [Ramp] tables. All output pins
     must have an associated input pin.  The input_pin field refers to the
     pin name, *not* the SPICE node name.   If the model_type is I/O or 3-
     state, an enable_pin field is expected, specifying the pin name for the
     pin that enables the associated output.  For I/O pins, the polarity,
     vil, and vih entries are required, and work just like the analogous
     entries for an Input pin, described above.

     For POWER pins, the pindata line has the following format:

     *model_type SPICE_NODE vpwr_typ [vpwr_min] [vpwr_max]

     The model_type field must be POWER.  The SPICE_NODE field operates as
     described above.  The vpwr_typ field is required.  A floating point
     number is expected, describing the nominal supply voltage to be applied.
     If multiple POWER pins are specified, s2ibis will ignore all except the
     first.

     For GND pins, the pindata line has the following format:

     *model_type SPICE_NODE

     The SPICE_NODE field operates as described above.  Only the first GND
     pin is acknowledged by s2ibis.

     Extra lines may optionally be added after a pindata line to specify
     optional parameters for the [Model] associated with that pin.  These
     lines must begin with a double-asterisk: **.  Any line following a pin-
     data line, and beginning with a double-asterisk will be searched for
     keywords.  The keywords affect the creation of the [Model] for the asso-
     ciated pin.  If a keyword is not found, the line will be ignored, thus
     this technique can be used for inserting comments in the input file.
     The following keywords are currently recognized:

             NoModel      (suppresses creation of [Model] entirely)

             NoPolarity   (suppresses the Polarity parameter)

             NoEnable     (suppresses the Enable parameter)

             Polarity     (used to override the Polarity parameter)

             Enable       (used to override the Enable parameter)

             Vinl         (the line is copied to the [Model])

             Vinh         (the line is copied to the [Model])

             C_comp       (the line is copied to the [Model])

             Input_ramp_xxx vil vih tr tf (allows customization of the input
             ramp for Ramp tables.  xxx can be typ, min, or max, and each
             must be entered separately or the default will be used.  The
             units are Volts, Volts, seconds, and seconds, respectively.)


   4                                          North Carolina State University






   28 July 1994                                                     s2ibis(1)


     Thus, **Vinl = 0.45V can be used to add the following line to the asso-
     ciated [Model]:

     Vinl = 0.45V

     **Polarity Inverting can be used to force the Polarity parameter in a
     [Model] to be listed as Inverting, even if the associated pin is Non-
     Inverting.

     The C_comp entry in all models defaults to:

             C_comp            5.0pF         5.0pF         5.0pF

     if no C_comp is specified in the pin list. This happens without warning.

     Finally, the [Pin] section must end with an [Endpin] card:

     *[Endpin]

     SPICE DECK

     The input SPICE deck should contain only circuit elements needed to
     describe the circuit.  The power supply and voltage sources are automat-
     ically generated by s2ibis. Similarly, control cards probably should not
     be present in the SPICE deck. s2ibis uses default SPICE parameters, so
     users with convergence problems might want to use the .OPTIONS card to
     mitigate them.


   RESTRICTIONS

     SPICE convergence problems may result in missing tables. s2ibis tries to
     continue in the event of problems in the SPICE runs, reporting problems
     on stderr.

     Temporary SPICE input and output file names are not variable and s2ibis
     will overwrite existing files automatically.

     s2ibis does not check to make sure that the output file name meets the
     requirements of IBIS Version 1.1. (all lower case, .ibs extension, DOS
     compatible)

     A temporary file named s2ibis.tmp is created. s2ibis will write to this
     file without asking for permission.

     s2ibis expects all voltages to be expressed in Volts, all times to be
     expressed in seconds, all currents to be expressed in Amperes.  Unit
     suffixes are not recognized.

     s2ibis uses only Berkeley SPICE version 2 or 3, PSPICE, or HSPICE, using
     the following calls:

             spice inputfile outputfile



   North Carolina State University                                          5






   s2ibis(1)                                                     28 July 1994


             spice3 -b inputfile >outputfile 2>messagefile

             PSPICE inputfile outputfile /D0

             hspice inputfile >outputfile 2>messagefile

     The calls for SPICE3 and HSPICE are tailored for UNIX systems which use
     the Bourne shell (sh) for invoking system calls.  The calling sequence
     may have to be modified for  users of SPICE3 and HSPICE that do not use
     UNIX operating systems. Proprietary versions of SPICE which use dif-
     ferent output formats or different calling sequences may not work prop-
     erly with s2ibis.

     The pipe character (|), which is the default comment character for IBIS,
     must be used in any situation where user-specified comments are inserted
     directly into the output file.  For example, if the [Package] keyword is
     found in the s2ibis header, the user-specified [Package] section is
     copied directly to the output file.  If a comment line is included, it
     must use the pipe character.





































   6                                          North Carolina State University


99