Skip to content

Commit 705dad9

Browse files
committed
SetupHoldMeasurement: interpolate level crossings
1 parent 1820fde commit 705dad9

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

scopeprotocols/SetupHoldMeasurement.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -285,16 +285,21 @@ vector< pair<int64_t, int64_t> > SetupHoldMeasurement::GetEdgeTimestamps(
285285
float vin = wfm->m_samples[i];
286286
int64_t tstamp = GetOffsetScaled(wfm, i);
287287

288+
float lerpHi = InterpolateTime(wfm, i-1, vih);
289+
float lerpLo = InterpolateTime(wfm, i-1, vil);
290+
291+
int64_t thi = tstamp + lerpHi * wfm->m_timescale;
292+
int64_t tlo = tstamp + lerpLo * wfm->m_timescale;
293+
288294
switch(state)
289295
{
290296
//Look for rising edges
291297
case STATE_UNKNOWN_WAS_LOW:
292298

293-
//TODO: interpolate Vih level crossing?
294299
if(vin > vih)
295300
{
296301
if(matchRising)
297-
ret.push_back( pair<int64_t, int64_t>(edgestart, tstamp));
302+
ret.push_back( pair<int64_t, int64_t>(edgestart, thi));
298303

299304
state = STATE_HIGH;
300305
}
@@ -303,11 +308,10 @@ vector< pair<int64_t, int64_t> > SetupHoldMeasurement::GetEdgeTimestamps(
303308

304309
case STATE_UNKNOWN_WAS_HIGH:
305310

306-
//TODO: interpolate Vil level crossing?
307311
if(vin < vil)
308312
{
309313
if(matchFalling)
310-
ret.push_back( pair<int64_t, int64_t>(edgestart, tstamp));
314+
ret.push_back( pair<int64_t, int64_t>(edgestart, tlo));
311315

312316
state = STATE_LOW;
313317
}
@@ -320,7 +324,7 @@ vector< pair<int64_t, int64_t> > SetupHoldMeasurement::GetEdgeTimestamps(
320324
if(vin > vil)
321325
{
322326
state = STATE_UNKNOWN_WAS_LOW;
323-
edgestart = tstamp;
327+
edgestart = tlo;
324328
}
325329

326330
break;
@@ -331,7 +335,7 @@ vector< pair<int64_t, int64_t> > SetupHoldMeasurement::GetEdgeTimestamps(
331335
if(vin < vih)
332336
{
333337
state = STATE_UNKNOWN_WAS_HIGH;
334-
edgestart = tstamp;
338+
edgestart = thi;
335339
}
336340

337341
break;

0 commit comments

Comments
 (0)