diff --git a/examples/measure/buggy-meas-tran.sp b/examples/measure/buggy-meas-tran.sp index a2a3906af..36277ebe8 100644 --- a/examples/measure/buggy-meas-tran.sp +++ b/examples/measure/buggy-meas-tran.sp @@ -91,5 +91,7 @@ meas tran tdiff TRIG v(1) VAL=0.5 RISE=1 TARG VAL=0.5 RISE=2 meas tran tdiff TRIG v(1) VAL=0.5 RISE=1 TARG v(1) RISE=2 meas tran tdiff TRIG v(1) VAL= RISE=1 TARG v(1) VAL=0.5 RISE=2 meas tran tdiff TRIG v(1) VAL=0.5 RISE= TARG v(1) VAL=0.5 RISE=2 +meas sp tmax MAX v(2) from=2m to=3m +meas dc ymax MAX v(2) from=2m to=3m .endc .end diff --git a/src/frontend/com_measure2.c b/src/frontend/com_measure2.c index 7033abbec..29dd6e9e6 100644 --- a/src/frontend/com_measure2.c +++ b/src/frontend/com_measure2.c @@ -432,7 +432,10 @@ com_measure_when( value = get_value(meas, d, i); //d->v_compdata[i].cx_real; else value = d->v_realdata[i]; - scaleValue = dScale->v_compdata[i].cx_real; + if (dScale->v_compdata) + scaleValue = dScale->v_compdata[i].cx_real; + else + scaleValue = dScale->v_realdata[i]; } else if (sp_check) { if (d->v_compdata) value = get_value(meas, d, i); //d->v_compdata[i].cx_real; @@ -768,20 +771,38 @@ measure_minMaxAvg( if (ac_check || sp_check) { dScale = vec_get("frequency"); + if (dScale == NULL) { + fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis); + fprintf(cp_err, " no such scale vector as frequency.\n"); + return MEASUREMENT_FAILURE; + } } else if (tran_check) { dScale = vec_get("time"); + if (dScale == NULL) { + fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis); + fprintf(cp_err, " no such scale vector as time.\n"); + return MEASUREMENT_FAILURE; + } } else if (dc_check) { dScale = vec_get("v-sweep"); + if (!dScale) { + dScale = vec_get("i-sweep"); + if (!dScale) { + dScale = vec_get("temp-sweep"); + if (!dScale) + dScale = vec_get("res-sweep"); + } + } + if (dScale == NULL) { + fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis); + fprintf(cp_err, " no such scale vector as v-sweep, i-sweep, temp-sweep, or res-sweep.\n"); + return MEASUREMENT_FAILURE; + } } else { /* error */ fprintf(cp_err, "Error: no such analysis type as %s.\n", meas->m_analysis); return MEASUREMENT_FAILURE; } - if (dScale == NULL) { - fprintf(cp_err, "Error: no such vector as time, frequency or v-sweep.\n"); - return MEASUREMENT_FAILURE; - } - if (dScale->v_realdata == NULL && dScale->v_compdata == NULL) { fprintf(cp_err, "Error: scale vector time, frequency or v-sweep has no data.\n"); return MEASUREMENT_FAILURE; @@ -949,22 +970,40 @@ measure_rms_integral( if (ac_check || sp_check) { xScale = vec_get("frequency"); + if (xScale == NULL) { + fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis); + fprintf(cp_err, " no such scale vector as frequency.\n"); + return MEASUREMENT_FAILURE; + } } else if (tran_check) { xScale = vec_get("time"); + if (xScale == NULL) { + fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis); + fprintf(cp_err, " no such scale vector as time.\n"); + return MEASUREMENT_FAILURE; + } } else if (dc_check) { xScale = vec_get("v-sweep"); + if (!xScale) { + xScale = vec_get("i-sweep"); + if (!xScale) { + xScale = vec_get("temp-sweep"); + if (!xScale) + xScale = vec_get("res-sweep"); + } + } + if (xScale == NULL) { + fprintf(cp_err, "Error: meas %s ...\n", meas->m_analysis); + fprintf(cp_err, " no such scale vector as v-sweep, i-sweep, temp-sweep, or res-sweep.\n"); + return MEASUREMENT_FAILURE; + } } else { /* error */ fprintf(cp_err, "Error: no such analysis type as %s.\n", meas->m_analysis); return MEASUREMENT_FAILURE; } - if (xScale == NULL) { - fprintf(cp_err, "Error: no such vector as time, frequency or v-sweep.\n"); - return MEASUREMENT_FAILURE; - } - if (xScale->v_realdata == NULL && xScale->v_compdata == NULL) { - fprintf(cp_err, "Error: scale vector time, frequency or v-sweep has no data.\n"); + fprintf(cp_err, "Error: scale vector time, frequency or ?-sweep has no data.\n"); return MEASUREMENT_FAILURE; }