Re: BIRD 30: Programmable Buffers

From: Malan Rampton <rampton@galois.eng.hou.compaq.com>
Date: Fri Aug 11 1995 - 09:30:30 PDT

Dear Ibisians,

I applaud the intent of BIRD 30 to provide IBIS models with the
capability to handle programmable buffers in a more user friendly
manner.

However, I do not believe that BIRD 30 takes this issue far enough. In
my experience as a signal integrity engineer most instances
of programmable buffers have been encountered in the context of the
chip as a whole, or some subsection thereof, being programmable. A
simple example of this would be an ASIC that can be programmed to
function at either 5V or 3.3V levels.

It therefore seems to me that what needs to be provided is a method
within IBIS to cleanly handle instances such as this: where a number
of signals (likely involving a number of different types of
programmable buffer) need to have correct buffer models selected based
upon some characteristic, or set of characteristics.

I have provided below a first pass at a sample syntax structure that
should suffice to provide the above capability. This is based
upon the sample provided within the text of BIRD 30 and makes use of
the "Model selector" syntax that is laid out therein. The example
displays the selection of 3volt high drive buffers for a set of
target nets from two distinct programmable buffers and their
corresponding configuration sets.

In addition to the [Model selector] keyword I have added a [Signal
selector] keyword. This has syntax that is similar to that of [Model
selector] but provides a listing of nets that are programmed as a
set. A name for the net grouping also needs to be provided and a
default set of characteristics can be specified.

An optional sub-parameter "Classes" has also been added to
[Model]. This allows the specification of the programmable state of a
given model. A set of program classes are listed, i.e., voltage and
drive strength, and selection criteria values are assigned to them,
i.e., 5V or 3V and H or L. An open-ended number of classes may be
specified.

In the example I have intentionally provided that the models of
Progbuffer1 are programmable for voltage and drive while the models of
Progbuffer2 are programmable only for voltage. In-spite of this they
have been grouped into the same [Signal selector] grouping. In a case
such as this, model selection should occur based upon what information
is present. If it is specified that 3volt high drive models are to be
selected for Progsection1 then the 3V H model from Progbuffer1 will be
used in conjunction with the 3V buffer from Progbuffer2.

Some miscellaneous notes: membership in more than one [Signal selector]
group for a net should be prohibited; also the selection
specifications MUST yield a unique model selection from each involved
[Model selector]; I have used signal names for the [Signal selector]
listing rather than pin names to provide for an easier conversion
among package types.

I believe that the additional functionality that this would provide is
probably worth the slightly greater complexity. I will brace myself to
hear otherwise, however.

**************************Begin Example*****************************
==============================================================================
| Keyword: [Model selector]
| Required: No.
| Description: Used to pick a [Model] from a list of [Model]s for a pin which
| uses a programmable buffer.
| Sub-Params: Default (?required if keyword used?)
| Usage Rules: A programmable buffer must have an individual [Model] section
| for each one of its modes used in the .ibs file. The names of
| these [Models] must be unique and can be listed under the
| [Model selector] keyword and/or pin list. The name of the
| [Model selector] keyword must match the corresponding model
| name listed under the [Pin] keyword and must not contain more
| than 20 characters. A .ibs file must contain enough [Model
| selector] keywords to cover all of the model selector names
| specified under the [Pin] keyword.
|
| The sub-parameter Default is used to point to a default [Model]
| to be used on the pin(s) calling this [Model selector].
|
| The operation of this selection mechanism implies that a group
| of pins which use the same programmable buffer (i.e. model
| selector name) will be switched together from one [Model] to
| another. Therefore, if two groups of pins, for example an
| address bus and a data bus, use the same programmable buffer,
| the user must have the capability to configure them
| independently. One can use two [Model selector] keywords
| with unique names and the same list of [Model] keywords;
| however, the usage of the [Model selector] is not limited to
| these examples. Many other combinations are possible.
|
|
[Pin] signal_name model_name R_pin L_pin C_pin
|
  1 RAS0# Progbuffer1 200.0m 5.0nH 2.0pF
  2 EN1# Input1 NA 6.3nH NA
  3 A0 3-state
  4 D0 Progbuffer2
  5 D1 Progbuffer2 320.0m 3.1nH 2.2pF
  6 D2 Progbuffer2
  7 RD# Input2 310.0m 3.0nH 2.0pF
| .
| .
| .
  18 Vcc3 POWER
|
|
[Model selector] Progbuffer1 | voltage drive
Default ABCD0123456789ABCDE0 | 3V H
                ABCD0123456789ABCDE1 | 3V L
                    ABCD0123456789ABCDE2 | 5V H
                ABCD0123456789ABCDE3 | 5V L
|
[Model selector] Progbuffer2
                WXYZ9876543210WXYZE0 | 3V
Default WXYZ9876543210WXYZE1 | 5V
|
[Signal selector] ProgSection1 Default:voltage=3V;drive=H
                                RAS0#,D0,D1,D2
|
|
|
[Model] ABCD0123456789ABCDE0
Model_type I/O
Classes voltage=3V;drive=H | optional parameter
Polarity Non-Inverting
Enable Active-Low
| .
| .
| .
|
[Model] ABCD0123456789ABCDE1
Model_type I/O
Classes voltage=3V;drive=L | optional parameter
Polarity Non-Inverting
Enable Active-Low
| .
| .
| .
|
[Model] ABCD0123456789ABCDE2
Model_type I/O
Classes voltage=5V;drive=H | optional parameter
Polarity Non-Inverting
Enable Active-Low
| .
| .
| .
|
[Model] ABCD0123456789ABCDE3
Model_type I/O
Classes voltage=5V;drive=L | optional parameter
Polarity Non-Inverting
Enable Active-Low
| .
| .
| .
|
[Model] WXYZ9876543210WXYZE0
Model_type I/O
Classes voltage=3V | optional parameter
Polarity Non-Inverting
Enable Active-Low
| .
| .
| .
|
[Model] WXYZ9876543210WXYZE1
Model_type I/O
Classes voltage=5V | optional parameter
Polarity Non-Inverting
Enable Active-Low
| .
| .
| .
|

******************************************************************************

regards,

Malan Rampton
Signal Integrity Group
Compaq Computer Corporation
phone: (713)374-6800
email: rampton@twisto.compaq.com
Received on Fri Aug 11 09:50:50 1995

This archive was generated by hypermail 2.1.8 : Fri Jun 03 2011 - 09:52:28 PDT