Subject: Questions about Submodels

From: Stephen Nolan <[email-masked]>
Date: Wed, 12 Jul 2000 09:33:33 -0500

Hi IBIS folks. I'm working on our procedures for creating IBIS models of devices
with Bus Hold, and struggling through this section 6a on Submodels. Help.

First of all, are submodels a section that is entirely contained within a model
section, or are they independant and inheritable by other models? For example,
if I have an input model:

|******************************************************************************
[Model]             LVTH244_DATAIN_33
Model_type          Input
Vinl = 0.8V
Vinh = 2.0V
C_comp              3.35pF       NA           NA
|
[Add Submodel]
BUS_HOLD_33         Non-Driving
|
|******************************************************************************

Does the submodel BUS_HOLD_33 have to follow the data in the LVTH244_DATAIN_33
model and be within that model, or can all of the submodels be at the end of a
file in a separate section following the models?

Further, once I have declared a "[Submodel] BUS_HOLD_33" submodel within the
LVTH244_DATA_IN_33 model, do I have to include the complete submodel again
within the LVTH244_OE_IN_33 model, or can I just simply call it and expect the
simulator to use it. If submodels do in fact turn out to be local instead of
global and inheritable, is there any namespace conflict?

Next is the question of data extraction for bus-hold. The clamp curves in the
main model contain all of the data on the VI characteristics of the bus
hold-circuitry. See the attached pdf file for an example. What is the purpose of
the trigger and pullup/down data in the submodel section? What information does
it provide that is not already available in the clamp curves of the main model?
How do you extract the Ramp data (test setup).

Finally, in the spec there is the following sentence:
> | The [Pullup] and [Pulldown] tables both are used to define an internal
> | buffer that is triggered switch to its opposite state.  
What does this mean and is this sentence grammatically correct? I can't figure
it out.

Thanks.
-- 
Regards,
Stephen M. Nolan

---

From: Bob Ross <[email-masked]>
Date: Thu, 20 Jul 2000 17:59:55 -0700

Stephen:

My responses are in your text.

Bob Ross
Mentor Graphics

> if I have an input model:

It can be in a separate section.

> global and inheritable, is there any namespace conflict?

They are global, so there is no namespace conflict.

> How do you extract the Ramp data (test setup).

The clamp information is in addition to the bus hold operation.  The clamp
tables should have 0 current in the normal operating regions (between 0 and
Vcc).
The Bus Hold circuitry which are really weak, triggered flip-flops are what
the submodel models.  The advantage of the submodel approach is that the
dynamic effects of the Bus Hold circuit are simulated.  The clamp approach
would capture only a static (DC) characteristic and assume instantenous
Bus Hold Operation.  

The Bus_hold operation can also be used for dynamic terminations.  That is
the main motivation for adding this to IBIS.

> What does this mean and is this sentence grammatically correct? I can't figure

It should read:
| The [Pullup] and [Pulldown] tables both are used to define an internal
| buffer that is triggered "to" switch to its opposite state.

> 
> Thanks.
> --
> Regards,
> Stephen M. Nolan
> 
>   --------------------------------------------------------------------------------
>                         Name: busholdcurves.pdf
>    busholdcurves.pdf    Type: Portable Document Format (application/pdf)
>                     Encoding: base64

---

From: Stephen Nolan <[email-masked]>
Date: Thu, 20 Jul 2000 22:23:49 -0500

So regarding data extraction, are the following statements correct?

To get the clamp curves of the top-level model, the bus-hold
feedback has to be removed from the input.

Then in the submodel:

For V_trigger:
 With the bus-hold output connected to the input, sweep the
 input voltage from low-to-high, and then from high to low and
 monitor the current at the voltage source. Where the bi-stable
 flip-flop (bus-hold circuit) transitions from opposing current
 to aiding current (passes through zero) is the V_trigger point.

For Pulldown:
 With the bus-hold output disconnected from the input,
 hold the input low, so that the bus-hold output node is low,
 and sweep the V/I curve of the bus-hold output.
 Or alternatively, you may be able to hold the input of the 
 bus-hold driver high (inverter) and the bus-hold output will
 go low. Then sweep the output VI curve.

For Pullup:
 With the bus-hold output disconnected from the input,
 hold the input high, so that the bus-hold output node is high,
 and sweep the V/I curve of the bus-hold output.
 Or alternatively, you may be able to hold the input of the 
 bus-hold driver low (inverter) and the bus-hold output will
 go high. Then sweep the output VI curve.

For Ramp:
 With the bus-hold output disconnected from the input,
 and a load capacitance connected to the output of the bus-hold
 to simulate the load of the input, ramp the input to read the
 dV/dt output edge-rates at the output of the bus-hold.
 Or alternatively, you could leave the bus-hold all hooked up and 
 provide the input stimulus at the input of the bus-hold driver stage.

For reference, assuming a buffer device ('244) with bus hold, the input stage
looks like this:

       Bus-hold output  /|
               +------o/ |----+
               |       \ |    |
               |        \|    |
               |     |\       |
PIN O----------+-----| \o-----+----------->off to rest of circuitry
      Device input   | / Input inverter/buffer
                     |/

-- 
Regards,
Stephen M. Nolan