diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2018-01-29 15:32:52 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2018-01-29 15:32:52 +0100 | 
| commit | 4ce047e96b74c58a44b3f80320a8c03f43bc8fea (patch) | |
| tree | 4184e52b4a394567b8c39c25fc66dd84b473fac4 /lib | |
| parent | 18afba9273d1fa2cce2ed66f8c5f102e59fa962f (diff) | |
weed out clipping measurements as early as possible
Diffstat (limited to 'lib')
| -rwxr-xr-x | lib/dfatool.py | 18 | 
1 files changed, 13 insertions, 5 deletions
| diff --git a/lib/dfatool.py b/lib/dfatool.py index 60ccefd..3e3a0b5 100755 --- a/lib/dfatool.py +++ b/lib/dfatool.py @@ -188,6 +188,18 @@ class RawData:                          on_isa = online_trace_part['isa'])                  return False +            # Clipping in UNINITIALIZED (offline_idx == 0) can happen during +            # calibration and is handled by MIMOSA +            if offline_idx != 0 and offline_trace_part['clip_rate'] != 0: +                processed_data['error'] = 'Offline #{off_idx:d} (online {on_name:s} @ {on_idx:d}/{on_sub:d}) was clipping {clip:f}% of the time'.format( +                    off_idx = offline_idx, on_idx = online_run_idx, +                    on_sub = online_trace_part_idx, +                    on_name = online_trace_part['name'], +                    clip = offline_trace_part['clip_rate'] * 100, +                ) +                return False + +              if online_trace_part['isa'] == 'state' and online_trace_part['name'] != 'UNINITIALIZED':                  online_prev_transition = traces[online_run_idx]['trace'][online_trace_part_idx-1]                  online_next_transition = traces[online_run_idx]['trace'][online_trace_part_idx+1] @@ -236,7 +248,6 @@ class RawData:                      'duration' : [],                      'power_std' : [],                      'energy' : [], -                    'clipping' : [],                      'paramkeys' : [],                      'param': [],                  } @@ -256,8 +267,6 @@ class RawData:                  offline_trace_part['uW_std'])              online_trace_part['offline_aggregates']['energy'].append(                  offline_trace_part['uW_mean'] * (offline_trace_part['us'] - 20)) -            online_trace_part['offline_aggregates']['clipping'].append( -                offline_trace_part['clip_rate'])              online_trace_part['offline_aggregates']['paramkeys'].append(paramkeys)              online_trace_part['offline_aggregates']['param'].append(paramvalue)              if online_trace_part['isa'] == 'transition': @@ -341,7 +350,7 @@ class EnergyModel:      def _aggregate_to_ndarray(self, aggregate):          for elem in aggregate.values(): -            for key in ['clipping', 'power', 'power_std', 'energy', 'duration', 'timeout', 'rel_energy_prev', 'rel_energy_next']: +            for key in ['power', 'power_std', 'energy', 'duration', 'timeout', 'rel_energy_prev', 'rel_energy_next']:                  if key in elem:                      elem[key] = np.array(elem[key]) @@ -408,7 +417,6 @@ class EnergyModel:                          print('[W] Got no data for {} {}'.format(name, key))                      except FloatingPointError as fpe:                          print('[W] Got no data for {} {}: {}'.format(name, key, fpe)) -        print(lut_model)          def lut_median_getter(name, key, param, **kwargs):              return lut_model[(name, tuple(param))][key] | 
