Sometimes there is a need to scale buffer strength (that is, increase or decrease current for output type buffers for a given value of the output voltage). This enables the same IBIS file to be used to simulate buffers of different strengths. Let us designate K as a factor for current multiplication. For the original buffer, the value of K=1. This section describes how to accomplish this scaling using the F-element for a single output buffer and differential output buffer.
The original circuit for a single output buffer is as follows:
Buffer nd_pu nd_pd nd_out nd_pc nd_gc
+ file=<filename> model=<modelname>
The scaled circuit for a single output buffer is as follows:
Buffer nd_pu nd_pd nd_out nd_pc nd_gc
+ file=<filename> model=<modelname>
+ Vsenser nd_out nd_out_prime V=0
+ Rload nd_out_prime gnd Rload_val
+ Felement gnd nd_out_prime Vsenser K-1
The original circuit for a differential output buffer is as follows:
Buffer1 nd_pu1 nd_pd1 nd_out1 nd_pc1 nd_gc1
+ file=<filename1> model=<modelname1>
Buffer2 nd_pu2 nd_pd2 nd_out2 nd_pc2 nd_gc2
+ file=<filename2> model=<modelname2>
+ R_load n_out1 n_out2 R_load_value
The scaled circuit for a differential output buffer is as follows:
Buffer1 nd_pu1 nd_pd1 nd_out1 nd_pc1 nd_gc1
+ file=<filename1> model=<modelname1>
Buffer2 nd_pu2 nd_pd2 nd_out2 nd_pc2 nd_gc2
+ file=<filename2> model=<modelname2>
+ V_sense n_out1 n_out1_prime 0V
+ F_element n_out2 n_out1_prime v_sense K-1
+ R_load n_out1_prime n_out2 R_load_value
Please note the polarity of the F-element. For the scaling factor K=1, the current controlled current source does not supply any current and effectively we have the original circuit.
**********************************************
* example 1 * buffers in subcircuit, power=on
**********************************************
+ ( 0V 1.0V CLK_Q_PRD DLT_TIME DLT_TIME CLK_H_PRD CLK_PRD )
+ ( 1.1V 0V CLK_Q_PRD DLT_TIME DLT_TIME CLK_H_PRD CLK_PRD )
x1 nd_out1 nd_in1 nd_en1 nd_outofin1 buffer11
x2 nd_out2 nd_in2 nd_en2 nd_outofin2 buffer11
.subckt buffer11 nd_out0 nd_in0 nd_en0 nd_outofin0
b_io_0 nd_pu0 nd_pd0 nd_out nd_in0 nd_en0 nd_outofin0 nd_pc0 nd_gc0
In this example buffers are connected to power sources implicitly by Hspice inside subcircuit. Subcircuit external terminals does not need to include nd_pu, nd_pd, nd_pc, nd_gc.
**********************************************
* example 2* buffers in subcircuit, power=off
**********************************************
+ ( 0V 1.0V CLK_Q_PRD DLT_TIME DLT_TIME CLK_H_PRD CLK_PRD )
+ ( 1.1V 0V CLK_Q_PRD DLT_TIME DLT_TIME CLK_H_PRD CLK_PRD )
x1 nd_power 0 nd_out1 nd_in1 nd_en1 nd_outofin1 nd_power 0 buffer11
x2 nd_power 0 nd_out2 nd_in2 nd_en2 nd_outofin2 nd_power 0 buffer11
.subckt buffer11 nd_pu0 nd_pd0 nd_out0 nd_in0 nd_en0 nd_outofin0 nd_pc0 nd_gc0
b_io_0 nd_pu0 nd_pd0 nd_out nd_in0 nd_en0 nd_outofin0 nd_pc0 nd_gc0
In this example, only one voltage source, V_power, is used to power all buffers. All power nodes, nd_pu, nd_pd, nd_pc, nd_gc, should be explicitly provided.
Star-Hspice Manual - Release 2001.2 - June 2001