

		PROJECT REQUIREMENTS FOR SPICE-TO-IBIS TRANSLATOR
		-------------------------------------------------
			    Rev0.2 Oct10th'99


1.0 Scope of Project:
---------------------
Generate a user friendly IBISv3.2 complaint SPICE-to-IBIS translator that can 
run on multiple OS platforms and be easily upgradable to meet the requirements
of future IBIS standards. 

This project will be identified as s2ibis3.


2.0 General Requirements:
-------------------------
	2.1 OS platform independence 
        ----------------------------
	2.1.1 s2ibis3 must be developed for UNIX (Solaris 2.x) and NT4.0 (sp5) 
              at a minimum. Recent stable OS versions should be used.
	      s2ibis3 should eventually support Linux, AIX, HP
	      among other platforms using a single Makefile.

        2.1.2 A Java based development scheme or C or C++ is preferred.
	      
        2.1.3 Avoid using LEX, YACC, FLEX and BISON as there are  
              portability issues with future upgrades.

	2.2 Modular coding for future upgrade
	      Code generation should be done with the intent in mind that
              future IBIS specification be easily integratable without
              rewriting the core code sets.

	2.3 Hooks to other SPICE engines
        2.3.1 Contractor to test s2ibis3 on Berkeley SPICE2G.6, SPICE3 and
              HSPICE at a minimum.
	
        2.3.2 s2ibis3 to have hooks to SPICE2G.6, SPICE3, HSPICE, PSPICE,
              Spectre, Veribest Analog Simulator and Mentor
              Eldo Analog Simulator or 'other' SPICE simulators through
 	      configuration files.
        
        2.3.3 The IBIS forum will co-ordinated testing of s2ibis3 on the
              all the simulators mentioned above.
	      
        2.4 SpiTran GUI
	      SpiTran GUI is a Java based shareware from Cadence. The usage 
              of SpiTran GUI along with all the above requirements
              needs to be investigated. If possible, the SpiTran GUI
              needs to be incorporated into s2ibis3. All source code
              regarding SpiTran will be made available upon request.

        2.5 Graphical Viewer (Optional - separate quote requested)
              A graphical viewer needs to be created that will plot out
              the V/I and V/T tables showing all three Typ, Min and Max
              tables and the [Model] name displayed on the graph.
              (For reference, see s2iplt perl script from NCSU using
              GNUplot). 

	2.6 Parser integration (Optional) 
              The IBIS parser is to be embedded into s2ibis3 and invoked
              automatically after the completion of the IBIS model. Output
              of parser can be displayed on stdout or to a machine readable
              file (user selectable).

	2.7 Project Manager (Optional - separate quote requested)
              A project manager needs to be implemented that tracks all
              intermediate files, error messages etc. This could further
              assist in maintaining IBIS buffer libraries. Model developers
              could use this project manager to link various buffer models
              to make a complete IBIS component model.

3.0 Specific Requirements:
--------------------------
	3.1 Extrapolation
	      The user will have the flexibility to extrapolate the V/I data or
              not to extrapolate the data to the IBIS required end points.

	3.2 Sweep range
	      The user will have the flexibility to define the sweep range
 	      to any value he/she chooses for each V/I tables irrespective 
              of the defined [Voltage range]. This is necessary to avoid
              non-convergence issues on sensitive circuits.

	3.3 Clamp subtraction
	      [Pullup] and [Pulldown] V/I tables for tri-stateable buffers
	      will not include the [*_clamp] structures.
	      (refer to s2ibis2 problem on this)

	3.4 Vdd ramping
	      The user will have the flexibility to ramp up Vdd (or any other
              sensitive nodes) with SPICE supported PULSE or other methods.
              Example-
	      Instead of this:
	      VCCS2I VDDIO 0 DC 3.3  
	      Be able to do this:
	      VCCS2I VDDIO 0  PULSE 0.0 +3.00E+00 0.0 10E-9 10E-9 50E-6 55E-6

	3.5 .OPTIONS feature
	      For simulations with non-convergence issues, the user should be
	      able to add various .OPTIONS parameters supported by SPICE 
	      compatible simulators to solve problem. This will allow users to 
              change the default settings of control cards. One suggested scheme
              would be to implement this feature through simulator specific
              configuration files.

