Next: Control Script Execution Up: .measure Line Previous: Point and Interval Specification   Contents   Index

Measurements

The following measurements are available when an interval has been specified.

min expr
Find the minimum value of expr.
max expr
Find the maximum value of expr.
pp expr
Find the (maximum - minimum) value of expr.
avg expr
Compute the average of expr.
rms expr
Compute the rms value of expr.
pw expr
This will measure the full-width half-maximum of a pulse contained in the interval. The baseline is taken as the initial or final value with the smallest difference from the peak value. The algorithm will measure the larger of a negative going or positive going pulse.
rt expr
This will measure the 10-90 percent rise or fall time of the edge contained in the interval. The reference start and final values are the values at the ends of the interval.

When a point has been specified, the only measurement form available is

find expr
Evaluate expr at point.

A .measure statement can contain any number of measurements, including no measurements. If no measurement is specified, the vector produced contains only zeros, however the scale vector contains the start and stop values, which may be the only result needed. The created vector, which is added to the current plot, will be of length equal to the number of measurements, with the results placed in the vector in order.

The measurement scale point(s) in .measure statements are also saved in a vector, which is the scale for the result vector. If the measurement name is ``result'', then the scale vector is named ``result_scale''. The scale contains one or two values, depending on whether it is a point or interval measurement.

By default, nothing is printed on-screen for a .measure line during interactive simulation. If the keyword print appears in the .measure line, the results will be printed on the standard output. A more concise format can be obtained from the alternative keyword print_terse. The result vectors are created in all cases.

If the keyword stop appears in a .measure line, the analysis will be paused when all measurements are complete. Thus if the deck contains several .measure lines and stop is given in at least one, the analysis will pause when all of the measurements are complete, not just the one containing stop. The analysis can then be resumed with the resume command, or reset with the reset command.

When a .measure is included in an iterative analysis (Monte Carlo, loop, etc.), data are saved as follows. Before each iteration, the previous result vector and its scale are saved to the end of a ``history'' vector and scale, and are then deleted. The result vector and scale are recreated when the measurement is completed during the iteration. Thus, at the end of the analysis, for a measurement named ``example'', one would have the following vectors:

 example the result from the final trial example_scale the measurement interval or point in the last trial example_hist results from the prior trials example_hist_scale intervals from the prior trials

Thus, during each trial, the result vector will have the same properties as in a standard run. It can be used in the .control block of a Monte Carlo or operating range file (recall that \$?vector can be used to query existence, and that if there is no checkPNTS vector defined, the .control block is called once at the end of each trial).

Multiple .measure lines can be ``chained'' in the following manner. The vector name following the from, to, trig, or targ keywords can be the name of another measure. In this case, the effective start time is the measure time of the referenced measure. The measure time is the end of the interval or the measure point. The td, rise, and other keywords can be used in the referencing measure. The td will be added to the imported time, and the other keywords operate in the normal way. If there are no keywords other than td specified, the time is the delay time plus the imported time.

Example:

.measure tran t1 trig v(5) val=.4m rise=3
.measure tran t2 trig v(5) val=.4m rise=4
.measure tran pw trig t1 td=20p targ t2 td=20p pw v(5) max v(5)

In this case, the measures t1 and t2 ``frame'' a period of an (assumed) repeating signal v(5). Note that no actual measurement is performed for these lines. Their purpose is to be referenced in the third line, which takes as its interval the t1-t2 interval delayed by 20 pS, and measures the pulse width and peak value.

It is possible to reference .measure results in sources. The referencing token has the same form as a circuit variable, with an optional index, i.e.

@result[index]
where the index, if used, is an integer that references a specific component of the result (0-based). The value is always zero for timepoints before the measurement has been performed, and a constant value afterward.

Example:

.measure tran peak from=50n to=150n max v(5)
.measure tran stuff trig v(4) val=4.5 rise=1 targ v(4) val=4.5 fall=2
+ min v(4) max v(4) pp v(4) avg v(4) rms v(4) print
vxx 1 0 @peak
vyy 2 0 @stuff[2]

In this example, during transient analysis, vxx is zero until 150 nS, where the measurement takes place, at which point it jumps to the value measured. Likewise, vyy is zero until the measurement, at which point it jumps to the third component (``pp v(4)'') result. The resulting voltages can be used elsewhere in the circuit. Note that we have two implementations of a behavioral peak detector.

Next: Control Script Execution Up: .measure Line Previous: Point and Interval Specification   Contents   Index
Stephen R. Whiteley 2018-07-21