The "driver" behavoral element
----------------------------------------------
Syntax
	driver <name> (<nodes>) (<attribute list>)
----------------------------------------------
BNF

driver_value :    'S1' '=' table_1
		| 'S0' '=' table_1
		| 'V1' '=' scalar
		| 'V0' '=' scalar
		| 'T10' '=' table_2
		| 'T01' '=' table_2
		| 'R10' '=' fraction
		| 'R01' '=' fraction

driver_attrib_list : driver_attrib_list driver_value
	| /* nothing */

driver : '.driver' name '(' node node node node node node node ')'
	attrib_list '\n'
----------------------------------------------
Description

The "driver" generates waveforms when triggered.  It also provides
provided pullup and pulldown in steady state.


There are 7 connections.  All must be used, and in order.

1. "pin" -- The output of the driver.

2. "gnd" -- A ground reference.  This is not the same as pulldown_ref.

3. "pullup_ref" -- The node to which the pullup is connected, which is
usually the power supply, possibly through a net.

4. "pulldown_ref" -- The node to which the pulldown is connected,
which is usually ground, possibly through a net.

5. "en" -- enable -- A logic value input.  The device in enabled when
this is true.

6. "t01" -- 0 to 1 trigger.  -- A trigger, which when activated begins
the transition from state 0 to state 1.  (also known as "rising trigger")

7. "t10" -- 1 to 0 trigger.  -- A trigger, which when activated begins
the transition from state 1 to state 0.  (also known as "falling trigger")


The equivalent circuit is:

                       S1           S0
  (pullup_ref||V1)---/\/\/\---+---/\/\/\---(pulldown_ref||v0)
                              |
                            (pin)


The attributes are:

S1: The I/V table for the pullup.
S0: The I/V table for the pulldown.
V1: The standard value for the reference for S1 (pullup reference)
V0: The standard value for the reference for S0 (pulldown reference)
T10: A family of waveform tables for the transition,
	state 1 to state 0. (falling waveform)	
T01: A family of waveform tables for the transition,
	state 0 to state 1. (rising waveform)
R10, R01: Alternative waveform specification as ramp.
----------------------------------------------
Uses in IBIS 3.2

This is a representation of the waveform generator used in most IBIS
files.
----------------------------------------------
Implementation notes

It is intended that this could be preprocessed into the equivalent
circuit shown above, where both resistors are nonlinear and time
dependent.  The output of the preprocessor could be a family of I/V
tables, representing snapshots in time.  A simulator could implement
it at run time, which might be more efficient.  All existing IBIS
simulators have the algorithms for this device, which are necessary
for 2.1 compliance.

There can be any number of tables for T10 and T01, specifying the
waveform with different loads.  The actual output will be a composite
of all of them, attempting to approximate a best fit.
----------------------------------------------
Example

  driver Udrv (pin gnd pullup_ref pulldown_ref en t01 t10) (
	S1 = [Pullup](-V),  S0 = [Pulldown](V),
	T10 = [Falling_Waveform](T-TF,*), R10 = [Ramp]dv/dt_f,
	T01 = [Rising_Waveform](T-TR,*),  R01 = [Ramp]dv/dt_r,
	V1 = [Pullup_Reference] || [Voltage_Range],
	V0 = [Pulldown_Reference] || 0 )

This describes the typical use in IBIS 2.1 and later.
----------------------------------------------
----------------------------------------------