More work on this: 3.6 Flow Control 
	      If a test fails during the translation flow, a user
              selectable option needs to be provided to continue with
              the rest of the translation if the user choose to do so.
              A failure to generate a particular V/I table should not
              stop the user from continuing and generate the V/T
              tables or other V/I tables instead. Debug of a failed test
              through GUI control is recommended.
              Use of [Iterate] feature in s2ibis2 should be implemented.
              If a particular sim run was successful and a output file
              was generated, s2ibis3 will not re-run the simulation.

Arpad	3.7 User selectable increment for DC and Transient Analysis
              For .DC and .TRAN analysis, the user should be able
	      to change the increment and other fields supported
	      by the respective control cards.

        3.8 Data Point Granularity
Arpad	3.8.1 User selectable number of data points. More points on the
               knee regions and fewer points in the linear regions.
	       User selectable number of digits after the decimal.

	3.9 Choice of Process Simulation
              s2ibis3 should be flexible to create a TYP only
              IBIS model if the model developer choose to do so
              instead of all three TYP, MIN and MAX process corners.

	3.10[C_comp] extraction (Optional-separate quote requested)
	      The translator should calculate the value of [C_comp] by
              having a reserved keyword "Calc" for the value of [C_comp]
              By default, no calculations would then be done, as a real
              value would be present.

	
4.0 IBISv3.2 specifics:
-----------------------
	This section will expand on IBIv3.2 specifics that need to be
	incorporated into s2ibis3. Eg.series MOSFET

5.0 Documentation:
------------------
	5.1 User Guide
	--------------
	A user guide is to be provided in pdf format and ASCII text.
        This user guide will be the first documentation a user may consult
        to understand the usage of the translator and the steps required
        to run the translator. A table of content needs to be provided
        along with an index at the end of the manual.

	A detailed description of the algorithm used to generate the V/I
        and V/T tables need to be defined (see /doc/curves.txt)

	5.2 Software Code Documentation
	-------------------------------
	5.2.1 Directory Tree
              README file should describe the contents of each sub-dir
              within the directory tree structure. Detailed explanation
              to be provided if required.  (see /doc/README)
	      Suggested sub-dir could be:
              /bin /doc /examples /src /plot etc
	      (see /s2ibis2 dir structure)
 
	5.2.2 Code explanation
              Every functions needs to have comments describing what it
              does. All variables within a function needs to be defined
              of what it does. Additional comments should be provided for
              any loops and other areas of the code.
	      (see src/s2ianlyz.c)
                            
	5.2.3 Flow Chart
              A flow chart of the project needs to be generated that
              describes all the paths the software takes if it encounters
              an error or how it searches through each program to generate
              the final IBIS model.

	5.2.4 Error message
	      A detailed explanation of each Error/Warning messages needs 
              to be defined.

	5.2.5 Code maintenance
	      The code should be easily maintainable by any volunteer from
              The IBIS forum. This may require minor changes, compilation
              of code for specific platform. Minor bug fixes may be required.
              (see /src/sources and src/tags files)

	5.2.6 Defaults
	      Any and all default parameters needs to be spelled out within
              the documentation stating the values used.
              example: Default transient simulation time = 10ns
	      (see /src/s2idflt.h)

        5.2.7 Filenaming convention
              It is recommended to follow the s2ibis2 filenaming convention
              for input/output files (except for Rising/Falling waveforms). 
              More discussion on this with the IBIS forum is required.
	      Example -
              put7.spi: Pullup Typical
              rdn7.spi: Ramp Down Min
              ddx7.spi: Disabled Pulldown Max
                     
6.0 Acceptance Criteria:
------------------------
	6.0 Meets or exceeds all items above	
	6.1 Run on Bob Ross provided SPICE test structure
	6.2 Run on multiple SPICE simulators
            (To be co-ordinated with the IBIS forum.)
	6.3 Run on NCSU provided examples for s2ibis2
	6.4 Reviewed by s2ibis3 subcommittee.
        6.5 Bug fixes and tracking implemented (see /doc/changes.txt)

An understanding of the usage/features/limitations of NCSU's s2ibis2 is preferred.

An itemized quote is also welcome. This may allow modification to the 
project requirement if the initial cost exceeds budgetary constraints.

Regards,
IBIS sub-committee

